CSS: Fuentes web

En esta lección y en las lecciones CSS Fuentes (1) y CSS Fuentes (2) se comentan las propiedades CSS definidas en la recomendación CSS Fonts Module Level 3, publicada en septiembre de 2018.

Estas propiedades permiten elegir con todo detalle el tipo de letra que se mostrará en el navegador del usuario.

En esta lección se comentan las propiedades relacionadas con las fuentes web, es decir fuentes que pueden mostrarse en el navegador sin necesidad de estar instaladas en el ordenador ya que se descargan automáticamente.

Fuentes WOFF (Web Open Font Format)

En 2009 se desarrolló un formato de fuentes llamado WOFF (Web Open Font Format) pensado para la web. En realidad no se trata de un nuevo formato, puesto que una fuente WOFF no es más que una fuente TrueType, OpenType, Open Font o SVG comprimida y con metadatos para indicar detalles como el origen de la fuente o la licencia.

En abril de 2010, Mozilla, Microsoft y Opera presentaron este formato al W3C, que aprobó la recomendación WOFF File Format 1.0 en diciembre de 2012.

En marzo de 2018 se aprobó la recomendación WOFF File Format 2.0. Gracias al nuevo algoritmo de compresión Brotli, esta recomendación consigue reducir el tamaño de las fuentes a la cuarta parte, aumentar la velocidad de descompresión y reducir los requisitos de memoria, como se explica en el WOFF 2.0 Evaluation Report publicado por el W3C en marzo de 2016 o en este artículo en lwn.net sobre WOFF2 (13/11/2013).

El formato WOFF 2 es mucho mejor que el formato WOFF 1 y servicios como Google Fonts ya sólo ofrecen WOFF 2.

Para crear fuentes WOFF se puede utilizar webs como Font Squirrel en la que subiendo una fuente TTF u OTF podemos descargar la misma fuente en los formatos WOFF2, WOFF, EOT y SVG.

La regla arroba @font-face

La recomendación CSS Fonts Module Level 3, publicada en septiembre de 2018, permite la utilización de fuentes web mediante el uso de la regla-arroba @font-face, como muestra el ejemplo siguiente:

@font-face {
    font-family: "Mystery Quest";
    src: url("mystery-quest.woff2");
}

p {
    font-family: "Mystery Quest", cursive;
    font-size: 150%;
}
Enlace externo

En la regla @font-face:

Una vez definido el nombre de la fuente, se puede hacer referencia a ella en las propiedades font-family.


La recomendación no impone ningún formato específico para los tipos de letra, pero nombra algunos como posibilidad: woff (WOFF Web Open Font Format, .woff), truetype (TrueType, .ttf), opentype (OpenType, .ttf, .otf), embedded-opentype (Embedded OpenType, .eot), svg (SVG Font, .svg, .svgz).

Entre ellos, se recomienda utilizar el formato WOFF 2 (Web Open Font Format, .woff2), definido en la recomendación WOFF File Format 2.0, o en su defecto, el formato WOFF (.woff) definido en la recomendación WOFF File Format 1.0 de diciembre de 2012.


Nota: La regla-arroba @font-face estaba incluida en la recomendación CSS 2, pero no se incluyó en la recomendación CSS 2.1, por lo que en CSS 2 se consideraba obsoleta. Sin embargo, esta regla-arroba se recuperó en la recomendación CSS Fonts Module Level 3, publicado en septiembre de 2018.

Google Fonts / Google Fonts API

Google ofrece un servicio de alojamiento de fuentes libres, Google Fonts.

Google Fonts permite descargar las fuentes en formato TTF a nuestro ordenador para utilizarlas por ejemplo en un procesador de textos. Para ello, hay añadir las fuentes deseadas a una colección y descargar la colección completa.

Lo más interesante de Google Fonts es que las fuentes pueden utilizarse en nuestras páginas web sin necesidad de alojarlas en nuestro propio servidor. Eso tiene la ventaja de que nos ahorramos el tráfico que genera la fuente, pero tiene el inconveniente de que en algún momento pueden no estar disponibles. Para reducir este problema conviene indicar varias fuentes, como mínimo poniendo en último lugar una de las familias genéricas.

¡Atención! En enero de 2022 un tribunal alemán sentenció que el servicio de Google Fonts no cumple el Reglamento UE 2016/679, conocido como RGPD, Reglamento General de Protección de Datos, ya que el servicio permite a Google conocer la IP del cliente cuando este visita una página que enlaza a Google Fonts. Por tanto, las páginas alojadas en la Unión Europea no deben utilizar el servicio de Google Fonts. Una solución es utilizar servicios alternativos que sí cumplan la RGPD, que suelen ser de pago, por lo que la mejor solución es alojar las fuentes en nuestro propio servidor. [referencia: Noticia en TheRegister enero 2022]

Si queremos alojar nosotros las fuentes, Google Fonts ofrece la posibilidad de descargarla en formato TTF. En ese caso deberíamos convertir la fuente TTF al formato woff mediante alguna de las páginas web citadas en el apartado Fuentes WOFF. En el apartado Descargar las fuentes de Google Fonts en formato WOFF2 se comenta un procedimiento un poco laborioso para descargar la fuente en formato WOFF2 de Google Fonts. En el apartado Descargar las fuentes de Google Fonts en formato WOFF2 desde google-webfonts-helper se comenta un procedimiento más sencillo desde una web diseñada para ello.

Las fuentes incluidas en Google Fonts también se encuentran disponibles como repositorio de GitHub: https://github.com/google/fonts/.

Enlazar las fuentes de Google Fonts

Para utilizar las fuentes alojadas en Google Fonts, es necesario conocer primero el nombre de la fuente. Para ello:

  1. Abra la web de Google Fonts

    Google Fonts

  2. Para encontrar una fuente puede ordenarlas por orden alfabético. Una vez encontrada la fuente, seleccione la fuente haciendo clic en el cuadro de la fuente:

    Google Fonts

  3. Si conoce parte del nombre de la fuente, puede escribirlo en el cuadro de búsqueda. A continuación, haga clic en el cuadro de la fuente:

    Google Fonts

  4. Se abrirá la ficha de la fuente que lógicamente muestra su nombre. El nombre también puede leerse en la URL de la página:

    Google Fonts

Una vez se conoce el nombre de la fuente, la documentación oficial propone dos maneras equivalentes de utilizar la fuente de Google Fonts, aunque yo recomiendo la primera ya que toda la información se encuentra en la hoja de estilo. En ambos casos, la referencia a la fuente es su nombre, sustituyendo los espacios por el caracter + (suma). Por ejemplo, para utilizar la fuente Mystery Quest habría que escribir Mystery+Quest.

  1. Incluir al principio de la hoja de estilo una regla-arroba @import y la fuente se puede utilizar en la hoja de estilo como una familia más, como muestra el ejemplo siguiente:
    @import url("https://fonts.googleapis.com/css?family=Mystery+Quest");
    
    p {
        font-family: "Mystery Quest", cursive;
        font-size: 150%;
    }
    
    Enlace externo

    Las reglas @import deben escribirse obligatoriamente al principio de la hoja de estilo, como se comenta en el apartado Posición de @import de esta lección.

  2. Incluir en el documento html un enlace como si fuera un enlace a una hoja de estilo. La fuente se puede utilizar en la hoja de estilo como una familia más, como muestra el ejemplo siguiente:
    <head>
     ...
      <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Mystery+Quest">
     ...
    </head>
    
    p {
        font-family: "Mystery Quest", cursive;
        font-size: 150%;
    }
    
    Enlace externo

Nota:

Descargar las fuentes de Google Fonts en formato WOFF2

Cuando se descarga una fuente de Google Fonts, tan sólo se incluye la fuente en formato TTF. Para obtenerla en formato WOFF2 puede seguir estos pasos:

  1. En la ficha de la fuente que quiera descargar, haga clic en el botón "Get font":

    Google Fonts

  2. Una vez seleccionada, haga clic en el botón "Get embed code":

    Google Fonts

  3. En la pestaña Web, opción <link> o @import, seleccione y copie la dirección web https://fonts.googleapis.com/css2?family=...:

    Google Fonts

  4. Pegue esa dirección en la barra de dirección del navegador y pulse Intro. Se mostrará un documento de texto en el que se puede encontrar la dirección web de un archivo woff2. Puede haber varias versiones de la misma fuente (en la captura el documento contiene dos enlaces a diferentes versiones de la fuente). Normalmente, la versión a descargar es la versión latin, pero si esa versión no contiene todos los caracteres necesarios (acentos, etc.), a veces es necesario descargar la versión latin-extended u otras. Copie la dirección web de la versión elegida.

    Google Fonts

  5. Pegue esa dirección en la barra de dirección del navegador y pulse Intro. Automáticamente, el navegador guardará el fichero de la fuente o le dará la opción de guardarlo.

    Google Fonts

  6. En la carpeta de descargas se mostrará el archivo woff2 descargado:

    Google Fonts

  7. Puede cambiar el nombre del fichero al nombre de la fuente (manteniendo la extensión woff2) para facilitar su uso posterior:

    Google Fonts

Descargar las fuentes de Google Fonts en formato WOFF2 desde google-webfonts-helper

Desde google-webfonts-helper se pueden descargar las fuentes de Google Fonts en formato WOFF2:

  1. Abra la página google-webfonts-helper:

    Google Fonts

  2. Las fuentes se muestran en orden alfabético. Una vez encontrada la fuente, seleccione la fuente haciendo clic en el botón correspondiente:

    Google Fonts

  3. Si conoce el nombre o parte de él, también puede utilizar el cuadro de búsqueda:

    Google Fonts

  4. Puede seleccionar el juego de caracteres o los estilos disponibles para esa fuente en concreto:

    Google Fonts

  5. En la parte inferior de la página se encuentra el enlace de descarga:

    Google Fonts

  6. El fichero zip descargado contiene la fuente en formato WOFF2.

Posición de @import en la hoja de estilo

La regla @import debe escribirse al principio de la hoja de estilo, sin otras reglas delante, ni siquiera reglas @font-face, como muestran los siguientes ejemplos:

Correcto
@import url("https://fonts.googleapis.com/css?family=Indie+Flower");

@font-face {
    font-family: "Mystery Quest";
    src: url("mystery-quest.woff2");
}
Enlace externo
Incorrecto
@font-face {
    font-family: "Mystery Quest";
    src: url("mystery-quest.woff2");
}

@import url("https://fonts.googleapis.com/css?family=Indie+Flower");
Enlace externo