La rasterización de fuentes es el proceso de convertir texto de una descripción vectorial (como la que se encuentra en fuentes escalables como las fuentes TrueType ) a una descripción rasterizada o de mapa de bits . Esto suele implicar un suavizado del texto en pantalla para que sea más suave y fácil de leer. También puede implicar la introducción de información incrustada en los datos de la fuente que optimiza los detalles de representación para tamaños de caracteres particulares.
La forma más simple de rasterización es el dibujo de líneas sin suavizado de ningún tipo. En la terminología de Microsoft, esto se llama renderizado de dos niveles (y más popularmente "blanco y negro") porque no se utilizan tonos intermedios (de gris) para dibujar los glifos. (De hecho, se pueden usar dos colores cualesquiera como primer plano y fondo). [1] Esta forma de renderizado también se llama con alias o "dentado". [2] Este es el método de renderizado más rápido en el sentido de que requiere el menor esfuerzo computacional. Sin embargo, tiene la desventaja de que los glifos renderizados pueden perder definición y volverse difíciles de reconocer en tamaños pequeños. Por lo tanto, muchos archivos de datos de fuentes (como TrueType) contienen sugerencias que ayudan al rasterizador a decidir dónde renderizar píxeles para áreas particularmente problemáticas en los glifos, o conjuntos de mapas de bits modificados a mano para usar en tamaños de píxeles específicos. [1] Como ejemplo prototípico, todas las versiones de Microsoft Windows anteriores a Windows 95 (por ejemplo, Windows 3.1 ) sólo proporcionaban este tipo de rasterizador incorporado. [2]
Un enfoque más complicado consiste en utilizar técnicas estándar de anti-aliasing de gráficos por ordenador. Esto puede considerarse como la determinación, para cada píxel de los bordes del carácter, de la parte de ese píxel que ocupa el carácter y el dibujo de ese píxel con ese grado de opacidad. Por ejemplo, al dibujar una letra negra (000000) sobre un fondo blanco (FFFFFF), si un píxel debería estar idealmente medio lleno (quizás con una línea diagonal de esquina a esquina), se dibuja con un 50 % de gris (BCBCBC). La aplicación demasiado simple de este procedimiento puede producir glifos borrosos. Por ejemplo, si la letra incluye una línea vertical que debería tener un píxel de ancho pero cae exactamente entre dos píxeles, aparece en la pantalla como una línea gris de dos píxeles de ancho. Esta borrosidad sacrifica claridad por precisión. Sin embargo, los sistemas modernos a menudo fuerzan a las líneas a caer dentro de coordenadas de píxeles integrales, lo que hace que los glifos parezcan más nítidos, pero también hace que las líneas sean ligeramente más anchas o más delgadas de lo que se verían en una hoja de papel impresa.
La mayoría de las pantallas de ordenador tienen píxeles compuestos por varios subpíxeles (normalmente uno para cada color, rojo, verde y azul, que se combinan para producir la gama completa de colores). En algunos casos, especialmente en las pantallas planas, es posible aprovechar esto mediante la representación con una resolución de subpíxeles en lugar de utilizar píxeles enteros, lo que puede aumentar la resolución efectiva de la pantalla. Esto se conoce generalmente como representación de subpíxeles . Una implementación patentada de la representación de subpíxeles es ClearType de Microsoft .
En los sistemas operativos modernos, la rasterización normalmente la proporciona una biblioteca compartida común a muchas aplicaciones. Dicha biblioteca compartida puede estar integrada en el sistema operativo o en el entorno de escritorio , o puede añadirse más adelante. En principio, cada aplicación puede utilizar una biblioteca de rasterización de fuentes diferente, pero en la práctica la mayoría de los sistemas intentan estandarizarse en una única biblioteca.
Microsoft Windows ha admitido la representación de subpíxeles desde Windows XP . Por otro lado, el rasterizador estándar de Microsoft sin ClearType es un ejemplo de uno que prioriza la intención del diseñador de tipografía de claridad; al forzar el texto en posiciones de coordenadas integrales, siguiendo la intención del diseñador de tipografía de insinuar, e incluso no suavizar ciertas fuentes en ciertos tamaños, siguiendo la intención del diseñador de tipografía de la tabla de gasp, se vuelve más fácil de leer en la pantalla, pero puede parecer algo diferente cuando se imprime. Esto ha cambiado con la entrega de Direct2D / DirectWrite en Windows 7 y la actualización de la plataforma Windows Vista, permitiendo el posicionamiento de texto de subpíxeles a tamaños de 1/16 de píxel. [3]
Quartz de Mac OS X se distingue por el uso de posicionamiento de subpíxeles; no fuerza los glifos a ubicaciones de píxeles exactas, sino que utiliza varias técnicas de antialiasing, [4] incluida la representación de subpíxeles , para posicionar caracteres y líneas para que parezcan más alejados de la intención del diseñador de insinuar y más cerca del contorno original. El resultado es que la visualización en pantalla se ve extremadamente similar a la salida impresa, pero ocasionalmente puede ser difícil de leer en tamaños de punto más pequeños. El renderizador Quartz, desde macOS Mojave, ha eliminado la representación de subpíxeles, confiando puramente en el anti-aliasing de escala de grises. Este cambio es aceptable para las pantallas "retina" HiDPI, pero hace que el texto en monitores externos sea más difícil de leer. [5]
La mayoría de los demás sistemas utilizan la biblioteca FreeType , que, según la configuración, puede estar en un punto intermedio entre las implementaciones de Microsoft y Apple; admite la función hinting y anti-aliasing y, opcionalmente, realiza la representación y el posicionamiento de subpíxeles. FreeType también ofrece algunas funciones que no están presentes en ninguna de las dos implementaciones, como la representación de subpíxeles con equilibrio de color y la corrección de gamma. [6]
Las aplicaciones también pueden traer sus propias soluciones de renderización de fuentes. Los marcos gráficos como Skia Graphics Engine (utilizado por Google Chrome ) ocasionalmente usan su propio renderizador de fuentes. Los videojuegos y otras aplicaciones 3D también pueden necesitar renderizadores más rápidos basados en GPU, como varios renderizadores basados en SDF y "Slug". [7]