ttf-parser on teek TrueType/OpenType fontide sõelumiseks.
Uus versioon toetab täielikult muutuvaid fonte
(muutlikud fondid) ja C API, mille tulemusena otsustasin seda pärimuses reklaamida.
Kuni viimase ajani, kui oli vajadus töötada TrueType fontidega, oli täpselt kaks võimalust: FreeType ja stb_truetype. Esimene on tohutu kombain, teine toetab üsna vähe funktsioone.
ttf-parser on kuskil keskel. See toetab kõiki samu TrueType'i tabeleid (TrueType'i vorming koosneb paljudest eraldi kahendtabelitest) nagu FreeType, kuid ei joonista glüüfe ise.
Samal ajal sisaldab ttf-parser palju muid olulisi erinevusi:
- ttf-parser on kirjutatud Rusti keeles ilma unsafe'i kasutamata. FreeType ja stb_truetype on kirjutatud C keeles.
- ttf-parser on ainus mäluohutu teostus. Juhusliku mälu lugemine pole võimalik. FreeType'is parandatakse pidevalt turvaauke ja stb_truetype pole põhimõtteliselt loodud suvaliste fontide lugemiseks.
- ttf-parser on ainus lõimekindel teostus. Kõik sõelumismeetodid on konstantsed. Ainus erand on muutuvate fontide koordinaatide määramine, kuid see funktsioon on uuesti sisenev. FreeType on põhimõtteliselt ühe keermega. stb_truetype - reentrant (võite kasutada üksikuid koopiaid erinevates lõimedes, kuid mitte ühte paljudest).
- ttf-parser on ainus rakendus, mis ei kasuta kuhjaeraldisi. See võimaldab teil sõelumist kiirendada ja vältida probleeme OOM-iga.
- Samuti kontrollitakse peaaegu kõiki aritmeetilisi tehteid ja numbritüüpide teisendusi (ka staatiliselt).
- Halvimal juhul võib raamatukogu teha erandi. Sel juhul püütakse C API-s erandid kinni ja funktsioon tagastab veateate, kuid ei jookse kokku.
Ja hoolimata kõigist turvagarantiidest on ttf-parser ka kõige kiirem rakendus. Näiteks CFF2 sõelumine on 3.5 korda kiirem kui FreeType. Vahepeal on glyfi parsimine 10% aeglasem kui stb_truetype, kuid see on tingitud asjaolust, et see ei toeta muutuvaid fonte, mille rakendamine nõuab täiendavate salvestamist. teavet. Täpsemalt sisse README.
Allikas: linux.org.ru