Il y a un lapin dans l’herbe : comment un kaomoji Simeji a transformé le thaï et le birman en réserve naturelle Unicode

Elle ressemble à un minuscule lapin qui nous regarde. Pourtant, Unicode ne l’encode pas comme un emoji lapin.

Partager cet article

Partager cet article

Publicité
Publicité

1. Conclusion en 5 secondes : on voit un lapin, mais l’intérieur contient trois points de code

La créature est celle-ci :

ꪔ̤̮

Elle ressemble à un minuscule lapin qui nous regarde. Pourtant, Unicode ne l’encode pas comme un emoji lapin. Sa base est U+AA94 TAI VIET LETTER LOW TO, suivie de U+0324 COMBINING DIAERESIS BELOW et U+032E COMBINING BREVE BELOW.[1][2]

À l’écran : petit animal mignon. Dans les données : lettre Tai Viet + signe combinant + autre signe combinant.

Une tête adorable, un dossier administratif épouvantable.

2. Résumé en 30 secondes : on l’a mis dans « l’herbe », et il a commencé à y vivre

Au départ, ce n’était qu’un kaomoji décoratif :

- ̗̀ ꪔ̤̥ꪔ̤̮ꪔ̤̫ ̖́-

Puis le « lapin » a été glissé dans une ligne en écriture birmane :

မြန်မာမြန်မာမြန်မာ ꪔ̤̮ မြန်မာမြန်မာ

Pour quelqu’un qui ne lit pas cette écriture, les formes rondes et denses peuvent d’abord être perçues comme une texture végétale. Le petit visage ressemble alors à un lapin qui sort la tête d’un buisson.

En thaï, l’effet devient encore plus frappant :

ภาษาไทยꪔ̤̮ภาษาไทย

Réaction immédiate : « Attends… il y a un lapin là-dedans ? »

L’étape scientifique suivante était évidemment d’en ajouter dix.

ภาษาไทยꪔ̤̮ภาษาꪔ̤̥ไทยภาษาꪔ̤̫ไทยꪔ̤̮กำลังꪔ̤̥เขียนอยู่ꪔ̤̫ภาษาไทยꪔ̤̮ภาษาꪔ̤̥ไทยภาษาꪔ̤̫ไทยꪔ̤̮

À ce stade, on ne lit plus un texte. On recense la faune sauvage.

3. Ce que contient vraiment le « lapin »

Apparence Points de code
ꪔ̤̥ U+AA94 + U+0324 + U+0325
ꪔ̤̮ U+AA94 + U+0324 + U+032E
ꪔ̤̫ U+AA94 + U+0324 + U+032B

U+AA94 est une consonne réelle de l’écriture Tai Viet.[1] Les signes empilés sous cette base sont des marques combinantes Unicode possédant chacune leur propre identité.[2]

Unicode n’a donc pas caché un lapin comme easter egg. Notre cerveau a simplement reconnu un visage dans une combinaison parfaitement valide de caractères.

La culture kaomoji s’est chargée du reste.

4. Pourquoi le thaï produit un camouflage visuel si efficace

Cela ne veut pas dire que l’écriture thaïe est « bizarre ». La plaisanterie vient du regard de quelqu’un qui ne sait pas la lire.

Le thaï utilise des signes pouvant apparaître autour d’une lettre de base, notamment au-dessus et au-dessous. De plus, le texte thaï courant ne sépare pas chaque mot par un espace comme le français. L’algorithme Unicode de coupure de ligne classe le thaï parmi les écritures nécessitant une analyse dépendante de la langue et du contexte pour déterminer de bons points de coupure.[4]

On insère alors ꪔ̤̮, qui porte déjà deux signes combinants sous une base Tai Viet.

Une personne lisant le thaï voit immédiatement qu’un élément étranger s’est glissé dans la ligne. Une personne qui ne le lit pas peut d’abord percevoir un champ continu de courbes et de signes. Le visage de lapin obtient ainsi un camouflage accidentel.

ภาษาไทยꪔ̤̮ภาษาไทย

Traduction visuelle : herbe, herbe, herbe… une seconde, quelque chose vient de me regarder ?

5. Birman, khmer, malayalam et cingalais peuvent aussi participer

Birman :

မြန်မာမြန်မာ ꪔ̤̮ မြန်မာမြန်မာ

Khmer :

ខ្មែរខ្មែរអក្សរ ꪔ̤̮ ខ្មែរខ្មែរ

Malayalam :

മലയാളം മലയാളം ꪔ̤̮ മലയാളം

Cingalais :

සිංහල භාෂාව ꪔ̤̮ සිංහල

Thaï :

ภาษาไทยกำลังเขียนอยู่ ꪔ̤̮ ภาษาไทย

Tout classement du « meilleur camouflage pour lapin » est entièrement subjectif. Il s’agit de véritables systèmes d’écriture utilisés par de vraies langues, pas de motifs décoratifs. Le gag vient simplement de la tendance d’un non-lecteur à percevoir d’abord des formes inconnues comme une texture, puis à découvrir la petite tête cachée.

Dans ce championnat absolument inutile, le thaï semble avoir un niveau de boss final.

6. La traduction a réellement produit une chaîne étrange, mais la normalisation Unicode n’est pas automatiquement coupable

Après passage de la version à dix lapins dans un flux de traduction, une sortie avec des espaces inattendus a été observée :

ภาษาไทยꪔ̤̮ภาษาꪔ̤̥ไทยภ าษาꪔ̤̫ไทยꪔ̤̮กำลังꪔ̤̥เข ียนอยู่...

On peut raisonnablement parler d’un cas limite de traitement Unicode. En revanche, dire sans preuve que « la normalisation Unicode a inséré les espaces » serait trop précis.

La normalisation Unicode définit la décomposition, l’ordre canonique et la recomposition de représentations équivalentes.[5] Un service de traduction peut ajouter de nombreuses autres couches : segmentation des phrases, détection des limites de mots, tokenisation, traitement des caractères inconnus, stockage, fallback de polices, mise en page et transformations lors du copier-coller.

Le thaï et le birman exigent déjà une segmentation plus contextuelle que les langues séparant leurs mots par des espaces.[4] Ajouter au milieu une base provenant d’une autre écriture avec plusieurs marques combinantes constitue donc un excellent stress test pour toute la chaîne de traitement du texte.

Pour identifier la vraie étape fautive, il faut comparer la séquence exacte de points de code après chaque phase : entrée, stockage, requête API, traduction, réponse, parsing et rendu.

Le lapin est mignon. L’analyse d’incident ne l’est pas.

7. « Un caractère » à l’écran ne signifie pas forcément un seul point de code Unicode

Unicode utilise la notion de grapheme cluster, ou groupe de graphèmes, pour approximer l’unité que l’utilisateur perçoit comme un caractère.[3]

Une lettre accentuée peut être stockée sous la forme d’un point de code précomposé, ou comme une lettre de base suivie d’une ou plusieurs marques combinantes. À l’écran, les deux peuvent sembler former un seul caractère.

Notre lapin possède donc plusieurs identités :

  • Visuellement : un lapin.
  • En interne : trois points de code.
  • Longueur de chaîne : dépend du modèle du langage ou de l’API.
  • Déplacement du curseur : idéalement selon l’unité perçue.
  • Backspace : le comportement peut varier selon l’implémentation.
  • Recherche et comparaison : la politique de normalisation compte.
  • Police : fallback et positionnement des marques peuvent changer l’apparence.

Le registre de la faune fonctionne apparemment par points de code.

8. La blague est accidentellement un excellent fixture de test Unicode

ꪔ̤̮ permet de vérifier :

  1. Les allers-retours UTF-8.
  2. La conservation des signes combinants au copier-coller.
  3. La différence entre comptage par points de code et par graphèmes.
  4. Le curseur et la suppression.
  5. La politique de comparaison NFC/NFD.
  6. Le fallback de polices et le placement des signes.
  7. Les coupures de ligne dans des contextes thaïs, birmans ou khmers.
  8. Les allers-retours via une API de traduction.
  9. L’indexation de recherche.
  10. Le rendu entre navigateurs et mobiles.

Cela ne justifie pas de le disséminer au hasard dans les contenus de production. Les chaînes extrêmes doivent rester dans des fixtures explicites avec la séquence attendue de points de code.

Ne relâchez pas de lapins sauvages dans la base de production.

9. Règles pratiques pour un site multilingue

  • Utiliser UTF-8 de manière cohérente.
  • Définir une politique de normalisation ; NFC est courant sur le Web, tout en prévoyant les cas où le texte source doit être préservé.[5]
  • Distinguer octets, unités de code, points de code et groupes de graphèmes.
  • Définir correctement lang et tester polices et interlignage.
  • Tester réellement le thaï, le birman, le khmer et les écritures qui ne peuvent pas être traitées par un simple découpage sur les espaces.[4]
  • Ne pas réécrire silencieusement le texte créé par l’auteur lors de l’import de traductions.
  • Vérifier la position des signes, les retours à la ligne, la sélection, le copier-coller, la recherche et l’accessibilité — pas seulement le mojibake.
  • Si une chaîne change, comparer chaque couche avant de conclure « c’est Unicode ».

Unicode a généralement fait ce que sa spécification demandait. Le vrai danger apparaît lorsqu’un logiciel suppose qu’« un caractère visible = une unité interne simple ».

C’est à ce moment-là que le lapin sort du buisson.

10. Conclusion : dans l’herbe se cachaient surtout notre reconnaissance des formes et la profondeur d’Unicode

L’histoire a commencé avec un kaomoji mignon :

ꪔ̤̮

Dans du birman, il semblait caché dans un buisson. Dans du thaï, il semblait déjà y habiter. Avec dix exemplaires, on obtenait une population. Après un passage dans un pipeline de traduction, on obtenait un cours de débogage Unicode.

Sous la blague, les leçons sont sérieuses :

  • Une unité visible peut contenir plusieurs points de code.
  • Les marques combinantes s’attachent visuellement à une base.
  • Certaines écritures nécessitent une segmentation sensible à la langue.
  • Normalisation, segmentation, coupure de ligne, police, traduction et rendu sont des couches différentes.
  • Un affichage étrange ne suffit pas à identifier la couche fautive.

Et après avoir vu cette ligne une fois comme « un lapin dans l’herbe » :

ภาษาไทยꪔ̤̮ภาษาไทย

impossible de revenir en arrière.

Nous étions venus étudier Unicode. Nous sommes repartis après avoir confirmé l’habitat du lapin.


Partager cet article

Publicité

Trouver d’autres articles

Tous les articles

Mendoi-chan

Rédigé par

Mendoi-chan

Elle transforme les frictions du travail et du quotidien en structures claires et en prochaines étapes concrètes.

À propos
Publicité

Articles récents

  1. 1Dormir 18 heures en une journée : sommeil de récupération ou signal à surveiller ?
  2. 2Faut-il vraiment s’excuser de « ne pas avoir donné de petits-enfants » à ses parents ? Parfois, le simple retour d’un enfant adulte pour partager un repas compte déjà beaucoup
  3. 3Le jour où une VTuber de 40 ans est devenue une « maison de quartier numérique » : l’âge ne tue pas toujours la demande, il peut en changer la forme
  4. 4J’ai confié depuis un smartphone un développement de niveau senior à un agent IA — et le déménagement s’est terminé avant
  5. 5Comment une automatisation d’articles par IA est devenue une « usine autonome » en environ une semaine : un coup d’Ultra, Level 6, et pourquoi Level 7 peut attendre

À lire aussi

Publicité