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 uma fonte OpenType fornecida pelo chamador através do HarfBuzz e resolve os runs visuais Unicode pelo FriBidi, retendo clusters e posicionamento em coordenadas de fonte de 1000 units
Parágrafos CR/LF recebem shaping de forma independente; um MaximumLineAdvance positivo solicita wrapping lógico de clusters antes da passada final de shaping
Linhas físicas automáticas herdam os embeddings direcionais, overrides, isolates e brackets pareados do parágrafo original completo; cada linha tem seu próprio reset de whitespace, reordenação visual e contexto de junção do HarfBuzz
O order do parágrafo é resolvido uma vez e reutilizado sem mutação entre as linhas físicas; um separador real de CR/LF inicia um parágrafo novo e reseta o estado de controles
Quando o wrapping automático altera o texto, SourceOffset permanece relativo à sequência lógica normalizada e quebrada, incluindo as quebras de linha U+000A inseridas e a remoção existente de um break space; o UnicodeText dos glyphs, os valores de campos e o ActualText do PDF preservam seus contratos lógicos estabelecidos
CharacterAdvance e WordAdvance são advances opcionais finitos nas mesmas coordenadas de fonte de 1000 units; o advance de caracteres se aplica uma vez por cluster com shaping, incluindo o cluster final, exceto clusters contendo apenas controles direcionais Unicode, e o advance de palavras se aplica a um cluster U+0020, com ambos incluídos no wrapping lógico e nos advances de glyphs retornados
Glyphs de entrada e gerados, incluindo os records de quebras de linha inseridos, são delimitados pelo mesmo MaximumGlyphs total; surrogates malformados e glyphs obrigatórios ausentes falham, e o cancelamento é checado entre parágrafos, runs, resolução de linhas em cache e checkpoints de wrapping
O Linux usa libharfbuzz.so.0 e libfribidi.so.0; o Windows exige bibliotecas da arquitetura correspondente, com caminhos explícitos opcionalmente fornecidos por HOTPDF_HARFBUZZ_LIBRARY e HOTPDF_FRIBIDI_LIBRARY
Para permissões de fontes PDF, objetos CID, ToUnicode, links de aparências e saída incremental, use HPDFBuildHeadlessTextAppearance ou um método de aparências do documento
Texto complexo nativo no Windows descreve arquiteturas de processo correspondentes e caminhos de busca de dependências de runtime
Use HPDFShapeHeadlessTextSpan para dar shaping a um style item selecionado com o contexto do parágrafo ao redor, e HPDFResolveHeadlessTextOrder para inspecionar as posições visuais Unicode reais