似た文字に、意図的な目印をつける
数字の「1」、大文字の「I」、小文字の「l」。数字の「0」と大文字の「O」。これらを見分けやすくするために、フォントでは横棒、曲がり、点、斜線、縦横比などを変える工夫が使われます。特にプログラムや製品番号では、一文字の読み違いが意味の違いになるため、文章の雰囲気だけでなく文字同士の区別が重要になります。
ただし、どのフォントも同じ方法を使うわけではありません。文字を美しく連続させたい本文用と、一字ずつ正確に読みたいコード用では、優先する条件が違います。見分けやすさも、画面の解像度、文字サイズ、太さ、読み手の慣れによって変わります。
どこに違いを作るのか
| 組合せ | 使われる目印 | 注意点 |
|---|---|---|
| 1・I・l | 1の頭の斜め線、Iの上下の横棒、lの下端の曲がり等 | 採用する形はフォントごとに異なる |
| 0・O | 0の内部の点や斜線、幅や輪郭の違い | 斜線付き0を別の文字Øと混同しない |
| rn・m | rの肩、nの始まり、文字間の空き | 単体の文字だけでなく並んだ形を見る |
| .・, | コンマの尾、点の大きさや位置 | 小さいサイズや細い線で差が失われやすい |
「lの下が曲がっているから、この字は必ず小文字エル」と、あらゆる書体に通用する判定法にはできません。自分が使うフォントの文字見本を比べる必要があります。等幅かどうかも別の性質です。等幅フォントは文字の送り幅を揃えますが、それだけで1・I・lが区別しやすくなるわけではありません。
実際の設計例:JetBrains Mono
開発元のJetBrainsは、JetBrains Monoの特徴として1・l・Iの区別と、0の内部の点を説明しています。Oにはその点がないため、数字のゼロとアルファベットのオーを見分ける手掛かりになります。句点とコンマの形も、小さい表示で区別できるように設計されています。
ここで重要なのは、点のあるゼロが「別の文字コード」になるわけではないことです。文字列として保存されるのは同じ数字0で、フォントがその字形を描きます。フォントを変更すると点が消えることがあっても、計算上の数値やコピーした文字が変わったわけではありません。
斜線付きゼロは、設定で切り替わることもある
OpenTypeには、通常のゼロを斜線付きの字形へ置き換えるためのzeroという機能タグがあります。フォントがその機能を持ち、アプリが対応していれば、同じ0を別の字形で表示できます。すべてのフォントやアプリに必ず切替機能がある、という意味ではありません。
同じように、プログラミング用フォントの合字では、複数の記号を一まとまりの形で表示することがあります。画面上で一つに見えても、元の文字列は複数の符号のままです。「字形を変える設定」と「入力文字を置換する機能」を区別しておくと、コピーや検索の際に混乱しにくくなります。
使う場所に合わせて試す
フォント選びでは、大きな見本だけでなく、実際に使うサイズで「1Il0O」「rn」「.,」を表示して比べます。太さや行間も含めて、長く読む本文と、一文字を照合する番号では条件を分けるとよいでしょう。画面表示が読めても、印刷や縮小画像では細い点や線がつぶれる場合があります。
自分で識別番号を作る場面なら、紛らわしい文字を候補から外す、適切な長さで区切るなど、文字列自体を設計する方法もあります。口頭では「数字のゼロ」「大文字のアイ」と種類を添えます。一方、受け取った番号やパスワードを見やすさのために別の文字へ勝手に置換すると、別の値になるので注意してください。
なお、外見が似た文字はラテン文字だけでなく、異なる文字体系の間にもあります。フォントを替えただけで、似た文字を使ったURLなどをすべて見破れるわけではありません。大事な識別子は見た目だけに頼らず、提供元や実際の文字列も確認する必要があります。
関連する雑記
参考資料
資料確認日:2026年10月2日
