HPDFShapeHeadlessTextStyledSpan
function HPDFShapeHeadlessTextStyledSpan(const Context: UnicodeString;
FirstUnit, UnitCount: Integer; const Order: THPDFHeadlessTextOrder;
const FontBytes: SysUtils.TBytes; MaximumGlyphs: Integer;
CancellationToken: THPDFCancellationToken;
CharacterAdvance, WordAdvance: Double;
CSSLetterSpacing, CSSWordSpacing: Boolean): THPDFHeadlessShapedGlyphs;
Déclarée dans HPDFHeadlessShaping, cette fonction shape un span UTF-16 en utilisant son contexte environnant complet et l'ordre visuel précédemment résolu, avec la runtime HarfBuzz et FriBidi fournie et les octets de police
FirstUnit est un offset UTF-16 à base zéro et UnitCount sélectionne le span demandé ; les appelants doivent fournir des données d'ordre compatibles et un budget MaximumGlyphs positif
CharacterAdvance et WordAdvance utilisent des advances normalisées en unités de police de 1000, pas des points PDF ; convertissez l'espacement en points via points * 1000 / fontSize avant l'appel
Les advances brutes doivent être finies et de valeur absolue au plus 1000000000000000, ce qui laisse la place au budget de points natif à la taille de police positive minimale prise en charge ; les builders d'apparences appliquent leurs limites de points distinctes, rédigées et calculées
CSSLetterSpacing active le suivi en unités typographiques et la gestion des ligatures optionnelles ; CSSWordSpacing active le demi-espacement autour des clusters SPACE et NBSP, marques de séparation comprises, selon le profil d'espacement borné
Les advances et offsets de glyphes retournés incluent l'espacement demandé ; SpacingAdvance enregistre sa contribution, tandis que TypographicUnit, CursiveUnit et WordSeparator fournissent les métadonnées de frontière pour le composeur de lignes physiques riches
L'annulation est contrôlée pendant la classification et le shaping, et les dépassements de budget de glyphes ou les entrées mal formées empruntent le contrat d'exception de shaping existant ; cette fonction ne publie aucun PDF et ne possède ni les octets de police ni le token de l'appelant
Les points d'entrée de shaping existants conservent leur sémantique précédente ; recompilez les consommateurs Pascal et C++Builder avec le record de glyphe public correspondant et les en-têtes générés