ttf-parser 0.5 – nauja biblioteka, skirta darbui su TrueType šriftais

ttf analizatorius yra TrueType/OpenType šriftų analizavimo biblioteka.
Naujoji versija visiškai palaiko kintamus šriftus
(kintamieji šriftai) ir C API, dėl to nusprendžiau ją reklamuoti moksle.

Dar visai neseniai, jei reikėjo dirbti su TrueType šriftais, buvo lygiai dvi parinktys: FreeType ir stb_truetype. Pirmasis yra didžiulis kombainas, antrasis palaiko gana nedaug funkcijų.

ttf-parser yra kažkur viduryje. Jis palaiko visas tas pačias „TrueType“ lenteles (TrueType formatą sudaro daug atskirų dvejetainių lentelių), kaip ir „FreeType“, tačiau nebraižo pačių glifų.

Tuo pačiu metu ttf-parser turi daug kitų reikšmingų skirtumų:

  1. ttf-parser parašytas Rust nenaudojant unsafe. FreeType ir stb_truetype parašyti C.
  2. ttf-parser yra vienintelis atmintį saugus įgyvendinimas. Atsitiktinės atminties nuskaityti neįmanoma. „FreeType“ pažeidžiamumas nuolat taisomas, o stb_truetype iš esmės nėra skirtas nuskaityti savavališkus šriftus.
  3. ttf-parser yra vienintelis gijų saugus įgyvendinimas. Visi analizės metodai yra pastovūs. Vienintelė išimtis yra kintamųjų šriftų koordinačių nustatymas, tačiau ši funkcija yra pakartotinė. FreeType iš esmės yra vienos gijos. stb_truetype - reentrant (galite naudoti atskiras kopijas skirtingose ​​gijose, bet ne vieną iš daugelio).
  4. ttf-parser yra vienintelis diegimas, kuris nenaudoja krūvos paskirstymo. Tai leidžia pagreitinti analizavimą ir išvengti OOM problemų.
  5. Taip pat tikrinamos beveik visos aritmetinės operacijos ir skaičių tipų konversijos (taip pat ir statiškai).
  6. Blogiausiu atveju biblioteka gali padaryti išimtį. Tokiu atveju C API išimtys bus užfiksuotos ir funkcija grąžins klaidą, bet nesuges.

Ir nepaisant visų saugumo garantijų, ttf-parser taip pat yra greičiausias įgyvendinimas. Pavyzdžiui, CFF2 analizė yra 3.5 karto greitesnė nei FreeType. Tuo tarpu glyf analizavimas yra 10% lėtesnis nei stb_truetype, tačiau taip yra dėl to, kad jis nepalaiko kintamųjų šriftų, kurių įgyvendinimui reikia saugoti papildomų. informacija. Daugiau informacijos rasite SKAITYK MANE.

Šaltinis: linux.org.ru

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