【发布时间】:2018-06-28 14:49:29
【问题描述】:
我有一些软件被编码为使用某种字体。从那以后,我改变了对字体的看法,想使用无衬线字体。在更改任何代码之前,我从运行它的 PC 中删除了旧字体,软件仍然成功运行,尽管存在一些尺寸问题。即使不再安装我在代码中引用的唯一字体,它也使用 Sans Serif。我已经搜索了几个小时关于它如何以及为什么这样做,但找不到任何具体的答案。 有人可以解释为什么会这样吗? 有没有办法改变默认的后备字体?
【问题讨论】:
我有一些软件被编码为使用某种字体。从那以后,我改变了对字体的看法,想使用无衬线字体。在更改任何代码之前,我从运行它的 PC 中删除了旧字体,软件仍然成功运行,尽管存在一些尺寸问题。即使不再安装我在代码中引用的唯一字体,它也使用 Sans Serif。我已经搜索了几个小时关于它如何以及为什么这样做,但找不到任何具体的答案。 有人可以解释为什么会这样吗? 有没有办法改变默认的后备字体?
【问题讨论】:
Windows 通常会在找不到指定的字体时进行字体替换。 System.Drawing.Font class constructor 的文档指出:
如果 familyName 参数指定的字体未安装在运行应用程序的机器上或不受支持,则将替换为 Microsoft Sans Serif。
我相信对于 Winforms 控件,替换可能会更复杂,因为控件的字体可以从父容器和/或窗口继承并且还为系统可能使用的当前主题(参见Control.Font 和SystemFonts 文档)。
控制面板中曾经有一个小程序,可让您调整默认系统字体、颜色和大小,但我在最新版本的 Windows 10 中找不到。
【讨论】: