Я выпустил woff2 для Flutter

Я выпустил woff2 для Flutter, чтобы закрыть частую проблему: шрифты, которые приходят не в .ttf или .otf, а в .woff или .woff2. Особенно часто так бывает в вебе.

FontLoader во Flutter рассчитан на несжатые SFNT-шрифты, то есть на байты TTF/OTF. Если скормить ему WOFF2 напрямую, начнутся проблемы. Поэтому я сделал пакет, с которым во Flutter можно использовать шрифты .woff и .woff2: он декодирует их в байты SFNT и регистрирует через стандартный пайплайн шрифтов Flutter.

Что умеет woff2:

  • Декодирование WOFF1 и WOFF2
  • Загрузка шрифтов из ассетов и из байтов
  • Обёртка над FontLoader из Flutter
  • Парсинг CSS @font-face
  • Поддержка шрифтов, встроенных через data: URL
  • Пакетная регистрация нескольких начертаний и стилей
  • Никакого нативного кода плагина в вашем приложении

Пакет вырос из моей работы над рендерингом анимированного SVG, где шрифты часто встраивают через CSS. Без нормальной поддержки WOFF/WOFF2 отрисовка может сломаться, даже если сам SVG распарсен правильно.

Он нужен не каждому Flutter-приложению, но пригодится там, где приложение работает с внешним контентом: SVG, HTML, EPUB, превью документов, экспорты из дизайн-инструментов, рендеринг писем или пайплайны rich text. Там он может избавить от раздражающего шага конвертации.

Пакет пока на ранней стадии, но основная функциональность уже готова.

Посмотреть можно здесь: pub.dev/packages/woff2 (откроется в новой вкладке)

Буду рад фидбеку от Flutter-разработчиков, у которых есть опыт работы с кастомными шрифтами, рендерингом SVG и документов или приложениями с насыщенной типографикой.

Нужно создать, модернизировать или сдвинуть с места цифровой продукт?

Расскажите о реальной задаче: веб, мобильное приложение, работа команды или ИИ-процесс, который пора довести до продакшена.

Обсудить проект