メモ帳は、Lucida コンソールを使用していると主張していますが、Lucida コンソールにはそれらの文字がない場合、ヘブライ語などを表示するためにどのフォントを使用していますか?

メモ帳は、Lucida コンソールを使用していると主張していますが、Lucida コンソールにはそれらの文字がない場合、ヘブライ語などを表示するためにどのフォントを使用していますか?

Courier Newには、ヘブライ文字のアレフという文字があります

Miriam や David などの他のフォントでも同様です。

ここに画像の説明を入力してください

メモ帳に貼り付けることができます

Lucida Console には文字がありません。文字マップには、Lucida Console に文字がないことが示されています。

しかし、Lucida Consoleフォントが設定されていてもメモ帳には表示されます

ここに画像の説明を入力してください

それで、メモ帳はどのフォントを使用しているのでしょうか?

答え1

Windows 7には、合成フォント

国際フォントのリンクとフォールバックロジックを記述するために使用される ソース

文字定義の範囲が限定された多数のフォントからリンクされた仮想フォントを作成できます。

デフォルトの合成フォントはグローバルユーザーインターフェースファイル にあります
C:\Windows\Fonts\GlobalUserInterface.CompositeFont

素晴らしいバベルマップUnicode、複合フォント、および関連するものの実装を試して理解するためのツール。

こちらもチェックフォントフォールバックのサブセクション備考このセクションMSDN記事このような複合フォントがどのように構築されるか、フォールバック ルールは何かという興味深い背景を学びます。


文字のフォントの検索(上記の情報に基づく):

  1. 任意のプレーンテキスト エディター/ビューアで、ファイルを表示します
    C:\Windows\Fonts\GlobalUserInterface.CompositeFont
  2. タグで<FontFamily.FamilyMaps>、文字の定義範囲を見つけます。
  3. FontFamilyMap属性に範囲を含むタグを検索しUnicode、その範囲に指定されたフォント (またはフォント リスト) を取得します (属性に格納されていますTarget)。
    例:キャラクターの場合05D0ファイル内で見つかった範囲は0590-05FF(ヘブライ語)
    およびフォントの置換は次のとおりです。
    "Segoe UI, Tahoma, Arial, Arial Unicode MS, Microsoft Sans Serif, Lucida Sans Unicode"

    1. フォントが1つだけの場合は、そのフォントが見つかります。そうでない場合は、リストを順番にチェックしてみましょう。BabelMapを実行します。
    2. 指定された文字へ移動
    3. ラジオボタンを切り替える合成フォント単一フォント
      または、メニューに移動フォント>フォント範囲...を押して計算するボタン
    4. 手順に表示されている順にフォントを切り替えます3グリフが表示されている最初のフォントがあなたのフォントです。

注記:利用可能な複合フォント ファイルは 4 つありますが、お客様のケースに適したファイルは であることを確認しましたGlobalUserInterface.CompositeFont

この手法は、定義を検索することで Windows と同じことを実行するため、信頼性があります。

答え2

miroさんの答えは素晴らしいです、私は少し違う書き方をします

複合フォントファイルは 4 つあります。

その4人は

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>

一度見てみると、例えば、 GlobalMonospace.CompositeFont0590-06FFがあり、フォールバックフォントとしてリストされているのは、Alephを含むCourier Newだけです。しかし、Miroは、それが使用されている合成ファイルではなく、使用されているものであると判断しました。GlobalUserInterface.CompositeFont

このファイルを開く C:\Windows\Fonts\GlobalUserInterface.CompositeFont

Alephは\u05D0、私が写真で示している場所に到達するためにファイルを下にスクロールする必要がありますが、それが注目すべきセクションです

複合フォントファイルには、さまざまな範囲の Unicode 文字のフォールバックフォントとして機能するフォントのファミリがリストされています 0590-06FF(05D0/aleph を含む範囲)

    <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"/>

ここに画像の説明を入力してください

Charmap は FFFF まで到達できますが、これは十分な距離です。Charmap は segoeUI には存在しないことを示しています。しかし、Tahoma には存在します。

ここに画像の説明を入力してください

Babelmap は、FFFF を超える文字を表示できる (この場合は必要ありません) ことと、システム上のどのフォントに特定の Unicode 文字が含まれているかを表示できることが興味深いです。ただし、メモ帳でフォールバック フォントとして実際に使用されているフォントを確認するには、GlobalUserInterface.CompositeFont ファイルを確認する必要があります。次に、charmap または babelmap で、必要なグリフ/Unicode 文字を含む最初のフォントを探します。

Babelmap には複合フォントがありますが、それらは Windows で使用されるカスタム フォントではなく、カスタム フォントだと思います。ただし、どのフォントに Unicode 文字が含まれているかを検索したり、FFFF を超えてフォント内にどのような文字が含まれているかを確認したりするために、babelmap を使用すると便利です。

関連情報