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ų:
- ttf-parser parašytas Rust nenaudojant unsafe. FreeType ir stb_truetype parašyti C.
- 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.
- 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).
- ttf-parser yra vienintelis diegimas, kuris nenaudoja krūvos paskirstymo. Tai leidžia pagreitinti analizavimą ir išvengti OOM problemų.
- Taip pat tikrinamos beveik visos aritmetinės operacijos ir skaičių tipų konversijos (taip pat ir statiškai).
- 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