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;
Declarada 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 de HarfBuzz y FriBidi y los bytes de fuente suministrados
FirstUnit es un offset UTF-16 de 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 avances normalizados de 1000 unidades de fuente, no puntos PDF; convierta el espaciado en puntos con points * 1000 / fontSize antes de llamar
Los avances crudos deben ser finitos y con valores absolutos de 1000000000000000 como máximo, lo que permite el presupuesto de puntos nativo en el tamaño de fuente positivo mínimo soportado; los builders de appearances aplican sus límites de puntos del autor y calculados por separado
CSSLetterSpacing habilita el tracking en unidades tipográficas y el manejo de ligaduras opcionales; CSSWordSpacing habilita el medio espaciado alrededor de los clusters SPACE y NBSP, incluidos los signos separadores, siguiendo el perfil de espaciado acotado
Los avances y offsets de glifos devueltos incluyen el espaciado solicitado; SpacingAdvance registra su contribución, mientras que TypographicUnit, CursiveUnit y WordSeparator aportan 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 los fallos de presupuesto de glifos o de entrada mal formada usan el contrato de excepciones de shaping existente; esta función no publica un PDF ni es dueña de los bytes de fuente ni del token del llamador
Los puntos de entrada de shaping existentes preservan su semántica anterior; reconstruya los consumidores Pascal y C++Builder usando el registro de glifos público coincidente y las cabeceras generadas