日本語Windowsでフォントの英語名を調べる

VSCodeでのフォント指定は、英語名で行う。ついでに日本語環境でフォントの英語名の一覧を得る方法を掲載する。

概要

VSCodeでフォント名に日本語を含むフォントを指定する方法を載せるつもりだった。簡単に言えば、フォント名を英語で指定すればいい。似たような指定方法をする必要のあるソフトウェアはたくさんあることと思う。

VSCodeのフォントは設定画面でフォントで検索すればすぐわかると思うので、それは割愛する。

フォントの英語名(正式名称)を調べる方が苦戦するので、こちらを記録しておきたい。

英語名を手っ取り早く調べる

調べる方法としてもっとも簡単なのはコントロールパネルのフォント設定を見る……のではなく、EdgeやChromeなどのWebブラウザの設定から、フォント設定を開いてみるのがよさそうだ。

コントロールパネルなどのWindowsのフォント設定は日本語名しか調べられないようなので、日本語Windowsでは無理なようだ。

Webブラウザのフォント設定では、英語表示のリストが確認できるので、ここで表示される文字列をVSCodeのフォント設定で指定すれば、使いたいフォントを使えるようになる。

下の画像の赤枠部分では、さきほどの源ノ角ゴシック Code JP Mの英語名Source Han Code JPが確認できる。プルダウンメニューのリストがスクショできなかったので、これで紹介。

chromeのフォント設定画面

powershellコンソールで調べる方法

ブラウザで調べるのは設定を開くのも面倒でコピーできないという問題がある。つづりを間違えることなく入力するのは大変なので、もっと簡単にフォントの英語名を調べてコピーできる方法があるといい。

powershellのバージョンは、Get-Hostで確認した限りでは5.1だとおもう。

日本語取得の例

日本語名のリストはpowershellで表示できるようだ:

[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
(New-Object System.Drawing.Text.InstalledFontCollection).Families

掲載元:

Powershellで利用可能なフォントをリストする - プログラミングの「YUIPRO」
Windowsのコマンドライン言語Powershellで、コマンドラインコンソールから利用可能なフォントをリストする方法について紹介します。rundll32.exe Shell32.dll,SHHelpShortcuts_RunDLL…

ちなみに出力はこうなった:

> (New-Object System.Drawing.Text.InstalledFontCollection).Families
Name
----
Arial
Arial Black
# ... 中略
游明朝 Light
源ノ角ゴシック Code JP EL
源ノ角ゴシック Code JP H
源ノ角ゴシック Code JP L
源ノ角ゴシック Code JP M
源ノ角ゴシック Code JP N
源ノ角ゴシック Code JP R
# ... 省略

powershellのコンソールのセッション内で一時的にロケールをenにできれば、英語名の一覧を表示できそうだが、そのような一時的な変更をできるコマンドレットなどはなさそうだ? 恒久的な変更は再起動が必要になるので、普段からenで使っているのと同じになりそうだ。

英語取得の例

もう少し探してみると、以下のような解決法があった。

Temporarily change powershell language to English?
I wrote some software that uses the output of system (powershell) commands, but did not foresee that the output would be...

ロケールではなくUIのみ英語表示という手法のようだ。一時的に英語UIにして、目的のコマンドを実行した後には元に戻せばいいので、こんな感じでできる:

& {
    $prev=[cultureinfo]::CurrentUICulture
    [cultureinfo]::CurrentUICulture='en-US'
    [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
    (New-Object System.Drawing.Text.InstalledFontCollection).Families
    [cultureinfo]::CurrentUICulture=$prev
}

出力は下のようになる。狙い通り、英語名がずらりと並ぶ。1つごとの空行が多いが、まあいいだろう:

> & {
    # 上のコマンドと同じなので省略
}

GAC    Version        Location
---    -------        --------
True   v4.0.30319     C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\Syste...

Name : Arial


Name : Arial Black

# ... 中略
Name : Yu Mincho Light


Name : Source Han Code JP EL


Name : Source Han Code JP H


Name : Source Han Code JP L


Name : Source Han Code JP M


Name : Source Han Code JP N

Name : Source Han Code JP R

# ... 省略

これの問題は、どれが探しているフォントかわかりにくいこと。しかしコピーできるメリットはかなり大きい。 幸いなことに、並び順は同じようなので探せないことはない。

おわり

英語名の取得は無理だと思っていたので、できることがわかったのはいい収穫だった。 これで英語名指定を行う必要のあるソフトウェアで好きなフォントを使うことができる。

コンソールの中でUIだけ言語を変えられる設定は便利だ。UICultureのような名称はほんの少しわかりづらい気がした。 英語UIだと一覧のフォーマットも変わるというのは結構意外な感じ。

空行はパイプを通して消せそうな気がするから問題はなさそう。

好きなフォント使っていきましょう。

以上です。

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