HPDFShapeHeadlessText
function HPDFShapeHeadlessText(const Text: UnicodeString;
const FontBytes: SysUtils.TBytes; MaximumGlyphs: Integer;
CancellationToken: THPDFCancellationToken;
MaximumLineAdvance: Double = 0; CharacterAdvance: Double = 0;
WordAdvance: Double = 0): THPDFHeadlessShapedGlyphs;
Utilise une police OpenType fournie par l'appelant via HarfBuzz et résout les runs visuels Unicode via FriBidi, en conservant clusters et positionnement en coordonnées de police en unités de 1000
Les paragraphes CR/LF sont shapeés indépendamment ; un MaximumLineAdvance positif demande un wrapping de clusters logique avant la passe de shaping finale
Les lignes physiques automatiques héritent des embeddings directionnels, overrides, isolates et crochets appariés du paragraphe complet d'origine ; chaque ligne a son propre reset d'espaces, réordonnancement visuel et contexte de jointure HarfBuzz
L'ordre du paragraphe est résolu une fois et réutilisé sans mutation à travers les lignes physiques ; un séparateur CR/LF réel démarre un nouveau paragraphe et réinitialise l'état de contrôle
Quand le wrapping automatique change le texte, SourceOffset reste relatif à la séquence logique wrappée normalisée, y compris les sauts de ligne U+000A insérés et le retrait existant d'un break space ; le UnicodeText des glyphes, valeurs de champs et ActualText PDF conservent leurs contrats logiques établis
CharacterAdvance et WordAdvance sont des advances optionnelles finies dans les mêmes coordonnées de police en unités de 1000 ; l'advance de caractère s'applique une fois par cluster shapeé, y compris le cluster final, sauf pour les clusters ne contenant que des contrôles directionnels Unicode, et l'advance de mot s'applique à un cluster U+0020, les deux étant inclus dans le wrapping logique et les advances de glyphes retournées
Les glyphes d'entrée et générés, y compris les records de sauts de ligne insérés, sont bornés par le même MaximumGlyphs total ; les surrogates malformés et glyphes requis manquants échouent, et l'annulation est vérifiée entre paragraphes, runs, résolution de lignes en cache et checkpoints de wrapping
Linux utilise libharfbuzz.so.0 et libfribidi.so.0 ; Windows exige des bibliothèques d'architecture correspondante, avec des chemins explicites optionnellement fournis par HOTPDF_HARFBUZZ_LIBRARY et HOTPDF_FRIBIDI_LIBRARY
Pour les permissions de polices PDF, objets CID, ToUnicode, liens d'apparences et sortie incrémentale, utilisez HPDFBuildHeadlessTextAppearance ou une méthode d'apparence de document
Le texte complexe natif Windows décrit les architectures de processus correspondantes et les chemins de recherche de dépendances runtime
Utilisez HPDFShapeHeadlessTextSpan pour shaper un item de style sélectionné avec le contexte de paragraphe environnant, et HPDFResolveHeadlessTextOrder pour inspecter les positions visuelles Unicode réelles