VisiónE

Navegación :: VisiónE :: Artículos :: Fuentes en Linux: mis recomendaciones [Publicado: 16 marzo 2008]

Fuentes en Linux: mis recomendaciones

Javier Garduño

Typo

A muchas personas les resulta desagradable cualquier representación de fuentes tipográficas que no sea a la que están acostumbrados. Esto es común para los usuarios que cambian de plataforma de cómputo. Casi siempre, la queja es para las fuentes en Linux o Mac OS X, pues muchos de sus usuarios vienen de plataformas Windows, que tiene una particular forma de dibujar sus tipografías.

Este artículo intenta ofrecer información que permita entender un poco más la titánica tarea que es pintar un texto en pantalla. Además de ofrecer algunas recomendaciones de su configuración bajo Linux.

Entendiendo las fuentes

Las tipografías que vemos en pantalla han sufrido un complejo proceso antes de que las veamos plasmadas en el monitor. Podemos intervenir en dicho proceso gracias a las opciones disponibles.

Las fuentes pueden ser de dos tipos:

  • Vectoriales o escalables
  • Mapa de bits

Antiguamente las únicas fuentes disponibles eran las de mapa de bits, aunque su empleo está en franco desuso. Las reinas en la actualidad son las fuentes escalables o vectoriales.

¿Qué significa que sean “mapa de bits” o “escalables”?

Fuente en curvas

Las fuentes de mapa de bits se almacenan en forma de una matriz de puntos, como si de una fotografía digital se tratara. Son susceptibles a todos los problemas que sufre una fotografía al ser escalada: dientes de sierra, pérdida de información, etc.
Las fuentes escalables se almacenan de forma diferente. Son curvas matemáticas. Son funciones que pueden ser representadas a cualquier escala sin perder detalles, de ahí su nombre.

En la actualidad, prácticamente todas las fuentes que ves en pantalla son escalables. Pero el hecho de que lo sean no las exime de tener su problemática.

El problema de las fuentes feas

El monitor de una computadora es un dispositivo de baja resolución (comparado a un medio impreso), de forma que las fuentes en pantalla están condenadas a utilizar un área de pocos píxeles para ser representadas. Esto supone un problema: las letras y demás caracteres poseen tantos detalles en un espacio tan pequeño, que es difícil representar todo de forma adecuada. No solo deben estar los detalles que permiten distinguir un carácter de otro, debe existir cierta armonía visual para que el resultado sea estético.

Si pintáramos las tipografías tal cual, resultarían antiestéticas, y en algunos casos, hasta ilegibles.

Para solucionar estos problemas, se han ideado varios sistemas.

El hinting

El hinting es una técnica por medio de la cual el contorno que define a un carácter se ajusta a la rejilla de píxeles que la representará, con el fin de mejorar su estética y legibilidad a resoluciones pequeñas.

Un ejemplo de hinting

Ejemplo de hinting. Solo a la palabra inferior se ha aplicado su información de hinting. La representación de la fuente en tamaños pequeños mejora considerablemente, ajustando la fuente a la rejilla de píxeles que la representará.

La información para aplicar la técnica se puede encontrar en la propia fuente y es introducida a mano. Las fuentes de alta calidad proporcionan dicha información casi de forma obligada. Está técnica es ampliamente usada (y abusada) en Windows desde que implemento el uso de fuentes escalables.

El hinting en Linux

El sistema comúnmente usado para dibujar las fuentes en pantalla bajo Linux son las librerías FreeType. Un conjunto bastante completo de rutinas destinadas a algo tremendamente importante: mostrar el texto en pantalla. Y dentro de esas rutinas se encuentran unas dedicadas a lo que nos incumbe: el hinting.

La técnica tiene un problema en su aplicación. Bajo ciertas jurisdicciones, el algoritmo usado para interpretar las instrucciones de hinting que poseen las fuentes está bajo patente, lo que no permite su libre uso.

Aún así, FreeType implementa dichas técnicas (si fue compilado con tal capacidad habilitada), pero además, posee rutinas para algo maravilloso: el auto-hinting.
El auto-hinting es una técnica por medio de la cual el sistema ajusta por sí misma los caracteres a la rejilla invisible, sin importar si la fuente posee información de hinting o no. De hecho, el sistema hace caso omiso del hinting que venga incrustado en la fuente, de esta forma, no se infringen patentes.

El antialias

El antialias, es una técnica por medio de la cual las imágenes son “suavizados”, de forma que no resulten evidentes sus limitaciones en baja resolución. Los dientes de sierra son un ejemplo de esas limitaciones.

Ejemplo de anti-alias

Ejemplo de anti-alias. La palabra inferior está tratada con una técnica de anti-alias. lo que “difumina” sus bordes en relación al fondo.

El antialias fue implementado en fechas posteriores al hinting, ya que los primeros equipos informáticos no poseían las capacidades gráficas necesarias para plasmar el abanico de tonalidades necesario para construir un antialias adecuado.

Ambas técnicas pueden coexistir y pueden mejorar sustancialmente la representación de fuentes en pantalla.

El antialias tiene su propia problemática, pues su eficacia es poderosamente dependiente del dispositivo utilizado para mostrar el gráfico. La gamma puede alterar el resultado.

El dibujado subpixel

El dibujado subpixel es una técnica que permite triplicar la resolución horizontal o vertical de la tipografía, aprovechándose de las características físicas de las pantallas LCD.

Cleartype

Nótese como el dibujado de la fuente incluye a cada subpixel de color individual en esta simulación de dibujado subpixel.

Cada pixel de una pantalla LCD está compuesto en realidad por tres “subpixeles”. Uno por cada color primario. De forma que es posible aprovecharlos como píxeles individuales, triplicando la resolución horizontal o vertical para estos dispositivos.

¿Por qué no me gusta el hinting nativo (bytecode)?

Respuesta rápida: es completamente dependiente de la calidad del hinting que posea la fuente empleada. Si el hinting es de baja calidad, la tipografía lucirá mal.

El hinting nativo bajo Linux está limitado en la práctica a su uso con fuentes de Microsoft, o fuentes comerciales especialmente costosas, que están fuera de los intereses de la gente de a pie.

Y esto es una verdad: la gran mayoría de las tipografías poseen un hinting de baja calidad o no lo poseen en lo absoluto. Sobre todo si estas son gratuitas o libres, que es lo que abunda en los sistemas Linux. Aunque hay excepciones: las fuentes Bitstream Vera y sus derivados poseen un hinting de alta calidad. Pero fuentes así son muy contadas en el mundo libre.

Veamos lo que quiero decir con unos cuantos ejemplos:

Aquí hay tres fuentes que son clones entre si (es decir, sus contornos son prácticamente los mismos). Solo hay algo que las distingue entre si: el hinting.

  • Arial posee un hinting de altísima calidad.
  • Nimbus Sans L posee hinting, pero no es tan bueno.
  • FreeSans carece totalmente de él.

Veamos como la información de hinting cambia drásticamente la apariencia de fuentes que, en principio, son iguales.

En el siguiente ejemplo se muestran con el hinting nativo, el antialias y el dibujado subpixel activados (solo se apreciará correctamente en un monitor LCD con la resolución nativa y un orden de subpixel R-G-B):

bytecode-subpixel-sans

Hinting nativo, antialias y dibujado subpixel activados.

Lo mismo podemos decir de las siguientes fuentes, que también son clones entre ellas:

  • Time New Roman posee un hinting de altísima calidad.
  • Nimbus Roman No9 L posee hinting, pero no tan bueno.
  • FreeSerif carece totalmente de él.

bytecode-subpixel-serif

Hinting nativo, antialias y dibujado subpixel activados.

Los mismos ejemplos sin utilizar el dibujado subpixel (no es necesario un monitor LCD):

bytecode-grayscale-sans

bytecode-grayscale-serif

Hinting nativo y antialias activados. Dibujado subpixel desactivado.

Las fuentes de cada grupo, a pesar de ser idénticas entre si, lucen muy diferentes en pantalla, con métrica y aspecto diferentes. Nótese la baja calidad en la representación de la familia “Nimbus”. Algunas letras se “pegan” entre si, o tienen características extrañas (por ejemplo la letra “e” de Nimbus Roman). Las variantes “Free” lucen bien pero borrosas. No se aplica corrección en lo absoluto a ellas si se encuentra el motor “bytecode” activado en las librerías Freetype, como en este caso.

Conclusión: salvo que te desees restringir a fuentes Microsoft, no me parece buena idea el uso del hinting nativo. Las demás fuentes lucirán feas e inconsistentes.

El auto-hinting

El auto-hinting es configurable. La opción que recomiendo aquí es la aplicación “suave” del mismo. Las tipografías solo son ajustadas en el sentido vertical, dejando intacto el horizontal, si esto se auna al dibujado subpixel, que suele triplicar la resolución horizontal, el resultado me parece excelente.

Aquí es posible apreciar auto-hinting “suave”, antialias y dibujado subpixel activados:

Autohint-subpixel-sans

Autohint-subpixel-serif

Auto-hinting, antialias y dibujado subpixel activados.

Nótese como las fuentes lucen prácticamente idénticas entre si. La información de hinting que poseen las fuentes se ha descartado, aplicándose el ajuste que la librería FreeType a considerado adecuado.

La forma original de las fuentes se ha conservado bien, y también ha mejorado el contraste con respecto al que tendrían de no aplicarse hinting en lo absoluto.

¿No es una mejor forma de aprovechar una fuente de gran diseño, pero hinting defectuoso? ¡Y aplica para todos los casos!

Aquí lo mismo sin utilizar dibujado subpixel (no es necesario un monitor LCD):

Autohint-grayscale-sans

Autohint-grayscale-serif

Auto-hinting y antialias activados. Dibujado subpixel desactivado.

Las fuentes sin dibujado subpixel lucen un poco más borrosas, pero aún así lucen bien.

Ventajas y desventajas

Windows es el único sistema que usa de forma extensiva el hinting nativo todo el tiempo, refiriéndonos con esto al uso de la información de hinting provista por la propia fuente tipográfica.

Hinting nativo (bytecode)

Las ventajas que ofrece emplear el hinting nativo en Linux son las siguientes:

  • Si la calidad de la información de hinting es alta, éste será de gran calidad y nos ofrecerá el mejor contraste disponible para esa fuente en particular.
  • Es excelente para fuentes diseñadas para la presentación en pantalla.
  • También ofrece muy buenos resultados cuando el antialias no está activo.

Sus desventajas son:

  • Si la información de hinting es inexistente no será aplicada. Solo algunas fuentes la poseen. Quedan descartadas las demás.
  • Es posible que la información de hinting sea de mala calidad, dando mal aspecto.
  • La geometría de las fuentes puede ser dramáticamente alterada, perdiendo su apariencia y métrica original.
  • Es un sistema bajo patente.

Auto-hinting

El auto-hinting es una técnica en la que el sistema ajusta de forma automática las fuentes a la rejilla de píxeles.

Tiene las siguientes ventajas:

  • Se aplica a todas las fuentes escalables, sin importar el formato de las mismas, o si poseen información de hinting.
  • Permite configurar la intensidad de ajuste, de forma que podemos inclinarnos por una opción de alto contraste, o bien, una que conserve mejor la forma y métrica original de las fuentes utilizadas (como la expuesta en los ejemplos anteriores).
  • Es un sistema libre de patentes.

Sus desventajas son:

  • Ofrece menor contraste que el hinting nativo.
  • Da malos resultados si no se usa en conjunto con el antialias.

¿Qué combinación es mejor?

La respuesta a esa pregunta depende mucho de los gustos personales y de la calidad de nuestro monitor.

Los paneles LCD ofrecen imágenes y contornos más nítidos que cualquier monitor CRT. Además, si el monitor CRT es de baja calidad, es viejo, o está descalibrado, es posible que todo contorno se vea borroso. Esto afecta dramáticamente la apariencia de las fuentes más pequeñas.

Si el monitor es CRT, es posible que resulte incomoda la técnica de antialias para las fuentes más pequeñas. Tal ves se perciban más borrosas e ilegibles. Lo contrario sucede para el usuario de LCD, si no está activo el antialias las fuentes pueden presentar dientes de sierra tan evidentes que resulten molestos.

Si tienes un monitor LCD

  • Cerciórate de que estas usando la resolución nativa de tu monitor.
  • Activa el auto-hinting. Esto permitirá que el hinting aplique para cualquier fuente escalable. El estilo de pista “suave” es lo ideal.
  • Activa el antialiasing.

Ajuste de fuentes en KDE

Opciones de suavizado y hinting en KDE.

Si tienes un monitor CRT

  • Si el monitor es de alta calidad, el auto-hinting es mi recomendación.
  • No aplicar el dibujado subpixel. Tan solo es útil en monitores LCD.
  • Si el monitor es de baja calidad, tal vez el hinting nativo y sus contornos bien definidos, contrarresten el desenfoque que el monitor introduce en las fuentes.

Configurar las fuentes

En el home de cada usuario debe existir un archivo llamado .fonts.conf, que controla la configuración de fuentes para ese usuario. De no existir crearlo. Debe contener algo similar a lo siguiente:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
 <match target="font" >
  <edit mode="assign" name="rgba" >
   <const>rgb</const>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="hinting" >
   <bool>true</bool>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="hintstyle" >
   <const>hintslight</const>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="antialias" >
   <bool>true</bool>
  </edit>
 </match>
</fontconfig>
Explicación de los valores más relevantes:
Dibujado subpíxel
<edit mode="assign" name="rgba" >
   <const>rgb</const>

Indica si se utiliza dibujado subpíxel y de que tipo. El valor “const” puede valer: none, rgb, vrgb, bgr, vbgr.

Antialias
<edit mode="assign" name="antialias" >
   <bool>true</bool>

Indica si se utiliza o no el antialas. Valores de “bool”: true, false.

Intensidad de “hint”
<edit mode="assign" name="hintstyle" >
   <const>hintslight</const>

Define la intensidad de “hinting” aplicada. El valor “const”: puede tomar los siguientes valores: false, hintslight, hintmedium, hintfull.

En la versión de FreeType a la que tengo acceso (2.3.5) los valores false, y hintslight funcionan exactamente igual, sin importar si está actidavo o no el “hint” nativo. Para los otros valores (hintmedium, hintfull) el comportamiento variará de acuerdo a si el mismo está activo o no. Yo recomiendo activar el “autohinting”.

Activar el “autohinting”

Según la distribución, dependerá la forma de conseguirlo. Para las distribuciones basadas en Debian (por ejemplo: Ubuntu) podemos ejecutar el siguiente comando con privilegios de administrador:

dpkg-reconfigure fontconfig-config

En la pantalla que se presenta, elegir “Autosugerido”, refiriéndose este término al “autohinting”. Recomiendo dejar el valor de dibujado subpíxel en “automático” y no en “siempre”, y decir que no activar las fuentes de mapa de bits por defecto.

Para terminar

Espero que estas recomendaciones mejor su experienca de escritorio bajo Linux.

Creative Commons
Esta obra está bajo una licencia de Creative Commons.
Contacto: javier at esceptica.net
Javier Garduño - 2008
---
99.9% Escéptico