質問: Windows SubSystem for Linuxでフォントを変えたいのですがどうすればよいのでしょうか? Source Han Code JP というフォントを使いたいです。 windowsのコンソールはotfには対応しておらず、ttfしか使えないようなのでfontforgeでttfに変換してインストールしたのですが、wslの設定画面では、そのフォントを選択できません。 また、私の環境では、システムのデフォルトエンコーディングがutf-8になっています。 OS: Windows 10 1803
回答: 等幅かつTTFなフォント以外のフォントを選択できるWindowsの代替ターミナル(コマンドプロンプト等のコンソールの代わりになるソフト)としてConEmu(コマンドプロンプト等以外にもWSLにも使用可能)があります。ConEmu(またはそのラッパーであるcmder)を使えば、Source Han Code JP(源ノ角ゴシック Code JP)を設定で選択し、使用することが出来ます。 ただし、この方法にはSource Han Code JP特有の問題により、漢字・仮名が表示された文字(グリフ)よりもかなり幅が大きくなるという問題があります。通常の等幅フォント(monospace font)では、英数字:漢字・仮名の幅比率が1:2ですが、Source Han Code JPは2:3と特殊です。ConEmuで等幅フォントを処理する場合、一般的な1:2を前提にしているため、漢字・仮名を英数字の2倍幅として枠を取ろうとするせいか、比率がおかしくなってグリフに対して幅が大きくなり、見た目が悪くなってしまいます。これではSource Han Code JPを使う意味がありません。(ConEmuは二つ以上のフォントを組み合わせることが出来ますが、幅を調整することがどうしても出来ませんでした。) !cmderで検証 他に、有名な代替ターミナルとしてminttyがあります。こちらもコンソールと同じく等幅かつTTFなフォントしか選択できないようですが、設定ファイル(.minttyrc)で無理矢理フォントを設定することが出来ます。その場合は英数字も縦に対して横が等しい幅になってしまい、そこから漢字・仮名が英数字の2倍幅になって、全体としてグリフに対して幅が常に大きくなります。 !MSYS2のminttyで検証 ということで、Source Han Code JPをまともに使うことを求めるなら、もっと別の代替ターミナルを探すが、オープンソースであるConEmuやminttyのソースを書き換えるしかないと思われます。そこまでこわわりがなければ、源真ゴシックや更紗ゴシックなどの等幅かつTTFでSource Han Sansを使ったフォントを使用した方が良いのではないかと思われます。