PdfASymbolicFontEncodingStrategy

PdfASymbolicFontEncodingStrategy class

تصف هذه الفئة القواعد التي يمكن استخدامها لضبط عملية بيانات تشفير النسخ للحالات عندما يحتوي خط TrueType الرمزي على أكثر من ترميز واحد . قد تحتوي بعض مستندات PDF بعد التحويل إلى تنسيق PDF / A على خطأ “أكثر من ترميز رمزي cmap لخط TrueType “. ما سبب هذا الخطأ؟ تحتوي جميع خطوط TrueType الرمزية على جدول خاص “cmap” في بياناتها الداخلية. يرسم هذا الجدول رموز الأحرف إلى فهارس الحروف الرسومية. ويمكن أن يحتوي هذا الجدول على جداول فرعية مختلفة للتشفير والتي تصف الترميزات المستخدمة. راجع المعلومات المتقدمة حول جداول cmap على https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html. عادةً ما يحتوي جدول cmap على العديد من جداول الترميز الفرعية ، لكن معيار PDF / A يتطلب هذا ترميز واحد فقط يجب ترك الجدول الفرعي (3،0) لهذا الخط في مستند PDF / A. والسؤال الرئيسي هنا - ما هي البيانات التي يجب أخذها من جداول فرعية أخرى لنسخها إلى جدول ترميز الوجهة (3،0)؟ تحتوي غالبية الخطوط على جداول cmap “جيدة التكوين” حيث يكون كل جدول فرعي للتشفير متسقًا تمامًا مع جدول فرعي آخر. لكن بعض Font تحتوي على جداول cmap مع تضاربات - حيث على سبيل المثال يحتوي جدول فرعي واحد على فهرس الصورة الرمزية 100 لـ unicode 100 ، لكن يحتوي جدول فرعي آخر على فهرس glyph 200 لنفس الرمز الموحد 100. لحل هذه المشكلات ، يلزم وضع إستراتيجية خاصة. يتم استخدام الإستراتيجية التالية افتراضيًا: يتم البحث عن جدول فرعي mac (1،0). إذا تم العثور على هذا الجدول ، يتم استخدام هذه البيانات فقط لملء جدول destination (3،0). إذا لم يتم العثور على جدول فرعي mac ، فسيتم تكرار جميع الجداول الفرعية باستثناء (3،0) ويتم استخدامها لنسخ البيانات إلى الوجهة (3،0) جدول فرعي. يتم أيضًا نسخ التعيين لكل unicode (unicode ، glyph index) إلى جدول الوجهة فقط إذا كان الجدول الوجهة لا يحتوي على رمز unicode هذا في الوقت الحالي. لذلك ، على سبيل المثال ، إذا كانت العلامة الفرعية الأولى تحتوي على فهرس الصورة الرمزية 100 لـ unicode 100 ، وكان الجدول الفرعي التالي يحتوي على glyph index 200 لنفس الرمز الموحد 100 ، فسيتم نسخ البيانات من الجدول الفرعي الأول فقط (unicode = 100 ، glyph index = 100). لذا فإن كل جدول فرعي سابق له الأسبقية على الجدول التالي. خصائص هذه الفئةPdfASymbolicFontEncodingStrategyتساعد في ضبط السلوك الافتراضي. إذا كانت الخاصيةPreferredCmapEncodingTable من النوعCMapEncodingTableType تم تعيين ، ثم سيتم استخدام الجدول الفرعي ذي الصلة بالأسبقية على جدول mac الفرعي (1،0). القيمة “MacTable” from enumerationCMapEncodingTableType ليس له معنى في هذه الحالة ، لأنه نقطة على نفس جدول mac الفرعي (1،0) والذي سيتم استخدامه افتراضيًا. خاصيةCmapEncodingTablesPriorityQueue يتجاهل جميع الأولويات لأي جدول فرعي. إذا تم تعيين هذه الخاصية ، فسيتم استخدام الجداول الفرعية من قائمة الانتظار المعلنة فقط بالترتيب المحدد . إذا لم يتم العثور على الجداول الفرعية المحددة ، فسيتم استخدام التكرار الافتراضي لجميع الجداول الفرعية واستراتيجية النسخ الموضحة أعلاه هدفQueueItem يحدد ترميز الجدول الفرعي المستخدم. يمكن تعيين هذا الجدول الفرعي عبر مجموعة من الأعضاء (معرّف النظام الأساسي ، أو من خلال PlatformSpecificId) أو عبرCMapEncodingTableType التعداد .

public class PdfASymbolicFontEncodingStrategy

المنشئون

اسموصف
PdfASymbolicFontEncodingStrategy()المُنشئ. تعيين جدول فرعي افتراضي (mac 1،0)
PdfASymbolicFontEncodingStrategy(CMapEncodingTableType)منشئ
PdfASymbolicFontEncodingStrategy(Queue<QueueItem>)منشئ

الخصائص

اسموصف
CmapEncodingTablesPriorityQueue { get; set; }يحدد قائمة انتظار لترميز الجداول الفرعية للمعالجة .
PreferredCmapEncodingTable { get; set; }يحدد الجدول الفرعي الذي سيتم استخدامه بأسبقية جدول mac الفرعي (1،0). القيمة “MacTable” from enumerationCMapEncodingTableType لا معنى له في هذه الحالة.

أنظر أيضا