Unicode結合ダイアクリティカルマークの解説

Unicode結合ダイアクリティカルマーク(U+0300–U+036F)が基底文字をどのように変更し、なぜZalgoテキスト効果を可能にするかを深く掘り下げます。

Fundamentals

詳細な説明

Unicodeの結合ダイアクリティカルマーク

Unicode標準は結合ダイアクリティカルマークを、単独では存在せず先行する基底文字を変更する文字として定義しています。主要ブロックはCombining Diacritical Marks(U+0300–U+036F)で、112文字を含みます。

結合文字の仕組み

Unicodeではテキストはコードポイントのシーケンスとして保存されます。レンダラーが結合マークに遭遇すると、先行する基底文字に視覚的に付加します:

コードポイント: U+0061 U+0301
レンダリング:    á(aにアキュートアクセント)

結合マークのカテゴリ

カテゴリ 範囲 位置
上方向 U+0300–U+0315 文字の上部
下方向 U+0316–U+0333 文字の下部
オーバーレイ U+0334–U+0338 文字を貫通
拡張 U+0339–U+036F 様々な位置

Zalgoがこれを悪用する理由

Unicode仕様は基底文字に続けられる結合マークの数に厳密な上限を定義していません。レンダラーはすべてを表示しようとし、視覚的に積み重ねます。各方向に10個以上のマークを追加すると、Zalgoテキスト特有のオーバーフローと歪みが生じます。

ユースケース

結合ダイアクリティカルマークの知識は、テキスト処理システム、入力バリデーション、コンテンツモデレーションフィルター、ソフトウェアアプリケーションの国際化(i18n)サポートを構築する開発者にとって重要です。

試してみる — Zalgo Text Generator

フルツールを開く