ttf-parser 0.5 - TrueType фонттой ажиллах шинэ номын сан

ttf-шинжилгээч нь TrueType/OpenType фонтуудыг задлан шинжлэх номын сан юм.
Шинэ хувилбар нь хувьсах фонтыг бүрэн дэмждэг
(хувьсах фонтууд) болон C API, үүний үр дүнд би үүнийг сурталчлахаар шийдсэн.

Саяхныг хүртэл TrueType фонттой ажиллах шаардлагатай байсан бол FreeType болон stb_truetype гэсэн хоёр сонголт байсан. Эхнийх нь асар том комбайн, хоёр дахь нь нэлээд цөөн тооны функцийг дэмждэг.

ttf-parser нь дунд хэсэгт байдаг. Энэ нь FreeType-тэй адил TrueType хүснэгтүүдийг (TrueType формат нь олон тусдаа хоёртын хүснэгтээс бүрддэг) дэмждэг боловч глифүүдийг өөрөө зурдаггүй.

Үүний зэрэгцээ ttf-parser нь бусад олон чухал ялгааг агуулдаг:

  1. ttf-parser нь unsafe ашиглахгүйгээр Rust дээр бичигдсэн байдаг. FreeType болон stb_truetype нь C хэл дээр бичигдсэн.
  2. ttf-parser нь санах ойд аюулгүй цорын ганц хэрэглүүр юм. Санамсаргүй санах ойг унших боломжгүй. FreeType-д эмзэг байдлыг байнга засдаг бөгөөд stb_truetype нь зарчмын хувьд дурын фонтуудыг уншихад зориулагдаагүй юм.
  3. ttf-parser нь урсгалд аюулгүй цорын ганц хэрэглүүр юм. Бүх задлан шинжлэх аргууд тогтмол байдаг. Цорын ганц үл хамаарах зүйл бол хувьсах фонтуудын координатыг тохируулах явдал боловч энэ функц дахин нэвтэрч байна. FreeType нь үндсэндээ нэг урсгалтай. stb_truetype - reentrant (та өөр өөр хэлхээс дэх хувь хүний ​​хуулбарыг ашиглаж болно, гэхдээ олон тооны нэгийг нь биш).
  4. ttf-parser нь нуруулдан хуваарилалтыг ашигладаггүй цорын ганц хэрэглүүр юм. Энэ нь танд задлан шинжилгээг хурдасгаж, OOM-тэй холбоотой асуудлаас зайлсхийх боломжийг олгоно.
  5. Мөн бараг бүх арифметик үйлдлүүд болон тоон төрлүүдийн хөрвүүлэлтийг (статикийг оруулаад) шалгадаг.
  6. Хамгийн муу тохиолдолд номын сан онцгой тохиолдол гаргаж магадгүй юм. Энэ тохиолдолд C API-д үл хамаарах зүйлүүд баригдах бөгөөд функц нь алдаа гаргах боловч сүйрэхгүй.

Бүх аюулгүй байдлын баталгааг үл харгалзан ttf-parser нь хамгийн хурдан хэрэгжүүлэлт юм. Жишээлбэл, CFF2 задлан шинжлэх нь FreeType-ээс 3.5 дахин хурдан байдаг. Үүний зэрэгцээ glyf-г задлах нь stb_truetype-ээс 10% удаан боловч энэ нь хувьсах фонтыг дэмждэггүйтэй холбоотой бөгөөд үүнийг хэрэгжүүлэхэд нэмэлт хадгалах шаардлагатай болдог. мэдээлэл. Дэлгэрэнгүй мэдээллийг эндээс авна уу README.

Эх сурвалж: linux.org.ru

сэтгэгдэл нэмэх