Cascadiaフォントのfeature(特性)を使う
OpenTypeには、font feature(特性)とよばれる機能があり、異字体の切り替えや合字パターンの切り替えなどができる。Webページで使うCSSなどでは、細かく指定ができる。しかし、Windows Terminalでは、表示フォントに対して一括しての指定しかできず、切り替えには、プロファイルを作り分けるなどの作業が必要となる。これは、Visual Studio Codeなどでも同じだ。
以下の表は、ソースコードから抜き出したCascadiaフォントで指定可能なfeatureである。
このうち大半のものは、「登録済みタグ」として、OpenTypeの仕様書に定義がある(https://learn.microsoft.com/ja-jp/typography/opentype/spec/featurelist)。ただし、Windows Terminalなどでは、指定しても無効に見える(有効になるテキストの表示ができない)ものがある。
このうち、効果がはっきりと見えるのは、ss01~ss20の6つのfeatureである。前ページの画面は、ss01~ss20をすべてオフ(標準状態)にしたものだ。
ss01は、イタリック体の小文字の異字体だ。アルファベットのfやl、s、rなどが異字体になり、かなり筆記体に近くなる。
英語のアルファベットだけでなく、アクセント付き文字用のものも用意されている。画面上部のアルファベットzの後ろにあるのは、英語以外の言語やアクセント付きの文字である。
ss02は、「~=」を「ノットイコール」として合字表示をするもの。一部の言語では、「等しくない」の表記が「!=」ではなく、「~=」を使うもの(Luaなど)がある。このような場合、ss02を有効または1に設定することで、「~=」の合字としてノットイコール合字として表示できる。
ss03はセルビア文字の異字体、ss19は斜線の入るゼロの異字体(zeroでも指定可能)。ss20は、コントロールコード用のピクチャ文字(コントロールコードの名前に対応する文字)を、グラフィカルな表現に切り替えるもの。
Cascadiaフォントのコントロール文字のピクチャは、コントロールコード名を2文字で表現したもので、一般的な3文字表記ではない。たとえば、U+0000はNULコードと呼ばれるが、Cascadiaフォントでは、NとLを組み合わせたピクチャで表示される。ss20は、これをグラフィカルなシンボルに置き換えるものだ。
Windows Terminalでは、OpenType特性はGUI設定(「プロファイル」→「外観」→「フォント機能」)でできる。しかし、現在のWindows Terminalには少し制限があり、すべての特性を記述できない。このため、直接settings.jsonを編集する。
フォント設定はプロファイルごとにあり、その定義中に以下のように“features”オブジェクトを追加する。
"font": {
"face": "Cascadia Code, BIZ UDGothic",
"features": {
"ss01": 1,
"ss02": 1,
"ss03": 1,
"ss19": 1, "ss20": 1
}
},
Windows Terminalは、デフォルトで合字がオンになっているため、"calt"で有効にする必要はない。逆に、合字を禁止したければfraturesに「"calt": 0,」を指定する。
VSCodeでもfeatureの指定は可能だ。やはりsettings.jsonに以下の記述を入れることで、合字(calt)とss01からss20までをすべてオンにできる(要再起動)。
"editor.fontLigatures": "'calt','ss01','ss02','ss03','ss19','ss20'",
VSCodeでは、言語の予約語などをイタリック体で表示するテーマがある。このような場合、Cascadiaフォントではイタリック体と立体の区別が付きやすい。インターネット上のページには、テーマのイタリック体表示を立体表示に戻す方法などが記述されているが、イタリック体の視認性が高く、立体との区別が付きやすいフォントを使う方が良いと思うのだが……。なお、VSCodeの場合、テーマによる設定の優先度が高いため、合字の有効化やフォント指定には注意が必要だ。
ちょっとしたプログラムを書くことがあるなら、Cascadia Codeを使ってみると、見た目が違ってくる。等しい、等しくないなどの視認性が高く、注釈なども区別しやすくなる。最近では、色分けするアプリケーションも少なくないが、色をあまり使わない表示が好みなら試してみてほしい。
この連載の記事
-
第442回
PC
Copilot+ PCで実現されるローカル推論で「対クラウド企業」を指向するMicrosoft -
第441回
PC
WSL以前から40年以上続く、Windows(Microsoft)とUNIXとの関わり -
第440回
PC
そもそも「Copilot+ PC」とは何なのか? -
第439回
PC
今更more.comを使うのか!? Windowsでのページングを考える -
第438回
PC
Windowsはなぜ再起動が必要になるのか? -
第437回
PC
Windowsが今更(?)開発者に優しくなろうとしている!? 「Dev Home」は開発者にとって使い物になる? -
第436回
PC
Copilot+PCとともにWindowsのデバイス間連携に大きな変化!? Project ROMEの逆襲? -
第435回
PC
Windows Terminal Preview v1.21では、前回終了時のタブとその表示内容を復元できるように -
第434回
PC
AIの急速な導入がWindowsの予定を変えた!? Windows 12がすぐには出ない可能性 -
第433回
PC
Windows 11の2つのウィジェットを調べる - この連載の一覧へ