ttf-parser 0.5 - perpustakaan anyar pikeun gawé bareng fon TrueType

ttf-parser mangrupakeun perpustakaan pikeun parsing TrueType / OpenType fon.
Versi anyar ngagaduhan dukungan pinuh pikeun fon variabel
(font variabel) jeung C API, salaku hasil nu kuring mutuskeun pikeun Ngaiklan eta dina lore nu.

Dugi ka ayeuna, upami aya kabutuhan pikeun damel sareng fon TrueType, aya dua pilihan: FreeType sareng stb_truetype. Anu kahiji nyaéta gabungan anu ageung, anu kadua ngadukung sajumlah fungsi anu cukup leutik.

ttf-parser aya wae di tengah. Ieu ngarojong sagala tabel TrueType sarua (format TrueType diwangun ku loba tabel binér misah) salaku FreeType, tapi teu ngagambar glyphs sorangan.

Dina waktos anu sami, ttf-parser ngandung seueur béda anu signifikan:

  1. ttf-parser ditulis dina Rust tanpa ngagunakeun unsafe. FreeType sareng stb_truetype ditulis dina C.
  2. ttf-parser mangrupakeun hiji-hijina palaksanaan memori-aman. Maca memori acak teu mungkin. Kerentanan terus dibenerkeun dina FreeType, sareng stb_truetype, prinsipna, henteu dirancang pikeun maca fon anu sawenang-wenang.
  3. ttf-parser mangrupakeun hiji-hijina palaksanaan thread-aman. Sadaya métode parsing konstan. Hiji-hijina iwal nyaéta nyetel koordinat pikeun font variabel, tapi fungsi ieu reentrant. FreeType dasarna single-threaded. stb_truetype - reentrant (anjeun tiasa nganggo salinan individu dina threads béda, tapi teu salah sahiji loba).
  4. ttf-parser mangrupikeun hiji-hijina palaksanaan anu henteu nganggo alokasi tumpukan. Ieu ngamungkinkeun anjeun nyepetkeun parsing sareng ngahindarkeun masalah sareng OOM.
  5. Ogé, ampir kabéh operasi aritmatika sareng konvérsi jinis numerik dipariksa (kalebet statis).
  6. Dina kasus anu paling parah, perpustakaan tiasa ngalungkeun pengecualian. Dina hal ieu, dina C API, iwal bakal bray jeung fungsi bakal balik kasalahan, tapi moal ngadat.

Sarta sanajan sakabeh jaminan kaamanan, ttf-parser oge palaksanaan panggancangna. Contona, parsing CFF2 3.5 kali leuwih gancang ti FreeType. Parsing glyf, Samentara éta, 10% laun ti di stb_truetype, tapi ieu alatan kanyataan yén teu ngarojong font variabel, palaksanaan nu merlukeun nyimpen tambahan. inpormasi. Langkung rinci dina README.

sumber: linux.org.ru

Tambahkeun komentar