THotPDF.RegisterAcroFormFont

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

 

AddXFAPacket  AcroForm Support  SetFormUnicodeFontDict

Registruje dodatočný Unicode font (Type 0 / CID-keyed) na zahrnutie do slovníka AcroForm Default Resources (/DR). Umožňuje jedinému PDF dokumentu sprístupniť viac Unicode fontov widgetom AcroForm súčasne - typicky sa používa pre viacjazyčné formuláre, ktoré potrebujú napríklad latinský font plus CJK font plus arabský font v tom istom formulári

 

Delphi syntax:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

  FontIndirectRef: THPDFObject);

 

Opis

Widgety AcroForm odkazujú na fonty cez slovník Default Resources (/DR) v slovníku AcroForm, ktorý slúži ako zdieľaný zásobník zdrojov pre všetky vzhľadové streamy polí formulára. Pred verziou v2.119.42 odhalil AcroForm /DR presne jeden Unicode font, zvyčajne pomocný Type 0 font zaregistrovaný cez SetFormUnicodeFontDict, čo obmedzovalo viacjazyčné pracovné postupy formulárov, pretože každý widget musel renderovať cez ten istý fontový program

 

After v2.119.42 callers can register additional Unicode fonts at arbitrary resource names. Each registered font becomes a /DR /Font /<name> <indirect ref> entry inside the AcroForm /DR dict at EndDoc. Widget appearance streams can then reference any of the registered names through their own /Tf <name> <size> operator inside the appearance content stream.

 

Parameters

FontResourceName - PDF Name, na ktorý odkazuje operátor /Tf vo vzhľadovom streame. Konvencia: krátky stabilný identifikátor bez úvodnej lomky (napr. NotoSansArab, NotoSansCJK). HotPDF pri serializácii zapisuje úvodnú lomku

FontIndirectRef - existujúci nepriamy slovník fontu Type 0 (CID-keyed), zvyčajne výsledok CreateIndirectFontDict nad fontom zaregistrovaným cez 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);

 

Widgety s arabským obsahom môžu teraz vytvárať svoje vzhľadové streamy pomocou /NotoSansArab 12 Tf, zatiaľ čo widgety s japonským obsahom používajú /NotoSansJP 12 Tf, pričom oba zdieľajú jeden dokumentový zásobník zdrojov AcroForm /DR

 

Coexistence with SetFormUnicodeFontDict

Predchádzajúca jednopísmová pomocná funkcia SetFormUnicodeFontDict naďalej funguje pre projekty, ktoré potrebujú iba jedno Unicode písmo v AcroForm /DR. RegisterAcroFormFont je prírastková: volajúci ju môžu použiť popri SetFormUnicodeFontDict alebo SetFormUnicodeFontDict úplne nahradiť, keď je potrebných viac ako jedno Unicode písmo

 

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