ttf-parser 0.5 - une nouvelle bibliothèque pour travailler avec les polices TrueType

analyseur ttf est une bibliothèque pour analyser les polices TrueType/OpenType.
La nouvelle version prend entièrement en charge les polices variables
(polices variables) et l'API C, à la suite de quoi j'ai décidé d'en faire la publicité dans la tradition.

Jusqu'à récemment, s'il était nécessaire de travailler avec des polices TrueType, il existait exactement deux options : FreeType et stb_truetype. Le premier est une énorme moissonneuse-batteuse, le second prend en charge un assez petit nombre de fonctions.

ttf-parser se situe quelque part au milieu. Il prend en charge toutes les mêmes tables TrueType (le format TrueType se compose de nombreuses tables binaires distinctes) que FreeType, mais ne dessine pas les glyphes eux-mêmes.

Dans le même temps, ttf-parser contient de nombreuses autres différences significatives :

  1. ttf-parser est écrit en Rust sans utiliser unsafe. FreeType et stb_truetype sont écrits en C.
  2. ttf-parser est la seule implémentation sécurisée en mémoire. La lecture de la mémoire aléatoire n'est pas possible. Les vulnérabilités sont constamment corrigées dans FreeType et stb_truetype n'est, en principe, pas conçu pour lire des polices arbitraires.
  3. ttf-parser est la seule implémentation thread-safe. Toutes les méthodes d'analyse sont constantes. La seule exception concerne la définition des coordonnées des polices variables, mais cette fonction est réentrante. FreeType est essentiellement monothread. stb_truetype - réentrant (vous pouvez utiliser des copies individuelles dans différents threads, mais pas dans plusieurs).
  4. ttf-parser est la seule implémentation qui n'utilise pas d'allocations de tas. Cela vous permet d'accélérer l'analyse et d'éviter les problèmes avec le MOO.
  5. De plus, presque toutes les opérations arithmétiques et conversions de types numériques sont vérifiées (y compris statiquement).
  6. Dans le pire des cas, la bibliothèque peut lever une exception. Dans ce cas, dans l'API C, les exceptions seront interceptées et la fonction renverra une erreur, mais ne plantera pas.

Et malgré toutes les garanties de sécurité, ttf-parser est également la mise en œuvre la plus rapide. Par exemple, l'analyse de CFF2 est 3.5 fois plus rapide que celle de FreeType. L'analyse de glyf, quant à elle, est 10 % plus lente que dans stb_truetype, mais cela est dû au fait qu'il ne prend pas en charge les polices variables, dont la mise en œuvre nécessite un stockage supplémentaire. information. Plus de détails dans README.

Source: linux.org.ru

Ajouter un commentaire