ttf-parser 0.5 - nuwe biblioteek om met TrueType-lettertipes te werk

ttf-ontleder is 'n biblioteek vir die ontleding van TrueType/OpenType-lettertipes.
Die nuwe weergawe het volle ondersteuning vir veranderlike lettertipes
(veranderlike lettertipes) en die C API, so ek het besluit om dit op lore te adverteer.

Tot onlangs, as daar 'n behoefte was om met TrueType-lettertipes te werk, was daar presies twee opsies: FreeType en stb_truetype. Die eerste is 'n groot stroper, die tweede ondersteun 'n redelik klein aantal funksies.

ttf-parser is iewers in die middel. Dit ondersteun dieselfde TrueType-tabelle (die TrueType-formaat bestaan ​​uit baie afsonderlike binêre tabelle) as FreeType, maar teken nie self die glyphs nie.

Terselfdertyd bevat ttf-parser baie ander beduidende verskille:

  1. ttf-parser is in Rust geskryf sonder om onveilig te gebruik. FreeType en stb_truetype word in C geskryf.
  2. ttf-parser is die enigste geheue-veilige implementering. Om arbitrêre geheue te lees is nie moontlik nie. FreeType herstel voortdurend kwesbaarhede, en stb_truetype is basies nie ontwerp om arbitrêre lettertipes te lees nie.
  3. ttf-parser is die enigste draad-veilige implementering. Alle ontledingsmetodes is konst. Die enigste uitsondering is die opstel van koördinate vir veranderlike lettertipes, maar hierdie funksie is reentrant. FreeType is basies enkeldraad. stb_truetype - reentrant (jy kan aparte kopieë in verskillende strome gebruik, maar nie een van baie nie).
  4. ttf-parser is die enigste implementering wat nie heap-toekenning gebruik nie. Dit versnel ontleding en vermy OOM-kwessies.
  5. Ook, byna alle rekenkundige bewerkings en giet van numeriese tipes word nagegaan (insluitend staties).
  6. In die ergste geval kan die biblioteek 'n uitsondering gooi. In hierdie geval, in die C API, sal uitsonderings gevang word en die funksie sal 'n fout terugstuur, maar sal nie crash nie.

En ten spyte van al die sekuriteitswaarborge, is ttf-parser ook die vinnigste implementering. Byvoorbeeld, CFF2-ontleding is 3.5 keer vinniger as FreeType. Om glyf te ontleed, is intussen 10% stadiger as stb_truetype, maar dit is te wyte aan die feit dat dit nie veranderlike lettertipes ondersteun nie, waarvan die implementering addisionele berging vereis. inligting. Meer besonderhede in README.

Bron: linux.org.ru

Voeg 'n opmerking