Функция HPDFShapeHeadlessTextOrderedSpan
Шейпит выбранный стилевой span относительно полной физической строки, используя выведенные из абзаца уровни вложенности, скрипты и визуальные позиции
function HPDFShapeHeadlessTextOrderedSpan(const Context: UnicodeString;
FirstUnit, UnitCount: Integer; const Order: THPDFHeadlessTextOrder;
const FontBytes: SysUtils.TBytes; MaximumGlyphs: Integer;
CancellationToken: THPDFCancellationToken;
CharacterAdvance: Double = 0; WordAdvance: Double = 0): THPDFHeadlessShapedGlyphs;
Order должен покрывать каждый UTF-16 unit полной физической строки Context; получите его из HPDFResolveHeadlessTextLineOrder или HPDFReorderHeadlessTextLine
FirstUnit и UnitCount выбирают полные скаляры внутри физической строки; реальный буфер HarfBuzz получает окружающий текст строки, а направление и script приходят из разрешённого порядка абзаца
Возвращённые исходные смещения глифов отсчитываются от выбранного стилевого span; glyph ID, advance и смещения используют реальный встроенный шрифт и масштаб 1000 единиц на em
Функция проверяет согласованность массивов, уникальность визуальных рангов скаляров, уровни вложенности, консистентность суррогатов, конечность интервалов, лимиты глифов и отмену; испорченный порядок не откатывается молча к изолированному определению направления
Межсимвольный интервал применяется один раз на шейпленный кластер, кроме кластера только из направляющих управляющих символов Unicode; межсловный интервал — на кластер пробела, а вызывающие хранят исходное логическое значение и стилевой текст отдельно от визуального порядка глифов