ttf-parser 0.5 — nowa biblioteka do pracy z czcionkami TrueType

ttf-parser — to biblioteka do analizy czcionek TrueType/OpenType.
W nowej wersji dodano pełne wsparcie dla czcionek zmiennych
(czcionki zmienne) oraz C API, w związku z czym zdecydowałem się na jej reklamę na lforum.

Do niedawna, jeśli zachodziła potrzeba pracy z czcionkami TrueType, były dwa rozwiązania: FreeType i stb_truetype. Pierwsza to ogromny kombajn, druga wspiera dość małą ilość funkcji.

ttf-parser znajduje się gdzieś pośrodku. Wspiera wszystkie te same tabele TrueType (format TrueType składa się z wielu oddzielnych tabel binarnych), co FreeType, ale nie zajmuje się renderowaniem samych glifów.

Jednak ttf-parser zawiera wiele innych znaczących różnic:

  1. ttf-parser jest napisany w Rust bez użycia unsafe. FreeType i stb_truetype są napisane w C.
  2. ttf-parser jest jedyną bezpieczną (memory-safe) implementacją. Odczyt dowolnej pamięci jest niemożliwy. W FreeType na bieżąco naprawiane są luki, a stb_truetype w zasadzie nie jest przeznaczony do odczytu dowolnych czcionek.
  3. ttf-parser jest jedyną implementacją thread-safe. Wszystkie metody analizy są stałe. Jedyne wyjątek stanowi ustalanie współrzędnych dla czcionek zmiennych, ale ta funkcja jest reentrant. FreeType w zasadzie jest jednowątkowy. stb_truetype — reentrant (można używać różnych kopii w różnych wątkach, ale nie jednej z wielu).
  4. ttf-parser jest jedyną implementacją, która nie wykorzystuje alokacji w „kupie”. To pozwala przyspieszyć analizę i uniknąć problemów przy OOM.
  5. Ponadto prawie wszystkie operacje arytmetyczne i konwersje typów numerycznych są sprawdzane (w tym statycznie).
  6. W najgorszym przypadku biblioteka może zgłosić wyjątek. Przy tym w C API wyjątki będą przechwytywane, a funkcja zwróci błąd, ale nie zakończy działania.

I mimo wszystkich gwarancji bezpieczeństwa, ttf-parser jest również najszybszą implementacją. Na przykład analiza CFF2 jest 3,5 razy szybsza niż w FreeType. Analiza glyf jest tymczasem o 10% wolniejsza niż w stb_truetype, ale to dlatego, że nie wspiera czcionek zmiennych, dla których wymagana jest dodatkowa informacja. Więcej szczegółów w README.

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster