Formato de fonte web aberta (.woff)
Recomendação PadrãoWeb Open Font Format (WOFF) é o formato aberto de fontes para web de primeira geração, recomendado pelo W3C. Ele armazena fontes TrueType ou OpenType padrão com compactação zlib e metadados XML de licenciamento.
Inspeção e metadados
Sistemas operacionais e analisadores de arquivos identificam arquivos WOFF pela sequência inicial de bytes:
Assinatura do arquivo em bytes (magic bytes)
Sistemas operacionais e analisadores de arquivos identificam arquivos WOFF pela sequência inicial de bytes:
ASSINATURA HEXADECIMAL (DESLOCAMENTO 0):
77 4F 46 46REPRESENTAÇÃO ASCII: wOFF
Padronização: Recomendação W3C (2012)
Especificações técnicas
| Estrutura do contêiner | Cabeçalho WOFF de 44 bytes, diretório de tabelas, dados das tabelas compactados com zlib e, opcionalmente, metadados estendidos e dados privados |
| Compressão | Compactação Deflate (zlib) aplicada a cada tabela de fontes |
| Ordem dos bytes (endianness) | Big-Endian (padrão SFNT) |
| Espaços de cor | Herdado das tabelas de fontes subjacentes |
| Canais e Estrutura | Contornos de glifos TrueType ('glyf') ou PostScript ('CFF '), métricas e recursos tipográficos |
| Dimensões Máximas | Até 65.535 glifos por arquivo de fonte |
| Transparência | Herdado do formato de fonte subjacente |
| Streaming e Progressivo | A descompressão tabela por tabela permite o carregamento de fontes em fluxo (streaming) |
Matriz de comparação técnica: WOFF e formatos concorrentes
| Atributo técnico | WOFF (Atual) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Codificador de compressão | Deflate (zlib) por tabela | Brotli com pré-processamento de tabela | SFNT não compactado | SFNT não compactado |
| Assinatura Mágica | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Tamanho Relativo do Arquivo | ~40% menor que o TTF | ~60% menor que o TTF | Padrão de referência (100%) | Padrão de referência (100%) |
| Ambiente de Destino | Navegadores web legados (IE9+, Safari 5+) | O suporte varia conforme o navegador. | Sistemas operacionais de desktop | Editoração eletrônica e impressão |
Modos comuns de corrupção e guia de recuperação com editor hexadecimal
Aviso no console do navegador: 'Failed to decode downloaded font: OTS parsing error'.
Causa principal: Incompatibilidade no comprimento declarado da tabela não compactada ou fluxo zlib danificado.
Recuperação: Recomprima as tabelas de fontes ou converta para WOFF2 usando o conversor de fontes do File2File.app.
Análise de segurança e vetores de ataque a analisadores
Os navegadores web analisam arquivos WOFF baixados de domínios web não confiáveis usando o OpenType Sanitizer (OTS) para bloquear cargas úteis de exploração.
Vetores de ataque conhecidos
- Leitura excessiva de buffer (over-read) durante a descompressão zlib de pedaços corrompidos da tabela de fontes.
- Campos de comprimento de tabela incompatíveis acionando estouros de buffer de heap em renderizadores de fontes.
- Negação de serviço por esgotamento de memória durante a expansão da tabela de fontes.
Melhores práticas defensivas: Sempre sanitize arquivos WOFF baixados com o OTS antes de passá-los para os mecanismos de fontes do sistema operacional.
Origens históricas e marcos
Principais vantagens
- Reduz em 30% a 50% o tamanho de fontes para web em comparação com arquivos TTF ou OTF sem compactação.
- Compatibilidade retroativa universal em todos os navegadores web de desktop e dispositivos móveis lançados desde 2011.
- Inclui um bloco de metadados XML opcional para licenciamento de fontes, créditos de autoria e informações de direitos autorais da casa tipográfica.
Limitações técnicas e desvantagens
- Foi sucedido pelo WOFF2, que gera arquivos cerca de 30% menores com o algoritmo Brotli.
- Não pode ser instalado diretamente em sistemas operacionais de desktop (Windows/Mac) sem conversão para TTF/OTF.
- O algoritmo de compressão zlib mais antigo é menos eficiente do que os codificadores de entropia modernos.
Curiosidades técnicas
- Os bytes mágicos do WOFF 1.0 são 'wOFF' (0x77 0x4F 0x46 0x46), enquanto o WOFF 2.0 usa 'wOF2'.
- As fundições de tipos passaram a permitir o uso de suas fontes na web com a criação do WOFF, cujo contêiner especializado distinguia fontes para web de fontes para desktop que podiam ser copiadas.
- O WOFF foi implementado originalmente no Firefox 3.6 em 2010 antes de se tornar uma recomendação oficial da W3C.
Perguntas técnicas frequentes
Qual é a diferença entre WOFF e WOFF2?
O WOFF usa compressão zlib, enquanto o WOFF2 usa o algoritmo Brotli mais recente do Google e transformações de tabela, resultando em arquivos que são cerca de 30% menores que o WOFF.
Como posso converter uma fonte WOFF para TTF ou OTF para uso no desktop?
Você pode converter arquivos WOFF em fontes de desktop instaláveis TTF ou OTF em segundos usando o File2File.app diretamente no seu navegador web.
Eu ainda preciso do WOFF 1.0 em sites modernos?
Não. Todos os navegadores modernos suportam WOFF2 nativamente. O WOFF 1.0 só é necessário se você precisar dar suporte a navegadores legados obsoletos como o Internet Explorer.