フォント(Windowsだけでなく)は通常、すべての言語のグリフを含んでいるわけではありません。実際、それらのほとんどには、1つの言語、つまり1つのアルファベットのグリフしかありません。
特定のアルファベットのグリフを持つ、システム上のすべてのフォント(または少なくともすべてのフォントファミリー)を一覧表示したいと思います。一部のアプリケーションはこれを内部で実行し(例:Adobe Photoshop)、他のアプリケーションは一種の実行を実行します(例:Microsoft Wordのラテン語と複雑な区別)。どうすれば自分でこれを行うことができますか?
ノート:
このStackOverflowの回答 に基づいて、次のPowerShellスクリプトを作成しました。
$charId = [Int32][char]$args[0]
[System.Reflection.Assembly]::LoadWithPartialName("PresentationCore") | Out-Null
[System.Windows.Media.Fonts]::GetFontFamilies("C:\Windows\Fonts") | ForEach-Object {
foreach ($face in $_.GetTypefaces()) {
$glyph = $null
$face.TryGetGlyphTypeface([ref]$glyph) | Out-Null
if ($glyph -and $glyph.CharacterToGlyphMap.TryGetValue($charId, [ref]0)) {
$_.Source.Split("#")[1]
break
}
}
}
拡張子がps1
のファイルとして保存します。私はそれをfonttest.ps1
と呼んだ。
PowerShellでスクリプトを実行する前に、Set-ExecutionPolicy Unrestricted -Scope CurrentUser
を実行する必要があります。次に、次のように実行できます。
.\fonttest.ps1 你
.\
は重要であり、スクリプトを保存した場所と同じディレクトリにいる必要があります。その最後の文字は、すべてのフォントをテストする文字です。その文字のグリフを持つすべてのフォントファミリのプリントアウトが表示されます。私のコンピューターでは、上記のコマンドで次のようになりました。
Microsoft JhengHei
Microsoft JhengHei UI
Microsoft YaHei
Microsoft YaHei UI
Yu Gothic
MS Mincho
MS PMincho
DFKai-SB
SimHei
KaiTi
SimSun
NSimSun
Meiryo
Meiryo UI
MS Gothic
MS UI Gothic
MS PGothic
FangSong
Yu Mincho
MingLiU
PMingLiU
MingLiU_HKSCS
Arial Unicode MS
Adobe Fangsong Std
Adobe Fan Heiti Std
Adobe Heiti Std
Adobe Kaiti Std
Kozuka Gothic Pro
Kozuka Mincho Pro
Adobe Ming Std
Adobe Song Std
Kozuka Gothic Pr6N
Kozuka Mincho Pr6N
DengXian
Microsoft MHei