fuente_ISO-COMO
Urko Lusa Oiza,
[email protected]
v0.2, rev 2. 15 Oct 1996
Este documento explica c�mo usar una fuente iso-8859-1 en el modo
texto de Linux, en vez de la que �ste trae por defecto en todas las
distribuciones que yo he visto, y que no deja de ser una especie de
apa�o que arrastra el lastre de la p�gina de c�digos de IBM.
______________________________________________________________________
�ndice General:
1. Introducci�n
2. Preparando las VT
3. Adaptando terminfo
3.1. Probando si funciona
3.2. Nota sobre slang
3.3. Nota sobre reset
4. M�s gaitas
4.1. Variables de entorno
4.1.1. less
4.1.2. LANG, LC_CTYPE , etc...
4.2. isprint
4.3. Configuraci�n de algunos programas
4.3.1. dosemu
4.3.2. pine
4.3.3. ELM
4.3.4. TIN
5. Problemas
5.1. La fuente no se carga al arrancar
5.2. El teclado funciona mal en VT(no.)
5.3. Los caracteres gr�ficos no aparecen correctamente
5.4. �C�mo se quita esto?
6. Sobre este documento
6.1. Agradecimientos
7. Anexo: El INSFLUG
______________________________________________________________________
1. Introducci�n
Las distribuciones de Linux que conozco traen por defecto la misma
fuente que el DOS (p�gina de c�digos 437). Para hacer que el sistema
funcione como si la fuente fuera ISO, se emplea un extra�o ``remapeo''
para hacer que al representarse determinado car�cter, no salga por
pantalla el que en la fuente ocupa dicha posici�n.
Para saber si este es el caso de tu sistema, mira el siguiente
car�cter:
�
Si est�s viendo una A may�scula con acento agudo, este documento no te
hace falta. Si ves un cuadrado, te puede interesar. Por supuesto lo
anterior se aplica si est�s mirando este documento en su versi�n texto
desde la consola, o bien la versi�n html desde el lynx. Si lo est�s
viendo desde X o leyendo una versi�n impresa, deber�as ver la A en
cualquier caso.
Tambi�n puedes probar man iso_8859_1 desde la consola (seg�n tu
distribuci�n y de si instalaste el manual o no, es posible que no
tengas esta p�gina) y comprobar si los caracteres mostrados se
corresponden con su descripci�n y si ves correctamente todos ellos. Es
muy posible que gran parte aparezcan como cuadrados en vez de
corresponderse con la descripci�n que traen a la derecha.
Si quieres disponer de todos los caracteres necesarios para una
correcta escritura de la lengua castellana (y varias otras), puedes
seguir los pasos que se describen en este documento. Para los
recelosos, comentar que esto no implica la p�rdida de s�mbolos
gr�ficos, y que si se hace bien, seguiremos viendo los cuadraditos en
nuestras aplicaciones favoritas (mc, slrn, etc.).La �nica pega es que
las l�neas horizontales no salen unidas, cosa que creo que se debe a
que la VGA s�lo hace esto para ciertas posiciones de la tabla de
caracteres. No obstante puedo asegurar que se puede sobrevivir sin
ello.
A lo largo del documento aparecen varios ejemplos de comandos. Cuando
�stos empiezan por # significa que quien debe ejecutarlos es el
superusuario (root). Cuando aparecen precedidos por $ significa que
pueden ser ejecutados por cualquier usuario.
2. Preparando las VT
Lo primero que se debe hacer es lograr que cuando pulsemos ALT+n,
salga por pantalla el car�cter que ocupa el lugar n en la fuente y no
otro. Esto se consigue con el siguiente comando:
$ echo -ne '\033(K'
pero por supuesto no vamos a estar tecleando eso en cada terminal
virtual cada vez que tengamos que usarla, as� que lo m�s c�modo es
a�adir lo siguiente en /etc/rc.d/rc.local:
# el BloqNum y los 8 bits
for tty in /dev/tty[1-6]*; do
setleds -D +num > $tty
echo -n -e '\033(K' > $tty
done
La l�nea que contiene setleds no es necesaria para el prop�sito de
este documento, pero ser�a una pena no aprovechar el bucle ;-)
Lo siguiente que debemos hacer es instalar la fuente:
# setfont /usr/lib/kbd/consolefonts/lat1-16.psf
Para hacer que �sto ocurra autom�ticamente al arrancar, pon la orden
en /etc/rc.d/rc.font. Puedes probar a cambiar a dicha fuente, teclear
echo -ne '\033(K' y volver a la secci�n ``introducci�n''. Ahora
deber�as ver correctamente el car�cter. Recuerda que el echo s�lo
tiene efecto sobre la terminal en la que se teclea, por lo que tendr�s
que teclearlo en la misma en la que est�s leyendo esto.
3. Adaptando terminfo
La definici�n para la terminal de Linux que trae ncurses est� pensada
para usar los c�digos de la cp437. Esto provocar� que al cambiar de
fuente veamos letras en vez de los s�mbolos gr�ficos. Afortunadamente
esto no es dif�cil de solucionar cambiando la definici�n de terminal
en /usr/lib/terminfo/l/linux.
NOTA: si tu distribuci�n de Linux es antigua, es posible que la
definici�n de terminal est� en /usr/lib/terminfo/c/console. Teclea
$ echo $TERM
para saber cu�l te corresponde.
Primeramente deberemos extraer el fichero binario en forma de texto
editable:
# infocmp > linux.original.tic
# cp linux.original.tic linux.tic
NOTA: si tu distribuci�n de Linux es antigua, es posible que el
equivalente a infocmp se llame untic.
NOTA2: aseg�rate de estar en la consola normal (modo texto). Si est�s
en un xterm, ser� �sta la informaci�n que se vuelque al fichero.
Guarda el fichero linux.original.tic por si es necesario volver a
restaurar la definici�n original, y edita los cambios sobre linux.tic.
�stos son los siguientes:
� Busca las siguientes entradas y b�rralas:
� smacs
� rmacs
� acsc
IMPORTANTE: Las entradas est�n delimitadas por comas y puede haber
varias en una misma l�nea. Ten cuidado en borrar s�lo las entradas
que se mencionan arriba.
� A�ade las siguientes l�neas:
smacs=\E(K,
acsc=l\206m\203k\214j\211u\215t\207v\213w\216q\212x\205,
rmacs=\E)K,
� Graba los cambios y sal del editor.
Ya puedes proceder a compilar:
# tic linux.tic
Tras lo cual ya deber�a estar listo el sistema.
3.1. Probando si funciona
Seguramente tendr�s el Midnight Commander. Ejec�talo para ver si los
cambios han tenido efecto.
�Pero si sale hecho un cristo!
Calma, calma. Pulsa F9 y entra en el men� Options. Selecciona Display
bits y elige la opci�n Full 8 bits. Aseg�rate de pasar por el Ok o
darle con el rat�n. �Mejor ahora? Vuelve a entrar en el men� y graba
los cambios con Save setup.
En caso de que est�s leyendo esto con lynx, debes saber que en las
fuentes de este navegador viene una p�gina que te ser� muy �til para
ver los cambios que has realizado. Dicha p�gina se llama
iso8859-1.html, y si est�s leyendo esto conectado puedes verla en
http://www.uni-passau.de/~ramsch/iso8859-1.html
3.2. Nota sobre slang
Las versiones de slang anteriores a la 0.99-32 no determinan cu�les
son los caracteres gr�ficos leyendo terminfo, sino que usan unos
predeterminados (si la terminal es linux). Si tu versi�n de esta
librer�a es anterior, puedes actualizarte cogiendo la �ltima versi�n
de
ftp://space.mit.edu/pub/davis/slang.
Algunos programas que usan slang son slrn, jed y lynx (si se compila
con esta opci�n).
3.3. Nota sobre reset
Algo que no s� c�mo evitar es que al ejecutar reset los carateres
vuelvan a ser ``remapeados'' como si la fuente fuese la cp437. El
�nico apa�o que se me ocurre es incluir esta l�nea en /etc/profile o
en el .profile del usuario:
alias reset='reset ; echo -ne "\033(K"'
4. M�s gaitas
Mientras esperamos el d�a en que las distribuciones de Linux traigan
las diferentes definiciones de locale para su internacionalizaci�n,
hay algunas cosillas que podemos afinar.
4.1. Variables de entorno
Puedes ponerlas en /etc/profile o en tu .profile particular. He
seguido la sintaxis de bash. Si usas otro shell posiblemente tengas
que cambiar export por la orden equivalente.
4.1.1. less
Para visualizar con less ficheros que contengan caracteres de 8 bits:
export LESSCHARDEF=8bcccbcc18b.
Esto har� que se consideren como imprimibles todos los caracteres
desde el 32 hasta el 255, lo que puede acarrear problemas si se usa en
una terminal vt200, por ejemplo, pero permite ver caracteres gr�ficos
desde el PC. Si tienes una terminal en ttySn puedes poner esto:
export LESSCHARDEF=8bcccbcc18b.
if [ "`tty`" = "/dev/ttySn" ]
then
TERM=vt220d
unset LESSCHARDEF
export LESSCHARSET=latin1
else
TERM=linux
fi
export TERM
lo que har� que si se entra por ttySn, less no considere como
imprimibles los caracteres del 128 al 160 (los caracteres gr�ficos en
la fuente lat1-16.psf, pero que son interpretados como caracteres de
control por el vt200).
4.1.2. LANG, LC_CTYPE , etc...
Estas variables son las que se usan para presentar el formato de la
fecha, orden alfab�tico, etc. Desgraciadamente que yo sepa a�n no
est�n implementadas en las distribuciones habituales de Linux. De
todas formas puedes a�adir esto:
export LANG=es_ES
4.2. isprint
Esta es la funci�n del sistema que decide si un car�cter es imprimible
o no. Si la distribuci�n soportase locale, deber�a funcionar bien,
pero tal como est� ahora la cuesti�n, s�lo devuelve como imprimibles
los caracteres ASCII.
Esto provoca que muchos programas compilados con #include <ctype.h> no
muestren correctamente los caracteres no ASCII. Como esto puede
cambiar en un futuro, es importante que antes de aplicar el cambio que
se propondr� a continuaci�n compruebes tu sistema con el siguiente
programa:
#include <locale.h>
#include <ctype.h>
void main(void)
{
unsigned char c;
setlocale(LC_CTYPE,"");
for (c=191;c<211;c++)
{
printf("%d - %c ",c,c);
if (isprint(c)) puts("es imprimible");
else puts("no es imprimible");
}
}
Graba el texto anterior con el original nombre de prueba.c y comp�lalo
con
$ gcc -s -o prueba prueba.c
y pru�balo as�:
$ export LC_CTYPE=ISO-8859-1
$ ./prueba
Seguramente saldr�n todos los caracteres como no imprimibles. Por si
acaso aseg�rate antes probando con otros valores de LC_CTYPE, tales
como es_ES, fr_FR, pt_PT, etc. Para saber m�s posibles valores de
LC_CTYPE, consulta el fichero locale.alias, que tendr�s (si instalaste
X) por /var/X11R6/lib/locale o alg�n otro directorio similar.
Si, y s�lo si, el programa prueba clasifica como no imprimibles los
caracteres que saca, puedes hacer el siguiente cambio en
/usr/include/ctype.h.
Primero haz copia de seguridad del fichero:
# cd /usr/include
# cp -a ctype.h ctype.h.orig
En la l�nea 150 aprox. cambia
#define isprint(c) __isctype((c), _ISprint)
por
#define isprint(c) (((c & 0xff) == 0x1b) || ((c & 0xff) > 0x1f))
Este cambio de ctype.h fue publicado por Pablo Saratxaga
<
[email protected]> en el difunto grupo es.foro.unix.
Yo he recompilado con �l algunos programas como ncftp y tin, y ha
funcionado muy bien.
4.3. Configuraci�n de algunos programas
4.3.1. dosemu
Si arrancamos dosemu en modo texto, los caracteres que ocupen una
posici�n mayor que el 127 ya no se ver�n bien. Para remediarlo se
puede habilitar el acceso a la VGA, con lo que dosemu usar� el juego
de caracteres de nuestra tarjeta gr�fica, que es del tipo IBM, por lo
menos si usamos Linux en un ix86. Esto se consigue poniendo lo
siguiente en el fichero de configuraci�n (generalmente
/etc/dosemu.conf):
video { vga console graphics }
Tambi�n es conveniente que tengamos las siguiente opci�n:
keyboard { layout es-latin1 keybint on rawkeyboard on }
Con esto y el programa keybes.com de Pedro Maicas, no deber�a haber
ning�n problema para ver y teclear los caracteres mayores de 127.
4.3.2. pine
Se puede cambiar la configuraci�n desde el propio programa, o bien
editar el siguiente cambio en el fichero ~/.pinerc:
character-set=ISO-8859-1
Desde la versi�n 3.92, Pine ya permite poner art�culos con 8 bits en
los grupos de noticias (en el correo depender� de la versi�n de
sendmail y de c�mo est� configurado). Para habilitar esta opci�n,
a�adir enable-8bit-nntp-posting a la lista feature-list del fichero
mencionado.
Existe tambi�n un fichero que efect�a cambios globales (para todos los
usuarios del sistema). El fichero se llama pine.conf, y su ubicaci�n
depende de la distribuci�n que usemos.
4.3.3. ELM
A�adir lo siguiente a ~/.elm/elmrc:
charset=ISO-8859-1
displaycharset=ISO-8859-1
textencoding = 8bit
Tambi�n se pueden hacer estos cambios para todos los usuarios. Basta
a�adir lo mismo al fichero general de configuraci�n, que en la
Slackware est� en /var/lib/elm/elm.rc.
4.3.4. TIN
A�adir lo siguiente a ~/.tin/headers:
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Algunas versiones modernas, como la 1.3 unoff, ya incorporan este tipo
de cabeceras, por lo que la edici�n de este fichero es innecesaria.
5. Problemas
A ver qu� has hecho mal ahora... };-)
5.1. La fuente no se carga al arrancar
Aseg�rate de que el script /etc/rc.d/rc.font es invocado desde
/etc/rc.d/rc.M. Si rc.font no aparece mencionado en rc.M, a�ade a este
�ltimo lo siguiente:
if [ -r /etc/rc.d/rc.font ]; then
. /etc/rc.d/rc.font
fi
rc.font deber�a tener permiso de ejecuci�n (chmod +x rc.font).
5.2. El teclado funciona mal en VT(no.)
Aseg�rate de que el bucle de /etc/rc.d/local incluye todas las
terminales virtuales que vayas a usar. Es decir, si tienes 8,
sustituye
for tty in /dev/tty[1-6]*;
por
for tty in /dev/tty[1-8]*;
5.3. Los caracteres gr�ficos no aparecen correctamente
El cambio propuesto para terminfo est� pensado para la fuente
lat1-xx.psf (donde xx representa la resoluci�n: 8, 10...). Otras
fuentes, como iso01.f16, no tienen caracteres gr�ficos (compru�balo
ejecutando showfont). Y otras pueden tenerlos en diferentes posiciones
(como las iso01a).Si est�s en el segundo caso, puedes cambiar la
entrada acsc de terminfo incluyendo los valores en octal para los
diferentes s�mbolos gr�ficos. Consulta man terminfo para conocer la
sintaxis.
5.4. �C�mo se quita esto?
No puedo creer que me hagas esto. Pero en fin, si has seguido los
pasos correctamente, no deber�as tener problemas en dar marcha atr�s.
Haz lo siguiente desde el directorio donde tengas linux.original.tic.
# tic linux.original.tic
# rm /usr/include/ctype.h
# mv /usr/include/ctype.h.orig /usr/include/ctype.h
# rm /etc/rc.d/rc.font
6. Sobre este documento
Este documento ha sido elaborado utilizando Linuxdoc-SGML v1.5.
Si lo has seguido fielmente habr�s conseguido una de estas dos cosas:
1. Adaptar la fuente de tu sistema al est�ndar ISO (m�s o menos) en
vez de usar un sistema propietario, recuperando unos cuantos
s�mbolos muy convenientes o...
2. Descuajeringar totalmente tu configuraci�n.
Si est�s en el primer caso y tienes alguna idea m�s a este respecto
que te gustar�a compartir, no dudes en escribirme a
[email protected]
(Fidonet: 2:343/143.30)
Si est�s en el segundo, no te molestes en escribirme. Mi ego no lo
soportar�a.
En caso de que est�s leyendo este documento localmente y quieras ver
la �ltima versi�n, es posible que est� en
http://www.arrakis.es/~ulusa/linux/fuente_ISO-COMO. extensi�n
donde extensi�n puede ser:
� html: versi�n html.
� sgml.gz: fuente sgml comprimida.
� dvi.gz: fichero dvi comprimido.
� ps.gz: fichero PostScript comprimido.
Tambi�n puedes obtener la fuente que uso en
http://www.arrakis.es/~ulusa/linux/swiss-3-lat1.fnt.gz
Es muy posible que lo que se trata aqu� ya est� explicado en alg�n
HOWTO de los que trae el Linux. No lo s� con seguridad porque nunca
los leo ;-)
6.1. Agradecimientos
A Francisco Jos� Montilla,
[email protected].
A Pablo Saratxaga,
[email protected] por su hack de
isprint.
A todos aquellos que me han enviado comentarios.
7. Anexo: El INSFLUG
El INSFLUG forma parte del grupo internacional Linux Documentation
Project, encarg�ndose de las traducciones al castellano de los Howtos
(Comos), as� como la producci�n de documentos originales en aquellos
casos en los que no existe an�logo en ingl�s.
En el INSFLUG se orienta preferentemente a la traducci�n de documentos
breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
:) ), etc.
Dir�jase a la sede del INSFLUG para m�s informaci�n al respecto.
En la sede del INSFLUG encontrar� siempre las �ltimas versiones de las
traducciones: www.insflug.org. Aseg�rese de comprobar cu�l es la
�ltima versi�n disponible en el Insflug antes de bajar un documento de
un servidor r�plica.
Se proporciona tambi�n una lista de los servidores r�plica (mirror)
del Insflug m�s cercanos a Vd., e informaci�n relativa a otros
recursos en castellano.
Francisco Jos� Montilla,
[email protected].