Best coding font in Windows and Linux default font
LinuxとWindowsに標準でインストールされているフォントでプログラミングなどソースコードの表示(コーディング)に最も適しているフォントを紹介する。
結論としておすすめするフォントはOSと言語ごとに以下の表のとおりとなる。
言語 | Windows | Linux |
---|---|---|
英語 | Consolas | DejaVu Sans Mono |
日本語 | HGGothicM,MS Gothic | TakaoGothic(Debian系),VL Gothic(RedHat系) |
目次
OS標準フォントにこだわる理由と注意点
自分でインストールしたフォントで書かれた文章には以下2点の問題がある。
- そのフォントがインストールされていない環境では作成時と異なって表示される。
- 他人のPCでフォントがインストールされていることを保証できない。
これを避けるためには,OSに標準で付属しているフォントを使うしかない。しかし,OSの標準フォントには以下2点の問題がある。
- プラットフォーム共通のフォントは存在しない。つまり,LinuxとWindowsの標準フォントで共通のフォントは存在しない。
- OSでインストールされている言語により,日本語フォントは存在しないことがありえる。
このため,LinuxとWindowsのプラットフォームごとに,標準で使うフォントとして英語と日本語の両方のフォントを検討する必要がある。
なお,表示用フォントとして英語と日本語を分けて表示できない場合ことがあり得る。この場合は,表示対象に日本語が含まれていれば日本語フォントを選択し,そうでないときだけ英語フォントを使うことになる。
なぜならば,英語フォントには日本語フォントが含まれていないので,日本語部分の表示が化ける可能性があるからだ。OSやソフト側で,自動的に適切な日本語フォントで表示してくれることもあるかもしれないが,この問題を避けるため,コーディング用フォントには英語部分も考慮された日本語フォントを使うのがよいだろう。
コーディングに適しているフォントの要件
普段であればフォントの違いはあまり問題にならない。しかし,プログラミングでソースコードを表示させると問題になることがある。それは,他の文字と区別がつきにくい文字があり,文字が違うとプログラムが動作しなくなるからだ。例えば変数名で使われているIと1を間違えたら,エラーになったり意図しない結果になるはずだ。そこで,コーディングに適したフォントを選ぶことが極めて重要となる。
コーディングに適したフォントとは,文字が他の文字と見間違わずに識別できるフォントだ。具体的には以下の文字が視認しやすいことがポイントとなる。
- 形が丸○に近い文字:数字の0,英大文字のO,Q,D,英小文字e,c,oなど。
0OQDC@eco
- 形が鉛直線に近い文字:数字の1,英大文字のI,記号の|,!,\,/,英小文字のl,i,jなど。
1Il|!/\ij
- 数字の23569に近い文字:数字の8と英大文字のB,記号の&,数字の5と英字のS,数字の2と英大文字のZなど。
db69qgg
B8&$S53
zsZ2 - 連続するとつながって見える文字:riとn,vvとw,引用符2個”と二重引用符”など。
rmnuvwUVNMW
"''` - 形が水平線に近い文字:ハイフン-,チルダ~,サーカムフレックス^。
-~^
その他の論点としては,記号の形がある。
- バックスラッシュ(\):円記号¥と斜線\
- アスタリスク(*):星形と三本線
- チルダ(~):上よりと中央
- サーカムフレックス(^):上よりと中央
- ドル記号($):1本線と2本線
- アンパーサンド(&)
- アットマーク(@)
また,フォントの種類として以下は不適である。
- プロポーショナルフォント:iとmなど文字幅が異なり,1行の文字の位置が異なる。また,テキストエディターではフォントとして選択できないことがほとんど。
- 明朝体,serif体フォント:全体的に線が細い。また,文字内で線の太さがまちまちになり見た目の均一性が損なわれる。
したがって,コーディング用フォントには,ゴシック体か等幅フォントのタイプライタ体(Monospace)が適切だ。
視認性の確認方法
実際に調べていくと,フォント候補がいくつか登場し,実際に目視確認で判断が必要となる。フォントの視認性の判断には以下の英数字と記号全種類を対象とした。
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
1234567890
!?#$%&=_~^|*+-/\
"'`<>[](){}.,:;@
これをGVimで表示させて確認する。GVimでの表示にあたって,以下のコマンドで背景とカーソルの色をなくした。
:highlight Normal guibg=White
:highlight CursorLine guibg=NONE
:highlight Cursor guibg=NONE
Windows標準フォント
Windows標準フォントでコーディングに適しているフォントを選定する。
Windowsの最新バージョンは10であるが,リリースされて時間が経過し広く普及しているのは7だと考えるので,Windows 7標準フォントから選ぶ。Windows 7標準フォントは以下のサイトで確認できる。
WindowsではMS Officeをインストールすると一緒にフォントもインストールされる。MS OfficeのインストールされていないWindowsマシンのほうが少ないので,これらのフォントも標準と考えてよい思われる。その際のMS OfficeのバージョンにはWindows 7と同時期にリリースされたMS Office 2007が適当だ。MS Office 2007をインストールすると付属するフォントは以下で掲載されている。
MS Officeに付属するフォントではHGから始まる日本語フォントがインストールされるので,日本語フォントの選定においては選択肢が広がることになる。
Windows標準コーディング用日本語フォント
Windows標準の日本語フォントには,MS Gothicがある。さらに,MS OfficeをインストールするとHGGothicMとHGGothicEがインストールされる。HGGothicEはHGGothicMを太くしたフォントなので,実質的には2種類となる。
MS GothicとHGGothicMでフォントを表示させたものを以下に示した。
フォントを比較した考察は以下となる。
- HGGothicMはMS Gothicと異なり,文字の線連続しており美しい。
- HGGothicMでは数字の0と英大文字Oとの区別が難しい。
HGGothicMはMS Gothicよりきれいなので,できればこちらを採用したかったのだが,数字の0と英大文字Oとの区別が難しいという欠点がある。そのため,やむを得ないがフォントを一つしか指定できないならば,Windows標準の日本語フォントにはMS Gothicを使うのがよいだろう。ただし,英数字に英語フォントが使えるのならば,この欠点は問題にならない。したがって,英語と日本語とで別々のフォントを指定できる場合は,HGGothicMを使うのがよいだろう。
Windows標準コーディング用英語フォント
英語フォントには,Windows標準フォントから,コーディング用フォントとしてよく名前を聞く以下の3フォントを試した。
- Consolas
- Courier New
- Lucida Console
表示結果を以下に示す。
フォントを比較した考察は以下となる。
- Consolas以外はアスタリスクの形が星形。
- Consolasだけ数字の0に斜線があり英大文字Oと区別しやすい。
- 数字の1と英小文字lとの区別はLucida Consoleが一番しやすい。
- 英大文字のQとドル記号$がCourier Newだけ汚い。
ConsolasとLucida Consoleは,数字の0と1がアルファベットのOとlが片方判断しやすいが,もう片方が判断しにくいので,判断が難しい。最終的には,以下の理由から,Windowsの英語フォントにはConsolasがいいと判断した。
- アスタリスクの形が唯一三本線。
- 数字の0と英大文字Oの区別がしやすい。
- 数字の1と英小文字lの区別は難しいが,先端の角度からできなくはない。
Linux標準フォント
Linuxでの標準フォント選定にあたり注意することが一つある。それは,Linuxではディストリビューションによって標準フォントが異なることだ。例えば,Ubuntu 16.04では標準フォントにUbuntu Mono
が存在するが,これはCentOS 7には存在しない。したがって,OSごとに対象フォントを一覧して,共通で存在しているフォントを検討する必要がある。しかし,Linuxディストリビューションは数が多く全てを調査するのはたいへんだ。そこで,Linuxディストリビューションの代表として,Debian系のUbuntu
16.04とRedHat系のCentOS 7を対象とした。
Linux標準フォントの一覧
Linuxにおける標準フォント一覧は以下のコマンドで確認できる。
fc-list
このリストからは,言語に応じて以下のキーワードがヒットするフォントが検討対象になりえる。
- 英語
- mono
- 日本語
- gothic,japan,jp
具体的にはそれぞれ以下のコマンドで対象フォントを確認できる。
fc-list | grep -i mono # 英語
fc-list | grep -i -e gothic -e japan -e jp # 日本語
なお,gothic
で検索してもそれがすべて日本語とは限らない。検索結果でフォント名に日本語名が書かれているものが日本語フォントだ。例えば,以下の検索結果ではURW GothicとVL Gothicがヒットしている。しかし,URW Gothicは日本語のフォント名が存在していないので,日本語フォントではないことがわかる。
/usr/share/fonts/default/Type1/a010035l.pfb: URW Gothic L:style=Demi Oblique /usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf: VL ゴシック,VL Gothic:style=regular
同様に,mono
で検索して英語以外のフォント名の入っているフォントは英語フォントではないことがわかる。ただし,これには例外がある。Nogo Sans Mono CJK JPというフォントがあるが,これは英語名しかなく,Gothicともつかないが日本語を表示できるフォントだ。
実際にこの方法でまずは標準フォントを確認した。
CentOS 7で検索した結果,CentOS 7での英語と日本語の標準フォントは以下となることがわかった。
- 英語
- DejaVu Sans Mono
- FreeMono
- Liberation Mono
- Nimbus Mono L
- 日本語
- VL Gothic
Ubuntu 16.04 で検索した結果,Ubuntu 16.04での英語と日本語の標準フォントは以下となることがわかった。
- 英語
- DejaVu Sans Mono
- FreeMono
- Liberation Mono
- Nimbus Mono L
- 日本語
- Noto Sans Mono CJK JP
- TakaoGothic
- Ume Gothic
Linux標準コーディング用日本語フォント
CentOS 7での日本語のフォントはVL Gothicしか該当しなかった。
Ubuntu 16.04では日本語フォントが3種類存在していた。しかし,この中でTakaoGothic以外のフォントはUbuntu 10.04ではインストールされておらず,比較的最近搭載されるようになった。
互換性やその他のディストリビューションでの利用可能性を考えると,TakaoGothicが妥当だろう。
これらのことから,Linux標準コーディング用日本語フォントしては,VL GothicとTakaoGothicが適切だ。
Linux標準コーディング用英語フォント
英語フォントはCentOS 7とUbuntu 16.04で共通して以下の4種類がヒットした。
- DejaVu Sans Mono
- FreeMono
- Liberation Mono
- Nimbus Mono L
そこで実際にフォントを表示させてその視認性から判断した。表示結果を以下に示した。
フォントを比較した考察は以下となる。
- FreeMonoとNimbus Mono Lはフォントサイズが同じでもフォントが比較的細く小さく表示される。
- アスタリスクの形がDejaVu Sans Monoだけ三本線で残りは星形。
- DejaVu Sans Mono以外は数字の1と英小文字のlの違いが見分けにくい。
以下2点の理由から,DejaVu Sans Monoがベストだと判断した。
- 数字の1と小文字のlとの識別のしやすさ。
- アスタリスクの形がキーボード表示と同じ三本線。
まとめ
WindowsとLinuxの標準フォントからコーディングにおすすめするフォントは言語ごとに以下の表のとおりとなる。
言語 | Windows | Linux |
---|---|---|
英語 | Consolas | DejaVu Sans Mono |
日本語 | HGGothicM(MS Officeがあり,日本語専用),MS Gothic | TakaoGothic(Debian系),VL Gothic(RedHat系) |
実際には,Windowsにでは以下の問題点がある。
- Consolasだと数字の1と英小文字のlとの判別が困難。
- MS Gothicは文字がカクカクしていて見た目が汚い。
また,Linuxでは標準フォントの品質は高いが,共通で使える日本語フォントが存在しないという欠点がある。
上記の問題点はあるにしても,今回の調査はとても有用だったと個人的には思っている。例えば,以下の用途で活用可能だ。
- CSSのコーディング用フォント指定
- テキストエディターのフォント設定
- ワープロでのコード表示部分のフォント設定
実際に自分でも活用していこうと思う。
“Best coding font in Windows and Linux default font” に対して1件のコメントがあります。