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