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 um tipo de letra OpenType fornecido por quem chama através de HarfBuzz e resolve runs visuais Unicode através de FriBidi, mantendo clusters e posicionamento em coordenadas de 1000 unidades do tipo de letra
Parágrafos CR/LF recebem shaping de forma independente; um MaximumLineAdvance positivo pede wrap de clusters lógicos antes da passagem final de shaping
Linhas físicas automáticas herdam os embeddings direcionais, overrides, isolates e pares de parênteses retos do parágrafo original completo; cada linha tem o reset próprio de whitespace, reordenação visual e contexto de ligação HarfBuzz
A ordem do parágrafo é resolvida uma vez e reutilizada sem mutação através das linhas físicas; um separador real de CR/LF começa um parágrafo novo e reinicia o estado de controlo
Quando o wrap automático altera o texto, SourceOffset permanece relativo à sequência lógica normalizada com wrap, incluindo quebras de linha U+000A inseridas e a remoção existente do espaço de quebra; o UnicodeText de glyphs, os valores de campos e o ActualText PDF mantêm os contratos lógicos estabelecidos deles
CharacterAdvance e WordAdvance são avanços opcionais finitos nas mesmas coordenadas de 1000 unidades do tipo de letra; o avanço de carateres aplica-se uma vez por cluster com shaping, incluindo o cluster final, exceto clusters contendo apenas controlos direcionais Unicode, e o avanço de palavras aplica-se a um cluster U+0020, com ambos incluídos no wrap lógico e nos avanços devolvidos de glyphs
Glyphs de entrada e gerados, incluindo registos inseridos de quebras de linhas, são delimitados pelo mesmo total de MaximumGlyphs; surrogates malformados e glyphs exigidos em falta falham, e o cancelamento é verificado entre parágrafos, runs, resolução de linhas em cache e checkpoints de wrap
Linux usa libharfbuzz.so.0 e libfribidi.so.0; Windows exige bibliotecas da arquitetura correspondente, com caminhos explícitos opcionalmente fornecidos por HOTPDF_HARFBUZZ_LIBRARY e HOTPDF_FRIBIDI_LIBRARY
Para permissões de tipos de letra PDF, objetos CID, ToUnicode, ligações de aparências e saída incremental, use HPDFBuildHeadlessTextAppearance ou um método de documentos de aparências
O texto complexo nativo em Windows descreve arquiteturas de processos correspondentes e caminhos de pesquisa de dependências de runtime
Use HPDFShapeHeadlessTextSpan para aplicar shaping a um item de estilo selecionado com o contexto de parágrafo envolvente, e HPDFResolveHeadlessTextOrder para inspecionar posições visuais Unicode reais