.Net 不一致的字体渲染

3
我正在创建一个 .Net 2.0 SP2 Windows 表单应用程序。在我的机器上,表单字体看起来很好,但在另一台机器上尝试时,它看起来更大。(这不是因为分辨率差异,相对于其他图标等字体更大。)
我尝试调试问题并发现以下代码在不同的机器上返回不同的大小。
//inside a windows form
private void checkfont()
{
    var g = this.CreateGraphics();
    MessageBox.Show(g.MeasureString("Hello World", this.Font) + "," + this.Font);
}

我希望graphics.measurestring()在不同的机器上针对相同参数返回相同的值。
对于字体“Verdana 8.25”:
- 在机器1上,“Hello World”的测量值为69.0px,14.7px。 - 在机器2上,“Hello World”的测量值为86.3px,18.4px。
为什么会有这种差异?因为这导致我的应用程序字体看起来更大,影响布局。

alt text alt text

编辑:

两台机器都安装了 .Net 2.0 SP2,但它们的分辨率和屏幕尺寸不同。我知道字体在物理屏幕上的物理尺寸会随着分辨率和屏幕尺寸的变化而有所不同。但我的问题是为什么它们的像素单位尺寸不同?

机器2是eeetop ET1602,运行Windows XP,具备触摸屏系统。默认情况下,所有桌面字体都比较大,但我已将Windows主题/字体重置为默认设置。


1
机器是否有不同的显卡、字体设置、服务包、驱动程序等?所有这些都可能会影响到它。 - GrayWizardx
2个回答

4
当您指定"Verdana 8.25"时,这个8.25与像素无关,而是被视为“点”,如果屏幕DPI不同,则它们将在不同的机器上呈现不同。
在Windows中,在桌面设置下,您可以选择增加屏幕字体大小而不更改分辨率。如果您增加屏幕字体大小,则每英寸点数就会改变,这可能会导致相同文本在不同机器上测量出不同的像素大小。
这是因为老年人无法阅读较小的字体,所以他们可以在桌面设置中增加字体大小。并且您只能以点的形式指定字体大小,如果字体大小固定为像素,则对于老年人或视力受损的人来说,阅读文本将变得困难。通过这种方式,整个操作系统的文本大小由用户控制。

“显示属性 > 外观 > 字体大小 > 普通”没有帮助。但是,“显示属性 > 设置 > 高级 > 显示 DPI 设置 > 普通尺寸 96 DPI”解决了问题。 - Palani

1

这看起来像是将DPI字体缩放设置为“大号字体”?

编辑
请参阅Akash Kava的回复-他更详细地介绍了“大号字体”设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接