.Net不一致的字体渲染

时间:2009-12-22 07:32:35

标签: .net fonts gdi+

我正在创建.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'

  • On Machine 1“Hello World”测量69.0px,14.7px
  • On Machine 2“Hello World”测量86.3px,18.4px

为什么会出现这种差异?因为这个我的应用程序字体看起来更大并影响布局。

alt text alt text

修改

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

机器2是eeetop ET1602与windows xp,它的触摸屏系统,默认它附带所有桌面字体更大,但我已将Windows主题/ Windows字体重置为默认值。

2 个答案:

答案 0 :(得分:4)

当你修改“Verdana 8.25”时,这个8.25直接与像素无关,而是被视为“点”,如果屏幕DPI不同,它们将在不同的机器上以不同的方式呈现。

在Windows中,在“桌面设置”下,您可以选择在不更改分辨率的情况下增加屏幕字体大小。如果增加屏幕字体大小,则每个像素的点数会发生变化,这可以测量不同机器上相同文本的不同像素大小。

这是因为老人无法阅读较小的字体,这就是为什么他们可以增加桌面设置中的字体大小。并且您只能以点数指定字体大小,如果字体大小将固定为像素,那么旧的或视障人士将难以正确阅读文本。这样,整个操作系统的文本大小就由用户控制。

答案 1 :(得分:1)

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

修改
请参阅Akash Kava的回复 - 他详细介绍了“大字体”设置。