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;
Deklariert in HPDFHeadlessShaping, formt diese Funktion ein UTF-16-Span mit seinem vollständigen umgebenden Kontext und der zuvor aufgelösten visuellen Ordnung, mit der gelieferten HarfBuzz- und FriBidi-Runtime und den Font-Bytes
FirstUnit ist ein nullbasierter UTF-16-Offset, und UnitCount wählt den gewünschten Span; Aufrufer müssen kompatible Ordnungsdaten und ein positives MaximumGlyphs-Budget liefern
CharacterAdvance und WordAdvance nutzen normalisierte 1000-Font-Unit-Advances statt PDF-Punkte; Punkt-Abstände vor dem Aufruf mit Punkten * 1000 / fontSize umrechnen
Rohe Advances müssen endlich sein und absolute Werte von höchstens 1000000000000000 haben, womit das native Punkt-Budget bei der kleinsten unterstützten positiven Fontgröße bleibt; Appearance-Builder setzen ihre separaten authored und berechneten Punktlimits durch
CSSLetterSpacing aktiviert typografisches Unit-Tracking und optionale Ligatur-Behandlung; CSSWordSpacing aktiviert halbe Abstände um SPACE- und NBSP-Cluster, einschließlich Separator-Marks, gemäß dem begrenzten Spacing-Profil
Zurückgegebene Glyph-Advances und -Offsets enthalten den angeforderten Abstand; SpacingAdvance hält seinen Beitrag fest, während TypographicUnit, CursiveUnit und WordSeparator Grenz-Metadaten für den Rich-Physical-Line-Composer liefern
Abbruch wird während Klassifizierung und Shaping geprüft, und Glyph-Budget- oder fehlerhafte Eingaben nutzen den bestehenden Shaping-Exception-Kontrakt; diese Funktion veröffentlicht kein PDF und besitzt weder die Font-Bytes noch das Token des Aufrufers
Bestehende Shaping-Einstiegspunkte behalten ihre bisherige Semantik; Pascal- und C++Builder-Consumer mit dem passenden öffentlichen Glyph-Record und den generierten Headern neu bauen