Ir a contenido
Está usando una versión antigua de su navegador. Este sitio web no está preparado para su visualización en navegadores obsoletos.
Por favor, por su seguridad, instale un navegador más actualizado y seguro.

Navegador Internet Explorer 8  Navegador Google Chrome  Navegador Mozilla Firefox
 

blog

08 ene

Usando fuentes propias con HTML5 y CSS3

3 comentarios how-to , Programación , CSS

Cada vez está más cerca el día que podamos usar CSS3 y HTML5 en nuestros diseños, pero de momento nos tenemos que conformar con algunas pocas cosas para asegurar la compatibilidad entre navegadores actuales. Una de ellas es el uso de fuentes, que hasta ahora estaba restringido a las fuentes que el visitante tenía instaladas, por lo que al final, en la práctica, sólo se podía recurrir a las típicas comunes a todos los sistemas: Arial, Times... o a fuentes genéricas: serif y sans-serif.

 

Con HTML5 y CSS3 podemos emplear fuentes propias en nuestros diseños usando @font-face, lo que abre todo un nuevo abanico de posibilidades a los diseñadores. Sin embargo, estas tecnologías aún no están suficientemente implementadas como para usarlas a diario en diseños en producción, por lo que hay que usarlas con cuidado. Una forma muy sencilla de empezar a usar fuentes propias es emplear la Google Font API, que nos permite incrustar de forma muy sencilla algunas fuentes en nuestros diseños sin necesidad de tocar el código existente. Por ahora sólo hay disponibles 58 fuentes, aunque es de esperar que el número de fuentes vaya creciendo con el tiempo (cuando conocí Google Font API hace unos tres meses sólo había 18).

 

En este tutorial veremos como incrustar fuentes de forma compatible con todos los navegadores actuales y darles algún efecto agradable.

 

Incluir el CSS

 

El primer paso para usar la API de Google Fonts es incluir el CSS, con una llamada en nuestro HEAD convenientemente formada. Por ejemplo:

 

 

<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Lobster">

 

 

No tiene mucha complicación, simplemente hay que indicar la ruta, indicando como parámetro GET la fuente que deseamos cargar. La fuente debe estar escrita tal cual con su nombre, y si el nombre tiene espacios se deben sustituir estos por un símbolo '+', por ejemplo, 'Droid Sans' debería llamarse como 'Droid+Sans'

 

Editar nuestro CSS

 

Es importante indicar también otras fuentes a usar en caso de que no se pueda mostrar la fuente deseada, ya que sólo los navegadores con soporte CSS3 podrán mostrarla

 

El siguiente paso es indicar en nuestro CSS que vamos a usar esta fuente. Es importante indicar también otras fuentes a usar en caso de que no se pueda mostrar la fuente deseada, ya que sólo los navegadores con soporte CSS3 podrán mostrarla. Por lo tanto, para asegurar la compatibilidad con navegadores más antiguos, se debe indicar siempre al menos una fuente alternativa y, obligatoriamente, una genérica ('serif' o 'sans-serif'):

 

 

 

h1 {
font-family: "Lobster", "Times", serif;
font-size: 1.8em;
font-weight: bold;
}

 

 

La primera prueba

 

Basta con crear un archivo de prueba y abrirlo con un navegador actualizado para ver la fuente en HTML:

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Pruebas con fuentes</title>

        <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Lobster" />
        <style>

            body {
                width: 600px;
                border: 1px solid #c9c9c9;
                margin: 10px auto;
                text-align: center;
                padding: 20px;
            }
            
            h1 {
                font-family: "Lobster", "Times", serif;
                font-size: 1.8em;
            }
        </style>
    </head>
    <body>
        <h1>Prueba de fuente Lobster</h1>
        <p>

            Este título es una fuente normal, que se puede seleccionar, indexar, etc...
        </p>
    </body>
</html>

 

 

El resultado debería ser como en esta imagen, con el título con una bonita fuente:

 

 

Cargar varias fuentes distintas

 

No tenemos que restringirnos a una sola fuente personalizada en nuestros diseños, ya que Google Fonts nos permite cargar varias. Para ello, se añaden en la carga del CSS, separadas por pipes (la barra vertical '|'), por ejemplo:

 

 

<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Lobster|Tangerine|IM+Fell">

 

 

Posteriormente, en nuestro CSS podríamos emplear cualquiera de ellas, ya que se habrán cargado las tres.

 

Cargar variantes de las fuentes

 

En caso necesario, debemos cargar las variantes de cada fuente que vayamos a emplear: negritas y cursivas, ya que cada variante se encuentra en paquetes distintos. Para añadir variantes, en la línea de carga del CSS se solicita cada variante separada de la fuente por un ':', y separadas las variantes por comas, por ejemplo:

 

 

<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Lobster:bold,italic|Tangerine:bolditalic|IM+Fell">

 

 

Con esta línea estamos incluyendo las fuentes Lobster, Tangerine e IM Fell, y de Lobster además cargamos la fuente Lobster en negrita y cursiva, y la Tangerine en negrita-cursiva. Las variantes admiten abreviaturas, de modo que la línea superior es equivalente a:

 

 

<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Lobster:b,i|Tangerine:bi|IM+Fell">

 

 

Cuando se carga una fuente, se incluye la fuente normal, la conocida como 'regular'. Al añadir variantes, estaremos cargando siempre la fuente normal más la variante.

 

Las variantes disponibles son:

 

Estilo 
Variante
cursiva
italic o i
negrita
bold o b o un peso numérico como 700
negrita-cursiva
bolditalic o bi

 

Carga de varias fuentes

 

Aunque Google Fonts nos permita cargar todas las fuentes que queramos, y en todas sus variantes, esto no debe hacerse; cada fuente que se carga debe descargarse al navegador, por lo que ralentiza la carga de la página. Si una fuente pesa 30KB, e incluimos seis fuentes en todas sus variantes estamos forzando al usuario a descargarse 30*6*4=720KB, casi un MB, más del doble de lo que pesa la portada completa de una web típica.

 

No se deben incluir muchas fuentes ya que éstas se descargan al navegador del usuario, ralentizando la carga de la web

 

Por ello, hay que tener cuidado de incluir sólo las fuentes y sus variantes que sepamos que vamos a usar en nuestro diseño. Además, las guías del buen estilo dicen que una web no debería tener más de tres fuentes distintas, por lo que con usar una especial para ciertos encabezados ya es más que suficiente.

 

Fuentes disponibles

 

Actualmente Google Fonts ofrece 58 tipografías en alfabeto latino, y algunas más en cirílico y griego. Seguramente, con el tiempo podamos tener disponibles muchas más fuentes, pero de momento debemos conformarnos con estas 58. la lista completa con su previsualización se puede encontrar en: http://code.google.com/webfonts

 

Jugando con CSS3: Sombras

 

Ya que hemos empezado a usar CSS3 para mejorar las fuentes en nuestro diseño, ¿por qué no ir un paso más allá? Una de las implementaciones más extendidas de CSS3 es el uso de sombras, por lo que vamos a añadir una ligera sombra a nuestros títulos:

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Pruebas con fuentes</title>

        <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Lobster" />

        <style>
            body {
                width: 600px;
                border: 1px solid #c9c9c9;
                margin: 10px auto;
                text-align: center;
                padding: 20px;
            }
            
            h1 {
                font-family: "Lobster", "Times", serif;
                font-size: 1.8em;
                text-shadow: #aaa 4px 4px 4px;
            }
        </style>
    </head>
    <body>
        <h1>Fuente Lobster con sombra</h1>

        <p>
            Este título es una fuente normal, que se puede seleccionar, indexar, etc...
        </p>
    </body>
</html>

 

 

El resultado debería ser como en esta imagen, con nuestra fuente con sombras como si fuese una fuente normal más:

 

 

Jugando con CSS3: Inset

 

Actualmente está de moda el usar tipografías “inset”, es decir, tipografías que parece que están marcadas sobre el fondo, con un ligero relieve. Esto es muy sencillo de hacer en Photoshop o Gimp, pero de esa forma estamos usando una imagen; aunque se pueda añadir texto a la imagen, o pueda usarse como imagen de fondo de un elemento con el texto oculto con text-indent, no deja de ser un apaño, y en mucha situaciones es preferible que el usuario vea texto real (y pueda seleccionarlo, ser indexado por buscadores, etc). Este efecto también se puede conseguir con CSS3.

 

Primero, cambiamos nuestro HTML para añadir una capa que envuelva el texto:

 

 

<div id="dvWrapInset">
        <h1 class="h1Inset">Titulo con relieve</h1>
</div>

 

 

Y añadimos los estilos necesarios al CSS:

 



h1 {
                font-family: "Lobster", "Times", serif;
                font-size: 2.8em;
                padding-left: 50px;
                padding-top: 17px;
                color: #0D4383;
                text-shadow: rgba(0,0,0,0.5) -1px 0, rgba(0,0,0,0.3) 0 -1px, rgba(255,255,255,0.5) 0 1px, rgba(0,0,0,0.3) -1px -2px;
            }

            #dvWrapInset {
                width: 550px;
                height: 100px;
                background-color: #003471;
                background: -moz-linear-gradient(-90deg, #003471, #448CCB);
                background: -webkit-gradient(linear, left top, left bottom, from(#003471), to(#448CCB));
            }

 

 

Lo que hemos hecho es dar un fondo degradado a la capa contenedora, ya que los textos con efecto inset quedan mejor sobre este tipo de fondos. Para el texto, la línea importante es la que añade las sombras; lo que haremos será añadir varias sombras negras y una sombra blanca, con desplazamientos negativos para que se «monten» sobre el texto. Estos valores han sido extraídos de http://sixrevisions.com/css/how-to-create-inset-typography-with-css3/, pero siempre se pueden cambiar para probar y ajustar más o menos el efecto de relieve.

 

text-shadow puede recibir cuatro parámetros para cada sombra, en este orden: color, desplazamiento en horizontal, desplazamiento en vertical y desenfoque. Salvo el color, todos los valores toman el valor cero si no se especifican.

 

Tras estos cambios, el ejemplo quedaría así:

 

 

Nota: en este ejemplo el degradado de fondo sólo funciona con navegadores Firefox o basados en Webkit, como Safari. Si usas otro navegador, puedes crear el fondo degradado con una imagen y añadirla al CSS de la capa contenedora:

 

background-image: url('fondo.jpg');
background-repeat: repeat-x;

 

 

Sin usar Google Fonts: font-face

 

Este método para usar fuentes distintas de las habituales es muy cómodo, pero estamos restringidos a las fuentes de Google Fonts que aunque son un buen número y van aumentando con el tiempo no podemos disponer de la fuente exacta que el proyecto requiera. Sin embargo, aún podemos utilizar la fuente que necesitemos empleando CSS3; para ello usaremos @font-face.

 

El funcionamiento es muy sencillo: subimos la fuente que queramos usar al servidor (por compatibilidad, debe estar en formato OpenType o TrueType); con @font-face indicamos dónde esta esa fuente y como la vamos a llamar, y a partir de ahí podemos usar esa fuente en el resto del CSS. El nombre que le demos es indiferente, ya que sólo es un identificador interno a nuestro CSS. Por ejemplo, añadimos esto a nuestro CSS:

 

 

@font-face {
                font-family: SketchRockwell;
                src: url('fonts/SketchRockwell-Bold.ttf');
            }

            @font-face {
                font-family: RoughTypewriter;
                src: url('fonts/rough_typewriter.otf');
            }

            @font-face {
                font-family: RoughTypewriter;
                font-weight: bold;
                src: url('fonts/rough_typewriter_X_bold.otf');
            }

            h1 {
                font-family: SketchRockwell, serif;
                font-size: 1.8em;
                letter-spacing: 1px;
                text-align: center;
            }

            p {
                font-family: RoughTypewriter, serif;
                font-size: 1.2em;
                letter-spacing: 1px;
                text-align: center;
            }

 

 

Así estamos incluyendo dos fuentes, SketchRockwell y RoughTypewriter y de la segunda, además, la variante en negrita. Como anteriormente, es muy importante dar una fuente genérica para que los navegadores que no soportan la propiedad @font-face de CSS3 puedan seguir mostrando el contenido que tengamos con esa fuente. También como veíamos antes es importante no abusar de las fuentes, pues éstas tienen que descargarse al navegador del usuario.

 

Lo que veríamos con este CSS sería:

 

 

¿Dónde busco fuentes?

 

Mi sitio preferido para encontrar fuentes es www.dafont.com. Se pueden rastrear cientos de fuentes por tipos, y filtrarlas además por el tipo de licencia, de forma que nos aseguremos de que estamos usando una fuente que podemos distribuir.

 

Hay que tener cuidado con esto, ya que aunque muchas fuentes son de uso libre, muchas de ellas no permiten su distribución, y cuando usamos @font-face lo que estamos haciendo es, precisamente, distribuirlas. Es importante comprender que no es lo mismo usar una fuente que distribuir una fuente. Además, hay fuentes que tienen licencia libre para uso personal, pero que para uso comercial exigen el pago de una licencia.

 

¿Por qué usar entonces Google Fonts?

 

Aunque en Google Fonts sólo tengamos un pequeño número de fuentes disponibles, nos ofrece la ventaja de que sus fuentes están en un servidor gestionado por Google, lo que consigue acelerar la carga de las páginas que lo usen por varias razones:

  • por muy bueno que sea nuestro servidor, los de Google son más rápidos, seguro
  • si un navegador ya bajó una fuente de Google y la tiene en caché, no tiene que volver a bajarla desde nuestro sitio
  • si no la tiene en caché, al tener que bajarla de un dominio distinto, lanzará la petición en paralelo a la carga del resto de la web, en lugar de encolar la descarga de la fuente y ahorrándose la información de sesión en la petición.

 

Ejemplo completo

 

Puedes descargar el ejemplo completo para probarlo por ti mismo. Se incluyen varios archivos .html con lo visto en el tutorial y las fuentes que se han usado.



Comentarios


  • CARINA 04/10/2011 14:17

    hola q tal. muy buena toda tu explicacion.
    te cuento q estoy tratando de llevar mis paginas web a diseños segun lo indica la wc3 y me resulto muy util la data q aca mandas, mi duda es si se puede hacer uso de la fuente meta-bold, yo vi tus ejemplos y es lo mismo q yo hice una pagina q me la muestra correctamente a la letra peroo, no se como idicarle su uso desde un enlace o link ahi no me lo toma no se ocmo deberia hacerlo, o esta limitado su uso?? te paso mi ejemplo http://www.soyaquiyahora.com/FUENTESMETA.html, aca se bien esa y otras fuentes, peor si hago un enlace no se ve bine, este ultimo ejemplo no esta aca peor si date paso el codigo q hice y q aun no subi. gracias y muy bune la info!!
  • marcos 23/11/2011 17:58

    muy buen articulo justo lo que necesitaba, estoy iniciando con html5 vi que ya no usa y pues esta explicación de como hacerlo con y Sin las fuentes de google me encantó
    Gracias
  • Ana 26/04/2013 22:12

    Excelente la explicación y muy útil la data.
    ¡Mil gracias!

Añade un nuevo comentario







 Enviando, por favor, espera...
Debes rellenar todos los campos.

Nunca haré público tu email, sólo se requiere a efectos estadísticos.

Comentarios malsonantes, con insultos, racistas, homófobos o con malas intenciones serán eliminados.

¡Muchas gracias por participar!


Ver blog

Creative Commons License Esta web http://alvaroremesal.net , su contenido, texto e imágenes está licenciado bajo una Licencia Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 España.

2013 - Álvaro Remesal Royo   Avisos legales

logo-acms