Pour en savoir plus sur la logique de l'alphabet arménien et sur son fonctionnement, voyez Arménie.online ou votre serviteur.
Un autre point de vue est donné par Wikipedia. On y trouvera la translittération ISO 9985, légèrement différente.
La translittération HMB est résumée par le tableau suivant :
Ա | Բ | Գ | Դ | Ե | Զ | Է | Ը | Թ | Ժ | Ի | Լ | Խ | Ծ | Կ | Հ | Ձ | Ղ | Ճ | Մ | Յ | Ն | Շ | Ո | Չ | Պ | Ջ | Ռ | Ս | Վ | Տ | Ր | Ց | Ւ | Փ | Ք | Օ | Ֆ | |
ա | բ | գ | դ | ե | զ | է | ը | թ | ժ | ի | լ | խ | ծ | կ | հ | ձ | ղ | ճ | մ | յ | ն | շ | ո | չ | պ | ջ | ռ | ս | վ | տ | ր | ց | ւ | փ | ք | օ | ֆ | և |
a | b | g | d | e | z | ē | ǝ | t῾ | ž | i | l | x | c | k | h | j | ł | č | m | y | n | š | o | č῾ | p | ǰ | ṙ | s | v | t | r | c῾ | w | p῾ | k῾ | ō | f | ew |
La translittération HMB utilise
Cette marque n'est pas un banal quote ni même une apostrophe, mais bien l'esprit rude du grec ancien,
appelé dasia dans la nomenclature Unicode (n° 0x1FFE, dans le bloc Greek Extended).
On note que dans son principe la translittération ne se préoccupe pas de la correspondance majuscules/minuscules,
considérée sans doute comme allant de soi.
Effectivement, dans la plupart des cas, Unicode nous fournit une majuscule irréfutable
(c'est même pour cela que nous avons choisi le e retourné ǝ du bloc Latin Extended-B
et non pas le schwa de l'alphabet phonétique international, n° 0x0259).
La seule exception est le ǰ (n° 0x01F0, du bloc Latin Extended-B), qui note l'affriquée chuintante sonore :
il n'a point de correspondant exact en majuscule.
Pour être complet, on a donc choisi la majuscule "la plus proche", à savoir Ĵ (n° 0x0134, du bloc Latin Extended-A).
Ainsi : Ի ԽՈՐՈՑ ՍՐՏԻՑ ԽԱՒՍՔ ԸՆԴ ԱՍՏՈՒԾՈՅ <=>
I XOROC῾ SRTIC῾ XAWSK῾ ƎND ASTOWCOY
Le langage JavaScript nous offre un mécanisme qui fait de cette réalisation un jeu d'enfant,
à savoir
des tableaux dits associatifs, dont les clefs sont des chaînes et les valeurs quelconques.
Il
est très facile de traduire les explications ci-dessus définissant la
translittération HMB par un tel tableau,
dont les clefs sont des chaînes d'un seul caractère (arménien) et les
valeurs les chaines d'un ou deux caractères de la translittération.
En voici le début :
var unihmb = {"Ա":"A","Բ":"B","Գ":"G","Դ":"D","Ե":"E","Զ":"Z","Է":"Ē","Ը":"Ǝ","Թ":"T῾","Ժ":"Ž", ...};
La translittération directe, de l'arménien vers HMB, est alors effectuée par une simple boucle,
lisant la chaîne d'entrée caractère par caractère et construisant la
chaîne-résultat en concaténant les valeurs trouvées dans le tableau :
function uniToHmb (chn) {
var res = "";
for ( var i = 0; i<chn.length; i++ ) {
res += unihmb[chn.charAt(i)];
}
return res;
}
En fait les choses ne sont pas aussi simples, car (comme on l'a vu à la fin du cours n° 4),
dans le texte d'un programme JavaScript on ne peut écrire que le l'ASCII.
Il va donc falloir remplacer dans le tableau ci-dessus tous les caractères non-ASCII par \ulenumérohexa,
ce qui donne :
var unihmb = {
"\u0531":"A","\u0532":"B",...,"\u0536":"Z","\u0537":"\u0112","\u0538":"\u018e","\u0539":"T\u1ffe",
"\u053A":"\u017d", ...};
Cette tâche fastidieuse sera avantageusement effectuée par la transformation utf8ToESC que nous avons vue dans la première partie de ce cours.
Nous procèderons donc en deux étapes :
On part du fichier HMB.txt,
dont voici le début :
Ա:A,
Բ:B,
Գ:G,
Դ:D,
Ե:E,
Զ:Z,
Է:Ē,
Ը:Ǝ,
Թ:T῾,
Ժ:Ž,
...
et on en tire le programme de principe (fichier UniHMB.txt) :
function uniToHmb (chn) {
var res = "";
for ( var i = 0; i<chn.length; i++ ) {
res += unihmb[chn.charAt(i)];
}
return res;
}
var unihmb = {
" ":" ",
"\u0531":"A" ,
"\u0532":"B" ,
"\u0533":"G" ,
"\u0534":"D" ,
........
};
function uniToHmb (chn) {
var res = "";
for ( var i = 0; i<chn.length ; i=++ ) {
res += unihmb[chn.charAt(i)];
}
return res;
}
var hmbuni = {"A":"Ա","B":"Բ","G":"Գ",..."Z":"Զ","Ē":"Է","Ǝ":"Ը","T῾":"Թ","Ž":"Ժ", ...};
Il faut noter que la transformation inverse n'est pas parfaitement exacte, car la ligature և = ե + ւ = ew (fin du tableau)
ne sera pas restituée telle quelle, mais décomposée en ses deux éléments.
Je ne sais pas assez d'arménien pour apprécier la gravité de cette inexactitude.
function hmbToUni (chn) {
var res = "";
for ( var i = 0; i<chn.length; i++ ) {
var clef = chn.charAt(i);
if( chn.charCodeAt(i+1) == 0x1FFE ){
clef += chn.charAt(++i);
}
res += hmbuni[clef];
}
return res;
}
Il faut comme ci-dessus substituer aux caractères non-ASCII leurs escape-sequences
\ulenumérohexa.
Le programme JavaScript désiré (fichier HMBUni.js) est produit par la transformation "utf8ToESC"
à partir de HMBUni.txt,