ttf-parser 0.5 - een nieuwe bibliotheek voor het werken met TrueType-lettertypen

ttf-parser is een bibliotheek voor het Parseren van TrueType/OpenType lettertypen.
De nieuwe versie heeft volledige ondersteuning voor variabele lettertypen.
(variabele lettertypen) en C API, Daarom besloot ik het te promoten op lore.

Tot voor kort waren er maar twee opties voor het werken met TrueType lettertypen: FreeType en stb_truetype. De eerste is een enorme toolkit, de tweede ondersteunt een behoorlijk beperkt aantal functies.

ttf-parser bevindt zich ergens in het midden. Het ondersteunt al dezelfde TrueType-tabellen (het TrueType-formaat bestaat uit verschillende aparte binaire tabellen) zoals FreeType, maar het doet geen tekstopmaak.

Tegelijkertijd bevat ttf-parser veel andere significante verschillen:

  1. ttf-parser is geschreven in Rust zonder gebruik te maken van onveilige code. FreeType en stb_truetype zijn geschreven in C.
  2. ttf-parser is de enige veilige (memory-safe) implementatie. Het lezen van willekeurige geheugen is onmogelijk. In FreeType worden voortdurend kwetsbaarheden opgelost, terwijl stb_truetype in principe niet is ontworpen voor het lezen van willekeurige lettertypen.
  3. ttf-parser is de enige thread-safe implementatie. Alle parsermethoden zijn constant. De enige uitzondering is het instellen van coördinaten voor variabele lettertypen, maar deze functie is reentrant. FreeType is in principe single-threaded. stb_truetype is reentrant (je kunt afzonderlijke exemplaren in verschillende threads gebruiken, maar niet één uit veel).
  4. ttf-parser is de enige implementatie die geen geheugenallocatie in de 'heap' gebruikt. Dit versnelt de parsing en voorkomt problemen bij OOM.
  5. Bijna alle wiskundige bewerkingen en typeconversies worden gecontroleerd (ook statisch).
  6. In het slechtste geval kan de bibliotheek een uitzondering gooien. In de C API zullen uitzonderingen worden onderschept en de functie retourneert een fout, maar crasht niet.

En ondanks alle veiligheidsgaranties is ttf-parser ook de snelste implementatie. Bijvoorbeeld, parsing van CFF2 is 3,5 keer sneller dan in FreeType. De parsing van glyf is ondertussen 10% langzamer dan in stb_truetype, maar dat komt doordat het geen variabele lettertypen ondersteunt, waarvoor extra informatie moet worden opgeslagen. Meer details vind je in README.

Bron: linux.org.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster