【发布时间】:2013-05-27 13:13:22
【问题描述】:
当目标字体不可用时,是什么让 Windows 选择某种字体而不是另一种?
我正在使用以下代码来创建某种字体。
somefont.CreateFont(-11, 0, 0, 0, FW_NORMAL, 0, 0, 0,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH|FF_SWISS, "Segoe UI");
现在,如果 Segoe UI 不可用(如在 Windows XP 上),字体映射器会自动选择“Arial”作为后备。 这实际上是我想要的,但是是什么让 Windows XP 选择“Arial”而不是其他一些无衬线字体,例如“Microsoft Sans Serif”。
【问题讨论】:
-
字体回退很复杂,取决于注册表项。并且取决于地区,例如东亚国家的规则是不同的。太多了,无法插入,也许 superuser.com 上的某个人愿意试一试。
-
我建议你看看 Wine 的字体映射器,因为它是开源的,而且他们在逆向工程 Windows 的内部工作方面付出了很多努力,所以他们的字体映射器可能非常接近于真正的字体映射器有效。