Bagaimana cara kerja teks Zalgo?

694

Saya telah melihat teks berformat aneh bernama Zalgo seperti yang ditulis di berbagai forum. Agak menyebalkan untuk dilihat, tapi itu benar-benar menggangguku karena itu melemahkan pandanganku tentang karakter yang seharusnya. Pemahaman saya adalah bahwa karakter seharusnya bergerak secara horizontal melintasi garis dan tetap berada dalam "wadah" tertentu. Jelas teks Zalgo bergerak secara vertikal dan tampaknya tidak terbatas pada ruang apa pun.

Apakah ini bug / cacat / exploit / hack di Unicode? Apakah ini karakter individu dengan properti aneh? "Apa yang terjadi disini?


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


Mike
sumber
31
en.wikipedia.org/wiki/Combining_character mungkin menawarkan beberapa petunjuk.
Lucas Jones
2
Ini juga dapat membuat Anda teringat: en.wikipedia.org/wiki/…
Burhan Ali
3
Sebagai referensi wajib, xkcd.com/1857
mackycheese21

Jawaban:

431

Teks menggunakan menggabungkan karakter, juga dikenal sebagai menggabungkan tanda. Lihat bagian 2.11 dari Menggabungkan Karakter dalam Standar Unicode (PDF).

Dalam Unicode, rendering karakter tidak menggunakan model sel karakter sederhana di mana setiap mesin terbang masuk ke dalam kotak dengan ketinggian tertentu. Menggabungkan tanda dapat diberikan di atas, di bawah, atau di dalam karakter dasar

Jadi Anda dapat dengan mudah membangun urutan karakter, yang terdiri dari karakter dasar dan tanda "menggabungkan di atas", dengan panjang berapa pun, untuk mencapai ketinggian visual yang diinginkan, dengan asumsi bahwa perangkat lunak rendering sesuai dengan model rendering Unicode. Urutan seperti itu tentu saja tidak memiliki makna, dan bahkan seekor monyet pun dapat memproduksinya (misalnya, diberi papan ketik dengan driver yang sesuai).

Dan Anda dapat mencampur tanda "menggabungkan di atas" dan "menggabungkan di bawah".

Teks sampel dalam pertanyaan dimulai dengan:

Jukka K. Korpela
sumber
36
Unicode dapat melakukan ini karena sengaja tidak sesuai dengan apa pun selain "penggunaan karakter di dunia nyata" - perangkat lunak kemudian diharapkan sesuai dengan Unicode. Dan inilah mengapa kita memiliki misalnya U+1F4A9,.
Camilo Martin
2
Untuk menambahkan ini, berikut adalah daftar karakter yang digabungkan yang digunakan di atas, atau melalui teks untuk menghasilkan "teks Zalgo": zalgotextgenerator.com/unicode
VKK
270

Teks Zalgo berfungsi karena menggabungkan karakter. Ini adalah karakter khusus yang memungkinkan untuk memodifikasi karakter yang datang sebelumnya.

masukkan deskripsi gambar di sini

ATAU

y + ̆ = y̆ yang sebenarnya

y + ̆ = y̆

Karena Anda dapat menumpuknya di atas yang lain, Anda dapat menghasilkan yang berikut:


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

yang sebenarnya adalah:

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

Hal yang sama berlaku untuk meletakkan barang-barang di bawahnya:


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



yang sebenarnya adalah:

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

Di Unicode, blok utama menggabungkan diakritik untuk bahasa Eropa dan Alfabet Fonetik Internasional adalah U + 0300 – U + 036F.

Lebih lanjut di sini

Untuk menghasilkan daftar yang menggabungkan tanda diakritik Anda dapat menggunakan skrip berikut (karena tautan terus mati)

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

Periksa juga mereka



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

Matas Vaitkevicius
sumber
2
bagaimana Anda mengetiknya?
Aequitas
6
@Aequitas Jika Anda bertanya tentang ALTkode maka Anda tidak dapat melakukan itu Anda hanya akan menempel di y&#x0306;&#x0306;mana ia masuk ke html 'murni' dan browser akan melakukan itu ajaib ...
Matas Vaitkevicius
2
@barbsan Hai, terima kasih telah memberi tahu saya, saya telah menggantinya dengan skrip yang menghasilkannya.
Matas Vaitkevicius
Saya heran mengapa Anda memilih contoh khusus Y ini dengan tildae. Ini sebenarnya memiliki beberapa arti dalam bahasa Rusia, tidak yakin apakah Anda terbiasa dengan itu.
SergeyA
@SergeyA Saya pikir dia menggunakan contoh ini karena ini adalah contoh yang sama dengan halaman wikipedia tertaut ( en.wikipedia.org/wiki/Combining_character ) gunakan.
Mischa