Я видел странно отформатированный текст под названием Zalgo, как показано ниже, на различных форумах. На это немного раздражает взгляд, но это действительно беспокоит меня, потому что это подрывает мое представление о том, каким должен быть персонаж. Насколько я понимаю, персонаж должен двигаться горизонтально через линию и оставаться в определенном «контейнере». Очевидно, что текст Zalgo движется вертикально и, кажется, не ограничен каким-либо пространством.
Это ошибка / ошибка / эксплойт / хак в Юникоде? Являются ли эти отдельные персонажи странными свойствами? "Что здесь происходит?
H̡̫̤̤̣͉̤ͭ̓̓̇͗̎̀ơ̯̗̱̘̮͒̄̀̈ͤ̀͡w͓̲͙͖̥͉̹͋ͬ̊ͦ̂̀̚ ͎͉͖̌ͯͅͅd̳̘̿̃̔̏ͣ͂̉̕ŏ̖̙͋ͤ̊͗̓͟͜e͈͕̯̮̙̣͓͌ͭ̍̐̃͒s͙͔̺͇̗̱̿̊̇͞ ̸̤͓̞̱̫ͩͩ͑̋̀ͮͥͦ̊Z̆̊͊҉҉̠̱̦̩͕ą̟̹͈̺̹̋̅ͯĺ̡̘̹̻̩̩͋͘g̪͚͗ͬ͒o̢̖͇̬͍͇͓̔͋͊̓ ̢͈͙͂ͣ̏̿͐͂ͯ͠t̛͓̖̻̲ͤ̈ͣ͝e͋̄ͬ̽͜҉͚̭͇ͅx͎̬̠͇̌ͤ̓̂̓͐͐́͋͡ț̗̹̝̄̌̀ͧͩ̕͢ ̮̗̩̳̱̾w͎̭̤͍͇̰̄͗ͭ̃͗ͮ̐o̢̯̻̰̼͕̾ͣͬ̽̔̍͟ͅr̢̪͙͍̠̀ͅǩ̵̶̗̮̮ͪ́? ̙͉̥̬͙̟̮͕ͤ̌͗ͩ̕͡
Ответы:
В тексте используются комбинирующие символы, также известные как комбинирующие знаки. См. Раздел 2.11 « Объединение символов в стандарте Unicode» (PDF).
В Юникоде при рендеринге символов не используется простая модель ячейки, в которой каждый глиф вписывается в поле с заданной высотой. Комбинированные метки могут быть выполнены выше, ниже или внутри базового символа
Таким образом, вы можете легко создать последовательность символов, состоящую из базового символа и меток «комбинирование выше» любой длины, чтобы достичь любой желаемой визуальной высоты, при условии, что программное обеспечение рендеринга соответствует модели рендеринга Unicode. Такая последовательность, конечно, не имеет смысла, и даже обезьяна могла бы ее создать (например, с помощью клавиатуры с подходящим драйвером).
И вы можете смешивать метки «комбинирование сверху» и «комбинирование снизу».
Пример текста в вопросе начинается с:
H
ͭ
̓
̓
̇
источник
U+1F4A9
.Текст Zalgo работает из-за сочетания символов. Это специальные символы, которые позволяют изменять предшествующий символ.
ИЛИ
y + ̆ = y̆, который на самом деле
Поскольку вы можете сложить их друг над другом, вы можете создать следующее:
Y
что на самом деле является:
То же самое касается размещения вещей под:
Y
что на самом деле это:
В Unicode основным блоком объединения диакритических знаков для европейских языков и международного фонетического алфавита является U + 0300 – U + 036F.
Подробнее об этом здесь
Для составления списка сочетаний диакритических знаков вы можете использовать следующий скрипт (поскольку ссылки продолжают умирать)
Также проверьте их
Mͣͭͣ̾ Vͣͥͭ͛ͤͮͥͨͥͧ̾
источник
ALT
кодах, то вы не можете сделать это, просто вставьтеy̆̆
туда, где он попадает в «чистый» html, и браузер сделает это волшебно ...