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;

Declarado en HPDFHeadlessShaping, esta función aplica shaping a un span UTF-16 usando su contexto circundante completo y el orden visual previamente resuelto, con el runtime HarfBuzz y FriBidi suministrados y los bytes de fuente

FirstUnit es un offset UTF-16 base cero y UnitCount selecciona el span solicitado; los llamadores deben suministrar datos de orden compatibles y un presupuesto MaximumGlyphs positivo

CharacterAdvance y WordAdvance usan advances normalizados en unidades de fuente de 1000, no puntos PDF; convierta el spacing en puntos con points * 1000 / fontSize antes de llamar

Los advances crudos deben ser finitos y tener valores absolutos de hasta 1000000000000000, permitiendo el presupuesto nativo de puntos en el tamaño positivo mínimo de fuente soportado; los builders de apariencias aplican sus límites separados de puntos escritos y computados

CSSLetterSpacing habilita el tracking de unidades tipográficas y el manejo de ligaduras opcionales; CSSWordSpacing habilita el half spacing alrededor de clusters SPACE y NBSP, incluyendo separator marks, siguiendo el perfil acotado de spacing

Los advances y offsets de glifos devueltos incluyen el spacing solicitado; SpacingAdvance registra su contribución, mientras que TypographicUnit, CursiveUnit y WordSeparator proporcionan metadatos de límites para el compositor rich de líneas físicas

La cancelación se comprueba durante la clasificación y el shaping, y las fallas de presupuesto de glifos o de entrada malformada usan el contrato existente de excepciones de shaping; esta función ni publica un PDF ni es propietaria de los bytes de fuente ni del token del llamador

Los puntos de entrada de shaping existentes preservan su semántica previa; recompile los consumidores Pascal y C++Builder usando el record público de glifos coincidente y los headers generados