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