ttf-parser 0.5: una nova biblioteca per treballar amb tipus de lletra TrueType

ttf-analitzador és una biblioteca per analitzar tipus de lletra TrueType/OpenType.
La nova versió té suport complet per a fonts variables
(tipus de lletra variables) i C API, com a conseqüència de la qual cosa vaig decidir anunciar-lo a la tradició.

Fins fa poc, si calia treballar amb tipus de lletra TrueType, hi havia exactament dues opcions: FreeType i stb_truetype. La primera és una gran combinació, la segona admet un nombre bastant reduït de funcions.

ttf-parser és en algun lloc al mig. Admet totes les mateixes taules TrueType (el format TrueType consta de moltes taules binàries separades) que FreeType, però no dibuixa els propis glifos.

Al mateix temps, ttf-parser conté moltes altres diferències significatives:

  1. ttf-parser està escrit en Rust sense utilitzar insegur. FreeType i stb_truetype estan escrits en C.
  2. ttf-parser és l'única implementació segura per a la memòria. No és possible llegir la memòria aleatòria. Les vulnerabilitats s'estan solucionant constantment a FreeType i stb_truetype, en principi, no està dissenyat per llegir tipus de lletra arbitraris.
  3. ttf-parser és l'única implementació segura per a fils. Tots els mètodes d'anàlisi són constants. L'única excepció és establir coordenades per a tipus de lletra variable, però aquesta funció és reentrant. FreeType és bàsicament d'un sol fil. stb_truetype - reentrant (podeu utilitzar còpies individuals en diferents fils, però no un de molts).
  4. ttf-parser és l'única implementació que no utilitza assignacions de pila. Això us permet accelerar l'anàlisi i evitar problemes amb OOM.
  5. A més, es comproven gairebé totes les operacions aritmètiques i conversions de tipus numèrics (inclosa l'estàtica).
  6. En el pitjor dels casos, la biblioteca pot llançar una excepció. En aquest cas, a l'API C, es detectaran excepcions i la funció retornarà un error, però no es bloquejarà.

I malgrat totes les garanties de seguretat, ttf-parser també és la implementació més ràpida. Per exemple, analitzar CFF2 és 3.5 vegades més ràpid que FreeType. Mentrestant, l'anàlisi de glyf és un 10% més lent que a stb_truetype, però això es deu al fet que no admet fonts variables, la implementació de les quals requereix emmagatzemar-ne més. informació. Més detalls a README.

Font: linux.org.ru

Afegeix comentari