  fuente_ISO-COMO
  Urko Lusa Oiza, ulusa@frodo.com
  v0.2, rev 2. 15 Oct 1996

  Este documento explica cmo 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
  apao que arrastra el lastre de la pgina de cdigos de IBM.
  ______________________________________________________________________

  ndice General:

  1.      Introduccin

  2.      Preparando las VT

  3.      Adaptando terminfo

  3.1.    Probando si funciona

  3.2.    Nota sobre slang

  3.3.    Nota sobre reset

  4.      Ms gaitas

  4.1.    Variables de entorno

  4.1.1.  less

  4.1.2.  LANG, LC_CTYPE , etc...

  4.2.    isprint

  4.3.    Configuracin 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 grficos no aparecen correctamente

  5.4.    Cmo se quita esto?

  6.      Sobre este documento

  6.1.    Agradecimientos

  7.      Anexo: El INSFLUG
  ______________________________________________________________________

  1.  Introduccin

  Las distribuciones de Linux que conozco traen por defecto la misma
  fuente que el DOS (pgina de cdigos 437). Para hacer que el sistema
  funcione como si la fuente fuera ISO, se emplea un extrao ``remapeo''
  para hacer que al representarse determinado carcter, no salga por
  pantalla el que en la fuente ocupa dicha posicin.

  Para saber si este es el caso de tu sistema, mira el siguiente
  carcter:

  

  Si ests viendo una A mayscula con acento agudo, este documento no te
  hace falta. Si ves un cuadrado, te puede interesar. Por supuesto lo
  anterior se aplica si ests mirando este documento en su versin texto
  desde la consola, o bien la versin html desde el lynx. Si lo ests
  viendo desde X o leyendo una versin impresa, deberas ver la A en
  cualquier caso.

  Tambin puedes probar man iso_8859_1 desde la consola (segn tu
  distribucin y de si instalaste el manual o no, es posible que no
  tengas esta pgina) y comprobar si los caracteres mostrados se
  corresponden con su descripcin y si ves correctamente todos ellos. Es
  muy posible que gran parte aparezcan como cuadrados en vez de
  corresponderse con la descripcin 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 prdida de smbolos
  grficos, y que si se hace bien, seguiremos viendo los cuadraditos en
  nuestras aplicaciones favoritas (mc, slrn, etc.).La nica pega es que
  las lneas horizontales no salen unidas, cosa que creo que se debe a
  que la VGA slo 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 carcter 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 ms cmodo es
  aadir 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 lnea que contiene setleds no es necesaria para el propsito de
  este documento, pero sera 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 automticamente 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 seccin ``introduccin''.  Ahora
  deberas ver correctamente el carcter.  Recuerda que el echo slo
  tiene efecto sobre la terminal en la que se teclea, por lo que tendrs
  que teclearlo en la misma en la que ests leyendo esto.

  3.  Adaptando terminfo

  La definicin para la terminal de Linux que trae ncurses est pensada
  para usar los cdigos de la cp437. Esto provocar que al cambiar de
  fuente veamos letras en vez de los smbolos grficos. Afortunadamente
  esto no es difcil de solucionar cambiando la definicin de terminal
  en /usr/lib/terminfo/l/linux.

  NOTA: si tu distribucin de Linux es antigua, es posible que la
  definicin de terminal est en /usr/lib/terminfo/c/console. Teclea

       $ echo $TERM

  para saber cul 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 distribucin de Linux es antigua, es posible que el
  equivalente a infocmp se llame untic.

  NOTA2: asegrate de estar en la consola normal (modo texto). Si ests
  en un xterm, ser sta la informacin que se vuelque al fichero.

  Guarda el fichero linux.original.tic por si es necesario volver a
  restaurar la definicin original, y edita los cambios sobre linux.tic.
  stos son los siguientes:

    Busca las siguientes entradas y brralas:

    smacs

    rmacs

    acsc

     IMPORTANTE: Las entradas estn delimitadas por comas y puede haber
     varias en una misma lnea. Ten cuidado en borrar slo las entradas
     que se mencionan arriba.

    Aade las siguientes lneas:

               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 debera estar listo el sistema.

  3.1.  Probando si funciona

  Seguramente tendrs el Midnight Commander. Ejectalo 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 opcin Full 8 bits. Asegrate de pasar por el Ok o
  darle con el ratn. Mejor ahora? Vuelve a entrar en el men y graba
  los cambios con Save setup.

  En caso de que ests leyendo esto con lynx, debes saber que en las
  fuentes de este navegador viene una pgina que te ser muy til para
  ver los cambios que has realizado. Dicha pgina se llama
  iso8859-1.html, y si ests 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 cules
  son los caracteres grficos leyendo terminfo, sino que usan unos
  predeterminados (si la terminal es linux). Si tu versin de esta
  librera es anterior, puedes actualizarte cogiendo la ltima versin
  de ftp://space.mit.edu/pub/davis/slang.

  Algunos programas que usan slang son slrn, jed y lynx (si se compila
  con esta opcin).

  3.3.  Nota sobre reset

  Algo que no s cmo evitar es que al ejecutar reset los carateres
  vuelvan a ser ``remapeados'' como si la fuente fuese la cp437. El
  nico apao que se me ocurre es incluir esta lnea en /etc/profile o
  en el .profile del usuario:

       alias reset='reset ; echo -ne "\033(K"'

  4.  Ms gaitas

  Mientras esperamos el da en que las distribuciones de Linux traigan
  las diferentes definiciones de locale para su internacionalizacin,
  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 grficos
  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 grficos 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 alfabtico, etc. Desgraciadamente que yo sepa an no
  estn implementadas en las distribuciones habituales de Linux. De
  todas formas puedes aadir esto:

       export LANG=es_ES

  4.2.  isprint

  Esta es la funcin del sistema que decide si un carcter es imprimible
  o no.  Si la distribucin soportase locale, debera funcionar bien,
  pero tal como est ahora la cuestin, slo 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 continuacin 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 complalo
  con

       $ gcc -s -o prueba prueba.c

  y prubalo as:

       $ export LC_CTYPE=ISO-8859-1
       $ ./prueba

  Seguramente saldrn todos los caracteres como no imprimibles. Por si
  acaso asegrate antes probando con otros valores de LC_CTYPE, tales
  como es_ES, fr_FR, pt_PT, etc. Para saber ms posibles valores de
  LC_CTYPE, consulta el fichero locale.alias, que tendrs (si instalaste
  X) por /var/X11R6/lib/locale o algn otro directorio similar.

  Si, y slo 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 lnea 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
  <srtxg@f2219.n293.z2.fidonet.org> 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.  Configuracin de algunos programas

  4.3.1.  dosemu

  Si arrancamos dosemu en modo texto, los caracteres que ocupen una
  posicin mayor que el 127 ya no se vern bien. Para remediarlo se
  puede habilitar el acceso a la VGA, con lo que dosemu usar el juego
  de caracteres de nuestra tarjeta grfica, que es del tipo IBM, por lo
  menos si usamos Linux en un ix86. Esto se consigue poniendo lo
  siguiente en el fichero de configuracin (generalmente
  /etc/dosemu.conf):

       video { vga  console  graphics }

  Tambin es conveniente que tengamos las siguiente opcin:

       keyboard {  layout es-latin1  keybint on  rawkeyboard on  }

  Con esto y el programa keybes.com de Pedro Maicas, no debera haber
  ningn problema para ver y teclear los caracteres mayores de 127.

  4.3.2.  pine

  Se puede cambiar la configuracin desde el propio programa, o bien
  editar el siguiente cambio en el fichero ~/.pinerc:

       character-set=ISO-8859-1

  Desde la versin 3.92, Pine ya permite poner artculos con 8 bits en
  los grupos de noticias (en el correo depender de la versin de
  sendmail y de cmo est configurado). Para habilitar esta opcin,
  aadir enable-8bit-nntp-posting a la lista feature-list del fichero
  mencionado.

  Existe tambin un fichero que efecta cambios globales (para todos los
  usuarios del sistema). El fichero se llama pine.conf, y su ubicacin
  depende de la distribucin que usemos.

  4.3.3.  ELM

  Aadir lo siguiente a ~/.elm/elmrc:

       charset=ISO-8859-1
       displaycharset=ISO-8859-1
       textencoding = 8bit

  Tambin se pueden hacer estos cambios para todos los usuarios. Basta
  aadir lo mismo al fichero general de configuracin, que en la
  Slackware est en /var/lib/elm/elm.rc.

  4.3.4.  TIN

  Aadir 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 edicin de este fichero es innecesaria.

  5.  Problemas

  A ver qu has hecho mal ahora... };-)

  5.1.  La fuente no se carga al arrancar

  Asegrate 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, aade a este
  ltimo lo siguiente:

       if [ -r /etc/rc.d/rc.font ]; then
         . /etc/rc.d/rc.font
         fi

  rc.font debera tener permiso de ejecucin (chmod +x rc.font).

  5.2.  El teclado funciona mal en VT(no.)

  Asegrate 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 grficos no aparecen correctamente

  El cambio propuesto para terminfo est pensado para la fuente
  lat1-xx.psf (donde xx representa la resolucin: 8, 10...).  Otras
  fuentes, como iso01.f16, no tienen caracteres grficos (comprubalo
  ejecutando showfont). Y otras pueden tenerlos en diferentes posiciones
  (como las iso01a).Si ests en el segundo caso, puedes cambiar la
  entrada acsc de terminfo incluyendo los valores en octal para los
  diferentes smbolos grficos. Consulta man terminfo para conocer la
  sintaxis.

  5.4.  Cmo se quita esto?

  No puedo creer que me hagas esto. Pero en fin, si has seguido los
  pasos correctamente, no deberas tener problemas en dar marcha atrs.
  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 habrs conseguido una de estas dos cosas:

  1. Adaptar la fuente de tu sistema al estndar ISO (ms o menos) en
     vez de usar un sistema propietario, recuperando unos cuantos
     smbolos muy convenientes o...

  2. Descuajeringar totalmente tu configuracin.

  Si ests en el primer caso y tienes alguna idea ms a este respecto
  que te gustara compartir, no dudes en escribirme a ulusa@frodo.com
  (Fidonet: 2:343/143.30)

  Si ests en el segundo, no te molestes en escribirme. Mi ego no lo
  soportara.

  En caso de que ests leyendo este documento localmente y quieras ver
  la ltima versin, es posible que est en

  http://www.arrakis.es/~ulusa/linux/fuente_ISO-COMO.  extensin

  donde extensin puede ser:

    html: versin html.

    sgml.gz: fuente sgml comprimida.

    dvi.gz: fichero dvi comprimido.

    ps.gz: fichero PostScript comprimido.

  Tambin 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 algn
  HOWTO de los que trae el Linux. No lo s con seguridad porque nunca
  los leo ;-)

  6.1.  Agradecimientos

  A Francisco Jos Montilla, pacopepe@insflug.org.

  A Pablo Saratxaga, srtxg@f2219.n293.z2.fidonet.org 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, encargndose de las traducciones al castellano de los Howtos
  (Comos), as como la produccin de documentos originales en aquellos
  casos en los que no existe anlogo en ingls.

  En el INSFLUG se orienta preferentemente a la traduccin de documentos
  breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
  :) ), etc.

  Dirjase a la sede del INSFLUG para ms informacin al respecto.

  En la sede del INSFLUG encontrar siempre las ltimas versiones de las
  traducciones:  www.insflug.org. Asegrese de comprobar cul es la
  ltima versin disponible en el Insflug antes de bajar un documento de
  un servidor rplica.

  Se proporciona tambin una lista de los servidores rplica (mirror)
  del Insflug ms cercanos a Vd., e informacin relativa a otros
  recursos en castellano.

  Francisco Jos Montilla, pacopepe@insflug.org.

