Функция HPDFResolveHeadlessTextLineOrder

Вычисляет уровни вложенности для одного полного логического абзаца и переупорядочивает выбранную физическую строку, удерживая контекст направляющих вставок, переопределений, изолятов и парных скобок, начавшийся на предыдущих строках

function HPDFResolveHeadlessTextLineOrder(const Paragraph: UnicodeString;
  FirstUnit, UnitCount, MaximumUnits: Integer;
  CancellationToken: THPDFCancellationToken;
  ParagraphDirection: THPDFHeadlessTextDirection = htdAuto): THPDFHeadlessTextOrder;

FirstUnit — смещение UTF-16 с нуля, UnitCount — длина физической строки без разделителей строк или абзацев; обе границы должны содержать полные скаляры Unicode

Возвращённые массивы описывают только эту физическую строку, а BaseRightToLeft — весь абзац; дополнительные скаляры имеют общий визуальный ранг, уровень и script на обоих UTF-16 unit'ах

Функция применяет разрешение вложенности абзаца, затем сброс пробельности физической строки и визуальное переупорядочивание через настроенную нативную библиотеку FriBidi; логический текст сохраняется, а шейпинг и зеркалирование глифов функция сама не выполняет

MaximumUnits должен быть положительным и не более 131070; полный абзац должен укладываться в этот бюджет, содержать корректный Unicode и не иметь разделителей строк

Для многих строк одного абзаца вычислите HPDFResolveHeadlessTextOrder один раз и используйте HPDFReorderHeadlessTextLine, чтобы не обрабатывать абзац повторно

Передавайте каждую физическую строку и её возвращённый порядок в HPDFShapeHeadlessTextOrderedSpan для нативного контекстного шейпинга OpenType