Unhomoglyphe (calque de l'anglais :homoglyph) désigne entypographie ungraphème, uncaractère ou unglyphe qui semble identique ou très similaire à un ou plusieurs autres. L'appellation peut s'étendre auxchaînes de caractères présentant la même propriété, qui s'apparente dans ce cas à unhomographe.
À l'opposé, unsynoglyphe (de l'anglais :synoglyph) désigne un glyphe dissemblable d'un autre, mais ayant la même signification. On rencontre parfois l'appellation« variante d'affichage » (« display variant »).
En 2008, leConsortium Unicode publie sonTechnical Report #36[1], qui comporte une série d'articles portant sur les similitudes visuelles de caractères au sein d'un mêmescript Unicode (en) ou entre différents scripts.

Ces homoglyphes sont à l'origine de confusions. Un exemple historique est l'emploi du 'y' pour représenter le 'þ' lors de la transcription de textes devieil anglais dans un script ne comportant pas ce dernier caractère. Ainsi, la multiplication des enseignes intitulées« Ye olde (en) shoppe » a laissé supposer que le mot« the » a pour forme ancienneye[jiː].
Lespolices d'écriture comportant des homoglyphes sont donc considérées comme inaptes pour écrire uneformule mathématique, uneURL ou uncode source, un identifiant ou tout autre texte où les caractères ne peuvent pas toujours être distingués en l'absence decontexte linguistique.
Deux ensembles d'homoglyphes sont aujourd'hui très communs. Il s'agit d'une part du chiffre zéro et du o majuscule (0 et O), d'autre part du chiffre un, du l minuscule et du i majuscule (1, l et I). À l'époque des claviers de machine à écrire, il existait peu voire pas de différence visuelle entre ces caractères, et les typographes les ont souvent utilisés indifféremment pour gagner du temps. De fait, une bonne partie des claviers ne disposait pas de touche dédiée pour le chiffre un, imposant l'emploi du i majuscule, et certains claviers n'avaient pas non plus de zéro, qui était remplacé par le o majuscule. Lorsque ces typographes entrèrent dans l'ère informatique dans les années 1970 et 1980, ils ont gardé leurs habitudes de frappe, occasionnant des confusions dans les codages[réf. nécessaire].
Les polices les plus communes d'emploi font une distinction claire entre ces jeux d'homoglyphes, généralement en utilisant un chiffre zéro moins large, et en traçant le chiffre un avec desempattements proéminents. Auparavant, les premières impressions informatiques allaient plus loin, en distinguant le zéro au moyen d'un point ou d'une barre, ce dernier cas amenant une nouvelle homoglyphie avec leØ deslangues scandinaves et lephi (Φ) grec. L'effet conjoint de ces efforts pour distinguer les caractères homoglyphes d'une part, et la retraite progressive des codeurs ayant été formés sur machine à écrire d'autre part, a considérablement limité le nombre d'erreurs homoglyphiques relativement à ces caractères en particulier. Le niveau de similitude entre deux caractères pour un observateur donné est appelé la« similitude visuelle » (« visual similarity »)[2].
Il peut arriver que certaines combinaisons de caractères ressemblent à un autre caractère. C'est par exemple le cas pour rn qui ressemble à m, cl à d ou encore vv et w.
Dans le cas de polices très peu espacées, commetahoma, de nouveaux homoglyphes apparaissent, commecj, cl, ci qui ressemblent alors respectivement à g, d et a.
Une autre source d'homoglyphes est l'emploi deligatures typographiques. On citera fi, ligature pour les caractères f et i, qui peut apparaître similaire à un a majuscule (A).
Lecodage des caractères enUnicode comprend des groupes d'homoglyphes très proches. Dans le contexte actuel, comme le relève le rapport de 2008 du Consortion Unicode[1], cela représente certains risques, en particulier depuis la mise en place desnoms de domaine internationalisés. Il peut s'agir d'usurpation d'un nom de domaine, en employant un homoglyphe, créant ainsi un deuxième nom de domaine, pas immédiatement distinguable du premier, qui peut être employé pour unhameçonnage. (voirAttaque homographique sur nom de domaine internationalisé (en)).
Dans de nombreuses polices, le 'Α' de l'alphabet grec, le 'А' de l'alphabet cyrillique et le 'A' de l'alphabet latin sont visuellement identiques, tout comme le 'a' latin et le 'а' cyrillique. L'ensemble des caractères latins formant la chaîne de caractères« aeopcTxy » est l'homographe de la chaîne de caractères« аеорсТху », écrite exclusivement avec des caractères cyrilliques. D'autres caractères proches peuvent être employés pour de tellesusurpations de nom de domaine (en), comme le 'í' (i accent aigu) pour remplacer un 'i', 'É' (e majuscule accent aigu), Ė (e majuscule point suscrit) et È (e majuscule accent grave), ou 'Í' (i majuscule accent aigu) et 'ĺ' (l minuscule accent aigu). Autre sujet, enchinois, de nombreuxcaractères simplifiés sont des homoglyphes ducaractère traditionnel correspondant.
Les concepteurs deregistres de noms de domaine et denavigateurs web travaillent afin de minimiser le risque de confusion homoglyphique. De manière simple, cela commence par interdire les noms de domaines employant un mélange de caractères provenant de différents alphabets. Par exemple, l'enseigneToys "R" Us ne pourrait pas proposer le nom de domaine toys-Я-us.org, utilisant le caractère cyrilliqueЯ. Néanmoins, les adresses wíkipedia.org (de laDésencyclopédie en portugais) etwikipedia.org existent déjà, renvoyant à deux sites différents. Ledomaine de premier niveau national duCanada,.ca, va un peu plus loin en imposant que les noms de domaine ne différant que d'un diacritique aient le même propriétaire[3]. Concernant les sinogrammes, si sur les domaines.org et.info, la réservation d'un nom de domaine comprenant un caractère (simplifié ou traditionnel) interdit l'enregistrement de l'autre à quiconque, et dans le cas pour le domaine.biz, les deux noms de domaine sont vendus conjointement, pointant vers le mêmeserveur de domaine (en).
La détection d'homographes de toute sorte s'effectue au moyen de la« canonicalisation duelle » ou« canonisation duelle »[2]. La première étape consiste à identifier des ensembles homographiques, c'est-à-dire les caractères qui apparaissent similaires aux yeux des utilisateurs. Dès lors, un identifiant unique est attribué à l'ensemble homographique, appelé« canon ». La deuxième étape consiste à convertir chaque caractère du texte au moyen de son canon, étape correspondant à la canonicalisation. Si les canons de deux passages du texte sont les mêmes mais que le texte originel est différent, alors il existe des homographes dans le texte.
: document utilisé comme source pour la rédaction de cet article.
| Jeux de caractères de base | ||
|---|---|---|
| Codification de fichiers et protocoles | ||
| Adaptations de référence |
| |
| Équivalences standards | ||
| Propriétés et algorithmes |
| |
| Transformations | ||
| Standards et normes liés |
| |
| Mises en œuvre et applications | ||