Функция 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