ttf-parser â Ă«shtĂ« njĂ« bibliotekĂ« pĂ«r analizimin e fontĂ«ve TrueType/OpenType.
Në versionin e ri u paraqit një mbështetje e plotë për fontët variabël
(fontet variabël) dhe C API, për shkak të kësaj vendosa ta reklamoj në lore.
Derisa nuk kaloi shumë kohë, nëse kishte ndonjë nevojë për punë me fontet TrueType, ishin pikërisht dy opsione: FreeType dhe stb_truetype. E para është një kombinator i madh, e dyta mbështet një numër të vogël funksionesh.
ttf-parser është diku në mes. Mbështet të gjitha ato tabela TrueType (formati TrueType përbëhet nga shumë tabela binare individuale) që mbështetet edhe nga FreeType, por nuk merret me vizatimin e vetë glifëve.
Ndërkohë, ttf-parser përmban shumë dallime të tjera të rëndësishme:
- ttf-parser është shkruar në Rust pa përdorur unsafe. FreeType dhe stb_truetype janë të shkruara në C.
- ttf-parser është realizimi i vetmi i sigurt (memory-safe). Leximi i kujtesës së rastësishme është i pamundur. Në FreeType vazhdimisht rregullohen vulnerabilitetet, ndërsa stb_truetype në parim nuk është i destinuar për leximin e fontëve të rastësishëm.
- ttf-parser Ă«shtĂ« realizimi i vetmi thread-safe. TĂ« gjitha metodat e analizimit janĂ« konstante. PĂ«rjashtimi i vetĂ«m Ă«shtĂ« caktimi i koordinatave pĂ«r fontet variabĂ«l, por kjo funksion Ă«shtĂ« reentrant. FreeType nĂ« parim Ă«shtĂ« njĂ« proces i vetĂ«m. stb_truetype â reentrant (mund tĂ« pĂ«rdoren kopje tĂ« veçanta nĂ« procese tĂ« ndryshme, por jo njĂ« nga shumĂ«).
- ttf-parser është realizimi i vetmi që nuk përdor alokimin në "gjallë". Kjo lejon të përshpejtojë analizimin dhe të shmangë probleme gjatë OOM.
- Gjithashtu, pothuajse të gjitha operacionet aritmetike dhe konvertimi i llojeve numerikë kontrollohen (përfshirë statikisht).
- Në rastin më të keq biblioteka mund të hedhë një përjashtim. Në këtë rast, në C API përjashtimet do të kapen dhe funksioni do të kthejë një gabim, por nuk do të bie.
Dhe megjithëse të gjitha garancitë e sigurisë, ttf-parser është gjithashtu realizimi më i shpejtë. Për shembull, analiza e CFF2 është 3.5 herë më e shpejtë se në FreeType. Analiza e glyf është 10% më e ngadalshëm se në stb_truetype, por kjo për shkak që nuk mbështet fontet variabël, për implementimin e së cilave kërkohet ruajtja e informacionit shtesë. Më shumë detaje në README.
Burimi: linux.org.ru
