Unicode 断行
HPDFUnicodeLineBreaks 基于随源码内置的 Line_Break、General_Category、East_Asian_Width 与 Extended_Pictographic 属性实现 Unicode 17.0.0 默认断行机会
可移植实现无需分词 DLL 即可解析 combining 序列、标点上下文、数字表达式、Hangul、婆罗米系正字音节、emoji 修饰符与成对 regional indicator
函数返回第一个标量之前与每个标量之后的位置,用从零计数的 UTF-16 偏移表示;每个位置为禁止、允许或强制
文本末尾是强制断点,空输入也一样;非空文本开头为禁止,成对代理对内部没有位置
默认东南亚处理把普通 SA 字符解析为 AL、SA combining mark 解析为 CM;语言词典与连字属于独立的 tailoring 服务
HPDFUnicodeLineBreakClass 为单个 code point 暴露原始或经 LB1 解析的属性;THPDFUnicodeLineBreakClass 名称保留全部 Unicode 17 属性缩写
既有 HPDFComputeLineBreaks 与 HPDFLineBreakClassOf 文档 API 在 Delphi 2009 及更高版本与受支持 FPC 目标上消费同一套完整表,保持既定枚举序数与空输入行为
畸形 UTF-16 与不在 1 到 1048576 范围内的 code unit 预算会抛出 EArgumentException;分配之前、解码期间与求值断点期间都会检查取消
真实富字段布局
折行的 typed 富文本 run 消费合法的默认断点,把不换行空格组与起始标点保持在一起,并把 CRLF、NEL、LINE SEPARATOR 与 PARAGRAPH SEPARATOR 视为显式断行
原始分隔符保留在 V 与规范化 RV 中;行分隔符不进入绘制的字形片段,过宽的组使用既有的完整字素应急折行
同一物理行上的独立片段按度量步进继续;合法断点不要求另起物理行,除非拟合选择了它
完整段落断点在样式变化间保留合法组并合并被拆开的 CRLF;真实带样式步进决定整个可容纳的组何时移到新行
跨样式字素应急拟合与上下文 Shaping、混合样式段落 bidi、任意 XHTML 与语言相关 tailoring 仍是进行中的集成目标
一致性
HotPDFUnicodeLineBreakTests 消费全部 19338 个官方 Unicode 17 LineBreakTest 用例并比较每个发布的位置;强制末尾与畸形、预算、取消行为另有独立检查
Build-UnicodeLineBreakTables.py --check 验证可复现性以及三个额外 UCD 属性输入的 SHA-256 固定值
Unicode 17 断行规则 · 边界函数 · 返回的位置 · 富字段集成