
正書法および活字印刷において、ホモグリフとは、一対の(またはそれ以上の)異なる文字のいずれかに使用されるグリフ、あるいは形状が別の文字に使用されるグリフと同一または非常によく似ているグリフのことである。この名称は、これらの特性を共有する文字の連続にも適用される。
同形文字の例は、キリル文字とラテン文字から挙げられます。たとえば、キリル文字Esの典型的な代表グリフはСですが、同じ書体(またはコンピュータ フォント) では、ラテン文字Cのグリフと区別されることはほとんどありません。極端な例としては、ハイフンマイナス( - ) があり、これはプロのタイポグラフィ以外では、ハイフン、マイナス、またはen ダッシュのいずれかに広く使用されています。[ a ]数字と文字の中で、数字の1 ( one ) と小文字のl ( 'ell' ) は常に別々にエンコードされますが、多くの書体では非常によく似たグリフが与えられています。数字の0 ( zero ) と大文字のO ( 'oh' )でも同じ問題が発生します。事実上、同形文字のペアはすべて、明確に区別できるグリフと別々のコード ポイントでグラフィカルに区別できる可能性がありますが、必ずしもそうしているわけではありません。 1/el と 0/oh の同形文字を明確に区別しない書体は、数式、ネットワーク アドレス、ソース コード、ID、および文脈なしでは文字を常に区別できないその他のテキストの記述には不向きであると考えられています。
2008年、Unicodeコンソーシアムは、単一のスクリプト内の文字の視覚的な類似性、および異なるスクリプト内の文字の類似性から生じるさまざまな問題に関する技術レポート第36号[ 1 ]を公開しました。
同形異義語という用語は、同形文字と同義語として誤用されることがありますが、通常の言語学的意味では、同形異義語とは綴りは同じだが意味が異なる単語のことを指し、これは文字ではなく単語の特性です。
異体字は、見た目は異なるが意味は同じ書体デザインのバリエーションです。たとえば、⟨ g ⟩と⟨ g ⟩や、1 ストロークまたは 2 ストロークのドル記号などです。シノグリフという用語は、これと似ていますが、やや抽象的な意味を持ちます。たとえば、記号⟨ £ ⟩と文字⟨ L ⟩ ( Lsd内) はどちらもポンド スターリングを意味しますが、その文脈においてのみです。 [ 2 ]異体字とシノグリフは、非公式にはディスプレイ バリエーションとも呼ばれます。
今日よく使われている重要な同形文字のセットは、数字のゼロ⟨0⟩と大文字の⟨O⟩、そして数字のイチ⟨1⟩、小文字のl⟨l⟩、大文字のi⟨I⟩の2つです。機械式タイプライターの初期の頃は、数字の⟨1⟩と⟨0⟩のキーを省略し、文字の⟨l⟩と⟨O⟩のキーで両方の文字に使われるグリフを生成するのが一般的でした。1970年代から1980年代にかけて、そのようなタイプライターを使っていたタイピストがコンピューターのキーボードオペレーターに移行した際、彼らの古いキーボード操作の習慣が引き継がれ、時折混乱の原因となりました。
現在主流の書体デザインでは、これらの同形文字を注意深く区別しており、通常は数字のゼロを細く描き、数字のイチを目立つセリフで描いている。初期のコンピュータ出力ではさらに進んでゼロにスラッシュやドットを付けていたため、スカンジナビア文字の⟨ Ø ⟩とギリシャ文字の⟨ Φ ⟩ (ファイ) をめぐる新たな衝突が生じた。これらの文字に使用されるグリフのデザインを区別することで、混乱のリスクが軽減された。[ 3 ]
一部の書体デザインは、DIN 1450 可読性規格に準拠しており、文字を識別しやすくするために慎重にデザインされています。例えば、スラッシュ付きのゼロは、大文字の ⟨O⟩ と区別します。小文字の lには尾を付け、大文字の ⟨I⟩ にはセリフを付けて数字の ⟨1⟩ と区別します。数字の ⟨5⟩ を大文字の ⟨S⟩ と区別します。など。[ 4 ]
類似した同形文字による混乱の一例として、⟨ y ⟩を⟨ þ ⟩ ( thorn )を表すために使用した例がある。初期の英語の植字工は、後者の文字を含まないオランダ語の植字を輸入したため、代わりに文字⟨ y ⟩を使用した。これは(ブラックレター体では) 十分に似ているためである。[ 5 ] [ 6 ]現代では、この歴史的な慣習により、単語theがþeではなくye / j iː /と書かれているYe olde shoppeのような現象につながっている。Menzies (発音はMengisで、元々はMenȝiesと綴られていた)という名前の綴りも同じ理由で生じた。文字⟨ z ⟩が⟨ ȝ ⟩ ( yogh )の代わりに使用された。


いくつかの文字が隣り合って配置されると、一目で別の無関係な文字のように見えることがあります。例えば、⟨rn⟩(小文字のRN)は⟨m⟩(小文字のM)とよく似ています。
あらゆる種類の同形文字は、「デュアル正規化」と呼ばれるプロセスによって検出できます。[ 3 ]このプロセスの最初のステップは、同形文字セット、つまり特定の観察者にとって同じように見える文字を識別することです。ここから、同形文字セットを表す単一のトークンが指定されます。このトークンはカノンと呼ばれます。次のステップは、正規化と呼ばれるプロセスで、テキスト内の各文字を対応するカノンに変換することです。2 つのテキストのカノンが同じで、元のテキストが異なる場合、テキスト内に同形文字が存在します。

Unicodeには、「混同しやすい文字」として知られる、非常に同形文字のコードポイントが多数あります。 [ 1 ]これらはさまざまな状況でセキュリティリスクをもたらします(UTR#36で取り上げられています)[ 7 ] 、国際化ドメイン名に関して特に注意が払われています。少なくとも理論的には、1つの文字をその同形文字に置き換えることでドメイン名を意図的に偽装し、最初のドメイン名と容易に区別できない2番目のドメイン名を作成して、フィッシングに悪用することができます(メイン記事IDN同形攻撃を参照)。多くの書体では、ギリシャ文字の⟨Α⟩、キリル文字の⟨А⟩、ラテン文字の⟨A⟩は視覚的に同一であり、ラテン文字の⟨a⟩とキリル文字の⟨а⟩も同様である(ラテン文字の「aBceHKopTxy」とキリル文字の「 аВсеНКорТху 」にも同じことが言える)。ドメイン名は、別途登録された名前でこれらの形式のいずれかを別の形式に置き換えるだけで簡単に偽装できる。同じ文字体系内にも、⟨í⟩(鋭アクセント付き)と⟨i⟩(ティトル付き)、⟨É⟩(E-鋭アクセント付き)と⟨Ė⟩(⟨E⟩の上に点付き)、⟨È⟩( E-グレイブアクセント付き)、⟨Í⟩(大文字の⟨I⟩に鋭アクセント付き)と⟨ĺ⟩(小文字の⟨L⟩に鋭アクセント付き)など、類似した文字の並びが多数存在します。この特定のセキュリティ問題について議論する際には、類似した文字の並びが同形文字のペアとして認識される可能性、あるいは並びが明らかに単語のように見える場合は擬似同形異義語として評価される可能性があります(ただし、これらの用語自体が他の文脈で混乱を招く可能性があることに留意してください)。中国語では、多くの簡体字は対応する繁体字と同形文字である。
TLD レジストリとWeb ブラウザ設計者の取り組みは、同形文字の混同のリスクを最小限に抑えることを目的としています。一般的に、これは複数の言語の文字セットを混ぜた名前を禁止することによって実現されます (キリル文字 ⟨ Я ⟩ を使用するtoys-Я-us.orgは無効になりますが、wíkipedia.orgとwikipedia.org は依然として異なる Web サイトとして存在します)。[ b ]カナダの.caレジストリはさらに一歩進んで、発音記号のみが異なる名前には同じ所有者とレジストラが必要であることを要求しています。[ 8 ]中国語の文字の扱いは様々です。.orgと.infoでは、一方のバリアントを登録すると、もう一方のバリアントは誰にも使用できなくなりますが、.bizでは、同じ名前の繁体字と簡体字が 2 つのドメイン バンドルとして提供され、両方とも同じドメイン ネーム サーバーを指しています。
関連文書は、開発者のWebサイトとICANNが提供するIDNフォーラム[ 9 ]の両方で見つけることができます。

キリル文字の⟨С⟩(U+0421 Сキリル文字大文字ES)は、ラテン文字の⟨C⟩(U+0043 C ラテン文字大文字C)と見た目が似ているだけでなく、JCUKEN - QWERTYハイブリッド配列キーボードでは同じボタンに配置されています。このデザイン上のニュアンスは、エカテリンブルクのキーボード記念碑に展示されているC/Сボタンで見ることができます。
ソーン ⟨þ⟩、エス ⟨ð⟩、ヨグ ⟨ʒ⟩ などの古英語アルファベットの要素の継続的な使用には対応していませんでした。視覚的に類似した活字形式の置き換えにより、古文書の再版や地域語の綴りにおいて、今日まで続くいくつかの異常が生じています。広く誤解されている「ye」は、キャクストンの時代に始まった印刷業者の使用習慣に由来します。当時、印刷業者は、有声音 /ð/ と無声音 /θ/ の両方を表すために使用されていたソーン ⟨þ⟩ またはエス ⟨ð⟩ の代わりに ⟨y⟩ (しばしば上付き文字 ⟨e⟩ を伴う) を使用していました。