ttf-parser 0.5 - ile-ikawe tuntun fun ṣiṣẹ pẹlu awọn akọwe TrueType

ttf-parser jẹ ile-ikawe fun sisọ awọn nkọwe TrueType/OpenType.
Ẹya tuntun naa ni atilẹyin kikun fun awọn nkọwe oniyipada
(ayípadà nkọwe) ati C API, nitori abajade eyi ti mo pinnu lati polowo rẹ ni lore.

Titi di aipẹ, ti iwulo ba wa lati ṣiṣẹ pẹlu awọn nkọwe TrueType, awọn aṣayan meji gangan wa: FreeType ati stb_truetype. Ni akọkọ jẹ apapọ nla, keji ṣe atilẹyin nọmba kekere ti awọn iṣẹ ṣiṣe.

ttf-parser wa ni ibikan ni aarin. O ṣe atilẹyin fun gbogbo awọn tabili TrueType kanna (kika TrueType ni ọpọlọpọ awọn tabili alakomeji lọtọ) bi FreeType, ṣugbọn ko fa awọn glyphs funrararẹ.

Ni akoko kanna, ttf-parser ni ọpọlọpọ awọn iyatọ pataki miiran:

  1. ttf-parser ti kọ ni Rust laisi lilo ailewu. FreeType ati stb_truetype ni a kọ sinu C.
  2. ttf-parser jẹ imuse ailewu iranti nikan. Kika ID iranti ko ṣee ṣe. Awọn ailagbara ti wa ni atunṣe nigbagbogbo ni FreeType, ati stb_truetype jẹ, ni ipilẹ, ko ṣe apẹrẹ lati ka awọn nkọwe lainidii.
  3. ttf-parser jẹ imuse ailewu-o tẹle ara nikan. Gbogbo awọn ọna ṣiṣe itupalẹ jẹ igbagbogbo. Iyatọ kanṣoṣo ni iṣeto awọn ipoidojuko fun awọn nkọwe oniyipada, ṣugbọn iṣẹ yii tun pada wọle. FreeType jẹ ipilẹ ẹyọkan. stb_truetype - reentrant (o le lo awọn ẹda kọọkan ni oriṣiriṣi awọn okun, ṣugbọn kii ṣe ọkan ninu ọpọlọpọ).
  4. ttf-parser jẹ imuse nikan ti ko lo awọn ipin okiti. Eyi n gba ọ laaye lati yara itupalẹ ati yago fun awọn iṣoro pẹlu OOM.
  5. Paapaa, o fẹrẹ jẹ gbogbo awọn iṣẹ ṣiṣe iṣiro ati awọn iyipada ti awọn oriṣi nọmba ni a ṣayẹwo (pẹlu aimi).
  6. Ni awọn buru nla, awọn ìkàwé le jabọ ohun sile. Ni idi eyi, ninu C API, awọn imukuro yoo mu ati pe iṣẹ naa yoo da aṣiṣe pada, ṣugbọn kii yoo jamba.

Ati pelu gbogbo awọn iṣeduro aabo, ttf-parser tun jẹ imuse ti o yara ju. Fun apẹẹrẹ, sisọ CFF2 jẹ awọn akoko 3.5 yiyara ju FreeType. Parsing glyf, nibayi, jẹ 10% losokepupo ju ni stb_truetype, ṣugbọn eyi jẹ nitori otitọ pe ko ṣe atilẹyin awọn nkọwe oniyipada, imuse eyiti o nilo fifipamọ afikun. alaye. Awọn alaye diẹ sii ni README.

orisun: linux.org.ru

Fi ọrọìwòye kun