假设您有两个或多个脚本中包含文本的字符串。当您使用像TextOut
这样的GDI函数时,(现代版本)Windows将执行“字体链接”。也就是说,GDI将使用您选择的字体绘制所需的字体,并以自动选择的适当字体绘制其余字体。例如,如果您的部分文本是英文(使用罗马字母),部分文本是中文(使用CJK字符),并且您选择了Arial,则英文部分将以Arial绘制,中文部分将使用用另一种具有CJK字形的字体绘制。
我的问题是,有没有办法确定哪些字体TextOut
会为字体链接选择(或选择)?
我必须使用低级Uniscribe API绘制一些文本,该API不执行自动字体链接。我已经实现了自己的字体链接,但有时候我的算法会为TextOut
选择与同一文本不同的字体。我试图更好地理解Windows算法,但我并不擅长识别字体(特别是在不熟悉的脚本中)。
答案 0 :(得分:2)
该字体由注册表项选择。在this article.引用相关部分:
中有详细描述如果您的字体链接已启用 设备,您可以检查注册表 通过枚举的子键 注册表项 HKEY_LOCAL_MACHINE \ SOFTWARE \微软\窗户 NT \ CURRENTVERSION \ FontLink \ SystemLink 确定链接的映射 字体基础字体。您可以添加链接 通过使用Regedit创建其他 子项。