コーディング用フォント Emberiza Sans を公開

f:id:scientre:20180324222352j:plain

Emberiza Sans はコーディング/プログラミングのために開発されたフォントです。フォントのダウンロードページはこちら。

制作の経緯

現在コーディング用として公開されているフォントは固定幅のものばかりだ。唯一の例外である Input も、伝統的な欧文書体と大きくプロポーションが異なっている。

一方「普通」の文字幅を持ち、視認性に長けるヒューマニストサンセリフである Avenir や Lucida Sans, Myriad, Segoe などはプログラミングに使われることを想定して作られたわけではないので、一部の文字や記号が判別しづらかったり、隣り合う文字同士がくっついて見にくかったりする。

その中で 1996 年に提供開始された Verdana は、視認性・記号の分離という点において非常に優秀だ。そして小サイズでも文字が潰れないように x-ハイトがかなり高く作られている。しかしながら画面が広く、高解像度になった現代のディスプレイでは、 x-ハイトの高さゆえに画面上に文字が溢れたようになり、やや煩さを感じる。

そこで、コード上で重要な記号の判別性を保ちつつ、現代のディスプレイ環境に合った密度で表示できるコーディング用フォントを作ることに決めた。

デザイン上の特徴

ヒューマニストサンセリフの書体は現代的なプロポーションを持っていることが多いが、 Emberiza Sans は伝統的なローマン体に近い骨格を持っている。

f:id:scientre:20180326223541p:plain:w533

また b d p q のボール部分は全体の雰囲気を損なわない程度に非対称になっており、これが鏡文字として誤認されるのを防いでいる。

f:id:scientre:20180326223545p:plain:w533

幅広の記号類

Emberiza Sans はコーディングに使用する記号が隣接する文字に接触してしまわないよう、次の記号のサイドベアリングを広く取っている。

f:id:scientre:20180326223639p:plain:w533

また次の記号は演算子として使われることも考慮し、位置と大きさを変更している。

f:id:scientre:20180326223653p:plain:w533

似た文字の区別

固定幅のフォントでは 0 ゼロと O オーを区別するために 0 ゼロに斜線や点が入っているものが多い。一方 Emberiza Sans の場合はもともと O オーが円に近い形状になっているため、見比べるまでもなく 0 ゼロと違うことが分かる。

f:id:scientre:20180326223710p:plain:w533

また l 小文字エル、I 大文字アイ、1 数字のイチについては、I 大文字アイにのみセリフを付ける処理を施している。まず 1 数字のイチは起筆部の出っぱりで区別がつく。そして l 小文字エルは collection のような単語で連続して使用されることも多く、終端を曲げたりすると文字を並べたときに煩雑になり、かえって視認性が下がる。

そして I 大文字アイにセリフを付けた最大の理由は、プログラムの識別子はパスカルケースやキャメルケースが使われることがあり、そこに何もつけていない普通のアイが来ると単語の始まりとして認識しづらいためだ。

f:id:scientre:20180326223730p:plain:w533

リガチャーの設定

Emberiza Sans では -> や => といったアロー演算子を合字にして、ひとつの演算子であることを分かりやすくしている。通常のフォントでは特に -> の高さが揃わない。

f:id:scientre:20180326223812p:plain:w533

今後の課題

  • 複数ウェイトの作成: 現在は Regular のみだが、ディスプレイ環境に応じて特に Light から Medium 相当の細いウェイトを充実させる。また、シンタックスハイライトで太字を使用するエディタもあるので、最低でも 1 ウェイト用意する。
  • イタリック体の作成: 一部のエディタはコメント等にイタリック体を使用するものがあるのであったほうがよい。
  • TrueType ヒンティング: Windows のネイティブ API を使用して文字を描画しているエディタではレンダリングの品質が悪い。そのためサイズによって文字のアウトラインを変形できる TrueType 形式を用意し、ヒンティングを施す。ただし作業量が莫大になるので後回しになると思う。