是否可以确定Windows为字体链接选择的字体?

Adr*_*thy 8 winapi gdi font-linking textout

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

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

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

Han*_*ant 3

字体由注册表项选择。这篇文章对此进行了很好的描述 引用相关部分:

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

  • 谢谢,这是一个很棒的资源。但我在另一篇博客中读到,这些注册表项只是为了向后兼容,并且它们不再真正驱动字体链接。例如,在我的机器上,TextOut 将为不在注册表的该部分中的基本字体进行字体链接。而且它也不是字体后备,因为为其他脚本选择的字体根据基本字体而有所不同。 (3认同)