超解像度が加速するコンソール端末用フォント Illusion シリーズ

コンソール端末 フォント
[ 超解像度が加速するコンソール端末用フォント ]

コンソール端末と JIS X 0208 をこよなく愛する前世紀生まれのオールドタイプのための、日本語等幅フォントを Unicode の East Asian Width に対応させる補助フォント「Illusion」を作りました。

解消したい問題

  • 通常の Unicode 環境で半角扱いの Ambiguous や Neutral が全角で、被ったりズレたりする。
  • Unicode の罫線素片やブロック要素が不足したり、縦の罫線が行間で切れたりする。

CJK 用の文字幅などで Ambiguous を全角扱いにすると、Text User Interface なコマンドやアプリとの相性が悪くなります。出来るなら、普段の日本語等幅フォントを使いながら、場面によって半角と全角どちらも使い分けたい。そして罫線を補って、日本語混じりのコーディング環境をより快適にしたい!

そうした欲求と衝動で生まれたフォントです。

特徴

  • 主な英数文字は Roboto Mono をベースに半角幅に調整。
  • Unicode の East Asian Width の扱いに応じたバリエーションを実装。
  • 通常の日本語等幅フォントとの併用を想定。
  • アスキーコード、JIS X 0208 の Ambiguous な記号類、コンソール端末用の 罫線素片とブロック要素を収録。

screenshot

好みの日本語フォントとの組み合わせ

好みの日本語等幅フォントと組み合わせて使えるよう、 日本語の平仮名・片仮名・漢字は含めていません。

  • ブラウザでは CSS の font-family での併記で自由に組み合わせられます。
  • Windows では多くのアプリでレジストリの FontLink が利用できます。

三種類のバリエーション

Unicode の East Asian Width の 曖昧 ( Ambiguous ) と 中立 ( Neutral ) について、半角全角 の両方の組み合わせに対応しています。

曖昧中立Font Family主な使い分け
半角半角Illusion N (Narrow)国際的なコンソール環境との互換重視
全角半角Illusion W (Wide)Shift_JIS や EUC-JP との互換重視
全角全角Illusion Z (Zenkaku)多くの日本語等幅フォントと同様の幅

共通部分

  • Roboto Mono を半角幅に調整し、一部の小文字の高さを抑えました。
  • 括弧や記号類は、コーディングと全角文字とのバランスを重視して作成しました。

screenshot ASCII

Illusion N (Narrow)

  • Unicode 対応の国際的なコンソール環境と互換の文字幅。
  • JIS X 0208 の Ambiguous な記号類を半角幅でデザイン。
  • 丸付き数字「⑩」ローマ数字「Ⅳ」なども半角として実装。

Illusion N with Yu Gothic

Illusion W (Wide)

  • 従来の Shift_JIS や EUC-JP と互換の文字幅。
  • JIS X 0208 の Ambiguous な記号類を全角幅で実装。
  • 罫線素片とブロック要素の Neutral は半角扱い。
  • vim の ambiwidth=double 用に Powerline Symbols も全角幅。

Illusion W with Meiryo

Illusion Z (Zenkaku)

  • 多くの日本語等幅フォントと同様の文字幅。
  • 罫線素片とブロック要素の Neutral も全角扱い。

Illusion Z with BIZ UDGothic

日本語等幅フォントとの組み合わせに関して

ブラウザ

  • メイリオや游ゴシックなど、比較的自由に組み合わせ可能です。
  • 罫線の行間の隙間を整えるには line-height: 1.25 を併用して下さい。

Windows のレジストリの FontLink

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink

メニューバーから [編集]-[新規]-[複数行文字列値] で

キーの名前データ
Illusion Nmplus-1m-regular.ttf,M+ 1m
Illusion N Boldmplus-1m-bold.ttf,M+ 1m
Illusion Wmplus-1m-regular.ttf,M+ 1m
Illusion W Boldmplus-1m-bold.ttf,M+ 1m
Illusion Zmplus-1m-regular.ttf,M+ 1m
Illusion Z Boldmplus-1m-bold.ttf,M+ 1m

といった要領で組み合わせられます。

なお BIZ UDゴシック など、OS/2 テーブルの AvgCharWidth が、 head テーブルの UnitsPerEm の 1/2 でない等幅フォントの場合、FontLink で組み合わせると、文字が被ります。

超解像度のコンソール端末とブラウザでの再現

  • MacType で綺麗にサブピクセルレンダリングさせた 超解像度 を手に入れる。
  • mintty など絵文字以外に申し分のない コンソール端末 を手に入れる。

ここまで整っていれば、後はフォントを設定するだけです。

vim で ambiwidth=double にしてフォントを Illusion W にすると、次のように。

Illusion W / mintty / vim
JIS X 0201 と JIS X 0208 の冒頭。Powerline Symbols は double を意識した二重線。

設定を ambiwidth=single に戻してフォントを Illusion N にすれば、次のように。

Illusion N / mintty / vim
JIS X 0208 の一部の文字が、意図通りに半角幅グリフで描かれる。
Illusion N / mintty / vim / 罫線素片
罫線も十分に繋がる。

OpenType の全角幅 fwid と半角幅 hwid の機能に対応させているので、端末が更に本気を出したら、手動でのフォント切り替えなしに全角/半角のグリフを描き分けられるかもしれません。

ブラウザ

スタイルシートで次のようにして、コンソール端末での表現を再現できます。

pre, textarea[cols] {
  font-family: 'Illusion W', 'メイリオ', monospace;
}

入力欄のテキストエリアでも手軽な再現が可能です。

メイリオや游ゴシックを 苦労して等幅表示する方法 もあるのですが、Web フォント化してしまえば、こちらの方がシンプルに実現できそうです。

おわりに

tmuxvim で左右に画面分割したら悲惨な目に遭うとか、pstree がきちんと描画されないとか、でも Ambiguous が全角の方が良いときもあるよ! ……とか。コンソール端末と JIS X 0208 の間の課題を、幾らか吸収することが出来れば幸いです。

ご意見・ご感想などありましたら、お手柔らかにお願いします。

コメント

タイトルとURLをコピーしました