Функция HPDFReorderHeadlessTextLine
Переупорядочивает физическую строку по ранее вычисленным уровням и скриптам абзаца, удерживая явное направляющее состояние через перенос, без повторного разрешения всего абзаца
function HPDFReorderHeadlessTextLine(const Text: UnicodeString;
const ParagraphOrder: THPDFHeadlessTextOrder; FirstUnit, MaximumUnits: Integer;
CancellationToken: THPDFCancellationToken): THPDFHeadlessTextOrder;
Вычислите HPDFResolveHeadlessTextOrder один раз для полного абзаца; передайте точную выбранную строку как Text и её смещение в абзаце с нуля как FirstUnit
Вызывающий должен передать согласованный порядок абзаца и неизменённый логический текст строки; функция проверяет длины массивов, границы, уровни вложенности, границы скаляров и отмену, но не может восстановить текст, пропущенный в кэшированной записи
Переупорядочивание строки копирует только уровни выбранных скаляров, применяет сброс концевых пробелов и визуальное переупорядочивание через нативный FriBidi и возвращает локальные для строки массивы UTF-16; общую запись абзаца оно не меняет
MaximumUnits должен быть положительным и не более 131070; полный кэшированный абзац должен укладываться в этот бюджет, а Text — содержать корректный Unicode без разделителей
Rich appearance полей используют этот кэш для каждого логического абзаца, а затем шейпят каждый стилевой элемент относительно его полной физической строки через HPDFShapeHeadlessTextOrderedSpan