私は以下のようにZalgoと呼ばれる奇妙にフォーマットされたテキストを様々なフォーラムに書いています。見るのはちょっと面倒なことですが、文字がどうあるべきかという私の概念を損なうので、本当に気になります。私の理解しているところでは、キャラクターは行を横切って水平方向に移動し、特定の「コンテナー」内に留まることになっています。明らかにZalgoのテキストは垂直に動いており、いかなるスペースにも制限されているようには見えません。
これはUnicodeのバグ/欠陥/悪用/ハックですか?これらの個々のキャラクターは変わった性質を持っていますか? "ここで何が起きてるの?
H̡̫̤̤̣͉̤ͭ̓̓̇͗̎̀ơ̯̗̱̘̮͒̄̀̈ͤ̀͡w͓̲͙͖̥͉̹͋ͬ̊ͦ ^̸̸͎͉͖̪͚̳̘̳̘̳̘̖̙͈͕̯̮̙̣͓͙͔̺͇̗̱̤͓̞̱̫͙͔̺͇̗̱̤͓̞̱̫̀̌ͯ͗ͬ͒̿̃̔̏ͣ͂̉̿̃̔̏ͣ͂̉̿̃̔̏ͣ͂̉͋ͤ̊͗̓͌ͭ̍̐̃͒̿̊̇ͩͩ͑̋̀ͮͥͦ̊̿̊̇ͩͩ͑̋̀ͮͥͦ̊̆̊͊̚̕̕̕͟͜͞͞ͅͅ҉҉̠̱̦̩͕̆̊͊҉҉̠̱̦̩͕ͣͣ͋̄ͬ̽͜͝͝҉͚̭͇͋̄ͬ̽͜ͅ҉̢͚̭͇͈͙͎̬̠͇͂ͣ̏̿͐͂ͯ̌ͤ̓ͣͣͣ͋̄ͬ̽͜͠͝͝͝ͅ҉͚̭͇͋̄ͬ̽͜ͅ҉͚̭͇͎̬̠͇͎̬̠͇̌ͤ̓̌ͤ̓ͅ????
テキストは結合文字を使用します。結合文字とも呼ばれます。 Unicode規格の文字の組み合わせ - のセクション2.11を参照してください (PDF)。
Unicodeでは、文字レンダリングは各グリフが指定された高さのボックスに収まる単純な文字セルモデルを使用しません。組み合わせマークは、基本文字の上、下、または内側にレンダリングできます。
そのため、レンダリングソフトウェアがUnicodeレンダリングモデルに準拠していると仮定すると、基本文字と任意の長さの「上に結合」マークからなる文字シーケンスを任意の長さに簡単に構築できます。そのようなシーケンスはもちろん意味を持たず、サルでさえそれを作り出すことができる(例えば、適切なドライバを備えたキーボードが与えられた場合)。
また、「上に結合」マークと「下に結合」マークを混在させることもできます。
質問のサンプルテキストは、次の文字列で始まります。
H
ͭ
̓
̓
̇
Zalgoテキストは文字を組み合わせることで機能します。これらは前に来る文字を修正することを可能にする特別な文字です。
OR
y +̆=y̆これは実際には
y + ̆ = y̆
あなたはそれらを他のものの上に積み重ねることができるので、あなたは以下を作り出すことができます:
うん
これは実際には次のとおりです。
y̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
下に物を置くことも同じです。
うん
実際には、
y̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
Unicodeでは、ヨーロッパ言語用の発音区別符号とInternational Phonetic Alphabetの組み合わせの主なブロックはU + 0300 –U + 036Fです。
発音区別符号の組み合わせのリストを作成するには、次のスクリプトを使用できます(リンクは消えていくので)
for(var i=768; i<879; i++){console.log(new DOMParser().parseFromString("&#"+i+";", "text/html").documentElement.textContent +" "+"&#"+i+";");}
またそれらをチェックアウト
Mͣͭͣ̾Vͣͥͭ͛ͤͮͥͨͥͧ̾