ttf-parser 0.5 - TrueType şriftləri ilə işləmək üçün yeni kitabxana

ttf-parser TrueType/OpenType şriftlərinin təhlili üçün kitabxanadır.
Yeni versiyada dəyişən şriftlər üçün tam dəstək var
(dəyişən şriftlər) və C API, bunun nəticəsində mən onu irfanda reklam etmək qərarına gəldim.

Son vaxtlara qədər TrueType şriftləri ilə işləməyə ehtiyac var idisə, tam olaraq iki seçim var idi: FreeType və stb_truetype. Birincisi nəhəng bir kombindir, ikincisi kifayət qədər az sayda funksiyanı dəstəkləyir.

ttf-parser ortada bir yerdədir. O, FreeType kimi eyni TrueType cədvəllərini (TrueType formatı bir çox ayrı ikili cədvəllərdən ibarətdir) dəstəkləyir, lakin qliflərin özlərini çəkmir.

Eyni zamanda, ttf-parser bir çox digər əhəmiyyətli fərqləri ehtiva edir:

  1. ttf-parser təhlükəli istifadə etmədən Rustda yazılmışdır. FreeType və stb_truetype C dilində yazılmışdır.
  2. ttf-parser yaddaş üçün təhlükəsiz olan yeganə proqramdır. Təsadüfi yaddaşı oxumaq mümkün deyil. FreeType-də zəifliklər daim düzəldilir və stb_truetype, prinsipcə, ixtiyari şriftləri oxumaq üçün nəzərdə tutulmayıb.
  3. ttf-parser yalnız mövzu üçün təhlükəsiz tətbiqdir. Bütün təhlil üsulları sabitdir. Yeganə istisna dəyişən şriftlər üçün koordinatların təyin edilməsidir, lakin bu funksiya yenidən daxil olur. FreeType əsasən tək yivlidir. stb_truetype - reentrant (müxtəlif mövzularda fərdi nüsxələrdən istifadə edə bilərsiniz, lakin çoxlarından birini deyil).
  4. ttf-parser, yığın ayırmalarından istifadə etməyən yeganə tətbiqdir. Bu, təhlili sürətləndirməyə və OOM ilə bağlı problemlərin qarşısını almağa imkan verir.
  5. Həmçinin, demək olar ki, bütün arifmetik əməliyyatlar və ədədi tiplərin çevrilməsi yoxlanılır (statik də daxil olmaqla).
  6. Ən pis halda, kitabxana bir istisna ata bilər. Bu halda, C API-də istisnalar tutulacaq və funksiya xəta qaytaracaq, lakin qəzaya uğramayacaq.

Bütün təhlükəsizlik zəmanətlərinə baxmayaraq, ttf-parser həm də ən sürətli tətbiqdir. Məsələn, CFF2-nin təhlili FreeType-dan 3.5 dəfə daha sürətlidir. Bu arada glyf təhlili stb_truetype ilə müqayisədə 10% daha yavaşdır, lakin bu, onun həyata keçirilməsi əlavə saxlama tələb edən dəyişən şriftləri dəstəkləməməsi ilə əlaqədardır. məlumat. Ətraflı təfərrüatlarda README.

Mənbə: linux.org.ru

Добавить комментарий