當記事本聲稱使用 Lucida Console 但 Lucida Console 沒有這些字元時,它使用什麼字體來顯示希伯來語?

當記事本聲稱使用 Lucida Console 但 Lucida Console 沒有這些字元時,它使用什麼字體來顯示希伯來語?

Courier New 具有字元 \u05D0 希伯來字母 aleph

其他一些字體也可以,例如 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. 在 tag 中<FontFamily.FamilyMaps>,找到您的角色的定義範圍。
  3. 搜尋FontFamilyMap在其Unicode屬性中包含您的範圍的標籤,並取得為該範圍指定的字體(或字體清單)(它儲存在 attribute 中Target)。
    例子:如果是字元的話05D0文件中找到的範圍是0590-05FF(希伯來文)
    和字型替換是:
    "Segoe UI, Tahoma, Arial, Arial Unicode MS, Microsoft Sans Serif, Lucida Sans Unicode"

    1. 如果只有單一字體,你就有了。否則,讓我們按順序檢查清單:執行 BabelMap
    2. 導航到給定字符
    3. 切換單選按鈕複合字體單一字體
      或:前往選單字體>字體覆蓋...並按計算按鈕
    4. 依步驟中出現的順序切換到字體3。顯示字形的第一個字體是您的字體。

筆記:有 4 種複合字體文件可用,但我驗證了適合您情況的文件是GlobalUserInterface.CompositeFont.

這種技術是可靠的,因為透過搜尋定義,您所做的事情與 Windows 所做的事情相同。

答案2

米羅的回答很棒,我只是寫得稍微不同

有四個複合字體檔案。

這四個是

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 和列出的後備字體,其中只有一個是 Courier New,其中有 Aleph。但米羅確定這不是使用的複合文件,而是使用的文件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 中。但這是在塔霍馬。

在此輸入影像描述

Babelmap 很有趣,因為它可以顯示 FFFF 之後的字元(在本例中不是必需的),而且它還可以顯示系統上的哪些字體具有特定的 unicode 字元。但是要查看記事本在實務上實際使用什麼字體作為後備字體,您需要檢查 GlobalUserInterface.CompositeFont 檔案。然後在 charmap 或 babelmap 中尋找具有所需字形/unicode 字元的第一個字型。

Babelmap 有複合字體,但我認為它們是自訂字體,而不是 Windows 使用的自訂字體。但是,人們可以有用地使用 babelmap 來搜尋哪種字體具有 unicode 字符,或者查看字體中包含哪些字符,甚至超出 FFFF。

相關內容