Artisan Numérique

/système/clavier/le bureau/ Saisir en "Tiếng Việt"

Lorsque mon épouse a basculé son portable sous Linux tout c'est bien passé jusqu'à ce qu'elle me demande comment faire pour poster des messages... en Viet. Scratch, scratch... J'avoue que je ne m'étais, dans mon logique ethnocentrisme, jamais posé la question auparavant... L'objectif de ce petit tutorial est donc de capitaliser un peu mes recherches et de vous vous permettre d'installer rapidement sous GNU/Linux une module de saisie Viet, avec les fontes unicode qui vont bien...

L'écriture Viet

L'écriture Viet était à l'origine basée sur des idéogrammes, comme le chinois. En 1651, c'est le missionnaire Alexandre de Rhodes qui fit la transcription de ces idéogrammes en alphabet greco-latin donnant ainsi naissance à l'écrit Viet tel que nous le connaissons aujourd'hui. D'un point de vue visuel, la grande différence tient surtout aux nombreux diacritiques qui ont été ajoutés pour refléter au mieux les inflexions de la langue Viet.

Écrire en Viet sous Linux pose deux "problèmes". L'un pour saisir les signes (diacritiques) supplémentaires, l'autre pour les rendre visuellement (fontes). Voyons déjà comment ajouter la touche "viet" aux fontes de linux avec Unicode.

UTF, Unicode, kesako

Sous un angle historique, à l'origine de l'informatique (et je parle là de l'époque où IBM sortait vaguement du monde des machines à écrire ;-) la correspondance entre une lettre et un chiffre était loin d'être un standard. Et ce n'est finalement qu'en 1961, que Bob Bemer inventa la célèbre table ASCII (American Standard Code for Information Interchange). Les caractères était décrits par des chiffres sur 7 bits, soit 128 possibilités différents. Alors même si l'ASCII fût un grand pas en terme d'interopérabilité, autant dire qu'il porte bien son premier A, et que nos barbares caractères accentués ont été poubellisés.

En 1970, le standard ASCII gagne 1 bit (ouaiiiis !) et donc 128 caractères de plus. Les accents venus des terres barbares outre-atlantiques enfin droit de cité. Le problème est que ces pour ces 128 caractères rien n'est vraiment définit et chacun y va de sa vision, à nouveau. Sont alors arrivés les CP (Code Page) avec MSDOS je crois (vous savez, à l'époque où Microsoft se demandait ce qu'Apple cherchait à faire de bien sérieux avec une souris...). Et là, ce fût vraiment la fête du... string.. désolé :-]

Le CP437 pour les anglo-saxons, le 837 pour les européens, le 855 pour les russes, bref, une page pour chacun.. Ensuite cela a été normalisé par l'ISO 8859 qui se décline comme les CP, par groupe linguistique (ISO-8859-15 pour l'Europe de l'ouest pas exemple). Bien sur, Windows a sa propre version de l'ISO, que l'on nomme Windows-1252... Fallait pas rêver non plus...

Mais tout cela était sans compter d'autres barbares, asiatiques ceux-là (les européens étant les premier je le rappelle ;-), venant tout casser avec leur lettres même pas dans l'alphabet d'un bon catholique de base (Out les intégriste, je rigole ! :-)... Et c'est ainsi que naquis les normes Unicode dont on connaît surtout l'UTF (Universal Transformation Format). Là on allait pouvoir stocker nos caractères sur 2 octets (soit 16 bits et 2^16=65535 caractères possibles) et même sur 4 (soit 32 bits, et euhh 2^32... faites le calcul :). L'avantage est que l'on a ainsi possibilité de stocker tous les symboles possibles et imaginables. Dans ce codage, des tranches d'UTF sont réservés par groupes linguistiques (par exemple, le Tamoul, est positionné entre 0x0B80 et 0x0BFF, si, si, c'est vrai...). L'UTF-8 quant à lui est une version "compressée" de l'utf-16. En effet, coder chaque caractères sur 2 octets peut prendre... deux fois plus de place... au minimum ! L'idée est donc de faire un codage à géométrie variable. Un peu comme si l'on avait, avant le caractère, un marqueur donnant sa longueur réelle (de 1 à 4 octet).

Bref, ce qu'il faut retenir, c'est qu'unicode comme son nom l'indique unifie presque totalement les écritures. Je dis presque car il pose encore des problèmes avec les idéogrammes unifiés de la langue chinoise (mais cela reste utilisable). Il existe donc des fontes dites Unicode, qui contiennent toutes les langues (elles sont rares). Plus généralement, nous avons des unicodes contenant les langues les plus courantes et que l'on spécialise en rajoutant les caractères qui manquent pour une langue donnée, c'est ce que nous chercherons à faire avec le Viet. En attendant, il va falloir pouvoir les saisir, ces caractères...

X Input Method et Unicode

XIM ou X Input method est une API (une fonctionnalité) permettant à un greffon (un plugin) de prendre la main sur tout ce qui est saisi dans une application pour interpréter les séquences de touches de l'utilisateur et renvoyer à l'application le code du caractère correspondant. Je peux ainsi avoir un greffon XIM qui dit que ot veut dire ô. De manière plus standard, nous avons déjà dans X un tel greffon, qui nous permet de taper ^o et d'obtenir ô.

Il existe donc un greffon pour chacune des langues que l'on cherche à saisir (chinois, coréen, etc..) permettant ainsi à l'application de recevoir des caractères qu'elle n'aurait pas su interpréter. Le greffon envois quant à lui le caractère ainsi composé sous la forme d'un code de caractère (on y vient ;-). Dans notre cas, nous utiliserons unicode bien évidement. Ainsi, lorsque nous auront notre fonte l'installée, et notre greffon XIM, la chaîne sera complète.

Une fonte unicode donc..

Plusieurs solutions à ce stade. Déjà, avant de commencer à chercher, peut-être que vous avez cela directement dans votre distribution. C'est le cas de la Mandriva 2008.1. Pour le savoir, installez d'abord xvnk et si ça marche, vous pouvez vous arrêter là.

Sinon je me suis laissé dire qu'Arial de microsoft était unicode, mais elle n'est pas libre, pas bien... Donc pour ceux qui ont une conscience, la solution est de trouver une fonte unicode libre qui compte les caractères Viet et Français tant qu'à faire. J'en ai trouvé ici.

Une fois téléchargées, et décompressées, il suffit de l'installer par la méthode qui correspond à votre bureau/distribution. Ensuite, vous pouvez définir cette fonte comme étant celle par défaut car dans la mesure où elle intègre les langues occidentales vous ne verrez pas de différence. L'avantage de cette approche est quevous pouvez en profiter pour traduire l'ensemble de l'interface du bureau en Viet.

Installation de xvnk

Il existe deux applets : X-univiet et xvnkb. J'ai préféré la seconde parce qu'elle m'a semblé plus aboutie (menus contextuels, possibilité de la mettre dans la zone de miniatures, etc..).

Pour l'installer, allez chercher la dernière version des sources ici, décompressez et invoquez la sainte trinité ./configure --prefix=/usr ; make ; sudo make install.

Ceci fait, vous pouvez lancer en ligne de commande xvnkb. Attention cependant, seules les applications lancées après xvnkb sauront l'utiliser.

Une fois lancé, xvnkb affiche un petit panneau Off en bas à gauche de l'écran. Vous pouvez le déplacer à la souris et faire un clique-droit dessus pour voir les options. Faites Miscelaneous / Dock to systray pour mettre l'applet dans la boite à miniatures. Puis clique-droit charset / Unicode pour choisir l'UTF (voir plus loin). Enfin clique-droit / Input Method / VNI. Vous remarquez qu'il existe plusieurs méthodes dont :

Vni Dans ce mode, un chiffre est accolé à la fin de la lettre que l'on cherche à modifier. Cela donne pour la lettre a et les chiffres de 1 à 5 : á à ả ã ạ. Telex Dans ce mode c'est la combinaison de différents caractères qui forment la lettre. Par exemple en tapant haf cela donne Hà.

Accents Telex VNI Viqr
â aa a6 a^
ê ee e6 e^
ô oo o6 o^
ă aw a8 a(
ơ o7 o+
ư uw u7 u+
đ dd d9 dd
accent aigue - sắc s 1 '
accent grave- huyền f 2 `
point - nặng j 5 .
crochet - hỏi r 3 ?
tilde - ngã x 4 ~
Enlever l'accent z 0 -
Example: Tiếng Việt Tieesng Vieejt Tie61ng Vie65t Tie^'ng Vie^.t

Conclusion

Voilà, c'est tout et ça marche sur toutes les applications que j'ai pu tester d'OpenOffice à Firefox. Et c'est là que je vous laisse car moi, à ce stade, je ne serais plus d'une bien grande utilité.