ホモグリフであるラテン文字の小文字のA(Unicode 0061)とキリル文字の小文字のA(Unicode 0430)を重ねて表示したもの。どちらの文字もHelvetica LT Stdが使用されている。
正書法 やタイポグラフィ において、ホモグリフ (英語 : homoglyph )とは、同一または非常によく似た形をした2つ以上の書記素 、文字 、字体 (グリフ)のことである。この呼称は、このような特性を持つ複数の文字の列についても適用される。
シノグリフ (英語 : Synoglyphs )とは、見た目は違うが同じ意味を持つ字体のことである。シノグリフは、非公式には「表示変化形」(display variants)ともいう。
「ホモグラフ」(homograph)という用語がホモグリフの同義語 として使われることもある(ホモグラフ攻撃 など)が、通常の言語学 的な意味では、ホモグラフとは、綴りは同じだが意味が異なる単語 のことであり、文字ではなく単語の性質である。日本語では同綴異義語 という。
2008年、Unicodeコンソーシアム は、単一の用字 内の文字の視覚的な類似性や、異なる用字内の文字間の類似性に由来する様々な問題について、技術報告書#36[ 1] を発表した。
歴史的な観点から見たホモグリフの混乱の例としては、"þ"(ソーン)の文字を含まない書体で古い英文を表記する際に、"þ"を表すために"y"(ワイ)を使用したことが挙げられる。これは現代では、"Ye olde (英語版 ) shoppe"のような古い英文により、「"the"という単語が以前は"ye" と書かれていた」と誤って暗示してしまう現象につながっている。詳細については、Þ を参照のこと。
ホモグリフ記号の例としては、(a) トレマ とウムラウト (両方とも一対のドットで、意味は異なるが、同じコードポイント でコード化 されている)、(b) ハイフン とマイナス記号 (両方とも短い横向きの線で、意味は異なるが、しばしば同じコードポイントでコード化されている)などが挙げられる。数字と文字の間では、数字の1(いち)と小文字のl(エル)、数字0(ゼロ)と大文字のO(オー)は、それぞれ常に別のコードポイントでコード化されているが、多くのフォント では非常に類似した字体が与えられている。事実上、文字の全てのホモグリフ対は、明確に区別可能な字体と別々のコードポイントにより表示上で区別できる可能性があるが、必ずしもそうなっているとは限らない。1(いち)とl(エル)、0(ゼロ)とO(オー)のホモグリフを強調的に区別しない書体 は、数式やURL、ソースコード、IDなど、文脈から判断しなければどちらの文字か判別できないようなテキストを書くのには適していないと考えられている。そのような用途には、例えば斜線付きゼロ によって字体を区別するフォントが好ましい。
また、例えば6bを66だと誤認するなど、0とoや6とb、9とqなどはしばしば数学教育の場面において手書きが使用されるために間違えられることがあり、対策として学生らの間では文字を筆記体で書いたり、一段上げたり下げたり、時には大文字を使うなどが行われている。
ウムラウトとトレマ
機械式タイプライター の時代には、ウムラウト とトレマ は同じキーでタイプされていたが、二重反転カンマにも使用されていた。しかし、ウムラウトは、元々は2つの短い縦線(点ではなく)として生まれたものである(ジュッターリーン体 を参照)。ちなみに、アルバニア語 のEの上にある2つの点はトレマとして記述されているが、トレマの機能を果たしていない。
0とO、1とlとI
今日使用されている2組の一般的で重要なホモグリフは、数字の0 (ゼロ)・大文字のO (オー)、および、数字の1 (いち)・小文字のl (エル)・大文字のI (アイ)である。初期の機械式タイプライターの時代には、これらの字体の間にはほとんど、あるいは全く視覚的な違いがなく、タイピストはキーボードショートカットとしてそれらを互換的に扱っていた。実際、ほとんどのキーボードには数字の1のためのキー自体がなく、ユーザーはその代わりに小文字のl(エル)を入力していた。また、いくつかの機種では数字の0のキーもなく、O(オー)で代用していた。1970年代にタイピストだった人たちが、1980年代にコンピュータのキーボードオペレータに移行したため、タイプライターでの習慣がそのままコンピュータにも持ち込まれ、これが混乱の原因となっていた。
体積の単位のリットル の記号は、単位名称が人名由来ではないため本来は小文字の l (エル)となるが、数字の 1 と似ていて紛らわしいことから大文字の L とすることが推奨されている。
現在のほとんどの書体デザインでは、これらのホモグリフを慎重に区別しており、通常は数字のゼロを文字のオーよりも幅を狭くし、数字の1には上部に(フォントによっては下部にも)セリフ をつけている。初期のコンピュータのプリントアウトでは、数字のゼロに斜線やドットをつけて明確に区別していた(斜線付きゼロ を参照)。しかしこれは、北ゲルマン語群 の文字"Ø "やギリシャ文字 のΦ (ファイ)との新たなホモグリフを生んだ。これらの、文字を区別するための字体の再設計は混乱を少なくする。2つの異なる文字が同じように見える程度の度合いを、「視覚的類似性」(visual similarity)という[ 2] 。
日本語
日本語 においては、漢字 ・片仮名 間および各文字種内に複数のホモグリフが存在する。例えば、JPRS がホモグラフ攻撃に関連して提出した意見書においては、以下のものが挙げられている[ 3] 。
カ/力 - 片仮名の「か」と漢字の「ちから」
オ/才 - 片仮名の「お」と漢字の「さい」
ロ/口 - 片仮名の「ろ」と漢字の「くち」
ハ/八 - 片仮名の「は」と漢字の「はち」
ト/卜 - 片仮名の「と」と漢字の「ぼく」
エ/工/ - 片仮名の「え」と漢字の「こう」
ニ/二/エ - 片仮名の「に」と漢字の「に(ふた)」と片仮名の「え」
複数の文字からなるホモグリフ
墓石にSt efan Szczotkowski と刻まれているが、A effan Szczotkowski のように見える。
複数の文字の組み合わせが別の文字と似た形になるものがいくつかある。例えばrn とm 、cl とd 、vv とw などである。一部の狭間隔フォント(Tahoma (英語版 ) など)では、j・l・iなどの文字の隣にc を配置すると、cj cl ci (g d a) のようなホモグリフができてしまう。いくつかの文字が隣り合って配置されていると、一目見ただけでは関係のない別の文字であるかのような視覚的な印象を与えることができる。これをより正確に言うと、合字 の中には別の文字の字体と似たように見えるものがある。例えば、fi の合字(fi )は、いくつかの書体やフォントではA のように見えることがある。このような混同の可能性は、合字の使用に反対する論拠になることがある。
Unicodeにおけるホモグリフ
ヨーロッパでよく使われている3つのアルファベット(右上から時計回りにラテン文字、キリル文字、ギリシャ文字)は、Unicodeでは完全に別のコードポイントでコード化されているが、多くのホモグリフを共有している。
Unicode の文字セット には、多くのホモグリフが含まれている。これらは、様々な状況においてセキュリティ上のリスクをもたらすが、最近では国際化ドメイン名 (IDN)に関して特に注意が払われている。ある文字をそのホモグリフに置き換えることでドメイン名 を意図的に詐称し、本来のドメイン名と容易に区別できない別のドメイン名を作成して、フィッシング に悪用される可能性がある(ホモグラフ攻撃 を参照)。多くのフォントでは、ギリシャ文字 の"Α"・キリル文字 の"А"・ラテン文字 の"A"、および、ラテン文字の"a"・キリル文字の"а"は視覚的に同じである(ラテン文字の"aBeHKopcTxy"とキリル文字の"аВеНКТорсху"にも同じことが言える)。ドメイン名は、別に登録された名前の中で、これらの文字のいずれかを別の文字に置き換えるだけで、なりすましが可能である。また、"i"と"í"(アキュートアクセントつき)、"É"(アキュート)と"Ė"(ドット)と"È"(グラーブ)、"Í"(アキュートつきの大文字のアイ)と"ĺ"(アキュートつきの小文字のエル)など、同じ用字 の中でもホモグリフが多数存在する。このセキュリティ上の問題を議論する際には、類似した文字が2つ並んでいても、「ホモグリフのペア」(homoglyph pair)とみなされる可能性があるか、あるいは明らかに単語であるように見える場合には「擬似ホモグラフ」(pseudo-homograph)とみなされる可能性があるという観点から評価することができる(この用語自体が他の文脈で混乱を招く可能性があることに注意)。中国語 では、多くの簡体字 は対応する繁体字 のホモグリフである。
ホモグリフの混同のリスクを最小限に抑えるために、ドメイン名のレジストリ やウェブブラウザ の設計における努力が行われている。一般的に、これは複数の言語の文字セットを混ぜた名前を禁止することで達成されている(これにより、キリル文字のЯ を使った"toys-Я-us.org "は無効になっているが、"wikipedia.org "とは別の"wíkipedia.org"(2文字目のアイがアキュートつき。ポルトガル語版アンサイクロペディア に転送される)は、同じ用字であることから無効になっていない)。カナダ の.ca のレジストリはさらに一歩進んだ形で、ダイアクリティカルマーク が異なるだけのドメイン名は、同じ所有者が同じレジストラに登録することが義務づけられている[ 4] 。漢字 における簡体字 と繁体字 の扱いは様々である。.org と.info では、片方を登録するともう片方は誰も利用できなくなるが、.biz では簡体字と繁体字の2種類のドメインがドメインバンドルとして扱われ、両方とも同じDNSサーバ を指すようになっている。
関連するドキュメントは、開発者のウェブサイトやICANN が提供するIDNフォーラム[ 5] に掲載されている。
カノン化
あらゆる種類のホモグリフは、「二重カノン化」(dual canonicalization)と呼ばれるプロセスによって検出することができる[ 2] 。このプロセスの最初のステップは、ホモグリフの集合、すなわち、同じように見える文字を識別することである。ここから、ホモグリフの集合を表現するための単一のトークンが指定される。このトークンをカノン(canon)と呼ぶ。次のステップでは、カノン化と呼ばれるプロセスで、テキストの各文字を対応するカノンに変換する。2つのテキストのカノンが同じでも、元のテキストが異なる場合、テキストにはホモグリフが存在する。
関連項目
脚注
外部リンク