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