ttf-ΠΏΠ°ΡΡΠ΅Ρ Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° 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 Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° Π·Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°. Π§Π΅ΡΠ΅Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Ρ Π²ΡΠ² FreeType, Π° stb_truetype ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π΅ Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ Π΄Π° ΡΠ΅ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅.
- ttf-parser Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° Π·Π° Π½ΠΈΡΠΊΠΈ. ΠΡΠΈΡΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ· ΡΠ° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΅ Π·Π°Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅, Π½ΠΎ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²Π»ΠΈΠ·Π°ΡΠ°. FreeType Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π΅Π΄Π½ΠΎΠ½ΠΈΡΠΊΠΎΠ². stb_truetype - reentrant (ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΊΠΎΠΏΠΈΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΡΠΊΠΈ, Π½ΠΎ Π½Π΅ Π΅Π΄Π½ΠΎ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠΎ).
- ttf-parser Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° ΠΊΡΠΏΡΠΈΠ½Π°. Π’ΠΎΠ²Π° Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠΊΠΎΡΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ OOM.
- Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ Π½Π° ΡΠΈΡΠ»ΠΎΠ²ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ°ΡΠΈΡΠ½ΠΎ).
- Π Π½Π°ΠΉ-Π»ΠΎΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ Π²ΡΡΠ»ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π² C API ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ»ΠΎΠ²Π΅Π½ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΡΠ΅ Π²ΡΡΠ½Π΅ Π³ΡΠ΅ΡΠΊΠ°, Π½ΠΎ Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΡΡΠΈΠ½Π΅.
Π Π²ΡΠΏΡΠ΅ΠΊΠΈ Π²ΡΠΈΡΠΊΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ, ttf-parser Π΅ ΠΈ Π½Π°ΠΉ-Π±ΡΡΠ·Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° CFF2 Π΅ 3.5 ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΠΎΡ FreeType. Π Π°Π·Π±ΠΎΡΡΡ Π½Π° glyf ΠΌΠ΅ΠΆΠ΄ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΅ Ρ 10% ΠΏΠΎ-Π±Π°Π²Π΅Π½, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π² stb_truetype, Π½ΠΎ ΡΠΎΠ²Π° ΡΠ΅ Π΄ΡΠ»ΠΆΠΈ Π½Π° ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅, ΡΠΈΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ. ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π² README.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru