文字幅
テキスト表示における各文字の横方向の占有サイズ。全角 (2 カラム幅) と半角 (1 カラム幅) の区別や、プロポーショナルフォントでの可変幅が含まれる。
文字幅 (character width) は、テキストを画面や紙面に表示する際に、各文字が横方向に占めるスペースの大きさです。日本語のテキスト処理では「全角」と「半角」という概念が根強く残っており、全角文字は半角文字の 2 倍の幅を占めるとされています。この区別は、1980 年代のコンピュータ端末で固定幅フォントが標準だった時代に確立されました。
Unicode では文字幅を East Asian Width プロパティで分類しています。F (Fullwidth) は全角、H (Halfwidth) は半角、W (Wide) は東アジアの広い文字 (漢字、ひらがな、カタカナなど)、Na (Narrow) は狭い文字 (ASCII 英数字など)、A (Ambiguous) は文脈によって幅が変わる文字です。この Ambiguous カテゴリが厄介で、ギリシャ文字やキリル文字の一部が含まれ、東アジアのシステムでは全角扱い、欧米のシステムでは半角扱いになります。
プロポーショナルフォントでは、文字ごとに幅が異なります。「W」は「i」の約 3 倍の幅を持ち、「m」は「l」の約 2 倍です。このため、プロポーショナルフォントで表示されるテキストの横幅は、文字数だけでは予測できません。同じ 10 文字でも「WWWWWWWWWW」と「iiiiiiiiii」では表示幅が大きく異なります。
等幅フォント (モノスペースフォント) では、すべての文字が同じ幅を持ちます。プログラミングのコードエディタやターミナルで等幅フォントが使われるのは、文字の位置揃えが容易で、インデントや桁揃えが崩れないためです。日本語の等幅フォントでは、全角文字が半角文字のちょうど 2 倍の幅になるよう設計されています。
文字数カウントと文字幅の関係は、表示レイアウトの設計で重要になります。たとえば、データベースの一覧画面で「名前」カラムに 20 文字分の幅を確保する場合、全角文字だけなら 10 文字、半角文字だけなら 20 文字が収まります。実際のデータは全角と半角が混在するため、最悪ケース (全角のみ) を想定した幅設計が必要です。
ウェブデザインでは、CSS の ch 単位が「0」(数字のゼロ) の幅を基準とした相対単位です。width: 40ch と指定すると、約 40 文字分の幅になります。ただし、プロポーショナルフォントでは文字によって幅が異なるため、ch 単位はあくまで目安です。日本語テキストの場合、em 単位 (1em = 1 全角文字幅) の方が直感的に幅を制御できます。