ttf-parser 0.5 - TrueType шрифттери менен иштөө үчүн жаңы китепкана

ttf-талдоочу TrueType/OpenType шрифттерин талдоо үчүн китепкана болуп саналат.
Жаңы версия өзгөрүлмө шрифттерге толук колдоо көрсөтөт
(өзгөрүлмө шрифттер) жана C API, анын натыйжасында мен аны таанып-билүүнү чечтим.

Акыркы убакка чейин TrueType шрифттери менен иштөө зарылчылыгы бар болсо, анда так эки вариант бар болчу: FreeType жана stb_truetype. Биринчиси - чоң комбайн, экинчиси аз сандагы функцияларды колдойт.

ttf-парсер ортодо бир жерде. Ал FreeType сыяктуу эле TrueType таблицаларын (TrueType форматы көптөгөн өзүнчө экилик таблицалардан турат) колдойт, бирок глифтердин өзүн тартпайт.

Ошол эле учурда, ttf-парсер башка көптөгөн олуттуу айырмачылыктарды камтыйт:

  1. ttf-парсер кооптуу колдонбостон Rust тилинде жазылган. FreeType жана stb_truetype С тилинде жазылган.
  2. ttf-парсер эстутум үчүн коопсуз ишке ашыруу болуп саналат. Кокус эстутумду окуу мүмкүн эмес. FreeType'де аялуу жерлер тынымсыз оңдолуп турат жана stb_truetype, негизинен, ыктыярдуу шрифттерди окуу үчүн иштелип чыккан эмес.
  3. ttf-парсер бирден-бир жипти коопсуз ишке ашыруу болуп саналат. Бардык талдоо ыкмалары туруктуу. Бир гана өзгөчөлүк өзгөрүлмө шрифттерге координаттарды коюу болуп саналат, бирок бул функция кайра кирет. FreeType негизинен бир жиптүү. stb_truetype - кайра кирүүчү (сиз ар кандай жиптерде жеке көчүрмөлөрдү колдоно аласыз, бирок көптөрдүн бири эмес).
  4. ttf-парсер үймөк бөлүштүрүүнү колдонбогон жалгыз ишке ашыруу. Бул талдоону тездетүүгө жана OOM менен көйгөйлөрдөн качууга мүмкүндүк берет.
  5. Ошондой эле, дээрлик бардык арифметикалык амалдар жана сандык түрлөрдүн конверсиялары текшерилет (анын ичинде статикалык).
  6. Эң начар учурда, китепкана өзгөчөлүктү ташташы мүмкүн. Бул учурда, C APIде өзгөчөлүктөр кармалып, функция катаны кайтарат, бирок бузулбайт.

Жана бардык коопсуздук кепилдиктерине карабастан, ttf-парсер да эң тез ишке ашыруу болуп саналат. Мисалы, CFF2 талдоо FreeType караганда 3.5 эсе тезирээк. Ошол эле учурда glyf талдоо stb_truetypeге караганда 10% жайыраак, бирок бул өзгөрүлмө шрифттерди колдобогондугу менен байланыштуу, аларды ишке ашыруу кошумча сактоону талап кылат. маалымат. Кененирээк маалыматта README.

Source: linux.org.ru

Комментарий кошуу