Google открыл код библиотеки для работы со шрифтами

Компания Google совсем недавно анонсировала свое открытие по лицензии Apache нового кода библиотеки под названием sfntly. Он предназначен для разборов, редактирования и создания новых шрифтов на базе контейнера SFNT. Данная библиотека стала доступна пользователям в двух вариантах для языков Java и С++. Код данной библиотеки был отмечен как стабильный. На сегодняшний день Java-версия библиотеки применяется для динамической фильтрации (для удаления лишних ненужных символов или выделения подмножеств) шрифтов в проекте Google Web Fonts, а второй вариант С++ при распечатке PDF-документов в браузере Chrome.

Главным предназначением данной библиотеки стало создание сервисов, которые поддерживают различные манипуляции со шрифтами, а так же создание высокопроизводительных приложений. Как пояснил Раф Левьен, инженера, который занимается именно проблемами использования шрифтов в Web, sfntly по-настоящему очень быстрая библиотека, в ее возможности входит выделение подмножеств символов из достаточно больших шрифтов за миллисекунды, что во много раз быстрее процесса сжатия с применением gzip.

Помимо хорошей продуктивности эта библиотека также представляет из себя очень понятный API, который позволяет делать как высокоуровневые действия над шрифтами, так же она способна организовать и низкоуровневый доступ к самим данным внутри этого шрифта. Объекты шрифтов, которыми управляет библиотека, поддерживают работу в многопоточных приложениях, в том числе и при редактировании. Так же библиотека поддерживает редактирование и разбор практически всех основных sfnt- таблиц для форматов TrueType и OpenType, а так же и добавление новых. Так же можно спокойно манипулировать всеми остальными форматами на базе контейнера SFNT, включая AAT/GX и Graphite.

Следующей ступенью в развитии этой библиотеки станет модернизация поддержки расширенных элементов спецификации OpenType, возможность исполнения всевозможных форм сериализации, усовершенствование уровня абстракции при манипулировании шрифтами.