ttf-parser 0.5 - et nyt bibliotek til at arbejde med TrueType-skrifttyper

ttf-parser er et bibliotek til at analysere TrueType/OpenType-skrifttyper.
Den nye version har fuld understøttelse af variable skrifttyper
(variable skrifttyper) og C API, som et resultat af hvilket jeg besluttede at annoncere det i lore.

Indtil for nylig, hvis der var behov for at arbejde med TrueType-skrifttyper, var der præcis to muligheder: FreeType og stb_truetype. Den første er en enorm mejetærsker, den anden understøtter et ret lille antal funktioner.

ttf-parser er et sted i midten. Det understøtter alle de samme TrueType-tabeller (TrueType-formatet består af mange separate binære tabeller) som FreeType, men tegner ikke selve glyfferne.

Samtidig indeholder ttf-parser mange andre væsentlige forskelle:

  1. ttf-parser er skrevet i Rust uden at bruge unsafe. FreeType og stb_truetype er skrevet i C.
  2. ttf-parser er den eneste hukommelsessikre implementering. Det er ikke muligt at læse tilfældig hukommelse. Sårbarheder bliver konstant rettet i FreeType, og stb_truetype er i princippet ikke designet til at læse vilkårlige skrifttyper.
  3. ttf-parser er den eneste trådsikre implementering. Alle parsingmetoder er konstante. Den eneste undtagelse er indstilling af koordinater for variable skrifttyper, men denne funktion er genindtræden. FreeType er grundlæggende enkelt-trådet. stb_truetype - reentrant (du kan bruge individuelle kopier i forskellige tråde, men ikke en af ​​mange).
  4. ttf-parser er den eneste implementering, der ikke bruger heap-allokeringer. Dette giver dig mulighed for at fremskynde parsing og undgå problemer med OOM.
  5. Næsten alle aritmetiske operationer og konverteringer af numeriske typer kontrolleres også (inklusive statisk).
  6. I værste fald kan biblioteket kaste en undtagelse. I dette tilfælde vil undtagelser blive fanget i C API, og funktionen vil returnere en fejl, men vil ikke gå ned.

Og på trods af alle sikkerhedsgarantierne er ttf-parser også den hurtigste implementering. For eksempel er parsing af CFF2 3.5 gange hurtigere end FreeType. Parsing af glyf er i mellemtiden 10 % langsommere end i stb_truetype, men dette skyldes det faktum, at det ikke understøtter variable skrifttyper, hvis implementering kræver lagring af yderligere. Information. Flere detaljer i README.

Kilde: linux.org.ru

Tilføj en kommentar