Font Fallback and Vertical Text
HotPDF میتواند قلمهای جایگزین را بر اساس خط یونیکد انتخاب کند، نقاط کد حلنشده را گزارش دهد و متن CJK را از طریق حالت نوشتن عمودی واقعی CID بنویسد
زنجیرههای جایگزین سطح سند
THotPDF.SetFontFallbackChain THPDFFontScript فهرست مرتبی از قلمها را برای یک ردهٔ ذخیره میکند
THPDFPage.TextOutWithFallback هر اسکالر یونیکد را با قلم انتخابشده، زنجیرهٔ خطش و زنجیرهٔ مشترک حل میکند و اسکالرهای مجاور با قلم یکسان را بهصورت یک قطعهٔ متن صادر میکند
- زنجیرههای جایگزین تنظیمات سطح سندند و بین صفحات در دسترس میمانند
- نام قلمهای تکراری و خالی حذف میشوند در حالی که ترتیب دادهشدهٔ فراخواننده حفظ میشود
- کاوش قلمهای نصبشده پیش از پذیرش پوشش، جانشینسازی خاموش GDI را رد میکند
- اسکالرهای صفحهٔ مکمل پیش از دستهبندی از جفتهای surrogate UTF-16 کدگشایی میشوند
- هر قطعهٔ جایگزین از فونت Type0 جاسازیشدهٔ موجود، زیرمجموعهسازی،
ToUnicodeو مسیر فونت مشترک بینصفحهای استفاده میکند - چیدمان جایگزین، خانوادههای فونت نصبشده را با سبک ضخیم و ایتالیک درخواستی بررسی میکند، همهٔ تنظیمات سبک فونت، charset، اندازه و جهت نوشتن را در سراسر قطعهها حفظ میکند و پس از کار، فونت فراخوان را برمیگرداند
تشخیصهای قابل اقدام
AnalyzeUnresolvedGlyphs TextOutWithFallback یک بازرسی پوششِ فقطخواندنی انجام میدهد، در حالی که اسکالرهای حلنشدهٔ برخورده در حین خروجی را ثبت میکند
هر THPDFUnresolvedGlyphInfo شامل نقطهٔ کد اسکالر، قلم اصلی، خط دستهبندیشده و فهرست پیشنهاد جایگزین جداشده با نقطهویرگول است
GetUnresolvedGlyphs ClearUnresolvedGlyphs گزارش جاری سند را برمیگرداند و یک بازهٔ گزارشدهی جدید آغاز میکند
سربارگذاریهای سبک-صریحِ THotPDF.ResolveFontForCodePoint و THotPDF.AnalyzeUnresolvedGlyphs مقدار TFontStyles میپذیرند تا preflight بتواند همان سبکی را که برای خروجی به کار رفته بازرسی کند؛ سربارگذاریهای اصلی همچنان سبک regular را بازرسی میکنند
جعبههای متنی، متن جاسازیشدهٔ SVG و ظاهرهای متنیِ بارگذاریشده در سراسر چیدمان جایگزین، خانوادههای فونت سبکدار را نگه میدارند؛ بهجای آنکه نامهای فونت داخلی PDF را خانوادهٔ سیستمی بگیرند یا همهٔ قطعهها را به سبک regular برگردانند
نوشتن عمودی CJK
THPDFPage.TextOutVertical Identity-V واریانت عمودی قلم فعلی را انتخاب و یک قطعهٔ متن صادر میکند بهجای اینکه هر نویسه را دستی موقعیتدهی کند
- فونت فرزند CID شامل پیشفرضهای
/DW2و مدخلهای/W2مخصوص هر گلیف است - OpenType
vheaوvmtxپیشرویهای عمودی و side bearingهای بالایی را فراهم میکنند؛ مبدأهای TrueType از کادر محصورکنندهٔ هرglyfاستخراج میشود، در حالی کهVORGپیشفرضهای مبدأ CFF و استثنائات معتبر را فراهم میکند - فونتهای بدون جدولهای عمودی از مقادیر پیشفرض قابل تنظیم، یعنی پیشروی 1000 واحدی و مبدأ 880 واحدی استفاده میکنند
- با
sfVerticalAlternates، کل گذر GSUB حفظکنندهٔ طول وقتیvrt2اعلام شده باشد از آن استفاده میکند و در غیر این صورت بهvertبرمیگردد و انتخاب فعال خط و زبان را حفظ میکند - وقتی فونت جانشینسازی علائم نگارشی را نداشته باشد اما شکلهای ارائهٔ عمودی یونیکد را نگاشت کند، ویرگولها، نقطهها، براکتها، خط تیرهها، سهنقطهها و علائم نگارشی مرتبط از آن گلیفها استفاده میکنند و
ToUnicodeمتن مبدأ را حفظ میکند - ویژگیهای GPOS عمودی
vkrnوvpalاز طریقShapingFeaturesدر دسترس میمانند GetVerticalTextAdvanceپیشروی فضای کاربر لازم برای موقعیتدهی قطعهٔ عمودی بعدی را برمیگرداند
نمونه
PDF.SetFontFallbackChain(hfsCJK,
['Microsoft YaHei UI', 'Yu Gothic UI', 'Malgun Gothic']);
PDF.SetFontFallbackChain(hfsEmoji, ['Segoe UI Emoji']);
PDF.CurrentPage.SetFont('Arial', [], 12);
PDF.CurrentPage.TextOutWithFallback(72, 72, 0, Text);
PDF.CurrentPage.SetFont('Yu Gothic UI', [], 14);
PDF.CurrentPage.TextOutVertical(420, 72, VerticalText);
Missing := PDF.GetUnresolvedGlyphs;