Cómo convertir una fuente a Base64
- Suelta un archivo
.woff2,.woff,.ttfu.otfen el recuadro, o elígelo con el selector de archivos. - Salida como ya está en CSS @font-face. Elige Data URI o Base64 simple si vas a escribir la regla tú.
- Copiar salida y pégala en tu hoja de estilos.
Para un archivo llamado Inter-Bold.woff2 el resultado se ve así, con los datos acortados:
@font-face {
font-family: "Inter-Bold";
src: url("data:font/woff2;base64,d09GMgABAAAAA...") format("woff2");
font-display: swap;
}
El nombre de font-family sale del nombre del archivo, sin la extensión y con los caracteres que no sean letras, dígitos, espacios, - y _ sustituidos por espacios. Cámbialo por el nombre de familia que usas en tu CSS y añade font-weight y font-style si incrustas varios estilos de una misma familia.
Pistas format() y tipos MIME
| Archivo | Tipo MIME | format() | El Base64 empieza por |
|---|---|---|---|
| WOFF2 | font/woff2 | woff2 | d09GMg |
| WOFF | font/woff | woff | d09GRg |
| TrueType | font/ttf | truetype | AAEAAA |
| OpenType (CFF) | font/otf | opentype | T1RUTw |
La pista format() permite al navegador saltarse, sin descargarlas, las fuentes que no puede usar. Con una sola fuente incrustada importa menos, pero una pista que el navegador no reconoce hace igualmente que la descarte. La herramienta deduce la pista del tipo MIME que informa el navegador, y algunos sistemas informan las fuentes con tipos poco habituales. Si un OTF sale con format("truetype"), cámbialo a opentype.
Un WOFF2 que envuelve una fuente TrueType empieza por d09GMgABAAA; uno que envuelve contornos CFF empieza por d09GMk9UVE8.
Mantén pequeñas las fuentes incrustadas
El Base64 ocupa un tercio más que el archivo de fuente y va dentro de un CSS que bloquea el renderizado. Una prueba con una fuente de iconos WOFF2 de 77.160 bytes produjo 102.880 caracteres de Base64, que hay que descargar por completo antes de que se dibuje nada en la página.
Para que incrustar merezca la pena:
- Usa WOFF2. Para la misma fuente es mucho más pequeño que TTF u OTF.
- Recorta la fuente (subsetting). Quitar los glifos que no necesitas, por ejemplo todos los sistemas de escritura salvo el latino, puede reducir una fuente grande en la mayor parte de su tamaño. Las herramientas de subsetting de fuentes lo hacen desde la línea de comandos.
- Incrusta solo un estilo. Una fuente de titulares o una fuente de iconos que se usa en la parte visible al cargar es buena candidata. El texto del cuerpo en cuatro grosores funciona mejor como archivos separados que el navegador puede guardar en caché.
Los documentos HTML autocontenidos y las exportaciones de canvas o SVG que deben llevar su propia fuente son los casos típicos en los que incrustarla es lo correcto.
Comprobar una fuente en Base64
Si el texto cae en una fuente por defecto, abre las herramientas para desarrolladores del navegador y busca errores de carga de fuentes; después comprueba que el data URI empieza por data:font/ y que la carga útil empieza por uno de los prefijos de arriba. Un archivo que empieza por PCFET0NUWVBF es una página HTML guardada con extensión de fuente. Base64 a fuente decodifica una cadena, muestra los glifos y guarda el archivo.
Preguntas frecuentes
¿Qué formato de fuente conviene incrustar en Base64?
WOFF2. Está comprimido específicamente para fuentes y todos los navegadores actuales lo admiten, así que el Base64 es mucho más corto que el de la misma fuente en TTF u OTF. Incrusta TTF solo si alguna herramienta que necesitas no lee WOFF2.
¿Qué valor de format() corresponde a cada tipo de fuente?
woff2 para WOFF2, woff para WOFF, truetype para TTF y opentype para OTF. La herramienta elige la pista según el tipo MIME del archivo y usa truetype cuando el tipo es desconocido, así que revisa la pista en los archivos OTF y WOFF.
¿Es legal incrustar una fuente en Base64?
Eso lo decide la licencia de la fuente. Las licencias abiertas como la SIL Open Font License lo permiten. Algunas licencias comerciales de fuentes web limitan el autoalojamiento o la incrustación, así que revisa las condiciones antes de incrustar una fuente de pago.
¿Una fuente incrustada hace más lenta la página?
El navegador ya no hace una petición aparte para la fuente, pero la hoja de estilos crece y debe descargarse entera antes de que la página se renderice. Compensa con una fuente pequeña y recortada; una familia entera es mejor dejarla en archivos separados.