ttf-parser 0.5 - perpustakaan baharu untuk bekerja dengan fon TrueType

ttf-parser ialah perpustakaan untuk menghuraikan fon TrueType/OpenType.
Versi baharu mempunyai sokongan penuh untuk fon berubah-ubah
(fon berubah-ubah) dan C API, akibatnya saya memutuskan untuk mengiklankannya dalam tradisi.

Sehingga baru-baru ini, jika terdapat keperluan untuk bekerja dengan fon TrueType, terdapat dua pilihan: FreeType dan stb_truetype. Yang pertama adalah gabungan yang besar, yang kedua menyokong bilangan fungsi yang agak kecil.

ttf-parser berada di suatu tempat di tengah. Ia menyokong semua jadual TrueType yang sama (format TrueType terdiri daripada banyak jadual binari berasingan) sebagai FreeType, tetapi tidak melukis glif itu sendiri.

Pada masa yang sama, ttf-parser mengandungi banyak perbezaan ketara yang lain:

  1. ttf-parser ditulis dalam Rust tanpa menggunakan tidak selamat. FreeType dan stb_truetype ditulis dalam C.
  2. ttf-parser ialah satu-satunya pelaksanaan yang selamat memori. Membaca memori rawak tidak mungkin. Kerentanan sentiasa diperbaiki dalam FreeType, dan stb_truetype, pada dasarnya, tidak direka untuk membaca fon sewenang-wenangnya.
  3. ttf-parser ialah satu-satunya pelaksanaan yang selamat untuk benang. Semua kaedah penghuraian adalah malar. Satu-satunya pengecualian ialah menetapkan koordinat untuk fon berubah, tetapi fungsi ini adalah masuk semula. FreeType pada asasnya adalah satu benang. stb_truetype - reentrant (anda boleh menggunakan salinan individu dalam urutan yang berbeza, tetapi bukan satu daripada banyak).
  4. ttf-parser ialah satu-satunya pelaksanaan yang tidak menggunakan peruntukan timbunan. Ini membolehkan anda mempercepatkan penghuraian dan mengelakkan masalah dengan OOM.
  5. Juga, hampir semua operasi aritmetik dan penukaran jenis angka disemak (termasuk secara statik).
  6. Dalam kes yang paling teruk, perpustakaan mungkin membuang pengecualian. Dalam kes ini, dalam C API, pengecualian akan ditangkap dan fungsi akan mengembalikan ralat, tetapi tidak akan ranap.

Dan di sebalik semua jaminan keselamatan, ttf-parser juga merupakan pelaksanaan terpantas. Contohnya, menghuraikan CFF2 adalah 3.5 kali lebih cepat daripada FreeType. Sementara itu, parsing glyf adalah 10% lebih perlahan daripada stb_truetype, tetapi ini disebabkan oleh fakta bahawa ia tidak menyokong fon berubah-ubah, yang pelaksanaannya memerlukan penyimpanan tambahan. maklumat. Butiran lanjut dalam README.

Sumber: linux.org.ru

Tambah komen