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;

Dichiarata in HPDFHeadlessShaping, questa funzione dà shaping a uno span UTF-16 usando il proprio contesto completo circostante e l'ordine visivo risolto in precedenza, con il runtime HarfBuzz e FriBidi e i byte del font forniti

FirstUnit è un offset UTF-16 a base zero e UnitCount seleziona lo span richiesto; i chiamanti devono fornire dati di ordine compatibili e un budget MaximumGlyphs positivo

CharacterAdvance e WordAdvance usano avanzamenti normalizzati in 1000 font-unit, non punti PDF; convertire la spaziatura in punti con punti * 1000 / fontSize prima della chiamata

Gli avanzamenti raw devono essere finiti e con valori assoluti al massimo 1000000000000000, per permettere il budget in punti nativo alla minima dimensione positiva di font supportata; i builder di appearance fanno rispettare i propri limiti separati di punti autoriali e calcolati

CSSLetterSpacing attiva il tracking per unità tipografiche e la gestione delle legature opzionali; CSSWordSpacing attiva la mezza spaziatura attorno ai cluster SPACE e NBSP, inclusi i separator mark, seguendo il profilo di spaziatura limitato

Gli avanzamenti e gli offset dei glifi restituiti includono la spaziatura richiesta; SpacingAdvance ne registra il contributo, mentre TypographicUnit, CursiveUnit e WordSeparator forniscono i metadati di confine per il compositore delle linee fisiche rich

La cancellazione viene controllata durante la classificazione e lo shaping, e i fallimenti di budget dei glifi o di input malformato usano il contratto di eccezione di shaping esistente; questa funzione non pubblica un PDF né possiede i byte del font o il token del chiamante

Gli entry point di shaping esistenti preservano la semantica precedente; ricompilare i consumer Pascal e C++Builder usando il record pubblico dei glifi corrispondente e gli header generati