HPDFShapeHeadlessTextSpan
function HPDFShapeHeadlessTextSpan(const Context: UnicodeString;
FirstUnit, UnitCount: Integer; const FontBytes: SysUtils.TBytes;
MaximumGlyphs: Integer; CancellationToken: THPDFCancellationToken;
CharacterAdvance: Double = 0; WordAdvance: Double = 0;
ParagraphDirection: THPDFHeadlessTextDirection = htdAuto): THPDFHeadlessShapedGlyphs;
Shapeuje jen vybraný UTF-16 span se skutečným OpenType písmem volajícího, zatímco kompletní okolní odstavec si uchovává jako HarfBuzz pre-context a post-context
FirstUnit je zero-based UTF-16 offset a UnitCount je UTF-16 délka; žádná hranice nesmí rozříznout surrogate pár a span nulové délky nevrací žádné glyfy
FriBidi rozřeší embedding úrovně z kompletního odstavce; HarfBuzz dostane rozřešený skript a shapeuje vybrané položky uvnitř každého vizuálního runu, se zachováním arabských spojovacích tvarů i zrcadlené interpunkce
Vrácené hodnoty SourceOffset jsou relativní k vybranému spanu, UnicodeText si uchovává každý skutečný vybraný cluster a advancy i offsety glyfů používají fontové souřadnice o 1000 unit
CharacterAdvance se aplikuje jednou na shaped cluster, vyjma clusteru obsahujícího jen Unicode směrové řídicí znaky; WordAdvance se aplikuje na cluster U+0020 a oba musí být konečné a používat stejné souřadnice jako Advance
ParagraphDirection může zachovat existující odstavec zleva doprava či zprava doleva, když se shapeuje fyzicky zalomený řádek, jehož první silný znak se liší od původního odstavce
Stávající rozpočty vstupu a glyfů, kontroly pokrytí písma, cancellation token i požadavky na nativní runtime závislosti platí i pro tuto funkci
Částečný span si uchová spojovací kontext, ale samostatně nepozicuje jinak stylovanou kombinující značku vůči základnímu glyfu z jiného písma; když jedno písmo pokrývá celý cluster, použijte shaping po celých clusterech
Viz HPDFShapeHeadlessText, HPDFResolveHeadlessTextOrder a kontextové rich text appearance