ttf-parser â Ă«shtĂ« njĂ« bibliotekĂ« pĂ«r analizimin e fontĂ«ve TrueType/OpenType.
Në versionin e ri ka mbështetje të plotë për fontet variabël
(fontet variabël) dhe C API, prandaj vendosa ta reklamoj në lore.
Derisa së fundmi, nëse kishte nevojë për punë me fontet TrueType, kishte vetëm dy opsione: FreeType dhe stb_truetype. E para është një mjet shumë i madh, e dyta mbështet një numër mjaft të vogël funksionesh.
ttf-parser ndodhet diku në mes. Ai mbështet të gjitha ato tabela TrueType (formati TrueType përbëhet nga shumë tabela të veçanta binare) që mbështet edhe FreeType, por nuk merret me vizatimin e vetë glifëve.
Megjithatë, ttf-parser përmban shumë dallime të tjera të rëndësishme:
- ttf-parser është shkruar në Rust pa përdorimin e unsafe. FreeType dhe stb_truetype janë shkruar në C.
- ttf-parser është realizimi i vetëm i sigurt (memory-safe). Leximi i memories së rastësishme nuk është i mundur. Në FreeType vazhdimisht rregullojnë dobësitë, ndërsa stb_truetype në parim nuk është i destinuar për të lexuar fontet e rastësishme.
- ttf-parser është realizimi i vetëm thread-safe. Të gjitha metodat e analizës janë konstante. Përjashtimi i vetëm është caktimi i koordinatave për fontet variabël, por kjo funksion është reentrant. FreeType në thelb është një njëpain. stb_truetype është reentrant (mund të përdorni kopje të veçanta në pika të ndryshme, por jo një nga shumë).
- ttf-parser Ă«shtĂ« realizimi i vetĂ«m qĂ« nuk pĂ«rdor alokimin nĂ« âmerrĂ«nâ. Kjo lejon tĂ« pĂ«rshpejtojĂ« analizĂ«n dhe tĂ« shmangĂ« problemet gjatĂ« OOM.
- Gjithashtu, pothuajse të gjitha operacionet aritmetike dhe konvertimet e tipeve numerikë kontrollohen (inkluzivisht statikisht).
- Në rastin më të keq, biblioteka mund të hedhë një përjashtim. Në këtë rast, në API-në C përjashtimet do të kapen dhe funksioni do të kthejë një gabim, por nuk do të bjerë.
Dhe pavarësisht të gjitha garancive të sigurisë, ttf-parser gjithashtu është realizimi më i shpejtë. Për shembull, analiza e CFF2 është 3.5 herë më e shpejtë se në FreeType. Analiza e glyf, për më tepër, është 10% më e ngadalshme se në stb_truetype, por kjo është për shkak se ai nuk mbështet fontet variabël, për implementimin e të cilave kërkohet ruajtja e informacionit shtesë. Më shumë detaje në README.
Burimi: linux.org.ru
