Как работает текст Zalgo?
Я видел странно отформатированный текст под названием Zalgo, как показано ниже, написанный на различных форумах. Это немного раздражает, но это действительно беспокоит меня, потому что это подрывает мое представление о том, каким должен быть персонаж. Я понимаю, что персонаж должен двигаться горизонтально через линию и оставаться в определенном "контейнере". Очевидно, что текст Zalgo движется вертикально и, похоже, не ограничен каким-либо пространством.
Это ошибка / недостаток / эксплойт / взлом в Юникод? Это отдельные персонажи со странными свойствами? "Что" здесь происходит?
Hơw dŏes з҉҉ąĺgo т е҉xț worǩ?
2 ответов
в тексте используются комбинирующие символы, также известные как комбинирующие метки. См. раздел 2.11 сочетания символов в стандарте Unicode (PDF).
в Unicode отрисовка символов не использует простую модель символьной ячейки, где каждый глиф помещается в поле с заданной высотой. Комбинирование знаков может отображаться выше, ниже или внутри базового символа
таким образом, вы можете легко построить последовательность символов, состоящую из базового символа и" объединение выше " меток любой длины, чтобы достичь любой желаемой визуальной высоты, предполагая, что программное обеспечение рендеринга соответствует модели рендеринга Unicode. Такая последовательность, конечно, не имеет смысла, и даже обезьяна может ее произвести (например, при наличии клавиатуры с подходящим драйвером).
и вы можете смешивать метки" объединение выше "и" объединение ниже".
пример текста в вопросе начинается с:
-
ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА H -
H
-
СОЧЕТАНИЕ ЛАТИНСКОЙ МАЛЕНЬКОЙ БУКВЫ T -
ͭ
-
СОЧЕТАНИЕ ГРЕЧЕСКОГО KORONIS -
̓
-
ОБЪЕДИНЕНИЕ ЗАПЯТОЙ ВЫШЕ -
̓
-
ОБЪЕДИНЕНИЕ ТОЧКИ ВЫШЕ -
̇
Zalgo текст работает из-за комбинации символов. Это специальные символы, которые позволяют изменять символ, который приходит раньше.
или
y + = y, который на самом деле
y + ̆ = y̆
поскольку вы можете складывать их один поверх другого, вы можете произвести следующее:
y
что на самом деле:
y̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
то же самое касается размещения вещей нижний:
y
это на самом деле:
y̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
в Unicode основным блоком объединения диакритики для европейских языков и международного фонетического алфавита является U+0300–U+036F.
вы можете найти список html-кодов здесь
также проверьте em из
M V