我已经在各种论坛上看到了如下所示的名为 Zalgo 的奇怪格式的文本。看起来有点烦人,但它真的让我很困扰,因为它破坏了我对角色应该是什么的概念。我的理解是角色应该水平移动穿过一条线并停留在某个“容器”内。显然,Zalgo 文本是垂直移动的,并且似乎不受任何空间的限制。
这是 Unicode 中的错误/缺陷/利用/黑客攻击吗?这些单独的角色是否具有奇怪的属性?这里发生了“什么”?
h̡̫̤̤̣͉̤ͭ̓̓͗̎̀ơ̯̗̱̘̮͒̄̀̈ͤ̀͡ w͓̲͙͖̥͉̹͋ͬ̊ͦ̂̀̚ ͎͉͖̌ͯͅͅ d̳̘̿̃̔̏ͣ͂̉̕ŏ̖̙͋ͤ̊͗̓͟͜e͈͕̯̮̙̣͓͌ͭ̍̐̃͒s͙͔̺͇̗̱̿̊s̸͙͔̺͇̗̱̤͓̞̱̫̿̊ͩͩ͑̋̀ͮͥͦ̊͞
文本使用组合字符,也称为组合标记。请参阅 Combining Characters in the Unicode Standard (PDF) 的第 2.11 节。
在 Unicode 中,字符渲染不使用简单的字符单元模型,其中每个字形都适合具有给定高度的框。组合标记可以呈现在基本字符的上方、下方或内部
因此,假设渲染软件符合 Unicode 渲染模型,您可以轻松地构建一个由基本字符和“组合上面”标记组成的任意长度的字符序列,以达到任何所需的视觉高度。这样的序列当然没有意义,甚至猴子也能产生它(例如,给定一个带有合适驱动程序的键盘)。
并且你可以混合使用“combining above”和“combining below”标记。
问题中的示例文本以:
拉丁文大写字母 H - H
结合拉丁文小写字母 T - ͭ
结合希腊克罗尼 - ̓
组合上面的逗号 - ̓
结合上面的点 - ̇
Zalgo 文本的工作原理是组合字符。这些是允许修改之前的字符的特殊字符。
https://i.stack.imgur.com/WZFq0.png
或者
+ ̆ = y̆ 实际上是
y + ̆ = y̆
由于您可以将它们堆叠在一起,因此您可以生成以下内容:
y̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
这实际上是:
y̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
将东西放在下面也是如此:
y̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
实际上是:
y̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
在 Unicode 中,将欧洲语言的变音符号与国际音标组合的主要块是 U+0300–U+036F。
要生成组合变音符号的列表,您可以使用以下脚本(因为链接不断死亡)
for(var i=768; i<879; i++){console.log(new DOMParser().parseFromString(""+i+";", "text/html").documentElement.textContent +" "+" "+i+";");}
也检查一下
Mͣͭͣ̾ Vͣͥͭ͛ͤͮͥͨͥͧ̾
ALT
代码,那么您不能这样做,您只需将y̆̆
粘贴到“纯”html中,浏览器就会做到这一点......
不定期副业成功案例分享
U+1F4A9
。