ttf-parser 0.5 - nová knihovna pro práci s TrueType fonty

ttf-parser je knihovna pro analýzu písem TrueType/OpenType.
Nová verze má plnou podporu pro variabilní fonty
(variabilní fonty) a C API, v důsledku čehož jsem se rozhodl ji inzerovat v lore.

Donedávna, pokud byla potřeba pracovat s TrueType fonty, byly rovnou dvě možnosti: FreeType a stb_truetype. První je obrovský kombajn, druhý podporuje docela malý počet funkcí.

ttf-parser je někde uprostřed. Podporuje všechny stejné tabulky TrueType (formát TrueType se skládá z mnoha samostatných binárních tabulek) jako FreeType, ale nekreslí samotné glyfy.

Současně ttf-parser obsahuje mnoho dalších významných rozdílů:

  1. ttf-parser je napsán v Rustu bez použití unsafe. FreeType a stb_truetype jsou napsány v C.
  2. ttf-parser je jediná implementace bezpečná z hlediska paměti. Čtení náhodné paměti není možné. Ve FreeType se neustále opravují zranitelnosti a stb_truetype v zásadě není určen ke čtení libovolných písem.
  3. ttf-parser je jediná implementace bezpečná pro vlákna. Všechny metody analýzy jsou konstantní. Jedinou výjimkou je nastavení souřadnic pro variabilní písma, ale tato funkce je opakující se. FreeType je v podstatě jednovláknový. stb_truetype - reentrant (můžete použít jednotlivé kopie v různých vláknech, ale ne v jednom z mnoha).
  4. ttf-parser je jediná implementace, která nepoužívá alokace haldy. To vám umožní urychlit analýzu a vyhnout se problémům s OOM.
  5. Kontrolují se také téměř všechny aritmetické operace a převody číselných typů (včetně statické).
  6. V nejhorším případě může knihovna vyvolat výjimku. V tomto případě se v C API zachytí výjimky a funkce vrátí chybu, ale nespadne.

A navzdory všem bezpečnostním zárukám je ttf-parser také nejrychlejší implementací. Například analýza CFF2 je 3.5krát rychlejší než FreeType. Parsování glyf je mezitím o 10 % pomalejší než v stb_truetype, ale to je způsobeno tím, že nepodporuje variabilní fonty, jejichž implementace vyžaduje další ukládání. informace. Více podrobností v README.

Zdroj: linux.org.ru

Přidat komentář