ttf-parser 0.5 - yon nouvo bibliyotèk pou travay ak polis TrueType

ttf-parser se yon bibliyotèk pou analize polis TrueType/OpenType.
Nouvo vèsyon an gen sipò konplè pou polis varyab
(polis varyab) ak C API, kòm yon rezilta nan ki mwen deside fè piblisite li nan lore la.

Jiska dènyèman, si te gen yon bezwen travay ak polis TrueType, te gen egzakteman de opsyon: FreeType ak stb_truetype. Premye a se yon gwo konbine, dezyèm lan sipòte yon ti kantite fonksyon.

ttf-parser se yon kote nan mitan an. Li sipòte tout menm tab TrueType yo (fòma TrueType a konsiste de anpil tab binè separe) kòm FreeType, men li pa trase glif yo tèt yo.

An menm tan an, ttf-parser gen anpil lòt diferans enpòtan:

  1. ttf-parser ekri nan Rust san yo pa itilize danjere. FreeType ak stb_truetype yo ekri nan C.
  2. ttf-parser se sèlman aplikasyon an san danje pou memwa. Lekti memwa o aza pa posib. Vilnerabilite yo toujou ap fikse nan FreeType, ak stb_truetype, an prensip, pa fèt pou li polis abitrè.
  3. ttf-parser se sèlman aplikasyon an san danje. Tout metòd analiz yo konstan. Sèl eksepsyon se mete kowòdone pou polis varyab, men fonksyon sa a se reantrant. FreeType se fondamantalman yon sèl-threaded. stb_truetype - reantrant (ou ka itilize kopi endividyèl nan diferan fil, men se pa youn nan anpil).
  4. ttf-parser se aplikasyon an sèlman ki pa sèvi ak alokasyon pil. Sa a pèmèt ou pi vit analiz epi evite pwoblèm ak OOM.
  5. Epitou, prèske tout operasyon aritmetik ak konvèsyon kalite nimerik yo tcheke (ki gen ladan estatik).
  6. Nan ka ki pi mal la, bibliyotèk la ka voye yon eksepsyon. Nan ka sa a, nan C API a, eksepsyon yo pral kenbe ak fonksyon an ap retounen yon erè, men li pa pral aksidan.

Ak malgre tout garanti sekirite yo, ttf-parser se tou aplikasyon ki pi rapid. Pou egzanp, analiz CFF2 se 3.5 fwa pi vit pase FreeType. Parsing glyf, pandan se tan, se 10% pi dousman pase nan stb_truetype, men sa a se akòz lefèt ke li pa sipòte polis varyab, aplikasyon an ki mande pou estoke plis. enfòmasyon. Plis detay nan README.

Sous: linux.org.ru

Add nouvo kòmantè