ttf-parser 0.5 - një bibliotekë e re për të punuar me fontet TrueType

ttf-parser është një bibliotekë për analizimin e shkronjave TrueType/OpenType.
Versioni i ri ka mbështetje të plotë për fontet e ndryshueshme
(fontet e ndryshueshme) dhe C API, si rezultat i së cilës vendosa ta reklamoj atë në dije.

Deri kohët e fundit, nëse do të kishte nevojë për të punuar me fontet TrueType, kishte saktësisht dy opsione: FreeType dhe stb_truetype. E para është një kombinim i madh, i dyti mbështet një numër mjaft të vogël funksionesh.

ttf-parser është diku në mes. Ai mbështet të gjitha tabelat e njëjta TrueType (formati TrueType përbëhet nga shumë tabela binare të veçanta) si FreeType, por nuk i vizaton vetë glifet.

Në të njëjtën kohë, analizuesi ttf përmban shumë dallime të tjera domethënëse:

  1. ttf-parser është shkruar në Rust pa përdorur të pasigurta. FreeType dhe stb_truetype janë shkruar në C.
  2. ttf-parser është i vetmi zbatim i sigurt për memorie. Leximi i kujtesës së rastësishme nuk është i mundur. Dobësitë po rregullohen vazhdimisht në FreeType dhe stb_truetype, në parim, nuk është krijuar për të lexuar fontet arbitrare.
  3. ttf-parser është i vetmi zbatim i sigurt për thread. Të gjitha metodat e analizimit janë konstante. Përjashtimi i vetëm është vendosja e koordinatave për fontet e ndryshueshme, por ky funksion është rihyrës. FreeType është në thelb me një fillesë. stb_truetype - rihyrës (mund të përdorni kopje individuale në tema të ndryshme, por jo një nga shumë).
  4. ttf-parser është i vetmi zbatim që nuk përdor alokimet e grumbullit. Kjo ju lejon të shpejtoni analizimin dhe të shmangni problemet me OOM.
  5. Gjithashtu, kontrollohen pothuajse të gjitha veprimet aritmetike dhe shndërrimet e llojeve numerike (përfshirë edhe në mënyrë statike).
  6. Në rastin më të keq, biblioteka mund të bëjë 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ë rrëzohet.

Dhe pavarësisht nga të gjitha garancitë e sigurisë, ttf-parser është gjithashtu zbatimi më i shpejtë. Për shembull, analizimi i CFF2 është 3.5 herë më i shpejtë se FreeType. Ndërkohë, analizimi i glyf është 10% më i ngadalshëm se në stb_truetype, por kjo për faktin se nuk mbështet fontet e ndryshueshme, zbatimi i të cilave kërkon ruajtjen e shtesës. informacion. Më shumë detaje në README.

Burimi: linux.org.ru

Shto një koment