10

假设您有一个包含两个或多个脚本中的文本的字符串。当您使用 GDI 函数TextOut时,(现代版本的)Windows 将执行“字体链接”。也就是说,GDI 将使用您选择的字体绘制它可以绘制的内容,并以它自动选择的适当字体绘制其余部分。例如,如果您的文本一部分是英文(使用罗马字母),一部分是中文(使用 CJK 字符),并且您选择了 Arial,则英文部分将使用 Arial 绘制,而中文部分将用另一种具有 CJK 字形的字体绘制。

我的问题是,有没有办法确定TextOut为字体链接选择(或确实选择了)哪些字体?

我必须使用不执行自动字体链接的低级 Uniscribe API 绘制一些文本。TextOut我已经实现了自己的字体链接,但有时我的算法会选择与相同文本不同的字体。我试图更好地理解 Windows 算法,但我并不擅长识别字体(尤其是在不熟悉的脚本中)。

4

1 回答 1

3

字体由注册表项选择。在这篇文章中有很好的描述。 引用相关部分:

如果您的设备上启用了字体链接,您可以通过枚举 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink 处的注册表项的子项来检查注册表,以确定链接字体到基本字体的映射。您可以使用 Regedit 添加链接以创建其他子项。

于 2010-03-11T18:18:42.563 回答