ttf-parser 0.5 – eine neue Bibliothek zur Arbeit mit TrueType-Schriften

ttf-parser — ist eine Bibliothek zum Parsen von TrueType/OpenType-Schriften.
Die neue Version bietet umfassende Unterstützung für variable Schriftarten.
(variable fonts) und C API, weshalb ich beschlossen habe, sie im Lore zu bewerben.

Bis vor kurzem gab es, wenn man mit TrueType-Schriften arbeiten wollte, genau zwei Optionen: FreeType und stb_truetype. Die erste ist ein riesiger Alleskönner, die zweite unterstützt nur eine recht begrenzte Anzahl von Funktionen.

ttf-parser liegt irgendwo dazwischen. Er unterstützt alle gleichen TrueType-Tabellen (das TrueType-Format besteht aus vielen separaten Binärtabelle), die auch FreeType unterstützt, kümmert sich aber nicht um das Rendern der Glyphen.

Gleichzeitig enthält ttf-parser viele andere signifikante Unterschiede:

  1. ttf-parser ist in Rust geschrieben und verwendet kein unsafe. FreeType und stb_truetype sind in C geschrieben.
  2. ttf-parser ist die einzige sichere (memory-safe) Implementierung. Das Lesen beliebigen Speichers ist nicht möglich. Bei FreeType werden ständig Schwachstellen behoben, und stb_truetype ist prinzipiell nicht dafür gedacht, beliebige Schriften zu lesen.
  3. ttf-parser ist die einzige thread-sichere Implementierung. Alle Parsing-Methoden sind konstant. Die einzige Ausnahme ist das Setzen von Koordinaten für variable Schriftarten, aber diese Funktion ist reentrant. FreeType ist grundsätzlich einheitlich. stb_truetype ist reentrant (es können separate Kopien in verschiedenen Threads verwendet werden, jedoch nicht eine von vielen).
  4. ttf-parser ist die einzige Implementierung, die keine Heap-Allokation verwendet. Dies beschleunigt das Parsing und vermeidet Probleme bei OOM.
  5. Zudem werden nahezu alle arithmetischen Operationen und die Umwandlung von numerischen Typen überprüft (einschließlich statischer Überprüfungen).
  6. Im schlimmsten Fall kann die Bibliothek eine Ausnahme auslösen. In diesem Fall werden die Ausnahmen im C-API abgefangen, und die Funktion gibt einen Fehler zurück, stürzt jedoch nicht ab.

Und trotz aller Sicherheitsgarantien ist ttf-parser auch die schnellste Implementierung. Zum Beispiel ist das Parsing von CFF2 3,5-mal schneller als in FreeType. Das Parsing von glyf ist gleichzeitig 10 % langsamer als in stb_truetype, aber das liegt daran, dass es keine variablen Schriftarten unterstützt, für die zusätzliche Informationen gespeichert werden müssen. Mehr Details in README.

Quelle: linux.org.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster