HPDFShapeHeadlessTextStyledSpan
function HPDFShapeHeadlessTextStyledSpan(const Context: UnicodeString;
FirstUnit, UnitCount: Integer; const Order: THPDFHeadlessTextOrder;
const FontBytes: SysUtils.TBytes; MaximumGlyphs: Integer;
CancellationToken: THPDFCancellationToken;
CharacterAdvance, WordAdvance: Double;
CSSLetterSpacing, CSSWordSpacing: Boolean): THPDFHeadlessShapedGlyphs;
Объявлена в HPDFHeadlessShaping; функция шейпит UTF-16-спан, используя его полное окружение и ранее разрешённый визуальный порядок, с предоставленными runtime HarfBuzz и FriBidi и байтами шрифта
FirstUnit — смещение в UTF-16 с нуля, UnitCount выбирает запрошенный спан; вызывающим нужно передать совместимые данные порядка и положительный бюджет MaximumGlyphs
CharacterAdvance и WordAdvance используют нормализованные сдвиги в 1000 шрифтовых единиц, а не PDF-пункты; преобразуйте интервалы в пунктах как points * 1000 / fontSize перед вызовом
Сырые сдвиги обязаны быть конечными и по модулю не больше 1000000000000000, допуская нативный бюджет пунктов при минимальном поддерживаемом положительном размере шрифта; сборщики внешнего вида принуждают свои отдельные авторские и вычисленные лимиты пунктов
CSSLetterSpacing включает tracking по типографским единицам и обработку необязательных лигатур; CSSWordSpacing включает полуинтервалы вокруг кластеров SPACE и NBSP, включая разделяющие знаки, следуя ограниченному профилю интервалов
Возвращаемые сдвиги и смещения глифов включают запрошенные интервалы; SpacingAdvance записывает их вклад, а TypographicUnit, CursiveUnit и WordSeparator дают метаданные границ для компоновщика физических rich-строк
Отмена проверяется во время классификации и шейпинга, сбои бюджета глифов или некорректного входа используют существующий контракт исключений шейпинга; эта функция не публикует PDF и не владеет байтами шрифта или токеном вызывающего
Существующие точки входа шейпинга сохраняют прежнюю семантику; пересоберите Pascal- и C++Builder-потребителей с совпадающей публичной записью глифов и сгенерированными заголовками