Micaela 22 de Octubre de 2009 a las 11.30
   Imprimir artículo
elWebmaster.com

Embeber fuentes en tu sitio web: la guía definitiva

fuenteEl embebimiento de fuentes utilizando @font-face es verdaderamente un arte oscura y compleja que debe ser dominada.

Es por eso que en esta nota te traemos la guía maestra sobre cómo embeber fuentes en tu sitio web. ¡Esperamos que te sea de utilidad!

Formatos de Fuentes

Hablando de forma general, hoy en día, una fuente de nuestro sistema tendrá uno de estos dos formatos: TrueType (con una extensión de archivo .ttf) u OpenType (con una extensión de archivo.otf). Si bien sería genial tirar una fuente de estas en una web y linkearla, nos enfrentamos a dos problemas mayores:

1)      La licencia

2)      El soporte del navegador

Licenciación

La concesión de licencias es uno de los mayores obstáculos. Puede ser difícil encontrar una fuente que realmente funciona dentro de la estética general de un diseño. Es la razón por la que hemos tenido que recurrir a la exportación de imágenes sIFR o Cufon.

Incluso muchas fuentes libres tienen limitaciones en cuanto a cómo pueden ser utilizadas, muchas veces requieren instrucciones específicas sobre la vinculación de nuevo a la fuente original, o sólo se permite su uso en sitios no comerciales.

En estos días, una serie de recursos están surgiendo, especialmente los dedicados a la incrustación de fuentes. Un buen comienzo para encontrar la fuente adecuada para nuestro proyecto sería Font Squirrel. Font Squirrel incluso proporciona kits @font-face para hacer que la aplicación en nuestro sitio web sea fácil. Sin embargo, incluso estos kits no dan soporte de navegadores completo.

Soporte de Navegadores

El soporte de navegadores es el mayor problema. El embebimiento de fuentes con una fuente TrueType u OpenType sólo funciona de esta forma en Firefox 3.5, Safari 3.1, y Opera 10. (Lo puedes permitir en tu copia de Chrome 2 utilizando la línea de comando switch.)

Pero lo podemos mejorar todavía más. Podemos lograr que funcione en Internet Explorer 4+, Chrome 0.3+, Opera 9+ e incluso podemos lograr un poco de acción móvil en Safari.

EOT

Internet Explorer soporta un tipo de formato particular llamado Embedded OpenType que proporciona algo de control sobre dónde y cómo se permite embeber la fuente. Necesitarás convertir tu TTF al formato EOT. Microsoft pone a nuestra disposición una herramienta llamada WEFT pero no siempre funciona. Por suerte, hay una herramienta de línea de comando llamada TTF2EOT que puede convertir tu fuente.

Si tienes un archivo OTF, necesitarás convertirlo a TTF antes de pasarlo a EOT. FontForge se puede utilizar para llevar a cabo esto.

Haz clic aquí para ver la captura de pantalla de la conversión de OTF a TTF »

Como verás pronto, tener el archivo en formato TTF nos ayudará en los próximos pasos.

SVG

Con TTF/OTF y EOT, tenemos cubiertos los navegadores decentes pero el toque de gracia es añadir más formatos de fuente a la mezcla: SVG. Las fuentes SVG son soportadas por Chrome 0.3+ sin tener que usar un hack de línea de comando, junto con Opera 9 y iPhone OS 3.1.

Existe una aplicación Java llamada Batik que permite exportar a formato SVG, ésta puede echarse a andar desde la línea de comando, y al hacerla andar deberás especificar el parámetro del ID. La ID es importante a la hora del CSS.

  1. java -jar batik-ttf2svg.jar ./MuseoSans-500.ttf -o museo.svg -id museo

Una de las preocupaciones en la exportación a SVG es el tamaño del archivo. Inmediatamente notamos que la fuente de 29k estaba pasando más de 100k. La principal razón fue el número de elementos hkern que, supongo, se dirigen a kerning. Sin embargo, deberías ser capaz de eliminarlos sin afectar mucho la muestra de tu fuente, pero disminuyendo en gran medida el tamaño del archivo. La otra cosa que notamos fue glyph-name="null" en todos los nodos glyph. Estos se pueden eliminar sin afectar a la visualización de la fuente. Una vez hecho las fuentes SVG serán más pequeñas que la fuente TrueType original que se había convertido.

CSS

Ahora que tenemos nuestros tres archivos-TTF (o OTF), EOT y SVG-es tiempo de comenzar con el CSS.

  1. @font-face {
  2.   font-family: 'GothicCustom';
  3.     src: url("LeagueGothic.eot");
  4.     src: local('League Gothic'),
  5.        url("LeagueGothic.svg#lg") format('svg'),
  6.        url("LeagueGothic.otf") format('opentype');
  7. }

El nombre de familia fuente que especifiquemos aquí es arbitrario.

La sintaxis SVG posee una cosa particular a notar, y esto es el anchor de ID luego del nombre de fuente. Especifíca la ID que utilizaste cuando realizaste la conversión SVG. De forma alternativa, abre la fuente SVG y asegúrate que el elemento fuente posee un ID.

  1. <font id="lg">

Especificar la familia fuente funciona de forma normal. Sólo especifíca el nombre de fuente que utilizaste en tu declaración @font-face.

  1. font-family: 'GothicCustom', 'Arial Narrow', sans-serif;

Subconjuntos

En la captura de pantalla, dimos una demostración rápida de cómo hacer subconjuntos de fuentes limpiando los caracteres que no van a ser utilizados en la fuente final. ¿Por qué quieres hacer subconjuntos de fuentes? Hace que el archivo sea más pequeño. Algunos archivos de fuentes fácilmente pesan 200k. Eso es mucho para descargar cuando la gente no lo necesita.

Si optimizas tus imágenes ¿Por qué no hacerlo con tus fuentes?

Bug transformador de texto

Hay una advertencia a tener en cuenta al realizar subconjuntos. Una declaración text-transform: uppercase es todo lo que se necesita.

  1. <div>About</div>
  2. div { text-transform:uppercase; }

Esto funciona bien en Firefox y Safari, pero Opera e Internet Explorer ambos parecen hacer decidido el uso de una fuente para un carácter en particular observando el carácter en minúscula en primer lugar. Esto quería decir que estaba usando los caracteres en mayúsculas de una fuente de reserva. Eso es ciertamente menos que ideal.

Por supuesto, siempre puedes cambiar el código fuente HTML para que sea mayúscula, si estabas dispuesto a llegar a la muerte en la eliminación de los glifos.

Imprimir hojas de estilo

Las fuentes personalizadas también funcionan bien con las hojas de estilo de impresión. No era como el uso de técnicas de reemplazo mediante una imagen y luego tener que recurrir a una fuente del navegador aburrido para imprimir. Se siente bien la impresión de una página de nuestro sitio que todavía utiliza las mismas fuentes, como lo que vimos en la pantalla.

Fuente: Tips, Tricks & Bookmarks on Web Development

Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (6)

  1. 23r9i0 dice:

    Hola, antes de nada merci por esta entrada referente al @font face.
    Mira estoy experimentando y tengo unas dudas que me gustaria hacerte.
    El tema de licencias en la fuente que he elegido me pone:
    Rockwell (OpenType)
    Fuente Open Type, Firmado digitalmente, TrueType Outlines
    Nombre: Rockwell
    Tamaño de archivo: 57 KB
    Versión: Versión 1.65
    Digitized data copyright (C) 1992 - 1997 The Monotype Corporation. Rockwell® is a trademark of The Monotype Corporation which may be registered in certain jurisdictions.
    Portions copyright Microsoft Corporation. All rights reserved.

    No tengo muy claro si puedo o no usarla en una web?
    Luego el problema de los soportes de los navegadores, yo uso firefox ultima version y por ejemplo el archivo eot creado con el programa que facilita microsoft funciona pero tu comentas que suba la fuente original y la fuente eot solo sea para IE, y me pierdo con el resto de los navegadores, me refiero con chrome, safari, y para el iphone de momento no pienso en el, jeje.
    Bueno espero no preguntarte cosas dificiles de responderme.
    Gracias!!

  2. raul dice:

    Muy buen articulo, lo que me parece es un poco coñazo lo de tener que adaptar las fuentes. ¿No se ralentiza la página al cargar con tantas fuentes?

    Por cierto la palabra embeder no existe, se dice incrustar.

    Saludos

  3. Alejandra dice:

    Con los subconjuntos tienes el problema del peso resuelto.
    Por otra parte, el concepto de incrustar no es el mismo que el de embeber. La palabra no existe, es una adaptación de la palabra "embed" en inglés, que se ya utiliza generalizadamente en textos en español.

  4. raul dice:

    Pues no será el mismo pero embed en español significa incrustar :\

  5. Vickolo dice:

    Me funciona perfecto para explorer, pero no funciona en safari, ni chrome ni firefox, estoy haciendo algo mal??

  6. Morton dice:

    Hola, Vickolo

    ¿Lo has probado en las versiones correspondientes? Recuerda que sólo funciona en Firefox 3.5, Safari 3.1, y Opera 10.

    Saludos!

Deja tu opinión

© 2007 - 2010 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Iniciar sesión