THotPDF.RegisterAcroFormFont

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

 

AddXFAPacket  AcroForm Support  SetFormUnicodeFontDict

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