|
دوال تجزئة خطوط CFF و OpenType
|
الأعلى EnableFontSubsetting المحتويات |
|
تكشف دوال مستوى الوحدة هذه واجهة فحص الخطوط العامة لـ CFF و OpenType-CFF و sfnt التي يستخدمها مسار الخطوط المضمّن في HotPDF. ويوفّر HotPDF أيضًا وحدتي محلل قابلتي لإعادة الاستخدام لـ Type 1 PFB و CFF للمستدعين الذين يحتاجون فحص خطوط أدنى مستوى
صيغة Delphi function HPDFSubsetCFF(const CFFBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFIsCFF2Font(const FontBytes: TBytes): Boolean; function HPDFInstantiateCFF2Font(const FontBytes: TBytes; const AxisValues: THPDFVariableFontAxisValueArray): TBytes; function HPDFSubsetCFF2Font(const FontBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFIsTrueTypeVariableFont(const FontBytes: TBytes): Boolean; function HPDFInstantiateTrueTypeVariableFont(const FontBytes: TBytes; const AxisValues: THPDFVariableFontAxisValueArray): TBytes; function HPDFSfntIsOTF(const Data: TBytes): Boolean; function HPDFOTFFindCFFTable(const Data: TBytes; out TableOff: Cardinal; out TableLen: Cardinal): Boolean; function HPDFSubsetOTFContainer(const OTFBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFExtractTTFPostScriptName(const Data: TBytes): AnsiString;
الوصف يعيد HPDFSubsetCFF كتابة حمولة خط CFF في مكانها، محافظًا على معرفات المحارف (glyph IDs) ومستبدلًا CharStrings والدالات الفرعية غير المستخدمة بأدنى بقايا. وهي المساعدة للمستدعين الذين استخرجوا جدول CFF فعلًا من حاوية خطوط
يكتشف HPDFIsCFF2Font ملف sfnt يحوي جدول
ينفذ HPDFSubsetCFF2Font إنشاء النسخ بالإحداثيات الافتراضية نفسه مع استبدال برامج المحارف غير المستخدمة بـ CharStrings فارغة. ويحافظ على معرفات المحارف وقواميس multi-FD وبيانات hint الخاصة ومصفوفات الخط
يكتشف HPDFIsTrueTypeVariableFont ملف sfnt يحوي
يكتشف HPDFSfntIsOTF حاوية sfnt التي إصدارها OTTO. ويحدد HPDFOTFFindCFFTable موقع الجدول المضمّن 'CFF '. ويجزّأ HPDFSubsetOTFContainer بيانات CFF أو CFF2 المضمّنة ويعيد حاوية OTF بمجاميع تحقق sfnt صالحة. ويقرأ HPDFExtractTTFPostScriptName الاسم ذا المعرف 6 من جدول
يتعرف مُجزّئ الخط على CFF ذي المفاتيح بالأسماء (Private DICT مفرد و INDEX واحد للدالات الفرعية المحلية) وعلى CFF ذي المفاتيح CID (معامل ROS في Top DICT، و FDArray من قواميس Private DICT لعدة خطوط فرعية، وخريطة FDSelect من المحرف إلى FD، و INDEXes للدالات الفرعية المحلية لكل FD). ويغطي دعم CID خطوط OpenType-CFF للصينية/اليابانية/الكورية والهندية والعربية؛ ويتتبع مسح الإغلاق سياق FD لكل CharString محفوظ فتُجزَّأ INDEXes الدالات الفرعية المحلية لكل FD باستقلالية
أما فكوك أعداد CFF الصحيحة الأدنى مستوى ومحللات FDArray / FDSelect وماسحات الدالات الفرعية فهي تفاصيل تنفيذ خلف هذه الواجهة المساعدة العامة
وحدات محللات Type 1 و CFF توفّر الوحدات
انظر أيضًا: EnableFontSubsetting, FontEmbedding, دعم مرشحات PDF |
ينفّذ عارض المحارف الأصلي عمليات Type 2 القياسية للقيم المنطقية والحسابية والشرطية والمصفوفة العابرة والمكدس، بما في ذلك put وget وifelse وrandom وdup وexch وindex وroll
تُعاد قيم المصفوفة العابرة (transient) لكل محرف، وتكون قيم random قابلة لإعادة الإنتاج، وترفض حدود المعاملات والمصفوفة العابرة والعودية والتنفيذ البرامجَ المشوّهة دون إعادة مخطط تفصيلي جزئي
يحلّ ماسح التجزئة التعبيرات الحسابية وتعبيرات المصفوفة العابرة التي تستخدمها استدعاءات الدالات الفرعية المحلية والعامة، بما في ذلك معاملات النقطة الثابتة 16.16 في Type 2
عندما تجعل قيم random أو حالة عابرة مجهولة أو تأثيرات المكدس بين الإجراءات هدفَ الاستدعاء غير مؤكد، يحتفظ التجزئة بكل دالة فرعية مرشحة بدل إسقاط اعتمادٍ لمخطط تفصيلي قد يكون reachable
تبقى عمليات Multiple Master المحجوزة والمهجورة غير مدعومة وتفشل بشكل صريح