<!-- 1,1 -->
<!-- Fuente ISO,0 -->
<!-- Urko,Lusa Oiza,ulusa@frodo.com -->
<!-- 0.2,1996-10-15 -->
<!-- fuentes,caracteres,tildes,acentos,carateres extendidos -->
<!-- Software,Localización,Castellano -->

<!doctype linuxdoc system>

<article>

<title>fuente_ISO-COMO

<author>Urko Lusa Oiza, <tt><htmlurl url="mailto:ulusa@frodo.com"
name="ulusa@frodo.com"></tt>

<date>v0.2, rev 2. 15 Oct 1996

<abstract>
Este documento explica cómo usar una fuente <tt>iso-8859-1</tt> 
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.
</abstract>

<!-- Índice -->
<toc>
 
<sect>Introducción <label id="intro">

<p>

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 <it/ISO/, se emplea un extraño <it/``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: &nl;

<bf>Á</bf> &nl;

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 <tt/html/ desde el <tt/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 <tt/man iso&lowbar;8859&lowbar;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 <bf/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 (<tt/mc/, <tt/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 <tt/&num;/ significa que quien debe ejecutarlos es el
superusuario (<tt/root/). Cuando aparecen precedidos por <tt/&dollar;/
significa que pueden ser ejecutados por cualquier usuario.

<sect>Preparando las VT

<p>

Lo primero que se debe hacer es lograr que cuando pulsemos ALT+<tt/n/, salga
por pantalla el carácter que ocupa el lugar <tt/n/ en la fuente y no otro.
Esto se consigue con el siguiente comando:

<tscreen><verb>
$ echo -ne '\033(K'
</verb></tscreen>

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 <tt>/etc/rc.d/rc.local</tt>:

<tscreen><verb>
# 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
</verb></tscreen>

La línea que contiene <tt/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:

<tscreen><verb>
# setfont /usr/lib/kbd/consolefonts/lat1-16.psf
</verb></tscreen>

Para hacer que ésto ocurra automáticamente al arrancar, pon la orden en
<tt>/etc/rc.d/rc.font</tt>. Puedes probar a cambiar a dicha fuente,
teclear <tt/echo -ne '&bsol;033(K'/ y volver
a la sección <ref id="intro" name="introducción">.
Ahora deberías ver correctamente el carácter.
Recuerda que el <tt/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.

<sect>Adaptando <tt/terminfo/

<p>

La definición para la terminal de Linux que trae <tt/ncurses/ está pensada para
usar los códigos de la <tt/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
<tt>/usr/lib/terminfo/l/linux</tt>.

<bf/NOTA/: si tu distribución de Linux es antigua, es posible que la
definición de terminal esté en <tt>/usr/lib/terminfo/c/console</tt>. Teclea

<tscreen><verb>
$ echo $TERM
</verb></tscreen>

para saber cuál te corresponde.

Primeramente deberemos extraer el fichero binario en forma de texto
editable:

<tscreen><verb>
# infocmp > linux.original.tic
# cp linux.original.tic linux.tic
</verb></tscreen>

<bf/NOTA/: si tu distribución de Linux es antigua, es posible que el
equivalente a <tt/infocmp/ se llame <tt/untic/.

<bf/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 <tt/linux.original.tic/ por si es necesario volver a
restaurar la definición original, y edita los cambios sobre <tt/linux.tic/.
Éstos son los siguientes:

<itemize>
<item>Busca las siguientes entradas y bórralas:
	<itemize>
	<item><tt/smacs/
	<item><tt/rmacs/
	<item><tt/acsc/
	</itemize>
<bf/IMPORTANTE/: Las entradas están delimitadas por comas y puede haber
varias en una misma línea. Ten cuidado en borrar <bf/sólo/ las entradas que
se mencionan arriba.
<item>Añade las siguientes líneas:

<tscreen><verb>
        smacs=\E(K,
        acsc=l\206m\203k\214j\211u\215t\207v\213w\216q\212x\205,
        rmacs=\E)K,
</verb></tscreen>

<item>Graba los cambios y sal del editor.
</itemize>

Ya puedes proceder a compilar:

<tscreen><verb>
# tic linux.tic
</verb></tscreen>

Tras lo cual ya debería estar listo el sistema.

<sect1>Probando si funciona

<p>

Seguramente tendrás el Midnight Commander. Ejecútalo para ver si los cambios
han tenido efecto.

<it/¡Pero si sale hecho un cristo!/

Calma, calma. Pulsa <tt/F9/ y entra en el menú <it/Options/. Selecciona
<it/Display bits/ y elige la opción <it/Full 8 bits/. Asegúrate de pasar por
el <it/Ok/ o darle con el ratón. ¿Mejor ahora? Vuelve a entrar en el menú y
graba los cambios con <it/Save setup/.

En caso de que estés leyendo esto con <tt/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 <tt/iso8859-1.html/, y si estás
leyendo esto conectado puedes verla en
<tt><htmlurl url="http://www.uni-passau.de/&tilde;ramsch/iso8859-1.html"
name="http://www.uni-passau.de/&tilde;ramsch/iso8859-1.html"></tt>

<sect1>Nota sobre <tt/slang/

<p>

Las versiones de <tt/slang/ anteriores a la <tt/0.99-32/ no determinan cuáles 
son los caracteres gráficos leyendo <tt/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
<tt><htmlurl url="ftp://space.mit.edu/pub/davis/slang"
name="ftp://space.mit.edu/pub/davis/slang"></tt>.

Algunos programas que usan <tt/slang/ son <tt/slrn/, <tt/jed/ y <tt/lynx/ 
(si se compila con esta opción).

<sect1>Nota sobre <tt/reset/

<p>

Algo que no sé cómo evitar es que al ejecutar <tt/reset/ los carateres
vuelvan a ser ``remapeados'' como si la fuente fuese la <tt/cp437/. El
único apaño que se me ocurre es incluir esta línea en <tt>/etc/profile</tt>
o en el <tt/.profile/ del usuario:

<tscreen><verb>
alias reset='reset ; echo -ne "\033(K"'
</verb></tscreen>

<sect>Más gaitas

<p>

Mientras esperamos el día en que las distribuciones de Linux traigan las
diferentes definiciones de <tt/locale/ para su internacionalización, hay
algunas cosillas que podemos afinar.

<sect1>Variables de entorno

<p>

Puedes ponerlas en <tt>/etc/profile</tt> o en tu <tt/.profile/
particular. He seguido la sintaxis de <tt/bash/. Si usas otro shell
posiblemente tengas que cambiar <tt/export/ por la orden equivalente.

<sect2><tt/less/

<p>

Para visualizar con <tt/less/ ficheros que contengan caracteres de 8 bits:

<tscreen><verb>
export LESSCHARDEF=8bcccbcc18b.
</verb></tscreen>

Esto hará que se consideren como imprimibles <bf/todos/ los caracteres desde
el 32 hasta el 255, lo que puede acarrear problemas si se usa en una
terminal <tt/vt200/, por ejemplo, pero permite ver caracteres gráficos desde el
PC. Si tienes una terminal en <tt/ttySn/ puedes poner esto:

<tscreen><verb>
export LESSCHARDEF=8bcccbcc18b.
if [ "`tty`" = "/dev/ttySn" ]
then
   TERM=vt220d
   unset LESSCHARDEF
   export LESSCHARSET=latin1
else
   TERM=linux
fi
export TERM
</verb></tscreen>

lo que hará que si se entra por <tt/ttySn/, <tt/less/ no considere como
imprimibles los caracteres del 128 al 160 (los caracteres gráficos en la
fuente <tt/lat1-16.psf/, pero que son interpretados como caracteres de control
por el <tt/vt200/).

<sect2><tt>LANG, LC&lowbar;CTYPE</tt>, etc...

<p>

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:

<tscreen><verb>
export LANG=es_ES
</verb></tscreen>

<sect1><tt/isprint/

<p>

Esta es la función del sistema que decide si un carácter es imprimible o no.
Si la distribución soportase <tt/locale/, debería funcionar bien, pero tal
como está ahora la cuestión, sólo devuelve como imprimibles los caracteres
<tt/ASCII/. 

Esto provoca que muchos programas compilados con <tt/&num;include
&lt;ctype.h&gt;/ 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:

<tscreen><verb>
#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");
	}
}
</verb></tscreen>

Graba el texto anterior con el original nombre de <tt/prueba.c/ y compílalo
con

<tscreen><verb>
$ gcc -s -o prueba prueba.c
</verb></tscreen>

y pruébalo así:

<tscreen><verb>
$ export LC_CTYPE=ISO-8859-1
$ ./prueba
</verb></tscreen>

Seguramente saldrán todos los caracteres como no imprimibles. Por si acaso
asegúrate antes probando con otros valores de <tt/LC_CTYPE/, tales como
<tt/es_ES/, <tt/fr_FR/, <tt/pt_PT/, etc. Para saber más posibles valores de
<tt/LC_CTYPE/, consulta el fichero <tt/locale.alias/, que tendrás (si
instalaste X) por <tt>/var/X11R6/lib/locale</tt> o algún otro directorio
similar.

Si, y <bf/sólo si/, el programa <tt/prueba/ clasifica como no imprimibles
los caracteres que saca, puedes hacer el siguiente cambio en
<tt>/usr/include/ctype.h</tt>.

Primero haz copia de seguridad del fichero:

<tscreen><verb>
# cd /usr/include
# cp -a ctype.h ctype.h.orig
</verb></tscreen>

En la línea 150 aprox. cambia
<tscreen><verb>
#define      isprint(c)      __isctype((c), _ISprint)
</verb></tscreen>

por

<tscreen><verb>
#define isprint(c)      (((c & 0xff) == 0x1b) || ((c & 0xff) > 0x1f))
</verb></tscreen>

Este cambio de <tt/ctype.h/ fue publicado por Pablo Saratxaga
<tt><htmlurl url="mailto:srtxg@f2219.n293.z2.fidonet.org"
name="&lt;srtxg@f2219.n293.z2.fidonet.org&gt;"></tt> en el difunto grupo <tt>es.foro.unix.</tt>
Yo he recompilado con él algunos programas como <tt/ncftp/ y <tt/tin/, y ha funcionado
muy bien.

<sect1>Configuración de algunos programas

<p>

<sect2><tt/dosemu/

<p>

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 <tt/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 <tt>/etc/dosemu.conf</tt>):

<tscreen><verb>
video { vga  console  graphics }
</verb></tscreen>

También es conveniente que tengamos las siguiente opción:

<tscreen><verb>
keyboard {  layout es-latin1  keybint on  rawkeyboard on  }
</verb></tscreen>

Con esto y el programa <tt/keybes.com/ de Pedro Maicas, no debería haber
ningún problema para ver y teclear los caracteres mayores de 127.

<sect2><tt/pine/

<p>

Se puede cambiar la configuración desde el propio programa, o bien
editar el siguiente cambio en el fichero <tt>&tilde;/.pinerc</tt>:

<tscreen><verb>
character-set=ISO-8859-1
</verb></tscreen>

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
<tt/enable-8bit-nntp-posting/ a la lista <tt/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 <tt/pine.conf/, y su
ubicación depende de la distribución que usemos.

<sect2><tt/ELM/

<p>

Añadir lo siguiente a <tt>&tilde;/.elm/elmrc</tt>:

<tscreen><verb>
charset=ISO-8859-1
displaycharset=ISO-8859-1
textencoding = 8bit
</verb></tscreen>

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 <tt>/var/lib/elm/elm.rc</tt>.

<sect2><tt/TIN/

<p>

Añadir lo siguiente a <tt>&tilde;/.tin/headers</tt>:

<tscreen><verb>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
</verb></tscreen>

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.

<sect>Problemas

<p>

A ver qué <bf/has/ hecho mal ahora... <tt/};-)/

<sect1>La fuente no se carga al arrancar

<p>

Asegúrate de que el script <tt>/etc/rc.d/rc.font</tt> es invocado desde
<tt>/etc/rc.d/rc.M</tt>. Si <tt/rc.font/ no aparece mencionado en
<tt/rc.M/, añade a este último lo siguiente:

<tscreen><verb>
if [ -r /etc/rc.d/rc.font ]; then
  . /etc/rc.d/rc.font
  fi
</verb></tscreen>

<tt/rc.font/ debería tener permiso de ejecución (<tt/chmod +x rc.font/).

<sect1>El teclado funciona mal en VT(no.)

<p>

Asegúrate de que el bucle de <tt>/etc/rc.d/local</tt> incluye todas las
terminales virtuales que vayas a usar. Es decir, si tienes 8, sustituye

<tscreen><verb>
for tty in /dev/tty[1-6]*;
</verb></tscreen>

por

<tscreen><verb>
for tty in /dev/tty[1-8]*;
</verb></tscreen>

<sect1>Los caracteres gráficos no aparecen correctamente

<p>

El cambio propuesto para <tt/terminfo/ está pensado para la fuente
lat1-<it/xx/.psf (donde <it/xx/ representa la resolución: 8, 10...). 
Otras fuentes, como <tt/iso01.f16/, no tienen caracteres gráficos
(compruébalo ejecutando <tt/showfont/). Y otras pueden tenerlos en
diferentes posiciones (como las iso01a).Si estás en el segundo caso,
puedes cambiar la entrada <tt/acsc/ de <tt/terminfo/ incluyendo los
valores en octal para los diferentes símbolos gráficos. Consulta <tt/man
terminfo/ para conocer la sintaxis. 

<sect1>¿Cómo se quita esto?

<p>

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 <tt/linux.original.tic/. 

<tscreen><verb>
# 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
</verb></tscreen>

<sect>Sobre este documento
<p>

Este documento ha sido elaborado utilizando <tt><htmlurl
url="http://www.informatik.tu-muenchen.de/&tilde;schwarz/linuxdoc-sgml/" 
name="Linuxdoc-SGML"></tt> <tt/v1.5./

Si lo has seguido fielmente habrás conseguido una de estas dos cosas:

<enum>
<item>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...
<item>Descuajeringar totalmente tu configuración.
</enum>

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 <tt><htmlurl
url="mailto:ulusa@frodo.com" name="ulusa@frodo.com"></tt> (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

<tt>http://www.arrakis.es/&tilde;ulusa/linux/fuente&lowbar;ISO-COMO.</tt>
<it/extensión/

donde <it/extensión/ puede ser:

<itemize>
<item><tt><htmlurl
url="http://www.arrakis.es/&tilde;ulusa/linux/fuente&lowbar;ISO-COMO.html"
name="html"></tt>: versión html.

<item><tt><htmlurl url="http://www.arrakis.es/&tilde;ulusa/linux/fuente&lowbar;ISO-COMO.sgml.gz"
name="sgml.gz"></tt>: fuente sgml comprimida.

<item><tt><htmlurl
url="http://www.arrakis.es/&tilde;ulusa/linux/fuente&lowbar;ISO-COMO.dvi.gz"
name="dvi.gz"></tt>: fichero dvi comprimido.

<item><tt><htmlurl
url="http://www.arrakis.es/&tilde;ulusa/linux/fuente&lowbar;ISO-COMO.ps.gz"
name="ps.gz"></tt>: fichero PostScript comprimido.
</itemize>

También puedes obtener la fuente que uso en

<tt><htmlurl url="http://www.arrakis.es/&tilde;ulusa/linux/swiss-3-lat1.fnt.gz"
name="http://www.arrakis.es/&tilde;ulusa/linux/swiss-3-lat1.fnt.gz"></tt>

Es muy posible que lo que se trata aquí ya esté explicado en algún
<it/HOWTO/ de los que trae el Linux. No lo sé con seguridad porque nunca los
leo ;-)

<sect1>Agradecimientos
<p>

A Francisco José Montilla, <tt><htmlurl url="mailto:pacopepe@insflug.org"
name="pacopepe@insflug.org"></tt>.

A Pablo Saratxaga,
<tt><htmlurl url="mailto:srtxg@f2219.n293.z2.fidonet.org"
name="srtxg@f2219.n293.z2.fidonet.org"></tt> por su <it/hack/ de
<tt/isprint/.

A todos aquellos que me han enviado comentarios.

<sect>Anexo: El INSFLUG <label id="Grupos">
<p>

El <em/INSFLUG/ forma parte del grupo internacional 
<it/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 <bf/INSFLUG/ se orienta preferentemente a la traducción de documentos
breves, como los <em/COMOs/ y <em/PUFs/ (<bf/P/reguntas de
<bf/U/so <bf/F/recuente, las <it/FAQs/. <tt/:)/ ), etc.

Diríjase a la sede del INSFLUG para más información al respecto.

En la sede del INSFLUG encontrará siempre las <bf/últimas/ versiones 
de las traducciones:  <tt><htmlurl url="http://www.insflug.org" 
name="www.insflug.org"></tt>. 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 (<it/mirror/) del Insflug más cercanos a Vd.,  
e información relativa a otros recursos en castellano.

Francisco José Montilla, <tt><htmlurl url="mailto:pacopepe@insflug.org"
name="pacopepe@insflug.org"></tt>.
</article>
