ttf-parser 0.5 — nuova libreria per lavorare con font TrueType

ttf-parser — è una libreria per l'analisi dei font TrueType/OpenType.
Nella nuova versione è stata introdotta il supporto completo per font variabili
(font variabili) e C API, perciò ho deciso di pubblicizzarla su l'ora.

Fino a poco tempo fa, se era necessaria l'elaborazione di font TrueType, c'erano esattamente due opzioni: FreeType e stb_truetype. Il primo è un enorme motore, il secondo supporta un numero piuttosto limitato di funzioni.

ttf-parser è a metà strada. Supporta tutte le stesse tabelle TrueType (il formato TrueType è composto da molte tabelle binarie separate) come FreeType, ma non gestisce il rendering dei glyph.

Tuttavia, ttf-parser presenta molte altre differenze significative:

  1. ttf-parser è scritto in Rust senza utilizzare unsafe. FreeType e stb_truetype sono scritti in C.
  2. ttf-parser è l'unica implementazione sicura (memory-safe). La lettura di memoria arbitraria è impossibile. In FreeType le vulnerabilità vengono continuamente corrette, mentre stb_truetype non è progettato per la lettura di font arbitrari.
  3. ttf-parser è l'unica implementazione thread-safe. Tutti i metodi di parsing sono costanti. L'unica eccezione è la definizione delle coordinate per i font variabili, ma questa funzione è reentrant. FreeType è generalmente monothread. stb_truetype è reentrant (si possono usare copie separate in thread diversi, ma non una delle molte).
  4. ttf-parser è l'unica implementazione che non utilizza allocazione nella "heap". Questo consente di accelerare l'analisi e di evitare problemi in caso di OOM.
  5. Inoltre, quasi tutte le operazioni aritmetiche e la conversione dei tipi numerici vengono verificate (anche staticamente).
  6. Nel peggior caso, la libreria può sollevare un'eccezione. Tuttavia, nell'API C le eccezioni verranno intercettate e la funzione restituisce un errore, senza chiudersi.

E nonostante tutte le garanzie di sicurezza, ttf-parser è anche l'implementazione più veloce. Ad esempio, l'analisi di CFF2 è 3.5 volte più veloce rispetto a FreeType. L'analisi di glyf è nel frattempo il 10% più lenta rispetto a stb_truetype, ma questo è dovuto al fatto che non supporta font variabili, per i quali è necessario memorizzare informazioni aggiuntive. Maggiori dettagli in README.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster