Unicode 字素边界
HPDFUnicodeTextBoundary 基于随库附带的 Grapheme_Cluster_Break、Indic_Conjunct_Break 和 Extended_Pictographic 属性实现 Unicode 17.0.0 默认扩展字素簇
这套可移植 Pascal 实现能处理组合记号、Hangul、Indic 连接序列、emoji ZWJ 序列和成对的区域指示符,不依赖 GUI,也不需要分节 DLL
偏移量从零开始按 UTF-16 code unit 计数,同时包含文本的起点和终点;空文本只返回偏移量 0
输入中的 UTF-16 代理对必须成对出现,调用方需提供最高 1048576 的正数 code unit 预算;默认值为 65535
取消检查发生在分配之前,也在消费每个 scalar 时进行,空输入同样如此
富字段换行
多行换行富字段中过宽的单词会在完整的扩展字素簇处切分,并用所选字体和间距测量
每个片段都保留原始 V 和 RV 值、实际 Unicode 映射以及段落对齐;超出矩形宽度的不可切分簇保持完整并被裁剪
片段宽度在 shaping 之后检查,包括那些单独 shaping 会变宽的连写形态;可切分的溢出会在完整簇处再次拆分
复杂文种绘制仍由 HarfBuzz 和 FriBidi 负责;字素切分不提供 glyph shaping,也不负责段落双向排版
默认 Unicode 断行机会通过同一个可移植单元提供;跨样式边界换行单词和混合样式段落 bidi 仍是独立推进的目标
符合性
运行 Tests/Linux/Run-UnicodeGraphemeAcceptance.sh,或在 Windows 上用可移植测试运行器配合 HotPDFUnicodeGraphemeTests 与 Tests/Linux/resources
测试跑完全部 766 个官方 Unicode 17 GraphemeBreakTest 用例,并以 UTF-16 单位逐一比对每个公开边界
Build-UnicodeTextBoundaryTables.py 基于既有的固定 UCD 数据确定性地重建编译进二进制的范围表