Web Open Font Format (.woff)
W3C СтандартWeb Open Font Format (WOFF) - это исторический веб-формат шрифтов открытого стандарта первого поколения, одобренный W3C, который объединяет стандартные шрифты TrueType или OpenType со сжатием zlib и XML-метаданными лицензирования.
Анализ и метаданные
Операционные системы и анализаторы файлов идентифицируют файлы WOFF по начальной двоичной последовательности байтов:
Сигнатура заголовка на уровне байтов (Magic Bytes)
Операционные системы и анализаторы файлов идентифицируют файлы WOFF по начальной двоичной последовательности байтов:
HEX-СИГНАТУРА (СМЕЩЕНИЕ 0):
77 4F 46 46ПРЕДСТАВЛЕНИЕ ASCII: wOFF
Стандартизация: W3C Recommendation (2012)
Технические спецификации
| Архитектура контейнера | Заголовок WOFF размером 44 байта, за которым следует каталог таблиц, сжатые данные таблиц zlib, необязательные расширенные метаданные и личные данные |
| Сжатие | Сжатие Deflate (zlib), применяемое к каждой отдельной таблице шрифта |
| Порядок байтов (Endianness) | Обратный порядок байтов (Big-Endian, стандарт SFNT) |
| Цветовые пространства | Наследуется из базовых таблиц шрифта |
| Каналы и структура | Контуры глифов TrueType ('glyf') или PostScript ('CFF '), метрики и типографические особенности |
| Макс. габариты | До 65 535 глифов на файл шрифта |
| Прозрачность | Наследуется из базового формата шрифта |
| Потоковая передача и прогрессивная загрузка | Потабличное декомпрессирование обеспечивает потоковую загрузку шрифтов |
Техническая матрица сравнения: WOFF против конкурентов
| Технический атрибут | WOFF (Текущий) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Алгоритм сжатия | Deflate (zlib) для каждой таблицы | Brotli с предварительной обработкой таблиц | Несжатый SFNT | Несжатый SFNT |
| Сигнатура | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Относительный размер файла | Примерно на 40% меньше, чем TTF | Примерно на 60% меньше, чем TTF | Базовый стандарт (100%) | Базовый стандарт (100%) |
| Целевая среда | Устаревшие веб-браузеры (IE9+, Safari 5+) | Современные веб-браузеры (универсально) | Настольные операционные системы | Настольные издательские системы и печать |
Типичные режимы повреждения и руководство по восстановлению в HEX
Предупреждение в консоли браузера: 'Failed to decode downloaded font: OTS parsing error'.
Первопричина: Несоответствие заявленной длины несжатой таблицы или поврежденный поток zlib.
Восстановление: Выполните повторное сжатие таблиц шрифта или конвертируйте в WOFF2 с помощью конвертера шрифтов File2File.
Анализ безопасности и векторы атак на парсер
Веб-браузеры обрабатывают файлы WOFF, загруженные из ненадежных доменов, с помощью OpenType Sanitizer (OTS) для блокировки вредоносных полезных нагрузок.
Известные векторы атак
- Чтение за пределами буфера во время декомпрессии zlib поврежденных фрагментов таблицы шрифтов.
- Несоответствующие поля длины таблиц, вызывающие переполнение буфера кучи в модулях рендеринга шрифтов.
- Отказ в обслуживании из-за исчерпания памяти при расширении таблицы шрифтов.
Защитные лучшие практики: Всегда проверяйте загруженные файлы WOFF с помощью OTS перед передачей их в системные модули рендеринга шрифтов.
Исторические истоки и вехи
Ключевые преимущества и плюсы
- Уменьшает размер файлов веб-шрифтов на 30% - 50% по сравнению с несжатыми сырыми файлами TTF или OTF.
- Универсальная обратная совместимость со всеми настольными и мобильными веб-браузерами, выпущенными с 2011 года.
- Включает дополнительный блок метаданных XML для лицензирования шрифтов, информации об авторах и авторских прав словолитни.
Технические ограничения и минусы
- Вытеснен WOFF2, который сжимает примерно на 30% лучше с использованием алгоритма Brotli.
- Не может быть установлен непосредственно в настольные операционные системы (Windows/Mac) без конвертации в TTF/OTF.
- Более старый алгоритм сжатия zlib менее эффективен, чем современные энтропийные кодировщики.
Интересные технические факты
- Сигнатурные байты для WOFF 1.0 - 'wOFF' (0x77 0x4F 0x46 0x46), в то время как WOFF 2.0 использует 'wOF2'.
- Шрифтовые словолитни согласились разрешить использование своих шрифтов в Интернете только после создания WOFF, поскольку его специализированный контейнер отличал веб-шрифты от пиратских настольных шрифтов.
- Формат WOFF был изначально внедрен в Firefox 3.6 в 2010 году, прежде чем стать официальной рекомендацией W3C.
Часто задаваемые технические вопросы
В чем разница между WOFF и WOFF2?
WOFF использует сжатие zlib, в то время как WOFF2 использует более новый алгоритм Brotli от Google и преобразования таблиц, что приводит к созданию файлов примерно на 30% меньше, чем WOFF.
Как конвертировать шрифт WOFF в TTF или OTF для настольного использования?
Вы можете конвертировать файлы WOFF в устанавливаемые настольные шрифты TTF или OTF за считанные секунды с помощью File2File.app прямо в вашем веб-браузере.
Нужен ли мне по-прежнему WOFF 1.0 на современных сайтах?
Нет. Все современные браузеры поддерживают WOFF2 нативно. WOFF 1.0 нужен только в том случае, если вам необходимо поддерживать устаревшие браузеры, такие как Internet Explorer.