Web Open Font Format (.woff)

W3C Стандарт

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

Проверка и метаданни

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

Изберете или пуснете файлове тук

Поверително - файловете никога не напускат устройството ви

или поставете Ctrl+V
Гаранция за поверителност с нулево мрежово предаване: 0 байта са качени на външни сървъри. Цялата обработка се извършва локално в пясъчниците на вашия браузър.

Байтов подпис на заглавката (сигнатурни байтове)

Операционните системи и файловите анализатори идентифицират 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)
Относителен размер на файлаЧесто по-малък от TTF; спестеният обем зависи от шрифтаЧесто по-малък от TTF; спестеният обем зависи от шрифтаБазов стандарт (100%)Базов стандарт (100%)
Целева средаСтари уеб браузъри (IE9+, Safari 5+)Поддръжката варира според браузъра.Операционни системи за настолни компютриНастолно книгоиздаване и печат

Често срещани видове повреди и ръководство за възстановяване на шестнадесетични данни

Предупреждение в конзолата на браузъра: „Неуспешно декодиране на изтегления шрифт: грешка при обработката от OTS“.

Първопричина: Несъответствие в декларираната дължина на некомпресираната таблица или повреден zlib поток.

Възстановяване: Компресирайте отново таблиците на шрифта или преобразувайте в WOFF2 с помощта на File2File.app Font Converter.

Анализ на сигурността и вектори на атака към парсера

Уеб браузърите анализират WOFF файлове, изтеглени от ненадеждни уеб домейни, като използват OpenType Sanitizer (OTS), за да блокират злонамерен код.

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

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

Най-добри практики за защита: Винаги санирайте изтеглените WOFF файлове с OTS, преди да ги предадете на двигателите за шрифтове на операционната система.

Исторически произход и етапи

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

Основни предимства

  • Намалява размера на файловете с уеб шрифтове с 30% до 50% в сравнение с необработените некомпресирани TTF или OTF файлове.
  • WOFF се поддържа от много браузъри, включително по-стари версии; съвместимостта зависи от версията на браузъра и платформата.
  • Включва незадължителен блок с XML метаданни за лицензиране на шрифтове, данни за автора и информация за авторските права на шрифтовата леярна.

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

  • В много уеб работни процеси WOFF е изместен от WOFF2, който използва компресия 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 и трансформации на таблиците на шрифта. Разликата в размера на файловете зависи от шрифта и кодиращия инструмент.

Как мога да конвертирам WOFF шрифт в TTF или OTF за настолна употреба?

Можете да конвертирате WOFF файлове в инсталируеми настолни TTF или OTF шрифтове за секунди, като използвате File2File.app директно във вашия уеб браузър.

Все още ли ми трябва WOFF 1.0 за съвременните уебсайтове?

Основните съвременни браузъри поддържат WOFF2. Резервен WOFF може да е полезен за по-стари браузъри или някои вградени среди.