Cómo instalar fonts en Debian
Herr Groucho
groucho en nys.com.ar
Vie Ago 10 01:58:15 ART 2007
Tenía una necesidad simple: instalar un archivo .ttf de un font con un
montón de símbolos fonéticos y una gran cobertura de Unicode.
Cómo lo hago? Idealmente, se debería hacer como en Windows: basta con
poner el archivo .ttf en un directorio especial y sin hacer nada el
font está disponible en todos lados.
Pero ese objetivo no parece estar cerca, dada la ensalada que el
manejo de fonts en un sistema GNU/Linux, donde no hay una registro
central de fonts, conviven muchísimos formatos diferentes, hay varias
implementaciones de renderers, puede o no haber servidores, y cada
aplicación de de todo eso sólo vé lo que le guste ver, con lo cual no
hay una manera universalmente eficaz de instalar un font y que
funcione...
Buscando con Google aparecen miles de procedimientos diferentes para
instalar un font, cada uno con diferente alcance: usando las
herramientas provista por ciertos entornos de escritorio (y el font
sólo es visible dentro de X, o peor, sólo en los programas del
entorno de escritorio), toqueteando la configuración de X de formas
ad-hoc, creando directorios y configuraciones locales, con un montón
de pasos manuales para generar hints y métricas y no sé cuánta otra
mierda a partir de la información embebida dentro de los fonts, de
manera que no sé por qué me tienen que hacer a mí extraerla.
En fin, no encontraba ninguna explicación de un método que fuese
completamente abarcativo, autocontenido, homogéneo, automatizado,
estandarizado y fácil de usar, hasta que por que por millonésima vez
en la vida decidí darle otra mirada a defoma a ver si lograba
entender cómo usarlo...
Y lo logré!
El manejo de fuentes en Debian con defoma tiene los atributos
característicos de tantos otros sistemas hechos por Debian:
sobrediseño, modularidad esquizofrénica y flexibilidad barroca, todo
lo cual se combina para ofrecer justo lo que andaba buscando: algo
abarcativo, estandarizado, homogéneo, elegante, ya previsto en la
distribución, etc.: algo The Debian Way!
Con defoma, las aplicaciones que pueden utilizar fonts (X, Latex,
etc.) tienen que ofrecer un script/módulo a ser invocado por defoma
en los momentos adecuados, y ese script tiene que implementar la
realización de una serie de operaciones abstractas solicitadas por
defoma, como hacer disponible o dejar de hacer disponible un font.
Hay otro conjunto de módulos para acceder a cada formato de font
(type1, truetype, etc.) y un montón de otras cosas, todas las cuales
se manejan con 2 o 3 invocaciones desde la línea de comandos.
He aquí el procedimiento que seguí para instalar MS Arial Unicode:
1) Copio el archivo al directorio previsto para fonts localmente
instalados: /usr/local/share/fonts
2) Extraigo del archivo todos los datos que defoma va a querer saber y
los guardo en un archivo que luego le puedo pasar a defoma así no me
pregunta pelotudeces:
# cd /usr/local/share/fonts
# defoma-hints truetype *.ttf >/tmp/hints
Esto se puede hacer como ven para procesar varios fonts en lote.
3) "Registro" el font con defoma, o sea: lo instalo, porque defoma
luego va a disparar los scripts esos que mencioné al principio para
hacer disponible el font en cada aplicación que se haya registrado
con defoma como capaz de manejar fonts en el formato que tenga el
font que se esté instalando:
# defoma-font register-all /tmp/hints
Acá estoy pasando los datos de potencialmente varios fonts (por cómo
creé el archivo) a defoma, pero también hay comandos para registrar 1
solo font por ejemplo.
Y listo, eso es todo, el font queda andando.
Específicamente en el caso de X esto ocurre porque
en /etc/X11/xorg.conf ya hay puesta una línea para que el servidor X
tome fonts desde un cierto directorio manejado por defoma.
Y algún día entenderé la relación entre fontmanager, defoma y el resto
de las cosas...
--
Herr Groucho
ID Jabber: groucho en lugmen.org.ar
Señal distintiva: LU5MJR - 144,550 MHz FM.
Clave pública GPG: hkp://pks.lugmen.org.ar
Fingerprint GPG: B7BD 0FC7 D9A2 66F3 4EFC 45EE 7DE2 3932 597B 6354
Más información sobre la lista de distribución lug-list