Zalgo文字如何工作?

本文翻譯自:How does Zalgo text work?

I've seen weirdly formatted text called Zalgo like below written on various forums. 我在各個論壇上都看到過奇怪的格式化文本Zalgo,如下所示。 It's kind of annoying to look at, but it really bothers me because it undermines my notion of what a character is supposed to be. 看起來很煩人,但它確實使我感到困擾,因爲它破壞了我對角色應該是什麼樣的觀念。 My understanding is that a character is supposed to move horizontally across a line and stay within a certain "container". 我的理解是,角色應該在一條線上水平移動並停留在某個“容器”內。 Obviously the Zalgo text is moving vertically and doesn't seem to be restricted to any space. 顯然,Zalgo文本是垂直移動的,似乎不受任何空間限制。

Is this a bug/flaw/exploit/hack in Unicode? 這是Unicode中的錯誤/缺陷/漏洞利用/黑客嗎? Are these individual characters with weird properties? 這些單個字符是否具有怪異的屬性? "What" is happening here? “什麼”在這裏發生?


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



#1樓

參考:https://stackoom.com/question/RbiW/Zalgo文字如何工作


#2樓

The text uses combining characters, also known as combining marks. 文本使用組合字符,也稱爲組合標記。 See section 2.11 of Combining Characters in the Unicode Standard (PDF). 請參閱Unicode標準 (PDF)中的組合字符 2.11節。

In Unicode, character rendering does not use a simple character cell model where each glyph fits into a box with given height. 在Unicode中,字符渲染不使用簡單的字符單元模型,其中每個字形都適合具有給定高度的框。 Combining marks may be rendered above, below, or inside a base character 組合標記可以在基本字符的上方,下方或內部顯示

So you can easily construct a character sequence, consisting of a base character and “combining above” marks, of any length, to reach any desired visual height, assuming that the rendering software conforms to the Unicode rendering model. 因此,只要渲染軟件符合Unicode渲染模型,您就可以輕鬆構造一個字符序列,該字符序列由任意長度的基本字符和“上面的組合”標記組成,以達到任何所需的視覺高度。 Such a sequence has no meaning of course, and even a monkey could produce it (eg, given a keyboard with suitable driver). 這樣的序列當然沒有意義,甚至猴子也可以產生它(例如,給鍵盤一個合適的驅動器)。

And you can mix “combining above” and “combining below” marks. 您可以混合“在上方組合”和“在下方組合”標記。

The sample text in the question starts with: 問題中的示例文本以以下內容開頭:


#3樓

Zalgo text works because of combining characters. Zalgo文本之所以有效,是因爲結合了字符。 These are special characters that allow to modify character that comes before. 這些是特殊字符,允許修改之前出現的字符。

在此處輸入圖片說明

OR 要麼

y + ̆ = y̆ which actually is y +̆=y̆實際上是

y + ̆ = y̆

Since you can stack them one atop the other you can produce the following: 由於您可以將它們一個接一個地堆疊,因此可以產生以下內容:


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

which actually is: 實際上是:

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

The same goes for putting stuff underneath: 將東西放在下面也是如此:


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



that in fact is: 實際上是:

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

In Unicode, the main block of combining diacritics for European languages and the International Phonetic Alphabet is U+0300–U+036F. 在Unicode中,將歐洲語言的變音符號和國際音標結合起來的主要步驟是U + 0300–U + 036F。

More about it here 在這裏瞭解更多

To produce a list of combining diacritical marks you can use the following script (since links keep on dying) 要生成一個組合變音標記的列表,您可以使用以下腳本(因爲鏈接不斷消失)

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

Also check em out 還檢查一下



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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章