716 votes

Comment fonctionne le texte Zalgo ?

J'ai vu du texte bizarrement formaté appelé Zalgo comme ci-dessous écrit sur divers forums. C'est un peu ennuyeux à regarder, mais cela me dérange vraiment parce que cela sape ma notion de ce qu'un personnage est censé être. Si je comprends bien, un caractère est censé se déplacer horizontalement sur une ligne et rester dans un certain "conteneur". De toute évidence, le texte de Zalgo se déplace verticalement et ne semble pas être limité à un espace quelconque.

S'agit-il d'un bogue/une faille/une exploitation/un piratage d'Unicode ? S'agit-il de caractères individuels aux propriétés étranges ? "Qu'est-ce qui se passe ici ?

Comment fonctionne le texte Zalgo ?

32 votes

fr.wikipedia.org/wiki/Combinaison_de_caractères pourrait offrir quelques indices.

2 votes

Cela pourrait aussi vous étonner : fr.wikipedia.org/wiki/

3 votes

Comme la référence obligatoire, xkcd.com/1857

448voto

Jukka K. Korpela Points 71599

Le texte utilise des caractères de combinaison, également connus sous le nom de marques de combinaison. Voir la section 2.11 de Combinaison de caractères dans la norme Unicode (PDF).

Dans Unicode, le rendu des caractères n'utilise pas un modèle simple de cellule de caractères où chaque glyphe s'insère dans une case de hauteur donnée. Les marques de combinaison peuvent être rendues au-dessus, au-dessous ou à l'intérieur d'un caractère de base.

Vous pouvez donc facilement construire une séquence de caractères, composée d'un caractère de base et de marques de "combinaison au-dessus", de n'importe quelle longueur, pour atteindre n'importe quelle hauteur visuelle souhaitée, en supposant que le logiciel de rendu se conforme au modèle de rendu Unicode. Une telle séquence n'a bien sûr aucune signification, et même un singe pourrait la produire (par exemple, avec un clavier doté d'un pilote approprié).

Et vous pouvez mélanger les marques "combinaison au-dessus" et "combinaison au-dessous".

L'exemple de texte de la question commence par :

38 votes

Unicode peut le faire parce qu'il ne se conforme délibérément à rien d'autre qu'à "l'usage réel des caractères" - les logiciels sont alors censés se conformer à Unicode. Et c'est pourquoi nous avons par exemple.., U+1F4A9 .

2 votes

Pour compléter le tout, voici une liste des caractères de combinaison utilisés au-dessus, en dessous ou à travers le texte pour générer du "texte Zalgo" : zalgotextgenerator.com/unicode

282voto

LIUFA Points 3642

Le texte Zalgo fonctionne grâce à la combinaison de caractères. Ce sont des caractères spéciaux qui permettent de modifier le caractère qui le précède.

enter image description here

OU

y + ̆ = y̆ qui est en réalité

y + ̆ = y̆

Comme vous pouvez les empiler les uns sur les autres, vous pouvez produire ce qui suit :

Y̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆

qui est en fait :

y̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆

Il en va de même pour mettre des choses en dessous :

Y̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆

qui l'est en fait :

y̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆

Dans Unicode, le bloc principal de combinaison de diacritiques pour les langues européennes et l'alphabet phonétique international est U+0300-U+036F.

Plus d'informations à ce sujet ici

Pour produire une liste de combinaisons de signes diacritiques, vous pouvez utiliser le script suivant (puisque les liens continuent à mourir)

for(var i=768; i<879; i++){console.log(new DOMParser().parseFromString("&#"+i+";", "text/html").documentElement.textContent +"  "+"&#"+i+";");}

Consultez-les également

Mͣͭͣ̾ Vͣͥͭ͛ͤͮͥͨͥͧ̾

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X