Zalgo文本如何工作?

时间:2011-07-05 08:30:38

标签: html unicode zalgo

我见过很多格式化的文字叫做Zalgo,就像下面写在各种论坛上一样。这看起来有点烦人,但它真的让我感到烦恼,因为它破坏了我对角色应该是什么的概念。我的理解是,一个角色应该在一条线上水平移动并保持在某个“容器”内。显然Zalgo文本是垂直移动的,似乎并不局限于任何空间。

这是Unicode中的错误/漏洞/漏洞/黑客攻击吗?这些个性角色是否具有奇怪的属性? “这是什么”在这里发生?

  


     

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

2 个答案:

答案 0 :(得分:401)

文本使用组合字符,也称为组合标记。见Combining Characters in the Unicode Standard的第2.11节(PDF)。

在Unicode中,字符呈现不使用简单的字符单元格模型,其中每个字形适合具有给定高度的框。组合标记可以在基本字符的上方,下方或内部呈现

因此,假设渲染软件符合Unicode渲染模型,您可以轻松构建一个由基本字符和任意长度的“组合上方”标记组成的字符序列,以达到任何所需的视觉高度。这样的序列当然没有任何意义,甚至猴子也可以产生它(例如,给定一个带有合适驱动程序的键盘)。

你可以混合“上面合并”和“下面合并”标记。

问题中的示例文本以:

开头

答案 1 :(得分:232)

Zalgo文本因组合字符而起作用。这些是允许修改之前字符的特殊字符。

enter image description here

OR

y +̆=y̆实际上是

y + ̆ = y̆

由于您可以将它们叠加在另一个上面,因此您可以生成以下内容:


ý

实际上是:

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

将内容放在下面也是如此:


ý



实际上是:

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

在Unicode中,结合欧洲语言的变音符号和国际音标的主要块是U + 0300-U + 036F。

More about it here

要生成组合变音符号的列表,您可以使用以下脚本(因为链接不断死亡)

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

同时检查出局



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