Come funziona il testo Zalgo?


694

Ho visto un testo stranamente formattato chiamato Zalgo come di seguito scritto su vari forum. È un po 'fastidioso da guardare, ma mi disturba davvero perché mina la mia idea di cosa dovrebbe essere un personaggio. La mia comprensione è che un personaggio dovrebbe muoversi orizzontalmente lungo una linea e rimanere all'interno di un certo "contenitore". Ovviamente il testo di Zalgo si sta muovendo verticalmente e non sembra essere limitato a nessuno spazio.

È un bug / difetto / exploit / hack in Unicode? Questi singoli personaggi hanno proprietà strane? "Cosa sta succedendo qui?


H̡̫̤̤̣͉̤ͭ̓̓̇͗̎̀ơ̯̗̱̘̮͒̄̀̈ͤ̀͡w͓̲͙͖̥͉̹͋ͬ̊ͦ̂̀̚ ͎͉͖̌ͯͅͅd̳̘̿̃̔̏ͣ͂̉̕ŏ̖̙͋ͤ̊͗̓͟͜e͈͕̯̮̙̣͓͌ͭ̍̐̃͒s͙͔̺͇̗̱̿̊̇͞ ̸̤͓̞̱̫ͩͩ͑̋̀ͮͥͦ̊Z̆̊͊҉҉̠̱̦̩͕ą̟̹͈̺̹̋̅ͯĺ̡̘̹̻̩̩͋͘g̪͚͗ͬ͒o̢̖͇̬͍͇͓̔͋͊̓ ̢͈͙͂ͣ̏̿͐͂ͯ͠t̛͓̖̻̲ͤ̈ͣ͝e͋̄ͬ̽͜҉͚̭͇ͅx͎̬̠͇̌ͤ̓̂̓͐͐́͋͡ț̗̹̝̄̌̀ͧͩ̕͢ ̮̗̩̳̱̾w͎̭̤͍͇̰̄͗ͭ̃͗ͮ̐o̢̯̻̰̼͕̾ͣͬ̽̔̍͟ͅr̢̪͙͍̠̀ͅǩ̵̶̗̮̮ͪ́? ̙͉̥̬͙̟̮͕ͤ̌͗ͩ̕͡



31
en.wikipedia.org/wiki/Combining_character potrebbe offrire alcuni indizi.
Lucas Jones,

2
Questo potrebbe anche farti impazzire
Burhan Ali,

3
Come riferimento obbligatorio, xkcd.com/1857
mackycheese21

Risposte:


431

Il testo utilizza la combinazione di caratteri, noti anche come segni di combinazione. Vedere la sezione 2.11 di Combinazione di caratteri nello standard Unicode (PDF).

In Unicode, il rendering dei caratteri non utilizza un semplice modello di cella di caratteri in cui ogni glifo si inserisce in una casella con una determinata altezza. I segni combinati possono essere resi sopra, sotto o all'interno di un carattere base

Quindi puoi facilmente costruire una sequenza di caratteri, composta da un carattere di base e segni di "combinazione sopra", di qualsiasi lunghezza, per raggiungere l'altezza visiva desiderata, supponendo che il software di rendering sia conforme al modello di rendering Unicode. Una tale sequenza ovviamente non ha alcun significato, e persino una scimmia potrebbe produrla (ad esempio, data una tastiera con un driver adatto).

E puoi mescolare i segni "combinando sopra" e "combinando sotto".

Il testo di esempio nella domanda inizia con:


36
Unicode può farlo perché deliberatamente non si conforma a nient'altro che all '"uso reale dei caratteri": il software dovrebbe quindi conformarsi a Unicode. Ed è per questo che abbiamo ad es U+1F4A9.
Camilo Martin,

2
Solo per aggiungere a questo, ecco un elenco di caratteri combinati usati sopra in basso, o attraverso il testo per generare "testo Zalgo": zalgotextgenerator.com/unicode
VKK

270

Il testo di Zalgo funziona grazie alla combinazione di caratteri. Questi sono caratteri speciali che consentono di modificare il carattere precedente.

inserisci qui la descrizione dell'immagine

O

y + ̆ = y̆ che in realtà è

y + ̆ = y̆

Dal momento che è possibile impilarli uno sopra l'altro, è possibile produrre quanto segue:


ÿ

che in realtà è:

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

Lo stesso vale per mettere le cose sotto:


ÿ



che in realtà è:

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

In Unicode, il blocco principale di combinazione dei segni diacritici per le lingue europee e l'alfabeto fonetico internazionale è U + 0300 – U + 036F.

Maggiori informazioni qui

Per produrre un elenco di segni diacritici combinati puoi usare il seguente script (poiché i collegamenti continuano a morire)

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

Dai un'occhiata anche a loro



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


2
come lo digiteresti?
Aequitas,

6
@Aequitas Se stai chiedendo dei ALTcodici, non puoi farlo semplicemente incollando y&#x0306;&#x0306;dove entra in HTML puro e il browser farebbe la magia ...
Matas Vaitkevicius

2
@barbsan Ciao, grazie per avermelo fatto notare, l'ho sostituito con uno script che li genera.
Matas Vaitkevicius,

Mi chiedo perché hai scelto questo particolare esempio di Y con una tildae. In realtà ha un certo significato in russo, non sono sicuro che tu ne abbia familiarità.
SergeyA

@SergeyA Penso che usi questo esempio perché è lo stesso esempio che utilizza la pagina di Wikipedia collegata ( en.wikipedia.org/wiki/Combining_character ).
Mischa
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.