ttf-parser Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° TrueType/OpenType ΡΡΠΈΡΡΠΎΠ².
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΈΠΌΠ° ΠΏΡΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅
(ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅) ΠΈ C API, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ΡΠΈΡ
Π΄Π° Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠΈΠ·ΠΈΡΠ°ΠΌ Π½Π° Π»ΠΎΡΠ΅.
ΠΠΎΡΠ΅Π³Π°, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠ°Π±ΠΎΡΠ° Ρ TrueType ΡΡΠΈΡΡΠΎΠ²Π΅, ΠΈΠΌΠ°ΡΠ΅ ΡΠΎΡΠ½ΠΎ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°: FreeType ΠΈ stb_truetype. ΠΡΡΠ²ΠΈΡΡ Π΅ ΠΎΠ³ΡΠΎΠΌΠ΅Π½ ΠΊΠΎΠΌΠ±Π°ΠΉΠ½, Π²ΡΠΎΡΠΈΡΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ°Π»ΡΠΊ Π±ΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ttf-parser Π΅ Π½ΡΠΊΡΠ΄Π΅ ΠΏΠΎ ΡΡΠ΅Π΄Π°ΡΠ°. Π’ΠΎΠΉ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π²ΡΠΈΡΠΊΠΈ ΡΡΡΠΈΡΠ΅ TrueType ΡΠ°Π±Π»ΠΈΡΠΈ (ΡΠΎΡΠΌΠ°ΡΡΡ TrueType ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ), ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ° ΠΈ FreeType, Π½ΠΎ Π½Π΅ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° Ρ ΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΌΠΈΡΠ΅ Π³Π»ΠΈΡΠΎΠ²Π΅.
Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅, ttf-parser ΡΡΠ΄ΡΡΠΆΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡ:
- ttf-parser Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Rust Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° unsafe. FreeType ΠΈ stb_truetype ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° C.
- ttf-parser Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° (memory-safe) ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. Π§Π΅ΡΠ΅Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π FreeType ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ΅ ΠΏΠΎΠΏΡΠ°Π²ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, Π° stb_truetype ΠΏΡΠΈΠ½ΡΠΈΠΏΠ½ΠΎ Π½Π΅ Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅.
- ttf-parser Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° thread-safe ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΡΠΈΡΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³ ΡΠ° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΅ Π·Π°Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅, Π½ΠΎ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π΅ reentrant. FreeType ΠΏΡΠΈΠ½ΡΠΈΠΏΠ½ΠΎ Π΅ Π΅Π΄Π½ΠΎΠΏΠΎΡΠΎΡΠ΅Π½. stb_truetype β reentrant (ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΊΠΎΠΏΠΈΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ, Π½ΠΎ Π½Π΅ Π΅Π΄Π½Π° ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠΎ).
- ttf-parser Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°Π»ΠΎΠΊΠ°ΡΠΈΠΈ Π² βΠΊΡΡΠ΅ΡΠΎβ. Π’ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΠΈ ΠΈΠ·Π±ΡΠ³Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ OOM.
- Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΏΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ Π½Π° ΡΠΈΡΠ»ΠΎΠ²ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π½ΠΈ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ°ΡΠΈΡΠ½ΠΎ).
- Π Π½Π°ΠΉ-Π»ΠΎΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ Π²ΡΡΠ»ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΡΠΈ ΡΠΎΠ²Π° Π² C API ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠΈΡ Π²Π°Π½Π°ΡΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΡΠ΅ Π²ΡΡΠ½Π΅ Π³ΡΠ΅ΡΠΊΠ°, Π½ΠΎ Π½ΡΠΌΠ° Π΄Π° ΠΏΠ°Π΄Π½Π΅.
Π Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΈ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ, ttf-parser Π΅ ΠΈ Π½Π°ΠΉ-Π±ΡΡΠ·Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°ΡΡΠΈΠ½Π³ΡΡ Π½Π° CFF2 Π΅ 3.5 ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ· ΠΎΡ ΡΠΎΠ·ΠΈ Π² FreeType. ΠΠ°ΡΡΠΈΠ½Π³ΡΡ Π½Π° glyf Π΅ 10% ΠΏΠΎ-Π±Π°Π²Π΅Π½ ΠΎΡ stb_truetype, Π½ΠΎ ΡΠΎΠ²Π° Π΅ Π·Π°ΡΠΎΡΠΎ ΡΠΎΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅, Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΈΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π² README.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
