Функция 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; межсловный интервал — на кластер пробела, а вызывающие хранят исходное логическое значение и стилевой текст отдельно от визуального порядка глифов