353 lines
13 KiB
XML
353 lines
13 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!DOCTYPE html
|
||
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
||
"tuteurs://DTD/tml.dtd">
|
||
<html>
|
||
<head>
|
||
<title>Unicode</title>
|
||
</head>
|
||
<body>
|
||
|
||
<div class="attention">
|
||
Attention, cette page n'est pas à jour. En 2012, UTF-8 est proposé par
|
||
défaut et fonctionne sur les machines de l'école sans avoir à faire
|
||
d'efforts particuliers.
|
||
</div>
|
||
|
||
<h1>Taper de l'Unicode</h1>
|
||
|
||
<div class="resume">
|
||
<p>
|
||
Nous allons voir ici comment taper de l'Unicode, ce qui recouvre plus ou
|
||
moins toutes les langues et tous les alphabets bizarres de la planète, et
|
||
peut-être même d'au-delà (l'intégration du Tengwar est en discussion).
|
||
</p>
|
||
</div>
|
||
|
||
<h2>Se préparer</h2>
|
||
|
||
<h3>Bien comprendre ce que ça veut dire</h3>
|
||
|
||
<p>
|
||
Unicode, c'est une collection de caractères utilisés dans toutes les langues
|
||
du monde, avec un numéro pour chaque caractère. Ce qu'on entend par « taper
|
||
de l'Unicode », c'est taper un fichier texte qui utilise ces caractères,
|
||
probablement au delà de simplement les caractères latins. Pour bien
|
||
comprendre tout ce qui va suivre, il est probablement utile d'avoir lu
|
||
<a href="../../theorie/encodages.html">notre page théorique sur les
|
||
encodages</a>.
|
||
</p>
|
||
|
||
<p>
|
||
Les difficultés qui se présentent sont principalement de mettre en place un
|
||
environnement permettant de taper et d'afficher ces caractères, de choisir
|
||
et configurer un éditeur pour travailler en Unicode, et de taper des
|
||
caractères qui ne sont pas disponibles sur le clavier.
|
||
</p>
|
||
|
||
<p>
|
||
Note : partout dans ce texte, quand il sera question d'un fichier en
|
||
Unicode, ça sous-entendra un fichier codé en UTF-8.
|
||
</p>
|
||
|
||
<h3>Choisir un éditeur</h3>
|
||
|
||
<p>
|
||
La gestion d'Unicode demande un boulot non trivial de la part de l'éditeur,
|
||
c'est pourquoi la plupart n'en sont hélas pas capables.
|
||
</p>
|
||
|
||
<div class="ens">
|
||
<p>
|
||
Parmi les éditeurs disponibles ici, seuls <a href="vim.html">Vim</a> et
|
||
<a href="emacs.html">Emacs</a> en sont capables. Par chance, ce sont, de
|
||
loin, les deux meilleurs éditeurs, et vous avez tout intérêt à choisir l'un
|
||
d'eux même sans ça.
|
||
</p>
|
||
</div>
|
||
|
||
|
||
<h2>Un environnement pour travailler</h2>
|
||
|
||
<h3><a name="uxterm">Un terminal Unicode</a></h3>
|
||
|
||
<p>
|
||
Sauf si vous comptez utiliser exclusivement Emacs en mode graphique, vous
|
||
avez besoin d'un terminal capable d'afficher de l'Unicode et d'en recevoir
|
||
de l'utilisateur.
|
||
</p>
|
||
|
||
<div class="ens">
|
||
<p>
|
||
L'émulateur de terminal par défaut proposé sur les machines de l'École
|
||
(<code>gnome-terminal</code> supporte l'Unicode.
|
||
</p>
|
||
</div>
|
||
|
||
<div class="attention">
|
||
<h1>&icone.attention; Attention &icone.attention;</h1>
|
||
<p>
|
||
Un terminal Unicode est un terminal très particulier. Si vous lancez dedans
|
||
une application qui ne connaît pas Unicode, il est très probable qu'elle
|
||
fasse à peu près n'importe quoi (et le pire c'est que ça peut passer
|
||
inaperçu pendant un temps). Donc n'utilisez de terminal Unicode que pour des
|
||
applications prévues pour.
|
||
</p>
|
||
<p>
|
||
Ceci concerne en particulier Pine, ainsi que Flrn (Forum ; même si celui-ci
|
||
a un semblant d'options pour gérer Unicode).
|
||
</p>
|
||
</div>
|
||
|
||
<p>
|
||
Si on n'a pas à sa disposition le script uxterm, mais qu'on est sous Unix,
|
||
on peut quand même lancer xterm avec les bonnes options :
|
||
</p>
|
||
|
||
<pre>
|
||
<span class="prompt">drakkar ~ $</span> LC_CTYPE=en_US.UTF-8 xterm \
|
||
-fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 \
|
||
-fw -misc-fixed-medium-r-normal-ja-18-120-100-100-c-180-iso10646-1 -u8
|
||
</pre>
|
||
|
||
<p>
|
||
Les deux polices indiquées sont fournies avec le projet
|
||
<a href="http://www.xfree86.org/">XFree86</a>, et sont des polices Unicode
|
||
relativement complètes. Il est possible d'en utiliser d'autres, mais il faut
|
||
les choisir en <code>-iso10646-1</code>.
|
||
</p>
|
||
|
||
<p>
|
||
Il se peut également que vous ayez le script uxterm, mais qu'il choisisse
|
||
des polices trop pauvres, avec lesquelles la moitié de vos caractères
|
||
apparaîtront comme des blancs ou des carrés : dans ce cas, précisez les
|
||
polices à utiliser avec la commande ci-dessus.
|
||
</p>
|
||
|
||
<p>
|
||
<strong>Attention</strong>, si vous vous <strong>loguez à distance</strong>,
|
||
une commande est nécessaire pour informer les applications distantes que le
|
||
terminal est en Unicode :
|
||
</p>
|
||
<pre><span class="prompt">drakkar ~ $</span> export LC_CTYPE=en_US.UTF-8</pre>
|
||
|
||
<p>
|
||
Note : inutile d'essayer de changer le <code>en_US</code> en autre chose,
|
||
c'est le <code>.UTF-8</code> qui est important ici, pour le reste il suffit
|
||
que ce soit un code qui existe.
|
||
</p>
|
||
|
||
<p>
|
||
Sous windows, avec
|
||
<a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">PuTTY</a>,
|
||
il est possible d'avoir un terminal Unicode : dans les options de la
|
||
connexion, dans la rubrique « Window », sous-rubrique « Translation »,
|
||
indiquez <code>UTF-8</code> à « Character set translation on received
|
||
data ».
|
||
</p>
|
||
|
||
<p>
|
||
Sous MacOS, avec Terminal.app, il est également possible d'avoir un terminal
|
||
Unicode : dans le menu « Terminal, Réglages de la fenêtre », sous-menu
|
||
« Affichage », sous-sous-menu « Codage du jeu de caractères »,
|
||
choisissez « Unicode (UTF-8) ».
|
||
</p>
|
||
|
||
<h3>Un éditeur au courant</h3>
|
||
|
||
<p>
|
||
Si vous avez correctement mis en place votre terminal (en particulier le
|
||
<code>LC_CTYPE</code> si vous vous connectez à distance), il n'y a quasiment
|
||
rien à faire.
|
||
</p>
|
||
|
||
<p>
|
||
<strong>Avec Vim</strong>, après avoir lancé normalement votre éditeur, vous
|
||
pouvez vérifier qu'il est a bien détecté que vous étiez en Unicode avec :
|
||
</p>
|
||
<pre>:set encoding
|
||
encoding=utf-8</pre>
|
||
|
||
<p>
|
||
Si quand vous ouvrez un fichier, Vim écrit <code>[converted]</code> à côté
|
||
du nom, c'est qu'il a détecté que ce fichier n'était pas en Unicode ; il
|
||
note quel était le codage de ce fichier, et l'utilisera pour sauver (et se
|
||
plaindra s'il y a des caractères impossibles à sauver). On peut changer ça
|
||
avec l'option <code>fileencoding</code>.
|
||
</p>
|
||
|
||
<p>
|
||
<strong>Avec Emacs</strong>, si on l'utilise en mode graphique, il
|
||
n'arrive pas forcément à trouver tout seul les bonnes polices (on peut
|
||
taper correctement, mais tous les caractères exotiques sont affichés
|
||
comme des carrés). Une solution est de mettre la ligne suivante dans
|
||
votre fichier <code>.Xresource</code> qui se trouve dans votre
|
||
répertoire personnel :
|
||
</p>
|
||
<pre>
|
||
Emacs.font: 9x15
|
||
</pre>
|
||
|
||
<p>
|
||
Pour qu'Emacs veuille travailler en Unicode, le mieux est de le lancer en
|
||
ayant positionné <code>LC_CTYPE</code>. Si ce n'est pas fait, on peut le lui
|
||
dire a posteriori avec <kbd>M-x prefer-coding-system</kbd>, puis
|
||
<kbd>mule-utf-8</kbd> ; cependant, certaines facilités (comme compose-o-e
|
||
pour œ ne seront ainsi pas disponibles.
|
||
</p>
|
||
|
||
<p>
|
||
Si on lance Emacs dans un terminal il faut faire une manipulation
|
||
supplémentaire : <kbd>M-x set-keyboard-coding-system</kbd> puis
|
||
<kbd>mule-utf-8</kbd>.
|
||
</p>
|
||
|
||
<p>
|
||
Quand vous ouvrez un fichier qui n'est pas en Unicode, Emacs va peut-être le
|
||
détecter correctement. Pour le savoir, regardez en bas à gauche : un
|
||
<code>u</code> indique un fichier en Unicode, un <code>1</code> indique un
|
||
fichier en latin-1. À la sauvegarde, Emacs tentera de garder le même codage,
|
||
et à défaut passera en Unicode).
|
||
</p>
|
||
|
||
<p>
|
||
Dans le cas de Vim comme d'Emacs, il est possible d'aider la détection
|
||
automatique et le choix du codage d'un fichier. Nous ne nous y attarderons
|
||
pas dans cette page : travaillez tout le temps en Unicode quand le latin-1
|
||
ne suffit pas et tout se passera bien.
|
||
</p>
|
||
|
||
|
||
<h2>Taper ce qu'on veut</h2>
|
||
|
||
<p>
|
||
C'est bien d'avoir un terminal qui affiche de l'Unicode, mais sur un clavier
|
||
occidental normalement constitué, taper un Ω, un ҳ, un
|
||
פ, un ฆ ou un 鰻, ce n'est pas facile. Le problème se
|
||
résout avec ce qu'on appelle des <em>méthodes d'entrée</em>. Vous connaissez
|
||
certainement déjà celle qui utilise la touche Compose pour taper les accents
|
||
sur les claviers américains.
|
||
</p>
|
||
|
||
<h3>Les méthodes d'entrée d'UXTerm</h3>
|
||
|
||
<p>
|
||
Si vous lancez <code>uxterm</code> sur (ou depuis) une station Sun, vous
|
||
remarquerez en bas à gauche une petite fenêtre où est écrit
|
||
« English/European ». Cette fenêtre indique que le clavier est en mode
|
||
occidental, il est possible de changer de mode.
|
||
</p>
|
||
|
||
<ul>
|
||
<li>Avec <kbd>Compose-a-r</kbd>, on passe en <strong>arabe</strong>.</li>
|
||
<li>Avec <kbd>Compose-c-c</kbd>, on passe en <strong>cyrillique</strong>.</li>
|
||
<li>Avec <kbd>Compose-g-g</kbd>, on passe en <strong>grec</strong>.</li>
|
||
<li>Avec <kbd>Compose-h-h</kbd>, on passe en <strong>hébreu</strong>.</li>
|
||
<li>Avec <kbd>Compose-t-t</kbd>, on passe en <strong>thai</strong>.</li>
|
||
<li>Avec <kbd>Control-espace</kbd>, on revient en occidental.</li>
|
||
</ul>
|
||
|
||
<p>
|
||
D'autres méthodes d'entrée sont disponibles, en tapant directement le numéro
|
||
Unicode du caractère ou en choisissant dans des tables thématiques. Il est
|
||
normalement possible d'utiliser cette fenêtre comme un menu pour changer le
|
||
mode, mais ça marche très mal. Ce système n'est hélas pas disponible sur les
|
||
PC.
|
||
</p>
|
||
|
||
<p>
|
||
Le fonctionnement exact ce ces méthodes d'entrées est décrit dans le fichier
|
||
<code>/usr/local/util/packages/xterm/lib/X11/locale/en_US.UTF-8/Compose</code>.
|
||
Ce n'est pas très lisible, on en fera peut-être un jour un tableau
|
||
récapitulatif. De toutes façons, il ne s'agit que d'une touche compose un
|
||
peu enrichie (mode occidental), ou d'un simple changement des touches qu'on
|
||
détermine en quelques essais.
|
||
</p>
|
||
|
||
<h3>Les méthodes d'entrée d'Emacs</h3>
|
||
|
||
<p>
|
||
En plus des méthodes d'entrée fournies par le terminal (s'il est lancé en
|
||
mode texte) ou des mêmes méthodes d'entrée qu'uxterm (s'il est lancé en mode
|
||
graphique), Emacs propose son propre jeu de méthodes d'entrée. Elles
|
||
présentent deux avantages : elles sont locales à un buffer, il n'est donc
|
||
pas nécessaire de se soucier de les désactiver avant d'éditer un autre
|
||
fichier ou de taper une commande ; et elles affichent dans le minibuffer
|
||
des informations intéressantes, comme les différents caractères possibles
|
||
pour finir une frappe.
|
||
</p>
|
||
|
||
<p>
|
||
On obtient la liste des méthodes disponibles avec <kbd>M-x
|
||
list-input-methods</kbd>, et on peut obtenir une description détaillée
|
||
d'une méthode particulière avec <kbd>M-x describe-input-method</kbd>. Il
|
||
faut faire attention à un point subtil : Emacs ne sait pas bien convertir
|
||
entre les différents codages, or beaucoup de ces méthodes d'entrée ne sont
|
||
pas prévues pour Unicode, il ne faut donc pas les utiliser. Il vaut mieux se
|
||
restreindre aux méthodes explicitement indiquées pour Unicode, ou dont le
|
||
nom contient « latin » (Emacs à partir de la version 21.3 sait convertir
|
||
entre unicode et les divers codages « latin »).
|
||
</p>
|
||
|
||
<p>
|
||
Une fois la méthode choisie, il faut la sélectionner, ce qui se fait avec
|
||
<kbd>M-x set-input-method</kbd> (qui se dit aussi <kbd>C-x RET c C-\</kbd>
|
||
(<kbd>RET</kbd> signifie « entrée »), Emacs demande alors d'entrer le nom
|
||
de la méthode dans le minibuffer (avec bien sur la complétion). Cela
|
||
sélectionne et active la méthode pour le buffer courant. On peut la
|
||
désactiver puis la réactiver avec <kbd>C-\</kbd> ou <kbd>M-x
|
||
toggle-input-method</kbd>. Il est à noter que ces fonctions n'activent la
|
||
méthode que dans le buffer courant.
|
||
</p>
|
||
|
||
<h3>Termim</h3>
|
||
|
||
<p>
|
||
Termim est un programme qui permet de donner des méthodes d'entrée à presque
|
||
n'importe quel terminal. Ces méthodes sont elles aussi capables d'afficher
|
||
le caractère en cours de construction en bas, et sont disponibles pour
|
||
n'importe quel programme tournant dans le terminal.
|
||
</p>
|
||
|
||
<p>
|
||
Termim n'est pas spécifique à l'ENS, mais comme il a été développé par
|
||
d'anciens élèves, il est probable qu'il soit rarement installé ailleurs.
|
||
</p>
|
||
|
||
<p>
|
||
Pour utiliser termim, il suffit de taper <code>termim</code> dans un
|
||
terminal Unicode. On a alors la configuration par défaut (qu'il est possible
|
||
de changer) :
|
||
</p>
|
||
|
||
<ul>
|
||
<li><strong>F1</strong> : clavier sans transformation.</li>
|
||
<li><strong>F2 e</strong> : caractères occidentaux, avec Ctrl-K comme
|
||
touche compose.</li>
|
||
<li><strong>F2 a</strong> : arabe.</li>
|
||
<li><strong>F2 c</strong> : cyrillique.</li>
|
||
<li><strong>F2 g</strong> : grec.</li>
|
||
<li><strong>F2 h</strong> : hébreu.</li>
|
||
<li><strong>F2 t</strong> : thai.</li>
|
||
<li><strong>F3 c</strong> : chinois simplifié (méthode tonepy).</li>
|
||
<li><strong>F3 k</strong> : coréen (phonétique).</li>
|
||
<li><strong>F3 h</strong> : coréen (clavier avec voyelles et consonnes).</li>
|
||
<li><strong>F3 j</strong> : japonais (utiliser la touche ` pour taper des
|
||
kanji).</li>
|
||
<li><strong>F3 g</strong> : grep polytonique.</li>
|
||
</ul>
|
||
|
||
<p>
|
||
Pour plus de détails, consulter la page de man de termim, ainsi que les
|
||
documentations des diverses méthodes d'entrée dans
|
||
<a href="http://www.eleves.ens.fr/home/george/info/prg/termim-doc/"><code>/usr/local/util/packages/termim/doc/</code></a>.
|
||
</p>
|
||
|
||
|
||
<div class="metainformation">
|
||
Auteur : Nicolas George.
|
||
<date value="from git" />
|
||
</div>
|
||
|
||
</body>
|
||
</html>
|