ttf-parser 0.5 - TrueType letra-tipoekin lan egiteko liburutegi berria

ttf-analisia TrueType/OpenType letra-tipoak analizatzeko liburutegia da.
Bertsio berriak letra-tipo aldakorren laguntza osoa du
(letra-tipo aldagarriak) eta C API, eta horren ondorioz iragartzea erabaki nuen lorean.

Duela gutxi arte, TrueType letra-tipoekin lan egin beharra bazegoen, zehazki bi aukera zeuden: FreeType eta stb_truetype. Lehenengoa konbinazio handia da, bigarrenak funtzio kopuru nahiko txikia onartzen du.

ttf-parser erdian dago. FreeType bezalako TrueType taula berdinak onartzen ditu (TrueType formatuak taula bitar bereizi asko ditu), baina ez ditu glifoak marrazten.

Aldi berean, ttf-parser-ek beste desberdintasun esanguratsu asko ditu:

  1. ttf-parser Rust-en idazten da unsafe erabili gabe. FreeType eta stb_truetype C-n idatzita daude.
  2. ttf-parser memoria segurua den inplementazio bakarra da. Ezin da ausazko memoria irakurtzea. Ahultasunak etengabe konpontzen ari dira FreeType-n, eta stb_truetype ez dago, printzipioz, letra-tipo arbitrarioak irakurtzeko diseinatuta.
  3. ttf-parser da hari seguruko inplementazio bakarra. Analisi metodo guztiak konstanteak dira. Salbuespen bakarra letra-tipo aldakorretarako koordenatuak ezartzea da, baina funtzio hau berriro sartzen da. FreeType funtsean hari bakarrekoa da. stb_truetype - reentrant (kopia indibidualak erabil ditzakezu hainbat haritan, baina ez askoren artean).
  4. ttf-parser da heap esleipenak erabiltzen ez dituen inplementazio bakarra. Honek analisia bizkortu eta OOM-ekin arazoak saihesteko aukera ematen du.
  5. Era berean, ia eragiketa aritmetiko guztiak eta zenbaki-moten bihurketa guztiak egiaztatzen dira (estatikoki barne).
  6. Kasurik txarrenean, liburutegiak salbuespen bat bota dezake. Kasu honetan, C APIan, salbuespenak harrapatuko dira eta funtzioak errore bat itzuliko du, baina ez da huts egingo.

Eta segurtasun-berme guztiak gorabehera, ttf-parser inplementazio azkarrena ere bada. Adibidez, CFF2 analizatzea FreeType baino 3.5 aldiz azkarragoa da. Glyf analizatzea, berriz, stb_truetypen baino % 10 motelagoa da, baina hori ez duelako onartzen da letra-tipo aldagarriak, eta horien ezarpenak gehigarriak gordetzea eskatzen du. informazioa. Xehetasun gehiago atalean README.

Iturria: linux.org.ru

Gehitu iruzkin berria