Formato carattere web aperto (.woff)

W3C Standard

Web Open Font Format (WOFF) este formatul deschis de fonturi web din prima generație, aprobat de W3C. Acesta împachetează fonturi TrueType sau OpenType standard cu compresie zlib și metadate XML de licențiere.

Inspectare și metadate

Sistemele de operare și analizatoarele de fișiere identifică fișierele WOFF prin inspectarea secvenței binare inițiale:

Selectează sau plasează fișierele aici

Privat - fișierele nu părăsesc niciodată dispozitivul tău

sau lipește Ctrl+V
Garanție de confidențialitate: nicio transmisie prin rețea: 0 octeți încărcați pe servere externe. Toată procesarea a avut loc local în sandbox-ul browserului tău.

Semnătura antetului la nivel de octet (octeți magici)

Sistemele de operare și analizatoarele de fișiere identifică fișierele WOFF prin inspectarea secvenței binare inițiale:

SEMNĂTURĂ HEXAZECIMALĂ (DECALAJ 0):

77 4F 46 46

REPREZENTARE ASCII: wOFF

Standardizare: W3C Recommendation (2012)

Specificații tehnice

Arhitectură containerAntet WOFF de 44 de octeți, urmat de directorul tabelelor, datele tabelelor comprimate cu zlib, metadate extinse opționale și date private
CompresieCompresie Deflate (zlib) aplicată fiecărui tabel de font separat
Ordinea octețilorBig-endian (standard SFNT)
Spații de culoareMoștenite din tabelele fontului de bază
Canale și structurăContururi de glife TrueType („glyf”) sau PostScript („CFF ”), metrici și funcții tipografice
Dimensiuni maximePână la 65.535 de glife per fișier de font
TransparențăMoștenită din formatul fontului de bază
Streaming și progresivDecomprimarea tabel cu tabel permite încărcarea fontului în flux

Matrice de comparație tehnică: WOFF vs. concurenți

Atribut tehnicWOFF (Curent)WOFF2TTFOTF
Codec de compresieDeflate (zlib) per tabelBrotli cu preprocesare de tabelSFNT necomprimatSFNT necomprimat
Semnătură magicăwOFF (0x77 0x4F 0x46 0x46)wOF2 (0x77 0x4F 0x46 0x32)0x00 0x01 0x00 0x00OTTO (0x4F 0x54 0x54 0x4F)
Dimensiune relativă a fișieruluiAdesea mai mic decât TTF; economia de spațiu variază în funcție de fontAdesea mai mic decât TTF; economia de spațiu variază în funcție de fontStandard de bază (100%)Standard de bază (100%)
Mediu țintăBrowsere web vechi (IE9+, Safari 5+)Compatibilitatea diferă în funcție de browser.Sisteme de operare pentru desktopPublicare desktop și tipărire

Moduri comune de corupție și ghid de recuperare hexazecimală

Avertisment în consola browserului: 'Failed to decode downloaded font: OTS parsing error'.

Cauză principală: Neconcordanță în lungimea declarată a tabelului necomprimat sau flux zlib deteriorat.

Recuperare: Recomprimă tabelele fontului sau convertește-l în WOFF2 cu File2File.app Font Converter.

Analiză de securitate și vectori de atac asupra parserului

Browserele web analizează fișierele WOFF descărcate din domenii web nesigure utilizând OpenType Sanitizer (OTS) pentru a bloca codurile malițioase.

Vectori de atac cunoscuți

  • Citire excesivă a memoriei tampon (buffer over-read) în timpul decomprimării zlib a bucăților de tabele de fonturi corupte.
  • Câmpuri de lungime a tabelului necorespunzătoare care declanșează depășiri ale memoriei tampon din heap în programele de redare a fonturilor.
  • Refuzul serviciului prin epuizarea memoriei în timpul extinderii tabelului de fonturi.

Cele mai bune practici de securitate: Curăță fișierele WOFF descărcate cu OTS înainte de a le transmite motoarelor de fonturi ale sistemului de operare.

Origini istorice și repere

2018Înlocuit de WOFF2 ca standard preferat pentru fonturile web datorită compresiei superioare Brotli.
2012W3C publică oficial WOFF 1.0 ca Recomandare de Standard Web formală.
2009Henrik Rydgård, Tal Leming și Jonathan Kew specifică WOFF pentru a rezolva problemele de licențiere a fonturilor web.

Avantaje cheie și beneficii

  • Poate reduce dimensiunea fișierelor de font web față de fișierele TTF sau OTF brute; economia depinde de font și de codificator.
  • Este acceptat de multe browsere, inclusiv de versiuni mai vechi; compatibilitatea depinde de versiunea browserului și de platformă.
  • Include un bloc opțional de metadate XML pentru licențierea fonturilor, creditele autorilor și informațiile despre drepturile de autor ale producătorului de fonturi.

Limitări tehnice și dezavantaje

  • În multe fluxuri de lucru web, WOFF2 l-a înlocuit; acesta folosește compresia Brotli și transformări ale tabelelor de font. Economia de spațiu variază.
  • Nu poate fi instalat direct pe sistemele de operare desktop (Windows/Mac) fără conversie la TTF/OTF.
  • Algoritmul de compresie zlib mai vechi este mai puțin eficient decât codificatoarele de entropie moderne.

Curiozități tehnice interesante

  • Octeții magici pentru WOFF 1.0 sunt 'wOFF' (0x77 0x4F 0x46 0x46), în timp ce WOFF 2.0 folosește 'wOF2'.
  • Turnătoriile de fonturi au fost de acord să permită folosirea fonturilor lor pe web numai după crearea WOFF, deoarece containerul său specializat diferențiază fonturile web de fonturile desktop piratabile.
  • WOFF a fost implementat inițial în Firefox 3.6 în 2010 înainte de a deveni o recomandare oficială W3C.

Întrebări tehnice frecvente

Care este diferența dintre WOFF și WOFF2?

WOFF folosește compresia zlib, în timp ce WOFF2 folosește compresia Brotli și transformări ale tabelelor de font. Diferența de dimensiune a fișierului depinde de font și de codificator.

Cum pot converti un font WOFF în TTF sau OTF pentru utilizare pe desktop?

Poți converti fișierele WOFF în fonturi TTF sau OTF instalabile pentru desktop în câteva secunde, folosind File2File.app direct în browserul tău web.

Mai am nevoie de WOFF 1.0 pe site-urile moderne?

Browserele importante actuale acceptă WOFF2. Pentru browsere mai vechi sau anumite medii încorporate, poate fi utilă o versiune de rezervă WOFF.