• FontFall

エディタやコンソールでフォントを指定したとき、日本語の表示に違和感を抱くことがある。アプリケーションのフォント指定で欧文フォントを指定したとき、バランスの悪い日本語フォントが使われ、妙に文字間隔が空いている、アルファベットに比べて、細すぎる、あるいは太すぎるといったことがある。これは、日本語フォントがWindowsのフォントフォールバック機能で勝手に選ばれるからだ。

現在広く使われているOpenTypeフォント形式では、1つのファイルに65535個のユニコードコードポイントしか登録できない。このため、指定されたフォントファイルに登録されていないコードポイントは、別のフォントファイルを使って表示する。欧文フォントのほとんどに日本語や他の言語(フォントではスクリプトと呼ぶ)のフォントは含まれていない。逆に、日本語フォントには、欧文フォントが含まれているのが普通だ。65535というコードポイントの数は、Windowsが採用するUnicodeエンコード(UTF-16LE)の範囲を表現できる。あるいは、ほとんどのフォントファイルには、絵文字が含まれていない。しかし、テキストを入力できる多くのアプリケーションで、絵文字を表示できる。しかし、ほとんどのフォントファイルには、絵文字が含まれていない。Windows 11の場合、絵文字は、C:\Windows\Fontsにある、“Segoe UI Emoji”フォント(SEGUIEMJ.TTF)に入っている。

フォントに、指定されたユニコードコードポイントが含まれていない場合、画面に文字を表示するモジュール(一般にレンダリングエンジンなどと呼ばれる)は、該当のコードポイントを含み、条件を満たすフォントを探して該当の文字を表示する。これをフォントフォールバックという。フォントフォールバックは、Windows標準のGUI部品では、内部的に自動で行われる。アプリは自分でフォントを調べて、指定することもできる。

フォントフォールバックを含め、文字コードから該当のフォントをレンダリングしてウィンドウ内に表示するのは、かなり面倒な作業だ。なので、多くのアプリケーションでは、Windowsが用意したGUI部品をそのまま使う。

たいていは、これでいいのだが、ターミナルやエディタなど、等幅フォントを使う場合、和文と欧文のバランスがあまりよくない。こうしたアプリケーションでは、構造上、日本語は欧文2文字分の幅を使うのだが、その幅は、同一サイズの日本語フォントにとって広すぎる。このため、表示フォントに欧文フォントを指定すると、日本語フォントの間が空きすぎて、ちょっと面倒な感じになってしまう。もともと、コマンドの出力やプログラムなど、アルファベットや数字を表示するために作られている。なので、途中にちょっと和文が入る程度ならあまり気にならないのだが、原稿のテキストファイルなどを見るときに、ちょっと読み辛い。かといって、日本語フォントを指定すると、こんどは、欧文フォントのデザインに物足りなさを感じる。

Windows 11に標準で添付されているWindows Terminal(ターミナル)は、ここしばらく新規のレンダリングエンジンを開発してきた。最近、それがデフォルトに切り替わった。これまでターミナルは、フォントフォールバックを制御することができなかった。このため欧文フォントを指定したとき、日本語フォントはWindowsが勝手に選んでいた。

ターミナルに付属のCascadia Codeフォントは、プログラム表示に向いたリガチャー(合字))を持ち、例えば、“!=”を"≠"と表示するような機能がある。これまでは、フォントにCascadia Codeを指定すると、何だか日本語フォントが細く、間が空いて頼りない感じがしていた(写真01)。筆者の環境では、Microsoft Officeに付属していた“HGゴシックM”が自動的に選ばれていたからだった。

  • 写真01: ターミナルv1.21で、フォントにCascadia Codeのみを指定した場合、日本語フォントには、Officeに付属していたHGゴシックMが使われた。フォントが少し細く、文字間が気になる。特に、開きカギ括弧の直後や閉じカギ括弧の前の部分などだ

5月にリリースされたターミナルv1.21では、フォント指定欄で複数のフォント(フォントファミリネーム)を指定できるようになった。いろいろと変更してみたところ、Biz UDゴシック(Windows 11標準)がよさそうな感じだ(写真02)。昔からあるMSゴシック(写真03)も悪くはないが、筆者の環境ではBiz UDゴシックの方が、くっきり見える。

  • 写真02: Windows 11に標準搭載されているBiz UDゴシックは文字が少し大きく、線も太い。このため、割とバランス良く見える

  • 写真03: 日本語版Windowsで長らく使われていたMSゴシックも悪くはなかったが、少し背が低く、筆者の環境では、コントラストが低く感じた

なお、フォントから受ける印象は、文字の物理的なサイズに影響される。小さな文字では問題を感じないフォントであっても、大きなサイズで表示させると、細くて頼りない感じがしてしまう。紙の印刷物では、このあたりをちゃんと対策してフォントを使い分けているので意外に気がつきにくい。

なので、フォントを選択するときは、利用するサイズでの比較が必要だ。ターミナルの日本語表示に何か違和感があるようなら、フォントフォールバックの指定をしてみるといいだろう。筆者は、倍率100%の4Kディスプレイ用にターミナルのフォントサイズは18ポイントを選択している。他のフォントサイズでは、また違った結果になるだろう。

今回のタイトルネタは、「Fallback」からアイザック・アシモフの「NightFall」(邦題夜来たる。ハヤカワ文庫SF他)である。アシモフのデビュー作にして最高傑作と言われる作品。と聞くと「一発屋」的なイメージがあるが、実際、2作目以降の評判はデビュー作に比べて芳しいものではなかった。それでも多数の作品を残したところにアシモフのアシモフたるところがあるのだろう。