|
Rejestruje dodatkową czcionkę Unicode (Type 0 / CID-keyed) do umieszczenia w słowniku AcroForm Default Resources (/DR). Pozwala pojedynczemu dokumentowi PDF udostępniać widgetom AcroForm wiele czcionek Unicode jednocześnie - zwykle używane w formularzach wielojęzycznych, które potrzebują na przykład czcionki łacińskiej, czcionki CJK i czcionki arabskiej w tym samym formularzu
Składnia Delphi:
procedure RegisterAcroFormFont(const FontResourceName: AnsiString;
FontIndirectRef: THPDFObject);
Opis
Widgety AcroForm odwołują się do czcionek przez słownik Default Resources (/DR) w słowniku AcroForm, który działa jako współdzielona pula zasobów dla wszystkich strumieni wyglądu pól formularza. Przed v2.119.42 AcroForm /DR udostępniał dokładnie jedną czcionkę Unicode (zwykle pomocniczą czcionkę Type 0 zarejestrowaną przez SetFormUnicodeFontDict), co ograniczało wielojęzyczne przepływy formularzy, ponieważ każdy widget musiał renderować przez ten sam program czcionki
Od v2.119.42 wywołujący mogą rejestrować dodatkowe czcionki Unicode pod dowolnymi nazwami zasobów. Każda zarejestrowana czcionka staje się wpisem /DR /Font /<name> <indirect ref> w słowniku AcroForm /DR podczas EndDoc. Strumienie wyglądu widgetów mogą następnie odwoływać się do dowolnej z zarejestrowanych nazw przez własny operator /Tf <name> <size> w strumieniu zawartości wyglądu
Parametry
FontResourceName - PDF Name, do którego odwołuje się operator /Tf w strumieniu wyglądu. Konwencja: krótki stabilny identyfikator bez ukośnika na początku (np. 'NotoSansArab', 'NotoSansCJK'). HotPDF zapisuje ukośnik na początku podczas serializacji
FontIndirectRef - istniejący pośredni słownik czcionki Type 0 (CID-keyed), zwykle wynik CreateIndirectFontDict dla czcionki zarejestrowanej przez RegisterUnicodeTTF
Typowy przepływ pracy (formularz wielojęzyczny)
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);
Teraz widgety z treścią arabską mogą tworzyć swoje strumienie wyglądu z /NotoSansArab 12 Tf, podczas gdy widgety z treścią japońską używają /NotoSansJP 12 Tf, współdzieląc jedną ogólnodokumentową pulę zasobów AcroForm /DR
Współistnienie z SetFormUnicodeFontDict
Istniejący wcześniej pomocnik pojedynczej czcionki (SetFormUnicodeFontDict) nadal działa w projektach, które potrzebują tylko jednej czcionki Unicode w AcroForm /DR. RegisterAcroFormFont jest addytywny: wywołujący mogą używać go oprócz SetFormUnicodeFontDict albo całkowicie zastąpić SetFormUnicodeFontDict, gdy potrzebna jest więcej niż jedna czcionka Unicode
Zobacz też: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, AcroForm Support, THPDFPage.AddTextField
|