我已经在各种论坛上看到了如下所示的名为 Zalgo 的奇怪格式的文本。看起来有点烦人,但它真的让我很困扰,因为它破坏了我对角色应该是什么的概念。我的理解是角色应该水平移动穿过一条线并停留在某个“容器”内。显然,Zalgo 文本是垂直移动的,并且似乎不受任何空间的限制。
这是 Unicode 中的错误/缺陷/利用/黑客攻击吗?这些单独的角色是否具有奇怪的属性?这里发生了“什么”?
H铜蛜虚虈蛅蛅处獭蛝太蹋蛪蛪踏o蛝蛅虁虉亭虁虥汀摊虋瘫虼w蛬同虋挺蛤虃踏蛝蛽蛽滩蛝胎蛪坦虒蛶蛥蛥蛪蜄d桐炭虄虄虖虖停蛉虊亭虝坛虖虡虇蛬虋蜅蛢蜔蜏号虣e蛯铜虓虗虄蛼蛨蜁摊坍虣蹋蛽虋虈蛋蛿蛧虠蜕虽虁虁同庭挺虋谈蛋虁虁同庭挺虋谈蛋虁蛨蛆蛆虡虡虌谈蛋虋蛨蛆蛆虇虡虌坦虌蛋蜅蛆蛆虣虡虜虌坦蛋蜅蛆蛆蛆虜虌坦蛋蛋蛆o俘蛬蛫虚挞号蛧停蛵蛧蛽蛡停蛵蛧蛽蛡停虖炭蛱蛡童挞蜖蛨雉雉亭虉停虥蜐蛽号露滩蛬虅同探蜏蜏蜌蛧蛥x虒亭虚蛢蛢蛱蛱蛱虂蛬汀蛶虪蛧t虅虒虁船桐虝苔苔虠亏塌塌陷虠泰坦庭w虅蜅吐铜虄蜅彤虗蛶潮铜虄蜅彤虗蛶潮汐蛄蛵蛧贪o停同探蛵蛧贪o停同探虓蜔摊暴露贪虥碳蜙蜙蜙虁虁虪虁虁虁虁亭虪槐蛵虁虒酮虂痰潭虠坍塌?虘汀腅虞胎虣虣蜣虬虩坍蛥虣
文本使用组合字符,也称为组合标记。请参阅 Unicode 标准(PDF) 中的组合字符 第 2.11 节。
在 Unicode 中,字符渲染不使用简单的字符单元模型,其中每个字形都适合具有给定高度的框。组合标记可以呈现在基本字符的上方、下方或内部
因此,假设渲染软件符合 Unicode 渲染模型,您可以轻松地构建一个由基本字符和“组合上面”标记组成的任意长度的字符序列,以达到任何所需的视觉高度。这样的序列当然没有意义,甚至猴子也能产生它(例如,给定一个带有合适驱动程序的键盘)。
并且您可以混合使用“组合在上面”和“组合在下面”标记。
问题中的示例文本以:
H
ͭ
̓
̓
̇