Wie kann ich Schriftarten mit Glyphen für ein bestimmtes Alphabet (unter Windows) auflisten?

647
einpoklum

Schriftarten (unter Windows aber nicht nur) enthalten normalerweise keine Glyphen für alle Sprachen. Tatsächlich haben die meisten von ihnen nur Glyphen für eine Sprache bzw. ein Alphabet.

Ich möchte alle Schriftarten auf meinem System (oder zumindest alle Schriftfamilien) auflisten, die Glyphen für ein bestimmtes Alphabet enthalten. Ich weiß, dass einige Anwendungen dies intern tun (z. B. Adobe Photoshop) und andere (z. B. Microsoft Word zwischen lateinischer und komplexer Unterscheidung). Wie kann ich das selbst machen?

Anmerkungen:

  • Ich interessiere mich speziell für Hebräisch, aber meine Frage bezieht sich auf den allgemeinen Fall.
  • Wenn es hilft, nehmen wir an, ich habe Cygwin installiert.
6
Bitte überprüfen Sie diese Diskussion mit einem ähnlichen Problem wie Ihrem: http://superuser.com/questions/866189/deterministic-way-to-find-which-installed-fonts-support-a-given-unicode-characte/866191#866191 Romeo Ninov vor 9 Jahren 1

1 Antwort auf die Frage

2
Ben N

Basierend auf dieser StackOverflow-Antwort habe ich dieses PowerShell-Skript geschrieben:

$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 } } } 

Speichern Sie es als eine Datei mit einer ps1Erweiterung. Ich habe es angerufen fonttest.ps1.

Bevor Sie mit PowerShell Skripts ausführen können, müssen Sie dies tun Set-ExecutionPolicy Unrestricted -Scope CurrentUser. Dann kannst du es so ausführen:

.\fonttest.ps1 你 

Das .\ist wichtig, und Sie müssen sich in demselben Verzeichnis befinden, in dem Sie das Skript gespeichert haben. Das letzte Zeichen ist das Zeichen, für das Sie alle Schriftarten testen möchten. Sie erhalten einen Ausdruck aller Schriftfamilien, die ein Zeichen für diesen Buchstaben haben. Auf meinem Computer erzeugte der obige Befehl Folgendes:

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 
1. Danke, dass Sie diese Mühe gemacht haben! 2. (Un?) Zum Glück benutze ich Windows heutzutage nicht, also kann ich dieses Skript nicht testen. 3. Was meinen Sie mit "Set-ExecutionPolicy Unrestricted -Scope CurrentUser"? Umfasst das Dienstprogramm für den Richtlinieneditor? Kannst du irgendwo eine Verbindung herstellen, um zu erklären, wie das geht? einpoklum vor 8 Jahren 0
@einpoklum Es ist nur ein Befehl, den Sie in die PowerShell-Eingabeaufforderung eingeben müssen. (Ich bin sicher, es gibt auch eine äquivalente Gruppenrichtlinieneinstellung, aber es ist einfacher, den Befehl einzugeben.) Ben N vor 8 Jahren 1