ttf-parser 0.5 β€” Π½ΠΎΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с TrueType ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²Π΅

ttf-parser β€” Ρ‚ΠΎΠ²Π° Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²Π΅ TrueType/OpenType.
Π’ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия ΠΈΠΌΠ°ΠΌΠ΅ пълна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²Π΅.
(ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²Π΅) ΠΈ C API, ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΡ… Π΄Π° я Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€Π°ΠΌ Π² Π»ΠΎΡ€Π΅.

Π”ΠΎ Π½Π΅ΠΎΡ‚Π΄Π°Π²Π½Π°, Π°ΠΊΠΎ имашС Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π° с ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²Π΅ TrueType, имашС Ρ‚ΠΎΡ‡Π½ΠΎ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°: FreeType ΠΈ stb_truetype. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ ΠΊΠΎΠΌΠ±Π°ΠΉΠ½, Π° вторият ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° доста ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ttf-parser Π΅ някъдС ΠΏΠΎ срСдата. Π’ΠΎΠΉ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° всички ΡΡŠΡ‰ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ TrueType (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ TrueType сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ), ΠΊΠ°ΠΊΠ²ΠΈΡ‚ΠΎ ΠΈ FreeType, Π½ΠΎ Π½Π΅ сС Π·Π°Π½ΠΈΠΌΠ°Π²Π° с рисуванСто Π½Π° самитС Π³Π»ΠΈΡ„ΠΎΠ²Π΅.

ΠŸΡ€ΠΈ Ρ‚ΠΎΠ²Π°, ttf-parser ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° мноТСство Π΄Ρ€ΡƒΠ³ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ различия:

  1. ttf-parser С написан на Rust бСз използванС на unsafe. FreeType и stb_truetype са написани на C.
  2. ttf-parser Π΅ СдинствСната бСзопасна (memory-safe) рСализация. Π§Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π΅ нСвъзмоТно. Π’ FreeType постоянно поправят уязвимости, Π° stb_truetype ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π΅ Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²Π΅.
  3. ttf-parser Π΅ СдинствСната thread-safe рСализация. Всички ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° парсинг са константни. ЕдинствСното ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΅ Π·Π°Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²Π΅, Π½ΠΎ Ρ‚Π°Π·ΠΈ функция Π΅ reentrant. FreeType ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΅ Π΅Π΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎ. stb_truetype β€” reentrant (ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ копия Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, Π½ΠΎ Π½Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ мноТСството).
  4. ttf-parser Π΅ СдинствСната рСализация, която Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° алокация Π² "ΠΊΡƒΠΏΠ°Ρ‚Π°". Π’ΠΎΠ²Π° позволява Π΄Π° сС ускори парсинга ΠΈ Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ OOM.
  5. Π‘ΡŠΡ‰ΠΎ, ΠΏΠΎΡ‡Ρ‚ΠΈ всички Π°Ρ€ΠΈΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° числови Ρ‚ΠΈΠΏΠΎΠ²Π΅ сС провСряват (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ статично).
  6. Π’ Π½Π°ΠΉ-лошия случай Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ Ρ‚ΠΎΠ²Π° Π² C API ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ‚Π° Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΡ…Π²Π°Π½Π°Ρ‚ΠΈ ΠΈ функцията Ρ‰Π΅ Π²ΡŠΡ€Π½Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°, Π½ΠΎ няма Π΄Π° сринС.

И Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ всички Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈ Π·Π° бСзопасност, ttf-parser Π΅ ΡΡŠΡ‰ΠΎ ΠΈ Π½Π°ΠΉ-Π±ΡŠΡ€Π·Π°Ρ‚Π° рСализация. НапримСр парсинга Π½Π° CFF2 Π΅ с 3.5 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π· ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Π² FreeType. ΠŸΠ°Ρ€ΡΠΈΠ½Π³Π° Π½Π° glyf Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с 10% ΠΏΠΎ-Π±Π°Π²Π΅Π½ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Π² stb_truetype, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²Π΅, Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏ. информация. ΠŸΠΎΠ²Π΅Ρ‡Π΅ подробности Π² README.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster