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].