Web Open Font Format (.woff)

W3C Стандарт

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

Инспектиране и метаданни

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

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

100% поверително конвертиране в браузъра - файловете никога не напускат вашето устройство

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

Байтов подпис на хедъра (Magic Bytes)

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

HEX ПОДПИС (ОФСЕТ 0):

77 4F 46 46

ASCII ПРЕДСТАВЯНЕ: wOFF

Стандартизация: W3C Recommendation (2012)

Технически спецификации

Контейнерна архитектура44-byte WOFF header followed by table directory, zlib-compressed table data, optional extended metadata, and private data
КомпресияDeflate (zlib) compression applied to each individual font table
Поредност на байтовете (Endianness)Big-Endian (SFNT standard)
Цветови пространстваInherited from underlying font tables
Канали и структураTrueType ('glyf') or PostScript ('CFF ') glyph outlines, metrics, and typographic features
Максимални размериUp to 65,535 glyphs per font file
ПрозрачностInherited from underlying font format
Стрийминг и прогресивно зарежданеTable-by-table decompression enables streaming font loading

Техническа сравнителна матрица: 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+)Съвременни уеб браузъри (универсални)Операционни системи за настолни компютриНастолни публикации и печат

Често срещани режими на повреда и ръководство за хекс възстановяване

Предупреждение в конзолата на браузъра: 'Failed to decode downloaded font: OTS parsing error'.

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

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

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

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

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

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

Защитни добри практики:

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

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

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

  • Намалява размера на файловете с уеб шрифтове с 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.