|
یک فونت Unicode اضافی (Type 0 / CID-keyed) را برای قرار گرفتن در دیکشنری Default Resources یا /DRِ AcroForm ثبت میکند. این کار به یک سند PDF واحد اجازه میدهد چندین فونت Unicode را همزمان در اختیار widgetهای AcroForm بگذارد - معمولاً برای فرمهای چندزبانهای که مثلاً به یک فونت لاتین، یک فونت CJK و یک فونت عربی در همان فرم نیاز دارند
Delphi syntax:
procedure RegisterAcroFormFont(const FontResourceName: AnsiString;
FontIndirectRef: THPDFObject);
توضیح
widgetهای AcroForm فونتها را از طریق دیکشنری Default Resources (/DR) روی دیکشنری AcroForm ارجاع میدهند و این دیکشنری نقش مخزن منابع مشترک برای همهٔ appearance streamهای فیلدهای فرم را دارد. پیش از v2.119.42، /DRِ AcroForm دقیقاً یک فونت Unicode در اختیار میگذاشت (معمولاً فونت Type 0 ثبتشده از طریق SetFormUnicodeFontDict) و این موضوع گردشکارهای فرم چندزبانه را محدود میکرد، چون هر widget مجبور بود از همان برنامهٔ فونت رندر شود
بعد از v2.119.42 فراخوانندهها میتوانند فونتهای Unicode اضافی را با نامهای دلخواه منبع ثبت کنند. هر فونت ثبتشده به یک ورودی /DR /Font /<name> <indirect ref> در دیکشنری /DRِ AcroForm در زمان EndDoc تبدیل میشود. سپس appearance streamهای widget میتوانند هر نام ثبتشدهای را از طریق operatorِ /Tf <name> <size> خودشان داخل content stream ظاهر ارجاع دهند
پارامترها
FontResourceName - PDF Nameای که operator /Tf در جریان ظاهر به آن ارجاع میدهد. قرارداد: یک شناسهٔ کوتاه و پایدار بدون اسلش آغازین، مثل 'NotoSansArab' یا 'NotoSansCJK'. HotPDF هنگام سریالسازی اسلش آغازین را مینویسد
FontIndirectRef - یک دیکشنری فونت Type 0 (CID-keyed) غیرمستقیمِ موجود، که معمولاً حاصل CreateIndirectFontDict روی فونتی ثبتشده با RegisterUnicodeTTF است
گردشکار معمول (فرم چندزبانه)
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);
اکنون widgetهای دارای محتوای عربی میتوانند جریان ظاهر خود را با /NotoSansArab 12 Tf بسازند، در حالی که widgetهای دارای محتوای ژاپنی از /NotoSansJP 12 Tf استفاده میکنند و هر دو یک pool منابع /DR سراسری در سند را به اشتراک میگذارند
همزیستی با SetFormUnicodeFontDict
کمکرویهٔ تکفونتی موجود (SetFormUnicodeFontDict) همچنان برای پروژههایی که فقط به یک فونت Unicode در /DRِ AcroForm نیاز دارند کار میکند. RegisterAcroFormFont افزایشی است: فراخوانندهها میتوانند آن را در کنار SetFormUnicodeFontDict استفاده کنند، یا وقتی بیش از یک فونت Unicode لازم است، آن را بهطور کامل جایگزین SetFormUnicodeFontDict کنند
همچنین ببینید: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, پشتیبانی AcroForm, THPDFPage.AddTextField
|