Dites-le avec de l’Unicode

jeudi 25 avril 2019, par ID

Je vous parle d’un temps que les moins de vingt ans ne peuvent pas connaître (les veinards). À cette époque reculé du millénaire précédent où la norme de caractères qui sévissait en maîtresse était les caractères ASCII, probablement l’alphabet le plus pauvre de tous les alphabets latins, et où l’Unicode n’existait pas encore.

 Un petit peu d’histoire

À l’époque préhistorique, celle où on n’utilisait pas encore d’ordinateur mais des machines à écrire, le choix des caractères était limité à celui des touches de la machine et quand on tapait sur une touche, on ne pouvait obtenir que la lettre tapée, en version majuscule ou minuscule. Pour avoir d’autres caractères, il fallait une autre machine susceptible de les proposer, ou passer par un imprimeur disposant des fontes nécessaires (mais là on sort du cadre de cet article).

À l’époque protohistorique, donc avec la popularisation de l’informatique et avant 1991, date de naissance de l’Unicode et surtout avant qu’il ne s’implante enfin [1], se posait la question du codage des caractères hors alphabet ASCII. En effet, selon la norme retenue et la configuration de l’affichage du logiciel, les caractères dits « spéciaux », entendez par là ceux qui ne figurent pas dans l’alphabet ASCII, ce qui fait un sacré paquet de caractères soi-disant spéciaux, pouvait s’afficher de façon curieuse et pas du tout conformément aux attentes. Dans le lot des caractères ainsi qualifiés se trouvent notamment, pour la langue française, les lettres accentuées, les ç et les œ et æ. Longtemps cela a posé des problèmes et, quand un logiciel de messagerie est mal configuré ça continue à en poser, c’est même le cas de certains sites internet. Même après plus d’un quart de siècle d’existence de la norme Unicode.

La norme Unicode a ceci de formidable c’est que chaque caractère a son numéro de code qui lui est propre et qui est unique. Ainsi, le code Unicode du « a » est 0061 et celui du « A » 0041 et cela pour toutes les machines, toutes les langues et toutes les polices de caractère. Et cela même si les polices, à l’affichage donnent un caractère différent de celui de la lettre de l’alphabet saisi (voir l’exemple ci-dessous).

 Des dispositions et des caractères

Le clavier d’un ordinateur et, de façon plus flagrante, celui d’un terminal mobile n’est pas limité aux caractères dessinés dessus comme une machine à écrire. En fait la frappe d’une touche peut donner des résultats différents selon :

  • la disposition du clavier, quand on tape sur la touche « a » d’un clavier azerty (entendez, sur les touches duquel les lettres de la première ligne se lisent azerty, etc.) configuré en qwerty, on obtiendra un « q » bien que la lettre dessinée sur la touche soit un « a » ;
  • le système, par exemple sous Linux, si on utilise la combinaison de touche o + Alt Gr, on obtient la lettre « œ » assez courante dans la langue française, le « Œ » s’obtenant en utilisant la combinaison o + Maj + Alt Gr mais on ne peut pas avoir la lettre « ñ » en tapant sur la touche sur laquelle les caractères « 2, é, tilde » sont inscrits puis sur la touche avec le « n » comme sous Windows [2] ;
  • la police utilisée, ainsi le mot « tricot » en majuscules et en minuscules avec ma police de labeur favorite et avec la police K Symbols donnera des résultats fondamentalement différents.

Différentes graphies du mot tricot

Pourquoi ? Tout simplement parce que la frappe d’une touche renvoie une impulsion et que l’ordinateur va interpréter cette impulsion électrique selon tous les paramètres indiqués ci-dessus, ce qui fait que l’on peut changer de disposition clavier sans changer le matériel. Le dessin du caractère sur la touche est une aide mais n’est pas le caractère lui-même.

 L’Unicode et son usage

De tout ce qui a été dit, il s’ensuit donc qu’un clavier d’ordinateur est beaucoup plus que son apparence laisse à penser. Il s’ensuit également qu’il faut prêter attention au numéro Unicode des caractères utilisés.

Prenons par exemple la syntaxe utilisée pour le contenu du site Linuxfr (qui est en partie à l’origine de cet article). Si on veut introduire du code, il faut commencer par une série de trois signes : « ` » suivi du nom du code. Vu comme ça, difficile de savoir de quel caractère il s’agit exactement. Personnellement, en cherchant son numéro Unicode, j’ai hésité entre apostrophe et guillemets et, en anglais entre apostrophe, cotation mark et prime, sans le trouver car il s’agit en fait d’un signe diacritique ; l’accent grave, U + 0060 pour être précise. En fait ça ressemble, entre autres, beaucoup à la prime inversée (U + 2035) qui est une ponctuation et qui ne donne évidemment absolument pas l’effet escompté. Dans le tutoriel, je m’étais défaussée du problème en donnant la combinaison de touches pour un clavier azerty, mais ce n’est pas du tout satisfaisant.

Si, dans vos documents pour des modèles, des applications, vous recourrez, et surtout demandez aux utilisatrices et utilisateurs finaux de recourir à des caractères spécifiques, il faut absolument que vous en indiquiez le numéro Unicode et, éventuellement, comment on les obtient pour un ou des claviers précis si vous le savez, si c’est possible et si c’est nécessaire. C’est la seule façon de faire qui soit à la fois infaillible et réellement inter-opérable.

 Comment trouver le code d’un caractère ?

Normalement vous devriez avoir un utilitaire de sélecteur de caractères, soit installé soit, de toute façon, dans votre distribution Linux, personnellement j’ai KcharSelect sur lequel je n’ai aucun avis particulier.

Comme n’importe quel autre utilitaire du même type, il y a un module de recherche. Il faut chercher en anglais ici (pour d’autres utilitaires, les caractères sont traduits et on peut faire une recherche en français). Soit on a le nom exact du caractère, soit on a une idée de la catégorie à laquelle il appartient, apostrophe par exemple ou encore guillemet (eh oui ce sont les mêmes mots en anglais et en français). Relever le numéro qui figure sous cette forme : U +0030 (ici code du zéro). KCharSelect indique aussi en « Voir également » des caractères proches [3].

KCharSelect

Sinon, il est possible de faire une recherche sur le site Unicode-table, on peut la faire en plusieurs langues, donc en français. Si vous savez dans quelle grande catégorie, ou bloc, Unicode, en cliquant sur le menu on peut accéder à la liste des blocs et ensuite à celui qu’on cherche. En cliquant sur le caractère concerné, on obtient son code.

Wikipédia, une fois de plus, peut s’avérer utile notamment parce que l’article sur l’Unicode permet d’aller sur une table de caractères particulières, par exemple, le latin de base, et les voir tous, en bonus, pour certains, en passant la souris dessus, on a le nom du caractère et l’accès à sa page.


[1Période que je situe vers la fin de la première décennie 2000 et le début de cette décennie.

[2Cette description, laborieuse, est tout à fait voulue.

[3Et je me rends compte que si je l’avais utilisé d’entrée de jeu, j’aurais gagné pas mal de temps.