HPDFResolveHeadlessTextLineOrder 函数
为一个完整逻辑段落解析嵌入层级,并重排选定的物理行,同时保留从更早行开始的方向嵌入、覆盖、隔离和成对括号上下文
function HPDFResolveHeadlessTextLineOrder(const Paragraph: UnicodeString;
FirstUnit, UnitCount, MaximumUnits: Integer;
CancellationToken: THPDFCancellationToken;
ParagraphDirection: THPDFHeadlessTextDirection = htdAuto): THPDFHeadlessTextOrder;
FirstUnit 是零起算的 UTF-16 偏移,UnitCount 是物理行长度,不含行或段落分隔符;两个边界都必须包含完整的 Unicode scalar
返回的数组只描述该物理行,BaseRightToLeft 描述完整段落;增补平面 scalar 的两个 UTF-16 单元共享同一视觉序、层级和 script
函数先做段落嵌入解析,再经配置的原生 FriBidi 库执行物理行空白重置和视觉重排;它保留逻辑文本,自身不做 glyph shaping 也不做镜像
MaximumUnits 必须为正且至多 131070;完整段落必须在此预算内、含合法 Unicode 且没有行分隔符
同一段落的多行场景,先解析一次 HPDFResolveHeadlessTextOrder,再用 HPDFReorderHeadlessTextLine,避免重复处理段落
把每个物理行及其返回的行序传给 HPDFShapeHeadlessTextOrderedSpan 做原生上下文 OpenType shaping