Как я могу перечислить шрифты с глифами для определенного алфавита (в Windows)?

Шрифты (в Windows, но не только) обычно не содержат глифов для всех языков. На самом деле, большинство из них имеют глифы только для одного языка или, вернее, одного алфавита.

Я хочу перечислить все шрифты в моей системе (или, по крайней мере, все семейства шрифтов), которые имеют глифы для определенного алфавита. Я знаю, что некоторые приложения делают это внутренне (например, Adobe Photoshop), а другие вроде этого (например, различие между Microsoft Word и латинскими словами против сложных). Как я могу сделать это сам?

Заметки:

  • Я особенно заинтересован в иврите, но мой вопрос для общего случая.
  • Если это поможет, предположим, что у меня установлен Cygwin.

1 ответ

Основываясь на ответе 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
Другие вопросы по тегам