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 C тілінде жазылған.
  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.

Ақпарат көзі: linux.org.ru

пікір қалдыру