当记事本声称使用 Lucida Console 但 Lucida Console 没有这些字符时,记事本使用什么字体来显示例如希伯来语?

bar*_*lop 9 windows fonts windows-7 notepad unicode

Courier New 具有字符 \u05D0 希伯来字母 aleph

其他一些字体也可以,例如 Miriam 和 David。

在此处输入图片说明

我可以将其粘贴到记事本中

Lucida Console 没有这个角色。角色地图显示Lucida Console没有角色。

然而,即使设置了 Lucida Console 字体,记事本也会显示它

在此处输入图片说明

那么记事本使用的是什么字体?

mir*_*lav 7

Windows 7 有一种技术叫做复合字体

用于描述国际字体链接和回退逻辑

它允许您从许多字符定义范围有限的字体链接一个虚拟字体。

默认复合字体称为GlobalUserInterface并位于文件
C:\Windows\Fonts\GlobalUserInterface.CompositeFont.

你可以使用很棒的BabelMap工具来玩弄和理解 Unicode、复合字体和相关事物的实现。

还可以查看这篇MSDN 文章备注部分的字体回退小节,了解一些有趣的背景知识,如何构建这种复合字体以及回退规则是什么。


查找字符字体(基于上述信息):

  1. 在任何纯文本编辑器/查看器中,显示文件
    C:\Windows\Fonts\GlobalUserInterface.CompositeFont.
  2. 在 tag 中<FontFamily.FamilyMaps>,找到角色的定义范围。
  3. FontFamilyMap在其Unicode属性中搜索包含您的范围的标签,并获取为该范围提供的字体(或字体列表)(它存储在属性中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 所做的相同。