HPDFShapeHeadlessText

function HPDFShapeHeadlessText(const Text: UnicodeString;
  const FontBytes: SysUtils.TBytes; MaximumGlyphs: Integer;
  CancellationToken: THPDFCancellationToken;
  MaximumLineAdvance: Double = 0; CharacterAdvance: Double = 0;
  WordAdvance: Double = 0): THPDFHeadlessShapedGlyphs;

Usa una fuente OpenType suministrada por el llamante a través de HarfBuzz y resuelve los runs visuales Unicode mediante FriBidi, reteniendo clusters y posicionamiento en coordenadas de fuente de 1000 unidades

Los párrafos CR/LF reciben shaping de forma independiente; un MaximumLineAdvance positivo pide wrapping de clusters lógico antes de la pasada final de shaping

Las líneas físicas automáticas heredan los embeddings direccionales, overrides, isolates y corchetes emparejados del párrafo completo original; cada línea tiene su propio reset de espacios en blanco, reordenación visual y contexto de unión HarfBuzz

El orden del párrafo se resuelve una vez y se reutiliza sin mutación entre líneas físicas; un separador CR/LF real inicia un párrafo nuevo y resetea el estado de control

Cuando el wrapping automático cambia el texto, SourceOffset sigue siendo relativo a la secuencia lógica con wrapping normalizada, incluidos los saltos de línea U+000A insertados y la eliminación existente de un espacio de salto; el UnicodeText de glifos, los valores de campo y el ActualText PDF preservan sus contratos lógicos establecidos

CharacterAdvance y WordAdvance son avances finitos opcionales en las mismas coordenadas de fuente de 1000 unidades; el avance de carácter se aplica una vez por cluster con shaping, incluido el cluster final, salvo los clusters que contienen solo controles direccionales Unicode, y el avance de palabra se aplica a un cluster U+0020, con ambos incluidos en el wrapping lógico y en los avances de glifos devueltos

Los glifos de entrada y generados, incluidos los registros de saltos de línea insertados, quedan acotados por el mismo MaximumGlyphs total; los surrogates mal formados y los glifos requeridos ausentes fallan, y la cancelación se comprueba entre párrafos, runs, resolución de líneas en caché y checkpoints de wrapping

Linux usa libharfbuzz.so.0 y libfribidi.so.0; Windows exige librerías de arquitectura coincidente, con rutas explícitas suministradas opcionalmente vía HOTPDF_HARFBUZZ_LIBRARY y HOTPDF_FRIBIDI_LIBRARY

Para permisos de fuentes PDF, objetos CID, ToUnicode, enlaces de apariencia y salida incremental, usa HPDFBuildHeadlessTextAppearance o un método de apariencia del documento

El texto complejo nativo de Windows describe arquitecturas de proceso coincidentes y rutas de búsqueda de dependencias runtime

Usa HPDFShapeHeadlessTextSpan para dar shaping a un elemento de estilo seleccionado con el contexto del párrafo circundante, y HPDFResolveHeadlessTextOrder para inspeccionar las posiciones visuales Unicode reales