Текст Zalgo работает из-за сочетания символов. Это специальные символы, которые позволяют изменить предшествующий символ.
ИЛИ
y + & # x0306; = y & # x0306; что на самом деле
y + ̆ = y̆
Поскольку вы можете сложить их друг над другом, вы можете создать следующее:
у & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306 ; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306;
что на самом деле:
y̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
То же самое касается размещения вещей под:
у & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306 ; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0306; & # x0330; & # x0330; & # x0330; & # x0330; & # x0330; & # x0330; & # x0330; & # x0330; & # x0330; & # x0330; & # x0330; & # x0330; & # x0330; & # x0330; & # x0330;
это на самом деле:
y̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
В Unicode основным блоком объединения диакритических знаков для европейских языков и международного фонетического алфавита является U + 0300 – U + 036F.
Подробнее об этом здесь
Для составления списка сочетаний диакритических знаков вы можете использовать следующий скрипт (поскольку ссылки продолжают умирать)
for(var i=768; i<879; i++){console.log(new DOMParser().parseFromString("&#"+i+";", "text/html").documentElement.textContent +" "+"&#"+i+";");}
Также проверьте их
* +1039 * M & # x363; & # x36d; & # x363; & # x33e; x36d & #;; V & # x363; & # x365 & # x35b; & # x364; & # x36e; & # x365; & # x368; & # x365; & # x367; & # x33e;