Открытый веб-формат шрифтов WOFF (.woff)

W3C Стандарт

Web Open Font Format (WOFF): это исторический веб-формат шрифтов открытого стандарта первого поколения, одобренный W3C, который объединяет стандартные шрифты TrueType или OpenType со сжатием zlib и XML-метаданными лицензирования.

Анализ и метаданные

Операционные системы и анализаторы файлов идентифицируют файлы WOFF по начальной двоичной последовательности байтов:

Выберите или перетащите файлы сюда

Конфиденциально - файлы никогда не покидают ваше устройство

или вставьте Ctrl+V
Гарантия конфиденциальности без передачи по сети: 0 байт загружено на внешние серверы. Вся обработка выполнялась локально в песочнице Вашего браузера.

Сигнатура заголовка на уровне байтов (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 (Текущий)WOFF2TTFOTF
Алгоритм сжатияDeflate (zlib) для каждой таблицыBrotli с предварительной обработкой таблицНесжатый SFNTНесжатый SFNT
СигнатураwOFF (0x77 0x4F 0x46 0x46)wOF2 (0x77 0x4F 0x46 0x32)0x00 0x01 0x00 0x00OTTO (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.app.

Анализ безопасности и векторы атак на парсер

Веб-браузеры обрабатывают файлы WOFF, загруженные из ненадежных доменов, с помощью OpenType Sanitizer (OTS) для блокировки вредоносных полезных нагрузок.

Известные векторы атак

  • Чтение за пределами буфера во время декомпрессии zlib поврежденных фрагментов таблицы шрифтов.
  • Несоответствующие поля длины таблиц, вызывающие переполнение буфера кучи в модулях рендеринга шрифтов.
  • Отказ в обслуживании из-за исчерпания памяти при расширении таблицы шрифтов.

Лучшие практики защиты: Всегда очищайте загруженные файлы WOFF с помощью OTS перед передачей их системным механизмам обработки шрифтов.

История происхождения и ключевые этапы

2018Вытеснен форматом WOFF2 в качестве предпочтительного стандарта веб-шрифтов благодаря превосходному сжатию Brotli.
2012W3C официально публикует WOFF 1.0 в качестве официальной рекомендации веб-стандарта.
2009Хенрик Ридгорд, Тал Леминг и Джонатан Кью создают спецификацию WOFF для решения вопросов лицензирования веб-шрифтов.

Ключевые преимущества и плюсы

  • Уменьшает размер веб-шрифтов на 30-50% по сравнению с несжатыми файлами TTF или OTF.
  • Универсальная обратная совместимость со всеми настольными и мобильными веб-браузерами, выпущенными с 2011 года.
  • Включает необязательный блок метаданных XML со сведениями о лицензии шрифта, авторах и авторских правах производителя шрифта.

Технические ограничения и минусы

  • Формат уступает WOFF2, который благодаря алгоритму Brotli сжимает файлы примерно на 30% сильнее.
  • Не может быть установлен непосредственно в настольные операционные системы (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.