أرفق (موصى به) أو رابط إلى ملف PDF هنا:
EMG8 -Cambridge Essentail Gold Maths 8-B 117.pdf
إعدادات:
خطوات إعادة إظهار المشكلة:
ما هو السلوك المتوقع؟ (إضافة لقطة شاشة)
على أي قارئ PDF آخر ، فإنه يجعله جيدًا:
ارتباط إلى عارض (إذا تمت استضافته على موقع بخلاف mozilla.github.io/pdf.js أو كملحق Firefox / Chrome):
عارض صفحات جيثب الحالي: https://mozilla.github.io/pdf.js/web/viewer.html
ملحوظات:
لقد نجحنا في جعله يعمل عن طريق تحرير الخطوط داخل ملف PDF. إنه حاليًا "Times New Roman PS" ، ويعيد عرضه باستخدام "Times New Roman" فقط على ما يبدو لإصلاحه.
لا توجد أخطاء في وحدة التحكم ، أو أي علامات أخرى مرئية للحلول مثل فقدان CMaps.
لسوء الحظ ، لا يُسمح لنا بتعديل ملفات PDF ، لذا فإن إعادة عرض كل ملف ليس حلاً قابلاً للتطبيق.
إذا كان بإمكان أي شخص إعطاء أي فكرة عن هذا والحل المحتمل ، فسيكون ذلك موضع تقدير كبير 🤠
يعرف ملف PDF نفس الخطوط عدة مرات. على سبيل المثال ، تم تعريف الخط LULQLP+TimesLTStd-Roman
تسع مرات. يشير كل واحد إلى نفس FontDescriptor ونفس دفق بيانات CFF المضمّن.
يوجد حساب تجزئة الخط في PartialEvaluator.prototype.preEvaluateFont()
في core / مقيم. يضيف إدخالات ترميز ، ToUnicode ، وعرض في التجزئة. تحصل بعض الخطوط في ملف PDF على أكواد تجزئة متطابقة لأن جميع الإدخالات المذكورة متطابقة ، بل وحتى العرض. تختلف إدخالات FirstChar و LastChar فقط. إذا حصلت الخطوط على أكواد تجزئة متطابقة ، فهل يمكن أن يتسبب ذلك في تخطي الخط بحيث لا يتم تحويله إلى OpenType؟
هذا ملف PDF مختزل يحتوي على خطين من ملف PDF الأصلي
issue10665_reduced.pdf
يوجد حساب تجزئة الخط في
PartialEvaluator.prototype.preEvaluateFont()
في core / مقيم. يضيف إدخالات ترميز ، ToUnicode ، وعرض في التجزئة. تحصل بعض الخطوط في ملف PDF على أكواد تجزئة متطابقة لأن جميع الإدخالات المذكورة متطابقة ، بل وحتى العرض. تختلف إدخالات FirstChar و LastChar فقط.
تحليل ممتاز حقًا ، شكرًا لك ؛ هذا جعل الخطأ سهل الإصلاح!
إذا حصلت الخطوط على أكواد تجزئة متطابقة ، فهل يمكن أن يتسبب ذلك في تخطي الخط بحيث لا يتم تحويله إلى OpenType؟
في بعض ملفات PDF التي تم إنشاؤها بشكل سيئ ، يمكن أن يكون هناك كميات هائلة من الخطوط المتطابقة ، والغرض من preEvaluateFont
هو ببساطة تجنب الاضطرار إلى تحميل / تحليل الملفات المكررة. ومن ثم فإن loadFont
سيقارن hash
es ، وإذا أمكن ، استخدم خطًا تم تحميله / تحليله بالفعل.
من الواضح أن كل هذا يتوقف على حقيقة أن hash
es هي في الواقع صحيحة / فريدة ، ولكن لحسن الحظ كان هناك عدد قليل نسبيًا من الأخطاء في هذا الرمز على مر السنين.
هذا رائع شكرا جزيلا للمساعدة!
التعليق الأكثر فائدة
يعرف ملف PDF نفس الخطوط عدة مرات. على سبيل المثال ، تم تعريف الخط
LULQLP+TimesLTStd-Roman
تسع مرات. يشير كل واحد إلى نفس FontDescriptor ونفس دفق بيانات CFF المضمّن.يوجد حساب تجزئة الخط في
PartialEvaluator.prototype.preEvaluateFont()
في core / مقيم. يضيف إدخالات ترميز ، ToUnicode ، وعرض في التجزئة. تحصل بعض الخطوط في ملف PDF على أكواد تجزئة متطابقة لأن جميع الإدخالات المذكورة متطابقة ، بل وحتى العرض. تختلف إدخالات FirstChar و LastChar فقط. إذا حصلت الخطوط على أكواد تجزئة متطابقة ، فهل يمكن أن يتسبب ذلك في تخطي الخط بحيث لا يتم تحويله إلى OpenType؟هذا ملف PDF مختزل يحتوي على خطين من ملف PDF الأصلي
issue10665_reduced.pdf