ttf-parser 0.5 - et nye bibliotek til arbejde med TrueType skrifttyper.

ttf-parser er et bibliotek til parsing af TrueType/OpenType skrifttyper.
I den nye version er der kommet fuld støtte til variable skrifttyper
(variable fonts) og C API, hvilket fik mig til at reklamere for det på loren.

Indtil for nylig, hvis du skulle arbejde med TrueType skrifttyper, var der præcis to muligheder: FreeType og stb_truetype. Den første er en stor samling, den anden understøtter et ret begrænset antal funktioner.

ttf-parser ligger et sted imellem. Det understøtter de samme TrueType tabeller (TrueType-formatet består af mange separate binære tabeller) som FreeType, men håndterer ikke tegning af glyphs.

Samtidig indeholder ttf-parser mange andre betydelige forskelle:

  1. ttf-parser er skrevet i Rust uden brug af unsafe. FreeType og stb_truetype er skrevet i C.
  2. ttf-parser er den eneste memory-safe implementering. Læsning af vilkårlig hukommelse er umuligt. I FreeType rettes sårbarheder løbende, mens stb_truetype i princippet ikke er beregnet til at læse vilkårlige skrifttyper.
  3. ttf-parser er den eneste thread-safe implementering. Alle parsingmetoder er konstante. Den eneste undtagelse er indstillingen af koordinater for variable skrifttyper, men denne funktion er reentrant. FreeType er i princippet enkelttrådet. stb_truetype er reentrant (kan bruge separate kopier i forskellige tråde, men ikke en af mange).
  4. ttf-parser er den eneste implementering, der ikke bruger allokering i ‚heap‘. Dette muliggør hurtigere parsing og undgår problemer ved OOM.
  5. Desuden bliver næsten alle aritmetiske operationer og konverteringer mellem numeriske typer kontrolleret (herunder statisk).
  6. I værste fald kan biblioteket kaste en exception. I dette tilfælde vil exceptioner i C API blive opfanget, og funktionen vil returnere en fejl, men ikke crashe.

Og på trods af alle sikkerhedsgarantierne er ttf-parser også den hurtigste implementering. For eksempel er parsing af CFF2 3,5 gange hurtigere end i FreeType. Parsing af glyf er i mellemtiden 10% langsommere end i stb_truetype, men det skyldes, at den ikke understøtter variable skrifttyper, der kræver opbevaring af ekstra oplysninger. Flere detaljer i README.

Kilde: linux.org.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster