Windows Terminal ベスト設定 第16回「フォント指定」
![](https://image.news.livedoor.com/newsimage/stf/c/a/ca00b_1223_0e0cb66c3207aac138eb8e16aeaa9761.jpg)
Windows Terminalには、Cascadia Codeと呼ばれるOpenTypeフォントが付属する。このフォントは、Windows Terminalと同時に開発された、いわば「専用」フォントだ。オープンソース・プロジェクトのプロジェクト名としてはCascadia-Codeとなっている。しかし、この名称は、このフォントの1つのバリエーションであるプログラマ向け合字を持つフォント名でもあるため、ここでは、プロジェクトが提供するフォント全体を「Cascadiaフォント」と表記する。今回は、このCascadiaフォントを使って、Windows Terminalのフォント機能について解説する。ただし、フォント設定などには、OpenTypeの基本的な知識が必要になる。ここでは、まず、OpenTypeやその実装例としてのCascadiaフォントに関して解説を行い、次回、具体的な設定を解説することにする。
![](https://image.news.livedoor.com/newsimage/stf/d/e/decb9_1223_c3d3fa877508c1ecbce30ccf1b2feafb.jpg)
OpenTypeとは?
フォント設定の意味を理解するために、Windows 11の標準フォント形式であるOpenTypeについて解説しておこう。ただし、ここでは、Windows Terminalのフォント設定で必要となる最低限の解説に止める。全体的な解説に関しては、MicrosoftのTypographyのページを参照していただきたい。
OpenTypeは、TrueTypeの後継となるアウトラインフォント形式である。最大の違いは、TrueType形式のアウトラインデータに加え、PostScript形式のアウトラインデータも扱えるようにしたもの。ユニコード対応であり、1つのフォントに65536個までのグリフを収容できる。また、フォントコレクション・ファイル形式を使うことで、複数のフォントを1つのファイルにまとめることも可能。
現在のOpenTypeの最新仕様は、今年(2024年)5月に更新されたOpenType 1.9.1である。
OpenTypeのアウトラインデータは、グリフの描画をベジェ曲線でつなげて行う。フォントファイル内では、グリフは、グリフ番号で管理され、ファイル内部のテーブルにより、ユニコードコードポイントとの対応を付ける。このような構造になっているのは、同じコードポイントでも形状が異なる場合や複数のグリフパターン(たとえば異字体など)があるからだ。このようにOpenTypeフォントファイルは、グリフデータと、各種のテーブルから構成されている。
OpenTypeの機能の多くは、紙の印刷物を作成するときのルールであるレイアウト(組版)の規則を実現するためのものだ。こうした機能には、「合字」、「特性」などがある。
合字とは、特定の文字の組合せを別の字形として表示する機能である。たとえば、欧文では、美的な観点から小文字のfとiの間隔を詰めるといった配置が行われてきた。欧文では活字の時代には、fとiをつなげた1つの活字が作られた。合字機能を使うことで、複数の文字をつなげた1つのグリフを得ることができる。
同じように特定の複数文字の組合せで、間隔を調整してバランス良く見せる方法としてカーニングがある。フォントによっては、合字を持たず、カーニングの情報を入れ、カーニングでバランスを調整することを想定しているフォントもある。
OpenType feature(特性)は、グリフに対して、合字や文字変化(単語内の位置でグリフが変わるアラビア文字などで使う)、上付き、下付きなどを指定する場合に使う。このfeatureも、実装は、フォント開発者に委ねられており、どんな特性があるのかはフォントファイルごとに違う。OpenTypeには、[予め定義された特徴(Registered features 英語)がある。合字の制御などは、これらを使って行う。
2016年に制定されたOpenType Ver.1.8では、可変フォントと呼ばれる機能が入った。これは、OpenType font variation機能を使い、グリフを連続的に変化させる方法を提供するものだ。フォントは見た目が統一され、美しく見えるようにデザインされているため、機械的に変形させてしまうと、デザインが崩れてしまう。文字を見たとき、人間は、大きなサイズであれば、文字を構成している線を太く表示しないと、不安定な印象を受ける。あるいは、太字のグリフを表示して他の部分と区別させたいことがある。
OpenType Ver.1.7までは、こうした線の太さは、個別のフォントとして作成するしか方法がなかった。このため、Windowsの多くのフォントはレギュラー表示、ボールド表示、イタリック表示、ボールド−イタリック表示用のフォントファイルを1つのフォントファミリとして提供していた。Windowsで一般にフォントと呼ばれているものはフォントファミリで、複数のフォントファイルから構成されていた。個別のフォントとして作成しなければならないため、線の太さの種類を増やすことが困難だった。
OpenType可変フォントは、連続値で変化する「軸」を設定でき、軸とその設定値により、グリフを変化させることができる。OpenTypeフォントでは、制御点を組み合わせてグリフの描画を定義している。軸には、この制御点を動かす方向が定義されている。これにより、軸の値に応じたグリフ描画を行うことができ、デザインを保ったままグリフを変形できる。
表02は、OpenTypeが事前定義する軸タグの一覧である。ただし、どの軸を実装するのかは、フォントの開発者の判断であり、フォントファイルによって異なる。また、フォント作成者が新たなタグを登録して利用することもできる。
![](https://image.news.livedoor.com/newsimage/stf/2/1/21bae_1223_103ecffaa21745d61d6ad869541e31bb.jpg)
フォントが可変かどうかは、Windows 11の設定 ⇒ 個人設定 ⇒ フォント、で該当のフォントのプロパティを表示させたとき、「完全名」の下に「可変フォント」項目が表示される(写真01)。逆にいうとこれが表示されないOpenTypeフォントは可変フォントではない。ここから可変フォントのプロパティ(写真02)を表示できる。
![](https://image.news.livedoor.com/newsimage/stf/5/d/5d944_1223_5b566d821781d21d60ea7ce1ae193a11.jpg)
![](https://image.news.livedoor.com/newsimage/stf/d/5/d5b40_1223_ab49475eabfdac6f4b76138254bf9326.jpg)
Terminal付属のCascadiaフォントは、軸としてウェイト(wght)とイタリック(ital)がある。ただし、イタリックは、2パターンしかなく、実質、軸として指定できるのはウェイトのみだ。これに対して、Windows 11標準のSegoe UI Variableには、光学サイズ(opsz)とウェイトがある。このように同じ可変フォントでもフォントにより実装が異なる。
OpenTypeには、複数のファイル形式がある。1つは、TrueTypeアウトライン形式を使うttfファイル、あるは、複数のttfファイルのフォントコレクション形式であるttcファイルだ。もう1つは、PostScript形式アウトラインフォント用のotfファイル、そのフォントコレクション形式のotcファイルである。
可変フォントに未対応のシステム向けに、可変フォント軸の特定値でアウトラインデータを固定し、複数のフォントファイルを作成することを静的(static)形式と呼ぶことがある。
Webブラウザで使うWeb Open Font Format(woff)は、OpenTypeと似た構造を持ち、機械的にwoff、woff2形式に変換することができる。
Cascadiaフォントとは?
Cascadiaフォントは、以下の特徴を持つ。
6種類のフォント
プログラマ向け合字(Cording Ligature)
ターミナルエミュレーターで使う等幅フォント
字形の異なるイタリック体を持ち立体との区別がしやすい
複数のフォントファイル形式
OpenType 可変フォント対応
OpenType特性で文字スタイルを選択(スラッシュ付きのゼロなど)
収録文字はおよそ2426文字(ユニコードのコードポイントレベル。合字やイタリック、ボールド体もあるのでグリフ数はもっと多い)である。(表03)は、その内訳を示すもの。
![](https://image.news.livedoor.com/newsimage/stf/c/f/cf3d4_1223_4373762eccb67a0f21d2864aa2cb478f.jpg)
Cascadiaフォントには、大きく6種類のフォントがある。大きく、プログラマ向け合字の有無とそれぞれに、Nerdフォントシンボル、Powerlineシンボルを追加したものがある(表04)。さらに、フォントファイルには、ttf可変フォント形式、ttf静的形式、otf静的形式、Web用形式(WOFF2)がある(表05)。
![](https://image.news.livedoor.com/newsimage/stf/9/c/9cacd_1223_20ff19b5134c5e07255ec2ce948ec6d6.jpg)
![](https://image.news.livedoor.com/newsimage/stf/8/9/89f4c_1223_5aa8c140c434728de205be1ce57f9b78.jpg)
Cascadiaフォントでは、Cascadia Code、Cascadia Code PL、Cascadia Code NFがプログラマ向けの合字を持つ。これは、「!=」の並びを「≠」などと表示するもの(写真03)。このようにすることでプログラムソースコードなどが見やすくなる。「合字」といっているが、OpenType特性としてはcalt(Contextual Alternate。コンテキスト代替)である。
![](https://image.news.livedoor.com/newsimage/stf/3/9/397cf_1223_2c0bd6da66ecb6a9f0134f0062b98bf5.jpg)
おもにコンソールなどで使うことを想定した等幅フォントであり、立体のほかにボールド体とイタリック体を持つ。立体とは、正立した形を持つ書体のことで、和文では「正体(せいたい)」という。いわゆる普通の文字のことだ。イタリック体は、少し斜めに傾いた書体を指すが、正体とは異なり筆記体に近い形を持つのが本来の形だ。文書中の引用部分など、本文と区別したい場合などに利用することが多い。なお、単純に字体を傾けた「斜体」とは基本的には異なるものだが、フォントによっては、イタリックを指定すると斜体が表示されるものもある。
これに対してボールド体は、いわゆる太字で、文中などで強調するなどの目的で使われるもの。ボールド体やイタリック体は、もともとは異なる書体に由来するものだが、現在では、イタリックとボールドは、1つのフォントのバリエーションや属性として扱われることが多く。これらをまとめてフォントファミリと呼ぶこともある。
コンソールでも、イタリックやボールド表示は可能だ。たとえば、コンソール上で動作するエディタ(たとえばvim)などのシンタックスハイライト機能では、これらの表示が使われることがある(写真04)。
![](https://image.news.livedoor.com/newsimage/stf/d/3/d34a2_1223_0588d8f9188ceeba704ccd318fa1d2b4.jpg)
一部のフォントでは、フォントを傾けた「斜体」と同じデザインのイタリック体を持つものがあるが、これでは、立体との区別がしにくい。これに対して、正しいイタリック体は、本来筆記体をベースにして作られたものなので、立体とは異なる字形をしている。Cascadiaフォントでは、イタリック体のデザインが立体と異なっており、混在したときに区別がしやすい(写真05)。シンタックスハイライトなどでは、立体、イタリックが混在することがあり、その識別性は重要なポイントである。
![](https://image.news.livedoor.com/newsimage/stf/6/f/6f318_1223_10d13b1bdeafb6f8b62de60d709a7688.jpg)
また、Cascadiaフォントは、特性を使って、一部のグリフを変更することができる。イタリック体の一部の文字をより筆記体的にすることで、他の文字との区別をつけやすくするものや、斜線が入ったゼロ、制御コードピクチャ(制御コードの意味を表す文字)の記号化などだ。(表06)にCascadiaフォント固有のOpenType特性を示す。
![](https://image.news.livedoor.com/newsimage/stf/4/8/486c7_1223_76b9f767eab3f5c5a422afc882a1f99a.jpg)
次回は、具体的なフォント設定に入りたい。
>> Windows Terminal ベスト設定 連載バックナンバー
https://news.mynavi.jp/tag/winterminal/