الخط الاحتياطي والنص العمودي
يمكن لـ HotPDF اختيار خطوط احتياطية (fallback) حسب نص يونيكود البرمجي (script)، والإبلاغ عن نقاط الكود التي تبقى غير محلولة، وكتابة نص CJK عبر وضع كتابة CID رأسي حقيقي
سلاسل احتياطية على مستوى المستند
تخزّن THotPDF.SetFontFallbackChain قائمة خطوط مرتَّبة لفئة THPDFFontScript واحدة
تحسم THPDFPage.TextOutWithFallback كل قيمة يونيكود عددية مقابل الخط المختار وسلسلته البرمجية (script) والسلسلة المشتركة، ثم تُصدر القيم العددية المتجاورة بنفس الخط كتشغيلة نص (run) واحدة
- السلاسل الاحتياطية هي إعدادات مستند وتبقى متاحة عبر الصفحات
- تُزال أسماء الأوجه (face names) المكررة والفارغة مع الحفاظ على ترتيب المستدعي
- يرفض فحص الأوجه المثبتة الاستبدال الصامت عبر GDI قبل قبول التغطية
- تُفكَّك القيم العددية للسطح التكميلي من أزواج UTF-16 البديلة قبل التصنيف
- تستخدم كل تشغيلة احتياطية خط Type0 المضمَّن الموجود، والتقسيم إلى مجموعات فرعية، و
ToUnicode، ومسار الخط المشترك عبر الصفحات - يفحص التخطيط الاحتياطي عائلات الخطوط المثبتة بالوجه الغامق أو المائل المطلوب، ويحفظ جميع إعدادات نمط الخط ومجموعة المحارف والحجم واتجاه الكتابة عبر التشغيلات، ثم يستعيد خط المستدعي بعدها
تشخيصات قابلة للتنفيذ
تُجري AnalyzeUnresolvedGlyphs تدقيق تغطية للقراءة فقط، بينما تسجّل TextOutWithFallback القيم العددية غير المحلولة التي تُصادَف أثناء الإخراج
يتضمّن كل THPDFUnresolvedGlyphInfo نقطة الكود العددية، والخط الأساسي، والنص البرمجي (script) المصنَّف، وقائمة اقتراحات احتياطية مفصولة بفاصلة منقوطة
تُعيد GetUnresolvedGlyphs تقرير المستند الحالي، وتبدأ ClearUnresolvedGlyphs فترة تقرير جديدة
تقبل النسخ ذات النمط الصريح من THotPDF.ResolveFontForCodePoint وTHotPDF.AnalyzeUnresolvedGlyphs قيمة TFontStyles بحيث يفحص الفحص المسبق الوجه نفسه المستخدم في الإخراج؛ وتبقى نسختاهما الأصليتان تفحصان الأوجه العادية
تحتفظ مربعات النص والنص المضمَّن في SVG ومظاهر النص المحمَّلة بعائلات الخطوط المنسّقة عبر التخطيط الاحتياطي، بدل معاملة أسماء خطوط PDF الداخلية كعائلات نظام أو تحويل كل تشغيلة إلى وجه عادي
الكتابة الرأسية لـ CJK
تختار THPDFPage.TextOutVertical النسخة الرأسية للخط الحالي وتُصدر تشغيلة نص Identity-V واحدة بدلًا من تموضع كل محرف يدويًا
- يحتوي خط CID الفرعي (descendant) على القيم الافتراضية
/DW2ومدخلات/W2الخاصة بكل حرف (glyph) - يوفّر جدولا OpenType
vheaوvmtxالتقدّمات الرأسية والهوامش الجانبية العلوية؛ وتُشتق أصول TrueType من مربع الإحاطة الخاص بكلglyf، بينما يوفّرVORGالقيم الافتراضية والاستثناءات المرجعية لأصل CFF - تستخدم الخطوط التي لا تحتوي جداول عمودية قيمًا افتراضية قابلة للتهيئة: تقدّم (advance) بمقدار 1000 وحدة وأصل (origin) بمقدار 880 وحدة
- مع
sfVerticalAlternates، تستخدم تشغيلة GSUB الكاملة الحافظة للطولvrt2عند الإعلان عنها، وإلا فإنها تتراجع إلىvert، مع الحفاظ على اختيار النص البرمجي (script) واللغة النشطَين - عندما يُغفل خط ما استبدال علامة ترقيم لكنه يُخطِّط أشكال العرض العمودية (vertical presentation forms) في Unicode، تستخدم الفواصل والنقاط والأقواس والشُّرَط والنقاط الحذفية وعلامات الترقيم ذات الصلة تلك الحروف (glyphs)، بينما يحافظ
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;