Welche Schriftart verwendet Notepad beispielsweise zur Anzeige von Hebräisch, wenn es behauptet, Lucida Console zu verwenden, Lucida Console diese Zeichen jedoch nicht hat?

Welche Schriftart verwendet Notepad beispielsweise zur Anzeige von Hebräisch, wenn es behauptet, Lucida Console zu verwenden, Lucida Console diese Zeichen jedoch nicht hat?

Courier New hat das Zeichen \u05D0 hebräischer Buchstabe Aleph

Dies gilt auch für einige andere Schriftarten, beispielsweise Miriam und David.

Bildbeschreibung hier eingeben

Ich kann das in den Notizblock einfügen

Lucida Console hat den Charakter nicht. Die Charaktertabelle zeigt, dass Lucida Console den Charakter nicht hat.

Dennoch zeigt Notepad es an, auch wenn die Schriftart Lucida Console eingestellt ist

Bildbeschreibung hier eingeben

Also, welche Schriftart verwendet Notepad?

Antwort1

Windows 7 verfügt über eine Technologie namenszusammengesetzte Schriftart

das zur Beschreibung der internationalen Schriftverknüpfung und Fallback-Logik verwendet wird Quelle

Sie können damit eine virtuelle Schriftart aus vielen Schriftarten mit einem begrenzten Bereich an Zeichendefinitionen verknüpfen.

Die Standard-Composite-Schriftart heißtGlobaleBenutzerschnittstelleund befindet sich in der Datei
C:\Windows\Fonts\GlobalUserInterface.CompositeFont.

Sie können großeBabelMapTool zum Herumexperimentieren und Verstehen der Implementierung von Unicode, zusammengesetzten Schriftarten und verwandten Dingen.

Überprüfen Sie auchFont-FallbackUnterabschnitt vonBemerkungenAbschnitt diesesMSDN-Artikelum einige interessante Hintergründe zu erfahren, wie eine solche zusammengesetzte Schriftart aufgebaut ist und was Fallback-Regeln sind.


Suchen einer Schriftart für das Zeichen (basierend auf den obigen Informationen):

  1. Zeigen Sie die Datei in einem beliebigen Texteditor/-viewer an
    C:\Windows\Fonts\GlobalUserInterface.CompositeFont.
  2. Suchen Sie im Tag <FontFamily.FamilyMaps>nach dem Definitionsbereich für Ihren Charakter.
  3. Suchen Sie nach einem Tag, FontFamilyMapdas Ihren Bereich in seinem UnicodeAttribut enthält, und erhalten Sie die für diesen Bereich angegebene Schriftart (oder eine Liste von Schriftarten) (sie ist im Attribut gespeichert Target).
    Beispiel:im Falle des CharaktersNr. 05D0Der in der Datei gefundene Bereich ist0590-05FF(Hebräisch)
    und Schriftartenersetzungen sind:
    "Segoe UI, Tahoma, Arial, Arial Unicode MS, Microsoft Sans Serif, Lucida Sans Unicode"

    1. Wenn nur eine einzige Schriftart vorhanden war, haben Sie sie. Andernfalls überprüfen wir die Liste der Reihe nach: Führen Sie BabelMap aus
    2. Zum angegebenen Zeichen navigieren
    3. Optionsfelder wechseln vonZusammengesetzte SchriftartZuEinzelne Schriftart
      oder alternativ: zum MenüSchriftarten>Schriftartenabdeckung...und drückeBerechnungTaste
    4. Wechseln Sie zu den Schriftarten in der Reihenfolge, in der sie in Schritt3. Die erste Schriftart, bei der das Glyph angezeigt wird, ist Ihre Schriftart.

Notiz:Es sind 4 zusammengesetzte Schriftdateien verfügbar, aber ich habe überprüft, dass die richtige für Ihren Fall ist GlobalUserInterface.CompositeFont.

Diese Technik ist zuverlässig, da Sie durch die Suche in den Definitionen dasselbe tun, was Windows tut.

Antwort2

Miros Antwort ist brillant, ich werde sie nur etwas anders schreiben

Es gibt vier zusammengesetzte Schriftdateien.

Die vier sind

C:\Windows\Fonts>dir *composite* /s/b

C:\Windows\Fonts\GlobalMonospace.CompositeFont
C:\Windows\Fonts\GlobalSansSerif.CompositeFont
C:\Windows\Fonts\GlobalSerif.CompositeFont
C:\Windows\Fonts\GlobalUserInterface.CompositeFont

C:\Windows\Fonts>

Wenn man sie sich einmal ansieht, sieht man, dass beispielsweise GlobalMonospace.CompositeFont0590-06FF und die aufgelisteten Ersatzschriften, nur eine, Courier New, die Aleph hat. Aber Miro hat festgestellt, dass dies nicht die verwendete zusammengesetzte Datei ist, sondern dass die verwendete DateiGlobalUserInterface.CompositeFont

Öffnen Sie diese Datei C:\Windows\Fonts\GlobalUserInterface.CompositeFont

Aleph ist, \u05D0also müssen Sie die Datei nach unten scrollen, um dorthin zu gelangen, wo ich im Bild zeige, aber das ist der Abschnitt, den Sie sich ansehen sollten

Die zusammengesetzte Schriftdatei listet eine Familie von Schriften auf, die als Ersatzschriftarten für verschiedene Bereiche von Unicode-Zeichen fungieren, einschließlich 0590-06FF(das ist der Bereich, der 05D0/aleph enthält)

    <FontFamilyMap  
        Unicode          = "0000-052F, 0590-06FF, 0750-077F, 1D00-1FFF, 2C60-2C7F, FB00-FB0F, FB1D-FBFF" 
        Target           = "Segoe UI, Tahoma, Arial, Arial Unicode MS, Microsoft Sans Serif, Lucida Sans Unicode"
        Scale            = "1.0"/>

Bildbeschreibung hier eingeben

Charmap kann bis FFFF reichen, was weit genug ist. Charmap zeigt, dass es nicht in SegoeUI ist. Aber es ist in Tahoma.

Bildbeschreibung hier eingeben

Babelmap ist interessant, weil es Zeichen nach FFFF anzeigen kann (in diesem Fall nicht notwendig) und auch zeigen kann, welche Schriftarten auf Ihrem System ein bestimmtes Unicode-Zeichen haben. Um jedoch zu sehen, welche Schriftart tatsächlich in der Praxis von Notepad als Ersatzschriftart verwendet wird, müssen Sie die Datei GlobalUserInterface.CompositeFont überprüfen. Suchen Sie dann in Charmap oder Babelmap nach der ersten Schriftart mit dem gewünschten Glyph/Unicode-Zeichen.

Babelmap hat zusammengesetzte Schriftarten, aber ich glaube, es sind benutzerdefinierte Schriftarten und nicht speziell die benutzerdefinierten, die von Windows verwendet werden. Man könnte Babelmap aber sinnvollerweise verwenden, um zu suchen, welche Schriftart ein Unicode-Zeichen hat, oder um zu sehen, welche Zeichen in einer Schriftart enthalten sind, sogar über FFFF hinaus.

verwandte Informationen