ttf-parser 0.5 - مكتبة جديدة للعمل مع خطوط TrueType

ttf- المحلل اللغوي هي مكتبة لتحليل خطوط TrueType / OpenType.
الإصدار الجديد لديه دعم كامل للخطوط المتغيرة
(خطوط متغيرة) و C API ، لذلك قررت الإعلان عنها على lore.

حتى وقت قريب ، إذا كانت هناك حاجة للعمل مع خطوط TrueType ، فهناك خياران بالضبط: FreeType و stb_truetype. الأول عبارة عن حصادة ضخمة ، والثاني يدعم عددًا صغيرًا إلى حد ما من الوظائف.

محلل ttf في مكان ما في الوسط. وهو يدعم جميع جداول TrueType نفسها (يتكون تنسيق TrueType من العديد من الجداول الثنائية المنفصلة) مثل FreeType ، ولكنه لا يرسم الحروف الرسومية نفسها.

في الوقت نفسه ، يحتوي محلل ttf-parser على العديد من الاختلافات المهمة الأخرى:

  1. تمت كتابة ttf-parser في Rust دون استخدام غير آمن. تتم كتابة FreeType و stb_truetype في C.
  2. ttf-parser هو التطبيق الوحيد الآمن للذاكرة. قراءة الذاكرة العشوائية غير ممكن. تعمل FreeType باستمرار على إصلاح الثغرات الأمنية ، و stb_truetype غير مصمم أساسًا لقراءة الخطوط العشوائية.
  3. ttf-parser هو التطبيق الوحيد الآمن لمؤشر الترابط. جميع طرق الاعراب ثابتة. الاستثناء الوحيد هو تعيين الإحداثيات للخطوط المتغيرة ، ولكن هذه الوظيفة هي إعادة الإدخال. FreeType هو في الأساس خيوط مفردة. stb_truetype - reentrant (يمكنك استخدام نسخ منفصلة في تدفقات مختلفة ، ولكن ليس واحدة من العديد).
  4. محلل ttf هو التطبيق الوحيد الذي لا يستخدم تخصيص الكومة. يؤدي ذلك إلى تسريع عملية التحليل وتجنب مشكلات OOM.
  5. أيضًا ، يتم فحص جميع العمليات الحسابية وكسب الأنواع الرقمية تقريبًا (بما في ذلك الثابت).
  6. في أسوأ الأحوال ، قد تطرح المكتبة استثناء. في هذه الحالة ، في C API ، سيتم اكتشاف الاستثناءات وستقوم الوظيفة بإرجاع خطأ ، ولكنها لن تتعطل.

وعلى الرغم من جميع الضمانات الأمنية ، فإن محلل ttf-parser هو أيضًا أسرع تطبيق. على سبيل المثال ، يكون تحليل CFF2 أسرع 3.5 مرة من FreeType. وفي الوقت نفسه ، فإن تحليل glyf أبطأ بنسبة 10٪ من stb_truetype ، ولكن هذا يرجع إلى حقيقة أنه لا يدعم الخطوط المتغيرة ، والتي يتطلب تنفيذها مساحة تخزين إضافية. معلومة. مزيد من التفاصيل في README.

المصدر: linux.org.ru

إضافة تعليق