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
