html - Zalgo 文本如何工作?

标签 html unicode zalgo

我在各种论坛上看到过格式奇怪的名为 Zalgo 的文本,如下所示。看起来有点烦人,但它确实让我烦恼,因为它破坏了我对角色应该是什么样的概念。我的理解是,角色应该水平移动穿过一条线并停留在某个“容器”内。显然,Zalgo 文本是垂直移动的,似乎不受任何空间的限制。

这是 Unicode 中的错误/缺陷/漏洞/黑客吗?这些单独的角色是否具有奇怪的属性?这里发生了“什么”?


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


最佳答案

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

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

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

并且您可以混合“组合上方”和“组合下方”标记。

问题中的示例文本开头为:

关于html - Zalgo 文本如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48315656/

相关文章:

c# - c#中字符串的编码

c++ - 开关在 C++ 中不起作用

validation - 符号无法正确显示

javascript - 在释放 zalgo 的 Node.js 设计模式中,为什么异步路径是一致的?

ios - 在 iframe 中打开选择框时,iPhone 中不显示“完成”按钮

css - 在主表的一行中居中一个表

html - 调整浏览器窗口大小时图像碰撞在一起

html - 如何只显示移动设备的 html 视频海报

c - c中的utf8字符串和malloc

html - Zalgo 文本如何工作?