Formato de fuente web abierta (.woff)
Recomendación EstándarWeb Open Font Format (WOFF) es el primer formato de fuentes web abiertas, respaldado por el W3C. Envuelve fuentes TrueType u OpenType con compresión zlib y metadatos XML de licencia.
Inspección y metadatos
Los sistemas operativos y analizadores de archivos identifican los archivos de WOFF inspeccionando la secuencia de bytes binarios inicial:
Firma de cabecera a nivel de bytes (bytes mágicos)
Los sistemas operativos y analizadores de archivos identifican los archivos de WOFF inspeccionando la secuencia de bytes binarios inicial:
FIRMA HEXADECIMAL (DESPLAZAMIENTO 0):
77 4F 46 46REPRESENTACIÓN ASCII: wOFF
Estandarización: Recomendación de la W3C (2012)
Especificaciones técnicas
| Arquitectura del contenedor | Cabecera WOFF de 44 bytes seguida del directorio de tablas, datos de tablas comprimidos con zlib, metadatos extendidos opcionales y datos privados |
| Compresión | Compresión Deflate (zlib) aplicada a cada tabla de fuentes individual |
| Orden de bytes (Endianness) | Big-Endian (Estándar SFNT) |
| Espacios de color | Heredado de las tablas de fuentes subyacentes |
| Canales y estructura | Contornos de glifos TrueType («glyf») o PostScript («CFF »), métricas y funciones tipográficas |
| Dimensiones máximas | Hasta 65 535 glifos por archivo de fuente |
| Transparencia | Heredado del formato de fuente subyacente |
| Streaming y progresivo | La descompresión de tablas individuales permite cargar fuentes progresivamente. |
Matriz de comparación técnica: WOFF frente a la competencia
| Atributo técnico | WOFF (Actual) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Códec de compresión | Deflate (zlib) por tabla | Brotli con preprocesamiento de tablas | SFNT sin comprimir | SFNT sin comprimir |
| Firma mágica | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Tamaño de archivo relativo | Aprox. un 40 % menos que TTF | Aprox. un 60 % menos que TTF | Tamaño de referencia (100 %) | Tamaño de referencia (100 %) |
| Entorno de destino | Navegadores web heredados (IE9+, Safari 5+) | La compatibilidad varía según el navegador. | Sistemas operativos de escritorio | Autoedición e impresión |
Modos de corrupción comunes y guía de recuperación hexadecimal
La consola del navegador muestra «Failed to decode downloaded font: OTS parsing error» (no se pudo descodificar la fuente descargada: error de análisis OTS).
Causa raíz: La longitud declarada de una tabla sin comprimir no coincide con la real o el flujo zlib está dañado.
Recuperación: Vuelve a comprimir las tablas de fuentes o convierte la fuente a WOFF2 con Font Converter de File2File.app.
Análisis de seguridad y vectores de ataque al analizador
Los navegadores usan OpenType Sanitizer (OTS) para analizar los archivos WOFF descargados de sitios que no son de confianza y bloquear contenido malicioso.
Vectores de ataque conocidos
- Lectura fuera de los límites del búfer al descomprimir con zlib fragmentos dañados de las tablas de fuentes.
- Los campos de longitud de tabla no coincidentes pueden provocar desbordamientos de búfer en la memoria dinámica de los motores de fuentes.
- Denegación de servicio por agotamiento de memoria durante la expansión de las tablas de fuentes.
Mejores prácticas defensivas: Valida siempre con OTS los archivos WOFF descargados antes de pasarlos a los motores de fuentes del sistema operativo.
Orígenes históricos e hitos
Ventajas principales
- Puede reducir el tamaño de los archivos de fuentes web frente a TTF u OTF sin comprimir; el ahorro depende de la fuente y del codificador.
- Es compatible con prácticamente todos los navegadores web de escritorio y móviles publicados desde 2011.
- Incluye un bloque opcional de metadatos XML con licencias de fuentes, créditos de autor e información de derechos de la fundición tipográfica.
Limitaciones técnicas
- WOFF2 ha sustituido a WOFF en muchos flujos de trabajo web. Usa compresión Brotli y transformaciones de tablas de fuentes; el ahorro de tamaño varía.
- No se puede instalar directamente en sistemas operativos de escritorio (Windows/Mac) sin conversión a TTF/OTF.
- El algoritmo de compresión zlib más antiguo es menos eficiente que los codificadores de entropía modernos.
Curiosidades técnicas interesantes
- Los bytes mágicos para WOFF 1.0 son 'wOFF' (0x77 0x4F 0x46 0x46), mientras que WOFF 2.0 utiliza 'wOF2'.
- Las fundiciones tipográficas aceptaron incluir sus fuentes en la web cuando WOFF permitió distinguirlas de las fuentes de escritorio que podían piratearse.
- WOFF se implementó originalmente en Firefox 3.6 en 2010 antes de convertirse en una recomendación oficial de la W3C.
Preguntas técnicas frecuentes
¿Cuál es la diferencia entre WOFF y WOFF2?
WOFF usa compresión zlib y WOFF2 usa el algoritmo Brotli de Google y transformaciones de tablas. Por eso, los archivos WOFF2 ocupan aproximadamente un 30 % menos que los WOFF.
¿Cómo puedo convertir una fuente WOFF a TTF o OTF para uso de escritorio?
Puedes convertir archivos WOFF en fuentes de escritorio TTF o OTF instalables en segundos usando File2File.app directamente en tu navegador web.
¿Todavía necesito WOFF 1.0 en sitios web modernos?
No. Todos los navegadores modernos admiten WOFF2 de forma nativa. WOFF 1.0 solo es necesario si debes dar soporte a navegadores heredados obsoletos como Internet Explorer.