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 était à l'origine basée sur des idéogrammes, comme le chinois. En 1963, 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.
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...
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.
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.
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 :
En résumé, cela nous donne les combinaisons suivantes (si j'ai écrit des bêtises merci de me le dire
| 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 |
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é.
- répondre
Olympi , le 30 July, 2008 - 13:05« En 1970, le standard ASCII gagne 1 bit (ouaiiiis !) et donc 127 caractères de plus. »
128 caractères de plus pas 127, je te laisse avec ton boulier et ta table ASCII étendu pour recompter
- répondre
NGUYEN Phuoc Anh Vu , le 28 November, 2007 - 17:49Super, j'avoue que j'ai bien passé xvnkb avec ubuntu mais quand j'ai utilisé avec fluxbuntu(une version utilisant fluxbox), je suis bloqué, mais bon,je vais essayer avec Xunikey ce soir... Merci à vous (je suis bien tombé dans votre site "thank's to" GOOGLE. Google is your friend (GIYF)
- répondre
Ulhume, le 3 December, 2007 - 01:54Content que ça ait pu servir.
Il faudrait que je retente cette installation avec la dernière mandriva pour mettre ce tutorial à jour
- répondre
kboite , le 30 July, 2008 - 12:47Sympa cet article.
J'ai juste relevé quelques coquilles.
"Les accents venus des terres barbares outre-atlantiques enfin droit de citer dans les textes." => ou bien c'était un effet de style, ou bien tu as sans doute voulut dire "droit de cité"?
"autant dire qu'il porte bien sont premier A" => N'y aurait-il pas un "t" en trop?
"et même sur 4 (euhh 2 puissance 4, faites le calcul)" => 2^4 = 2*2*2*2 = 16, comme il s'agit de 4 octets et non 4 bits, il y a (2^8)^4 = 2^32 possibilités (et 2^16 pour le format unicode 16, sur deux octets)
(elles sont rares Wink . => le point est rejeté à la ligne suivante, c'est pas beau
- répondre
Ulhume, le 30 July, 2008 - 13:03Très intéressant cela, c'est déjà gentil de me donner mes fautes mais là en plus j'apprends quelque chose d'intéressant. En effet je croyais que cette expression se rapportait à un droit d'être cité, évoqué, d'où cette orthographe. Du coup j'ai cherché sur le net, et cela n'a aucun rapport. Cela vient de l'antiquité du droits des citoyens de la cité, en opposition aux esclaves.
Merci pour les corrections et le petit cour d'étymologie, tout est corrigé maintenant
- répondre
Ulhume, le 30 July, 2008 - 13:30@Olympi merci pour la correction. Ceci dit, j'aurais tant aimer avoir un site de ta plume pour pouvoir moi aussi apporter une amicale contribution...
- répondre
Pierre , le 30 July, 2008 - 13:50Salut !
Merci beaucoup pour cet article. Je n'utilise pas le vietnamien, mais j'ai conscience des problèmes des méthodes de saisie (moi je galère pas mal avec le chinois).
Juste à titre informatif, est-ce que tu as essayé avec SCIM (je crois qu'il y a un paquet scim-vietnamese) ?
Tiens sinon, en cherchant je suis tombé sur cet article (que j'ai lu en diagonale) : http://www.forumvietnam.fr/forum-vietnam/le-vietnamien-tieng-viet/3935-e...
Et enfin, une petite coquille : « En 1963, c'est le missionnaire Alexandre de Rhodes qui fit la transcription de ces idéogrammes en alphabet greco-latin ». 1963, ça me paraissait très récent. Un petit tour sur la page Wikipédia du monsieur et je me rends compte qu'il est mort en 1660... Alors du coup je pense qu'il y a une erreur quelque part !
Bonne continuation !
- répondre
Ulhume, le 30 July, 2008 - 14:04@Pierre merci pour la coquille, en effet c'était un peu récent
Pour SCIM, je l'avais essayé à l'époque de la première version de ce billet (il y a deux ans) et il marchait super mal les accents en mode VIN. Xvnkb était le seul qui fonctionnait au doigt et à l'oeil, et qui avait le mérite d'être écrit par un jeune Việt avec qui j'ai été en contacte et qui l'utilisait donc pour lui de manière intensive. Ceci dit, je n'ai pas retesté SCIM depuis et cela a pu grandement s'améliorer.
- répondre
kboite , le 30 July, 2008 - 18:31Y a p-ê 65 535 possibilités (un caractère null?) mais 2^16 = 65536.
Merci pour les corrections et le petit cour d'étymologie (je n'y suis pas pour grand chose), tout est corrigé maintenant Smiling => de rien
Poster un nouveau commentaire