スポンサーサイト
プログラミング向け等幅フォントの横幅を調べてみた
欧文フォントは欧米人が作ったもの良い。
和文フォントは日本人が作った物が良い。
というようなモチベーションがありあまして、Emacs、Vim などでは欧文・和文に別々のフォントを割り当てるのが一般的です。
他のアプリケーションでも、欧文フォントを指定すると、足りないグリフを何らかの和文フォントで補完するような仕組みになっています。
しかし、これをやると大抵、半角文字:全角文字 = 1:2 のバランスが崩れてしまいます (Vim のように 1:2 を決め打ちしているアプリケーションもあります)。
ということで、いくつかの有名なフォント (Ubuntu apt にあったもの) について横幅を調べてみました。

結論から言うと、2 種類しかありませんでした。
欧文フォントの多くは Courier 互換で作られているため 10 ピッチ (幅を表す単位) で、和文フォントの多くは 12 ピッチでした。
これらを愚直に合わせようとすると、半角文字:全角文字 = 1:1.67 (= 3:5) になります。
この比を 1:2 にするためには、和文文字を何とかして 120 % 拡大する必要があります。
で、この結果から個人的に導いたアイデアはこうです。いずれ時間を作って検討してみるということで忘備録。
「1:1.67 を無理矢理 1:2 にするくらいならいっそ 1:1.5 (= 2:3) にしてしまえ」
以下が、今回調べた中で 10 ピッチのフォントです。
Courier 10 Pitch/Nimbus Mono L/Courier New
DejaVu Sans Mono/Bitstream Vera Sans Mono
Droid Sans Mono
Liberation Mono
Andale Mono
Lucida Sans Typewriter
以下が、今回調べた中で 12 ピッチのフォントです。
Inconsolata ← 今回調べた中で唯一の 12 ピッチ欧文フォント
IPAゴシック
さざなみゴシック/東風ゴシック
梅ゴシック
KonatuTohaba (小夏フォント)
VL ゴシック
M+ 1m/1mn/2m
和文フォントは日本人が作った物が良い。
というようなモチベーションがありあまして、Emacs、Vim などでは欧文・和文に別々のフォントを割り当てるのが一般的です。
他のアプリケーションでも、欧文フォントを指定すると、足りないグリフを何らかの和文フォントで補完するような仕組みになっています。
しかし、これをやると大抵、半角文字:全角文字 = 1:2 のバランスが崩れてしまいます (Vim のように 1:2 を決め打ちしているアプリケーションもあります)。
ということで、いくつかの有名なフォント (Ubuntu apt にあったもの) について横幅を調べてみました。

結論から言うと、2 種類しかありませんでした。
欧文フォントの多くは Courier 互換で作られているため 10 ピッチ (幅を表す単位) で、和文フォントの多くは 12 ピッチでした。
これらを愚直に合わせようとすると、半角文字:全角文字 = 1:1.67 (= 3:5) になります。
この比を 1:2 にするためには、和文文字を何とかして 120 % 拡大する必要があります。
で、この結果から個人的に導いたアイデアはこうです。いずれ時間を作って検討してみるということで忘備録。
「1:1.67 を無理矢理 1:2 にするくらいならいっそ 1:1.5 (= 2:3) にしてしまえ」
以下が、今回調べた中で 10 ピッチのフォントです。
Courier 10 Pitch/Nimbus Mono L/Courier New
DejaVu Sans Mono/Bitstream Vera Sans Mono
Droid Sans Mono
Liberation Mono
Andale Mono
Lucida Sans Typewriter
以下が、今回調べた中で 12 ピッチのフォントです。
Inconsolata ← 今回調べた中で唯一の 12 ピッチ欧文フォント
IPAゴシック
さざなみゴシック/東風ゴシック
梅ゴシック
KonatuTohaba (小夏フォント)
VL ゴシック
M+ 1m/1mn/2m
プログラミングでの視認性向上を意図した Courier フォントの改変 Ver. 2
1 年ほど前に「プログラミングでの視認性向上を意図したCourierフォントの改変」にて作成した My Courier 10 Pitch に飽きてきたので Version 2 を作りました。
今回も目的は前回と同じく 0/O、1/l の区別です。
方法としては、ゼロは前回と同じく dotted zero、
そして、すべての数字のセリフをそぎ落としました。

1 行目がオリジナルの Courier 10 Pitch、
2 行目が今回作成した My Courier 10 Pitch、
3 行目も My Courier 10 Pitch で左から順に 1l|!/\0OoD です。
Version 1 のくどくどしい slashed one から一転して、
数字全体がシンプルですっきりとした印象になりました。
しばらくはこれを使おうかと思います。
今回も目的は前回と同じく 0/O、1/l の区別です。
方法としては、ゼロは前回と同じく dotted zero、
そして、すべての数字のセリフをそぎ落としました。

1 行目がオリジナルの Courier 10 Pitch、
2 行目が今回作成した My Courier 10 Pitch、
3 行目も My Courier 10 Pitch で左から順に 1l|!/\0OoD です。
Version 1 のくどくどしい slashed one から一転して、
数字全体がシンプルですっきりとした印象になりました。
しばらくはこれを使おうかと思います。
私がプログラミングに Courier フォントを好んで使う3つの理由
私はプログラミングにおいて Courier というフォントを愛用しています。
あまりに好きすぎてがんばって Emacs で設定したり、視認性が上がるように改変したりしています。
ちなみに、Courier New も Courier 10 Pitch も Nimbus Mono L も全部 Courier の一種です。
さて、今回はどうして Courier が大好きなのかということについて書きます。
1つ目「Courier は伝統的なフォントであり歴史的実績がある」
Courier はイギリスのタイプライタを起源とする最も伝統的なフォントの1つです。
そして、これまで多くの人に使われてきたという実績があります。
フォントヲタにとって歴史的実績のあるフォントはそれだけで評価に値します (フォントヲタは歴史的実績のない個人製作のフリーフォントを評価しない傾向がある)。
2つ目「Courier は (スラブ) セリフ体である」
Courier はセリフ体です。
一般に、セリフ体の方がサンセリフ体よりも可読性が高いと言われています。
特にフォントサイズが小さいときにその差は顕著です。
しかし解像度が限られたディスプレイ上では、複雑な形状のセリフ体よりも単純な形状のサンセリフ体の方が可読性が高くなってしまいます。
そこでセリフ体の中でもスラブセリフ体である Courier の登場です。
スラブセリフ体はセリフ (ひげ) が直線的であり、縦線と横線の幅がほぼ同じという特徴を持っています。
つまり、比較的単純な形状のスラブセリフ体はディスプレイ上においても高い可読性を誇ります。
3つ目「Courier はほとんどすべてのプラットフォームに標準でインストールされている」
Courier と同じく、伝統的英国タイプライタ調のスラブセリフ体として、Pica と Prestige Elite が挙げられます。
しかし、これらのフォントは多くのプラットフォームでインストールされておらず、使用するためには購入してインストールする必要があります。
新しいマシンを使い始める度にわざわざこれらのフォントをインストールするのは得策ではありません。
あまりに好きすぎてがんばって Emacs で設定したり、視認性が上がるように改変したりしています。
ちなみに、Courier New も Courier 10 Pitch も Nimbus Mono L も全部 Courier の一種です。
さて、今回はどうして Courier が大好きなのかということについて書きます。
1つ目「Courier は伝統的なフォントであり歴史的実績がある」
Courier はイギリスのタイプライタを起源とする最も伝統的なフォントの1つです。
そして、これまで多くの人に使われてきたという実績があります。
フォントヲタにとって歴史的実績のあるフォントはそれだけで評価に値します (フォントヲタは歴史的実績のない個人製作のフリーフォントを評価しない傾向がある)。
2つ目「Courier は (スラブ) セリフ体である」
Courier はセリフ体です。
一般に、セリフ体の方がサンセリフ体よりも可読性が高いと言われています。
特にフォントサイズが小さいときにその差は顕著です。
しかし解像度が限られたディスプレイ上では、複雑な形状のセリフ体よりも単純な形状のサンセリフ体の方が可読性が高くなってしまいます。
そこでセリフ体の中でもスラブセリフ体である Courier の登場です。
スラブセリフ体はセリフ (ひげ) が直線的であり、縦線と横線の幅がほぼ同じという特徴を持っています。
つまり、比較的単純な形状のスラブセリフ体はディスプレイ上においても高い可読性を誇ります。
3つ目「Courier はほとんどすべてのプラットフォームに標準でインストールされている」
Courier と同じく、伝統的英国タイプライタ調のスラブセリフ体として、Pica と Prestige Elite が挙げられます。
しかし、これらのフォントは多くのプラットフォームでインストールされておらず、使用するためには購入してインストールする必要があります。
新しいマシンを使い始める度にわざわざこれらのフォントをインストールするのは得策ではありません。
プログラミングでの視認性向上を意図したCourierフォントの改変
一昨日の記事では、CourierとVL ゴシックを利用したEmacsのフォント設定を書きました。
その後Courierへの愛が大きくなりすぎて、わ・た・しだけのCourier♥を作ってしまいました。
おなじみのFontForgeを使ったので具体的なやり方は省きます。
はじめての人でも直感的にできると思います。
改変箇所は数字の0 (オーと区別したい) と1 (エルと区別したい) です。
プログラミング向けフォントの0は、スラッシュゼロ (slashed zero) やドットゼロ (dotted zero) になっていることが多く、それに倣い今回はドットゼロにしました。
1に関してはDPCustomMono2というフォントを参考にしてスラッシュワン(?)にしました。
もうこれで視認性に関して文句を言われることはないはずです。
ただし、フォント改変は自己責任なことと、改変フォントを他人に配布してはいけないことに注意です。

Courier 10 Pitch

My Courier 10 Pitch
その後Courierへの愛が大きくなりすぎて、わ・た・しだけのCourier♥を作ってしまいました。
おなじみのFontForgeを使ったので具体的なやり方は省きます。
はじめての人でも直感的にできると思います。
改変箇所は数字の0 (オーと区別したい) と1 (エルと区別したい) です。
プログラミング向けフォントの0は、スラッシュゼロ (slashed zero) やドットゼロ (dotted zero) になっていることが多く、それに倣い今回はドットゼロにしました。
1に関してはDPCustomMono2というフォントを参考にしてスラッシュワン(?)にしました。
もうこれで視認性に関して文句を言われることはないはずです。
ただし、フォント改変は自己責任なことと、改変フォントを他人に配布してはいけないことに注意です。
Courier 10 Pitch
My Courier 10 Pitch
