ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Google ΠΌΠΈΠ³ΡΠΈΡΠ° Π±ΡΠ°ΡΠ·Π΅ΡΠ° Chrome Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Skrifa, Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠΈΡΡΠΎΠ²Π΅ Π² OpenType ΡΠΎΡΠΌΠ°Ρ. Skrifa ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΡΡΠΈΡΡΠΎΠ²ΠΈΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» FreeType, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° 2D Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Skia, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² Chrome ΠΈ Chromium. ΠΠ° Π΄Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Skia ΠΎΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ FreeType Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ, Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π½ΠΎΠ² ΡΡΠΈΡΡΠΎΠ² Π±Π΅ΠΊΠ΅Π½Π΄, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Skrifa.
Π Chrome 128 Π±Π΅ΠΊΠ΅Π½Π΄ΡΡ, Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Rust, Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π·Π° ΡΡΠ΄ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ Π½Π° ΡΡΠΈΡΡΠΎΠ²Π΅, ΠΊΠ°ΡΠΎ CFF2 ΠΈ ΡΠ²Π΅ΡΠ½ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅. ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΡ Chrome 133, Π½ΠΎΠ²ΠΈΡΡ Π±Π΅ΠΊΠ΅Π½Π΄ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π± ΡΡΠΈΡΡΠΎΠ²Π΅ Π² ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Linux, Android ΠΈ ChromeOS. ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅ Windows ΠΈ macOS Π½ΠΎΠ²ΠΈΡΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ ΡΠ΅Π·Π΅ΡΠ²Π΅Π½ ΠΈ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΡΠΈΡΡΠ°, ΠΊΠΎΠΉΡΠΎ Π±ΡΠ°ΡΠ·ΡΡΡΡ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°.
ΠΠΎΠ΄ΡΡ Π½Π° Skrifa Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈ Π½Π° Google Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Fontations ΠΈ Π΅ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈΡΠ΅ MIT ΠΈ Apache 2.0. ΠΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Skrifa ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 700 unit ΡΠ΅ΡΡΠ°. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° Π³Π»ΠΈΡΠΎΠ²Π΅ Π² ΡΠΎΡΠΌΠ°ΡΠΈ glyf, CFF, CFF2, COLRv0, COLRv1, EBDT, CBDT ΠΈ sbix, Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅ Π² ΡΠΎΡΠΌΠ°ΡΠΈ glyf, CFF2 ΠΈ COLRv1, Ρ ΠΈΠ½ΡΠΈΠ³ Π½Π° ΡΡΠΈΡΡΠΎΠ²Π΅ Π² ΡΠΎΡΠΌΠ°ΡΠΈ glyf, CFF ΠΈ CFF2.
ΠΡΠ²Π΅Π½ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Skrifa, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ° API Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ Π½Π° ΡΡΠΈΡΡΠΎΠ²Π΅ ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΡΠΈ Π½Π° Π³Π»ΠΈΡΠΎΠ²Π΅, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Fontations Π²ΠΊΠ»ΡΡΠ²Π° Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅, ΠΏΠ°ΡΡΠ²Π°Π½Π΅, ΠΏΡΠΎΠΌΡΠ½Π° ΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΡΡΠΈΡΡΠΎΠ²Π΅ Π² ΡΠΎΡΠΌΠ°Ρ OpenType. Fontations Π΅ Π΅ ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Oxidize, ΠΊΠΎΠΉΡΠΎ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π·Π° ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ΅ΠΊΡΡ ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° Π΅Π·ΠΈΡΠΈ Python (fonttools, fontmake, nanoemoji) ΠΈ C++ (HarfBuzz, FreeType) Π½Π° Π½ΠΎΠ²ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Rust.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° Rust Π·Π°ΠΏΠΎΡΠ½Π° ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ½Π°ΡΠ° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡ ΠΏΡΠΈ ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΡΡΠ΅Π· fuzzing ΡΠ΅ΡΡΠΈΡΠ°Π½Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ Π½Π° ΡΡΠΈΡΡΠΎΠ²Π΅ΡΠ΅ ΡΠ° ΡΠ²ΡΡΠ΄Π΅ ΡΠ»ΠΎΠΆΠ½ΠΈ, Π·Π° Π΄Π° ΡΠ΅ ΠΎΠ±Ρ Π²Π°Π½Π°Ρ Π²ΡΠΈΡΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΈΠ½Π°Π»Π°ΡΠ° ΡΠ΅Π΄ΠΌΠΈΡΠ° Π² FreeType Π±Π΅ΡΠ΅ ΠΎΡΠΊΡΠΈΡ ΠΊΡΠΈΡΠΈΡΠ΅Π½ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΎΡΠΎΡΠΌΠ΅Π½ΠΈ ΡΡΠΈΡΡΠΎΠ²Π΅ ΠΎΡ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠ°. ΠΡΠ²Π΅Π½ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ FreeType, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ Π² Π½Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠ°ΡΠΎ bzip2, libpng ΠΈ zlib.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Rust Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΏΠΎΠ²ΠΈΡΠ°Π²Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΊΠΎΠ΄Π°, Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΈ ΡΡΠΊΠΎΡΡΠ²Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° Chrome, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΡΠΈΡΡΠΎΠ²Π΅ΡΠ΅. Π‘ΠΏΠΎΡΠ΅Π΄ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π½Π° Google ΠΈ Microsoft ΠΎΠΊΠΎΠ»ΠΎ 70% ΠΎΡ ΠΎΠΏΠ°ΡΠ½ΠΈΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠΈΠ·Π»ΠΈΠ·Π°Ρ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·Π±Π΅Π³Π½Π°ΡΠΈ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Rust Π±Π΅Π· Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Rust ΡΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ ΠΊΠΎΠ΄Π° Π½Π° FreeType, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ΡΠΎ ΠΈΠ·Π²ΡΠ½ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° Π±ΡΡΠ΅ΡΠ°, Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΠΌΠ°ΡΠΈΠ²ΠΈ Π±Π΅Π· ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅, ΠΏΡΠ΅Π»ΠΈΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π°, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
