# METAFONT

METAFONT es un lenguaje de programación usado para definir fuentes vectoriales. Es también el nombre de un intérprete que ejecuta código METAFONT, convirtiendo las fuentes vectoriales en fuentes de mapas de bits que pueden ser incluidas en documentos de PostScript.

## Historia

Donald Knuth empezó a trabajar en la creación de software tipográfico o de fuentes en 1977, y produjo la primera versión de METAFONT en 1979. Debido a deficiencias en el lenguaje METAFONT original, Knuth desarrolló un nuevo sistema METAFONT en 1984 y este sistema es el que se usa hoy en día (con pequeñas revisiones); Tiene un sistema de versiones similar al de TeX, en el que el número de versión crece asintóticamente hacia el número e en cada revisión. Este lenguaje de programación fue inventado por Donald Knuth como un complemento del sistema TeX. Una de sus características es que todas las formas de glifos están definidas con potentes ecuaciones geométricas, por ejemplo, se puede definir un punto dado como la intersección de un segmento lineal y una curva de Bézier.

## Notas técnicas

A diferencia de los formatos de fuente comunes (tales como TrueType o PostScript Type 1), una fuente METAFONT está conformada principalmente por trazos de una "pluma estilográfica" de tamaño bien definido, a los que se añaden regiones rellenas. De esta manera, en lugar de describir directamente el contorno del glifo, un archivo METAFONT describe los trayectos de la pluma.
Algunas fuentes sencillas, tales como las fuentes caligráficas para matemáticas en la familia Computer Modern, utilizan un solo trazo con una pluma relativamente grande para definir cada trazo visual en los glifos. Las fuentes más complejas, tal es el caso de las fuentes de texto Roman en la familia Computer Modern, utilizan una pluma pequeña que traza el contorno de la fuente, el cual es posteriormente rellenado; el resultado es muy similar a una fuente de contorno, pero con esquinas ligeramente suavizadas debidas a la forma de la pluma.
Dado que las formas de la fuente están definidas por ecuaciones en lugar de números directamente codificados, es posible tratar parámetros como la razón de aspecto, la inclinación de la fuente, el ancho del pincel, el tamaño serif, etcétera como parámetros de entrada en cada definición de glifo. Así, cambiando la definición de uno de estos parámetros en el archivo METAFONT, es posible producir un cambio consistente en toda la fuente.
Computer Modern Roman ilustra a muchos usuarios esta característica; una instalación típica de TeX incluye un número de versiones de la fuente en tamaños de 5pt a 17pt, con los mismos anchos de pincel en todos los tamaños (en lugar de incrementarse como si la fuente fuese agrandada a escala) y las razones de aspecto de ensanchamiento en los tamaños pequeños para mayor legibilidad. Además, las fuentes Computer Modern typewriter y sans-serif están definidas usando esencialmente el mismo archivo METAFONT como la fuente Roman, pero con diferentes parámetros globales.
Las curvas en METAFONT están definidas no como secciones cónicas sino como splines cúbicos, para mayor versatilidad y sencillez de cálculo. Puede renderizar cualquier tipo de salida gráfica, no solo cincelados. Sin embargo, se prefiere MetaPost con su salida PostScript para ilustraciones avanzadas. Es mayormente invocada sin petición directa del usuario.
El formato DVI pueden contener referencias a tipos de fuente, en lugar que solo conjuntos de cinceles de raster o vectoriales que otros formatos como PostScript permiten. Consecuentemente los cinceles en los tipos de fuente necesitan ser accedidos tantas veces como se hagan peticiones para visualizado, impresión o conversión a un archivo DVI. La mayoría de las distribuciones TeX están configuradas para que cualquier fuente no disponible en la resolución requerida son generadas por llamadas a METAFONT. Los tipos de fuente son entonces almacenadas para reusarse posteriormente.
METAFONT puede funcionar también en modo interactivo, y tiene comandos para mostrar por pantalla las imágenes que produce. Knuth dijo que él usa METAFONT como una calculadora de escritorio para resolver ecuaciones complicadas, aunque ahora usa MetaPost para las ilustraciones matemáticas. Dado que METAFONT no puede crear fuentes vectoriales directamente, los polacos JNS team desarrollaron METATYPE1 (basados en MetaPost) para crear fuentes PostScript Type 1. Su gran desventaja es que no es posible utilizar plumas lo cual reduce enormemente el poder del lenguaje METAFONT.

## Uso

Mientras los diseñadores de fuentes reconocidos, tal como Hermann Zapf, han colaborado con Knuth para crear nuevas fuentes, el sistema no ha sido ampliamente adoptado por diseñadores de fuentes profesionales. Knuth atribuye esto al hecho de que: