ttf-parser 0.5 - TrueType shriftlari bilan ishlash uchun yangi kutubxona

ttf-parser TrueType/OpenType shriftlarini tahlil qilish uchun kutubxonadir.
Yangi versiya o'zgaruvchan shriftlarni to'liq qo'llab-quvvatlaydi
(o'zgaruvchan shriftlar) va C API, buning natijasida men uni ilm-fanda reklama qilishga qaror qildim.

Yaqin vaqtgacha, agar TrueType shriftlari bilan ishlash zarurati tug'ilsa, aniq ikkita variant mavjud edi: FreeType va stb_truetype. Birinchisi - ulkan kombayn, ikkinchisi juda kam sonli funktsiyalarni qo'llab-quvvatlaydi.

ttf-parser o'rtada joylashgan. U FreeType kabi bir xil TrueType jadvallarini (TrueType formati ko'plab alohida ikkilik jadvallardan iborat) qo'llab-quvvatlaydi, lekin gliflarning o'zini chizmaydi.

Shu bilan birga, ttf-parser boshqa ko'plab muhim farqlarni o'z ichiga oladi:

  1. ttf-parser xavfsiz bo'lmagan holda Rustda yozilgan. FreeType va stb_truetype C tilida yozilgan.
  2. ttf-parser - bu xotira uchun xavfsiz yagona dastur. Tasodifiy xotirani o'qish mumkin emas. FreeType-da zaifliklar doimiy ravishda tuzatiladi va stb_truetype, qoida tariqasida, ixtiyoriy shriftlarni o'qish uchun mo'ljallanmagan.
  3. ttf-parser - bu yagona xavfsiz dastur. Barcha tahlil usullari doimiydir. Istisno faqat o'zgaruvchan shriftlar uchun koordinatalarni o'rnatishdir, ammo bu funktsiya qayta kiritiladi. FreeType asosan bitta ipli. stb_truetype - reentrant (siz turli mavzularda alohida nusxalardan foydalanishingiz mumkin, lekin ko'p nusxalardan biri emas).
  4. ttf-parser - bu yig'ma taqsimotlardan foydalanmaydigan yagona dastur. Bu sizga tahlilni tezlashtirish va OOM bilan bog'liq muammolardan qochish imkonini beradi.
  5. Shuningdek, deyarli barcha arifmetik amallar va sonli turdagi konvertatsiyalar (shu jumladan statik) tekshiriladi.
  6. Eng yomon holatda, kutubxona istisno qilishi mumkin. Bunday holda, C API-da istisnolar ushlanib qoladi va funksiya xatolikni qaytaradi, lekin buzilmaydi.

Va barcha xavfsizlik kafolatlariga qaramay, ttf-parser ham eng tezkor dastur hisoblanadi. Masalan, CFF2-ni tahlil qilish FreeType-dan 3.5 baravar tezroq. Shu bilan birga, glyfni tahlil qilish stb_truetype-ga qaraganda 10% sekinroq, ammo bu o'zgaruvchan shriftlarni qo'llab-quvvatlamasligi bilan bog'liq, ularni amalga oshirish qo'shimcha saqlashni talab qiladi. ma `lumot. Batafsil ma'lumot README.

Manba: linux.org.ru

a Izoh qo'shish