.Net 不一致的字体渲染

标签 .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'

  • 在机器 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 主题/Windows 字体重置为默认值。

最佳答案

当您选择“Verdana 8.25”时,这个 8.25 与像素没有直接关系,而是将它们视为“点”,如果屏幕 DPI 不同,它们将在不同的机器上呈现不同。

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

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

关于.Net 不一致的字体渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1944737/

相关文章:

c++ - OS X 上 Carbon OpenGL 应用程序的字体

c++ - 根据纸张大小和允许的最大文本长度计算理想的字体大小

java - iText、unicode 字符和 Java

c# - GraphicsPath.Flatten() 对绘图性能有何影响?

windows - 在 Windows 桌面上渲染(背景)

c# - 多列组合框或 DataGridCombo Box 列收缩

c# - 为什么 .Contains 很慢?通过主键获取多个实体的最有效方法?

.net - 排序目录.GetFiles()

.net - Jenkins 中 .NET 应用程序的控制台输出到哪里?

.net - 从 Delphi 到 .NET 4 的转换(无需任何工具)