ttf-parser 0.5 - nova biblioteka za rad s TrueType fontovima

ttf-parser je knjižnica za analizu TrueType/OpenType fontova.
U novoj verziji uvedena je potpuna podrška za varijabilne fontove.
(varijabilni fontovi) i C API, zbog čega sam odlučio promovirati je na forumu.

Do nedavno, ako je postojala potreba za radom s TrueType fontovima, postojale su upravo dvije opcije: FreeType i stb_truetype. Prvi je ogroman stroj, a drugi podržava prilično mali broj funkcija.

ttf-parser se nalazi negdje između. Podržava sve iste TrueType tablice (format TrueType sastoji se od niza odvojenih binarnih tablica) kao i FreeType, ali se ne bavi crtanje samih glifova.

Pri tome, ttf-parser sadrži mnoštvo drugih značajnih razlika:

  1. ttf-parser je napisan na Rustu bez uporabe unsafe. FreeType i stb_truetype napisani su na C-u.
  2. ttf-parser je jedina sigurna (memory-safe) implementacija. Čitanje proizvoljne memorije nije moguće. U FreeType-u se stalno ispravljaju ranjivosti, dok stb_truetype u načelu nije namijenjen za čitanje proizvoljnih fontova.
  3. ttf-parser je jedina thread-safe implementacija. Sve metode analize su konstantne. Jedina iznimka je postavljanje koordinata za varijabilne fontove, ali ta funkcija je reentrant. FreeType je uglavnom jednonaznačan. stb_truetype — reentrant (može se koristiti odvojene kopije u različitim nitima, ali ne jednu iz više).
  4. ttf-parser je jedina implementacija koja ne koristi alokaciju u 'hrpi'. To omogućava ubrzanje analize i izbjegava probleme tijekom OOM.
  5. Također, gotovo sve aritmetičke operacije i konverzije numeričkih tipova se provjeravaju (uključujući statički).
  6. U najgorem slučaju, knjižnica može baciti iznimku. U tom slučaju u C API-ju će iznimke biti uhvaćene i funkcija će vratiti grešku, ali se neće srušiti.

I unatoč svim sigurnosnim garancijama, ttf-parser je također najbrža implementacija. Na primjer, analiza CFF2 je 3,5 puta brža od FreeType-a. Analiza glyf-a je, međutim, 10% sporija od stb_truetype, ali to je zbog toga što ne podržava varijabilne fontove, za čiju je implementaciju potrebno čuvati dodatne informacije. Više detalja u README.

Izvor: linux.org.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster