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

ttf-parser è una libreria per l'analisi dei font TrueType/OpenType.
La nuova versione offre un supporto completo per i font variabili
(font variabili) e un'API C, per cui ho deciso di pubblicizzarla su Lore.

Fino a poco tempo fa, se era necessario lavorare con i font TrueType, c'erano solo due opzioni: FreeType e stb_truetype. Il primo è un enorme pacchetto, mentre il secondo supporta un numero piuttosto limitato di funzioni.

ttf-parser si colloca da qualche parte nel mezzo. Supporta tutte le stesse tabelle TrueType (il formato TrueType è composto da molte tabelle binarie separate) che FreeType, ma non si occupa del rendering dei glifi.

Tuttavia, ttf-parser presenta molte altre differenze significative:

  1. ttf-parser è scritto in Rust senza l'uso di unsafe. FreeType e stb_truetype sono scritti in C.
  2. ttf-parser è l'unica implementazione sicura (memory-safe). La lettura di memoria arbitraria è impossibile. FreeType corregge costantemente le vulnerabilità, mentre stb_truetype non è pensato 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 è fondamentalmente a thread singolo. stb_truetype è reentrant (è possibile utilizzare copie separate in thread diversi, ma non una delle molte).
  4. ttf-parser è l'unica implementazione che non utilizza l'allocazione nella 'heap'. Questo consente di accelerare il parsing e di evitare problemi in caso di OOM.
  5. Inoltre, quasi tutte le operazioni aritmetiche e le conversioni di tipi numerici vengono verificate (inclusa la verifica statica).
  6. Nel peggiore dei casi, la libreria può lanciare un'eccezione. In tal caso, nell'API C le eccezioni saranno intercettate e la funzione restituirà un errore, ma non fallirà.

E nonostante tutte le garanzie di sicurezza, ttf-parser è anche l'implementazione più veloce. Ad esempio, il parsing di CFF2 è 3.5 volte più veloce rispetto a FreeType. Nel frattempo, il parsing di glyf è il 10% più lento rispetto a stb_truetype, ma ciò è dovuto al fatto che non supporta i font variabili, la cui implementazione richiede di 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