THotPDF.RegisterAcroFormFont

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

 

AddXFAPacket  AcroForm Support  SetFormUnicodeFontDict

Регистрира допълнителен Unicode (Type 0 / CID-keyed) шрифт за включване в AcroForm Default Resources (/DR) речника. Позволява на едно PDF да експонира едновременно няколко Unicode шрифта към AcroForm widgets - обикновено за многоезични формуляри, които се нуждаят от латински шрифт плюс CJK шрифт плюс арабски шрифт в един и същ формуляр

 

Delphi syntax:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

  FontIndirectRef: THPDFObject);

 

Описание

AcroForm widgets реферират fonts през Default Resources (/DR) dictionary в AcroForm dict-а, който служи като споделен resource pool за всички form-field appearance streams. Преди v2.119.42 AcroForm /DR излагаше точно един Unicode font (обикновено helper-set Type 0 font, регистриран чрез SetFormUnicodeFontDict), което ограничаваше multilingual form workflows, защото всеки widget трябваше да рендира през същия font 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-ът, който appearance stream /Tf operator-ът реферира. Convention: кратък стабилен identifier без водещ slash (например 'NotoSansArab', 'NotoSansCJK'). HotPDF записва водещия slash при serializing

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);

 

Сега Arabic-content widgets могат да авторират своите appearance streams с /NotoSansArab 12 Tf, докато Japanese-content widgets използват /NotoSansJP 12 Tf, като споделят един document-wide AcroForm /DR resource pool

 

Coexistence with SetFormUnicodeFontDict

Съществуващият помощник за един шрифт (SetFormUnicodeFontDict) продължава да работи за проекти, които се нуждаят само от един Unicode шрифт в AcroForm /DR. RegisterAcroFormFont е добавъчен: извикващите могат да го използват заедно със SetFormUnicodeFontDict или да заменят SetFormUnicodeFontDict изцяло, когато е нужен повече от един Unicode шрифт

 

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