ttf-parser 0.5 - usa ka bag-ong librarya alang sa pagtrabaho sa mga TrueType nga mga font

ttf-parser usa ka librarya alang sa pag-parse sa TrueType/OpenType nga mga font.
Ang bag-ong bersyon adunay bug-os nga suporta alang sa variable nga mga font
(variable nga mga font) ug C API, isip resulta nga nakahukom ko nga i-advertise kini sa lore.

Hangtud bag-o lang, kung gikinahanglan ang pagtrabaho sa TrueType nga mga font, adunay eksaktong duha ka kapilian: FreeType ug stb_truetype. Ang una usa ka dako nga kombinasyon, ang ikaduha nagsuporta sa usa ka gamay nga gidaghanon sa mga gimbuhaton.

Ang ttf-parser anaa sa tunga-tunga. Gisuportahan niini ang tanan nga parehas nga TrueType nga mga lamesa (ang TrueType nga pormat naglangkob sa daghang bulag nga binary nga mga lamesa) sama sa FreeType, apan wala magdrowing sa mga glyph mismo.

Sa parehas nga oras, ang ttf-parser adunay daghang uban pang hinungdanon nga mga kalainan:

  1. Ang ttf-parser gisulat sa Rust nga wala gigamit ang dili luwas. Ang FreeType ug stb_truetype gisulat sa C.
  2. Ang ttf-parser mao ra ang pagpatuman nga luwas sa memorya. Ang pagbasa sa random memory dili mahimo. Ang mga kahuyangan kanunay nga giayo sa FreeType, ug ang stb_truetype, sa prinsipyo, wala gidesinyo sa pagbasa sa arbitraryong mga font.
  3. Ang ttf-parser mao ra ang pagpatuman nga luwas sa hilo. Ang tanan nga mga pamaagi sa pag-parse kanunay. Ang bugtong eksepsiyon mao ang pag-set sa mga coordinate alang sa variable nga mga font, apan kini nga function mao ang reentrant. Ang FreeType kay batakan nga single-threaded. stb_truetype - reentrant (mahimo nimong gamiton ang indibidwal nga mga kopya sa lainlaing mga hilo, apan dili usa sa daghan).
  4. Ang ttf-parser mao ra ang pagpatuman nga wala mogamit mga alokasyon sa pundok. Gitugotan ka niini nga mapadali ang pag-parse ug malikayan ang mga problema sa OOM.
  5. Usab, hapit tanan nga mga operasyon sa aritmetika ug mga pagkakabig sa mga tipo sa numero gisusi (lakip ang statically).
  6. Sa pinakagrabe nga kaso, ang librarya mahimong maglabay og eksepsiyon. Sa kini nga kaso, sa C API, ang mga eksepsiyon makuha ug ang function magbalik sa usa ka sayup, apan dili ma-crash.

Ug bisan pa sa tanan nga mga garantiya sa seguridad, ang ttf-parser mao usab ang labing paspas nga pagpatuman. Pananglitan, ang pag-parse sa CFF2 3.5 ka beses nga mas paspas kaysa FreeType. Ang pag-parse sa glyf, sa laing bahin, mao ang 10% nga mas hinay kaysa sa stb_truetype, apan kini tungod sa kamatuoran nga wala kini nagsuporta sa mga variable nga font, ang pagpatuman niini nanginahanglan dugang nga pagtipig. impormasyon. Dugang detalye sa README.

Source: linux.org.ru

Idugang sa usa ka comment