|
Registrerar ett ytterligare Unicode-teckensnitt (Type 0 / CID-keyed) för inkludering i AcroForm Default Resources-ordboken (/DR). Låter ett enda PDF-dokument exponera flera Unicode-teckensnitt för AcroForm-widgetar samtidigt - används typiskt för flerspråkiga formulär som behöver till exempel ett latinskt teckensnitt plus ett CJK-teckensnitt plus ett arabiskt teckensnitt i samma formulär
Delphi-syntax:
procedure RegisterAcroFormFont(const FontResourceName: AnsiString;
FontIndirectRef: THPDFObject);
Beskrivning
AcroForm-widgetar refererar teckensnitt via en Default Resources-ordbok (/DR) på AcroForm-ordboken, som fungerar som en delad resurspool för alla utseendeströmmar för formulärfält. Före v2.119.42 exponerade AcroForm /DR exakt ett Unicode-teckensnitt (vanligtvis det hjälparinställda Type 0-teckensnittet registrerat via SetFormUnicodeFontDict), vilket begränsade flerspråkiga formulärflöden eftersom varje widget var tvungen att renderas genom samma teckensnittsprogram
Efter v2.119.42 kan anropare registrera ytterligare Unicode-teckensnitt med valfria resursnamn. Varje registrerat teckensnitt blir en /DR /Font /<name> <indirect ref>-post i AcroForm /DR-ordboken vid EndDoc. Widgetarnas utseendeströmmar kan sedan referera valfritt registrerat namn genom sin egen /Tf <name> <size>-operator i utseendets innehållsström
Parametrar
FontResourceName - PDF Name som utseendeströmmens /Tf-operator refererar. Konvention: en kort stabil identifierare utan inledande snedstreck (t.ex. 'NotoSansArab', 'NotoSansCJK'). HotPDF skriver det inledande snedstrecket vid serialisering
FontIndirectRef - en befintlig indirekt Type 0-teckensnittsordbok (CID-keyed), vanligtvis resultatet av CreateIndirectFontDict över ett teckensnitt registrerat via RegisterUnicodeTTF
Typiskt arbetsflöde (flerspråkigt formulär)
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);
Nu kan widgetar med arabiskt innehåll skapa sina utseendeströmmar med /NotoSansArab 12 Tf medan widgetar med japanskt innehåll använder /NotoSansJP 12 Tf, och de delar en dokumentomfattande AcroForm /DR-resurspool
Samexistens med SetFormUnicodeFontDict
Den befintliga hjälpen för ett enda teckensnitt (SetFormUnicodeFontDict) fortsätter att fungera för projekt som bara behöver ett Unicode-teckensnitt i AcroForm /DR. RegisterAcroFormFont är additiv: anropare kan använda den utöver SetFormUnicodeFontDict, eller ersätta SetFormUnicodeFontDict helt när fler än ett Unicode-teckensnitt behövs
Se även: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, AcroForm Support, THPDFPage.AddTextField
|