THotPDF.RegisterAcroFormFont

THotPDF AcroForm /DR multi-font registration (v2.119.42)

 

AddXFAPacket  AcroForm Support  SetFormUnicodeFontDict

Registruoja papildomą Unicode (Type 0 / CID-keyed) šriftą įtraukimui į AcroForm Default Resources (/DR) žodyną. Leidžia vienam PDF dokumentui tuo pačiu metu pateikti kelis Unicode šriftus AcroForm valdikliams - dažniausiai naudojama daugiakalbėms formoms, kurioms tame pačiame formate reikia, pavyzdžiui, lotyniško šrifto, CJK šrifto ir arabiško šrifto

 

Delphi syntax:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

  FontIndirectRef: THPDFObject);

 

Aprašas

AcroForm widgetai nurodo šriftus per Default Resources (/DR) žodyną AcroForm žodyne, kuris veikia kaip bendras visų formos laukų appearance streamų resursų telkinys. Iki v2.119.42 AcroForm /DR atskleisdavo tik vieną Unicode šriftą (paprastai pagalbinės funkcijos nustatytą Type 0 šriftą, registruotą per SetFormUnicodeFontDict), o tai ribojo daugiakalbius formų srautus, nes kiekvienas widgetas turėjo būti atvaizduojamas tuo pačiu šriftu

 

Nuo v2.119.42 kviestinės pusės gali registruoti papildomus Unicode šriftus bet kokiais resurso pavadinimais. Kiekvienas registruotas šriftas EndDoc metu tampa /DR /Font /<name> <indirect ref> įrašu AcroForm /DR žodyne. Tada valdiklių išvaizdos srautai gali kreiptis į bet kurį registruotą pavadinimą per savo /Tf <name> <size> operatorių išvaizdos turinio sraute

 

Parameters

FontResourceName - PDF Name, į kurį nurodo išvaizdos srauto /Tf operatorius. Konvencija: trumpas stabilus identifikatorius be priekinio brūkšnio (pvz., 'NotoSansArab', 'NotoSansCJK'). HotPDF serializuodamas įrašo priekinį brūkšnį

FontIndirectRef - an existing indirect Type 0 (CID-keyed) font dictionary, typically the result of CreateIndirectFontDict over a font registered via RegisterUnicodeTTF.

 

Typical workflow (multilingual form)

 

PDF.RegisterUnicodeTTF('NotoSansArab', 'NotoSansArabic-Regular.ttf');

PDF.RegisterUnicodeTTF('NotoSansJP'  , 'NotoSansJP-Regular.otf');

ArabRef := PDF.CreateIndirectFontDict('NotoSansArab');

JPRef   := PDF.CreateIndirectFontDict('NotoSansJP');

PDF.RegisterAcroFormFont('NotoSansArab', ArabRef);

PDF.RegisterAcroFormFont('NotoSansJP'  , JPRef);

 

Dabar arabiško turinio valdikliai gali kurti savo išvaizdos srautus naudodami /NotoSansArab 12 Tf, o japoniško turinio valdikliai - /NotoSansJP 12 Tf, dalindamiesi vienu viso dokumento AcroForm /DR resursų telkiniu

 

Coexistence with SetFormUnicodeFontDict

Ankstesnė vieno šrifto pagalbinė funkcija (SetFormUnicodeFontDict) vis dar veikia projektams, kuriems AcroForm /DR reikia tik vieno Unicode šrifto. RegisterAcroFormFont yra priedinis: kūrėjai gali jį naudoti kartu su SetFormUnicodeFontDict arba visiškai ją pakeisti, kai reikia daugiau nei vieno Unicode šrifto

 

See also: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, AcroForm Support, THPDFPage.AddTextField