web-dev-qa-db-ja.com

メモ帳が表示に使用するフォント(例:ヘブライ語、Lucida Consoleを使用すると主張しているが、Lucida Consoleにそれらの文字がない場合はどうなりますか?

CourierNewの文字は\ u05D0ヘブライ文字のアレフです

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

enter image description here

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

LucidaConsoleにはキャラクターがありません。文字コード表は、LucidaConsoleに文字がないことを示しています。

ただし、LucidaConsoleフォントが設定されている場合でもメモ帳に表示されます

enter image description here

では、メモ帳はどのフォントを使用していますか?

7
barlop

Windows 7には、複合フォントと呼ばれるテクノロジがあります。

これは、国際的なフォントリンクとフォールバックロジックを説明するために使用されます ソース

これにより、文字定義の範囲が制限された多くのフォントから仮想フォントをリンクさせることができます。

デフォルトの複合フォントはGlobalUserInterfaceと呼ばれ、ファイルにあります
C:\Windows\Fonts\GlobalUserInterface.CompositeFont

優れた BabelMap ツールを使用して、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と同じように実行しているからです。

6
miroxlav

ミロの答えは素晴らしいです、私はそれを少し違ったやり方で書くつもりです

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.CompositeFontには0590-06FFがあり、リストされている代替フォントは1つだけで、Alephを持つCourierNewです。しかし、Miroは、それは使用されている複合ファイルではなく、使用されているのはGlobalUserInterface.CompositeFontであると判断しました。

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

Alephは\u05D0なので、ファイルを下にスクロールして、写真に表示されている場所に移動する必要がありますが、それが確認するセクションです。

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

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

enter image description here

Charmapは、十分に遠いFFFFまで到達できます。 Charmapは、segoeUIにないことを示しています。しかし、それはタホマにあります。

enter image description here

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

Babelmapには複合フォントがありますが、それらはカスタムフォントであり、特にWindowsで使用されるカスタムフォントではないと思います。しかし、babelmapを使用すると、どのフォントにUnicode文字が含まれているかを検索したり、FFFFを超えてもフォント内のどの文字を調べたりすることができます。

2
barlop