【问题标题】:Wrong font although it is installed虽然安装了错误的字体
【发布时间】:2014-01-06 09:57:21
【问题描述】:

我在画布上绘制文本并通过以下方式设置字体:

 Image3.Canvas.font.name := 'Arial Narrow';

我的机器上一切正常。但是在我客户的另一台电脑上打印了错误的字体(更大)。 所以我在客户端机器上安装了所有Arial Narrow 字体。但我的字体还是错了。

编辑:字体似乎是正确的,但不是比例:

这就是问题 Windows 7 在其控制面板、外观和个性化、显示设置中具有将文本和其他项目放大 125% 或 150% 的能力。

任何想法如何获得这些设置?

【问题讨论】:

  • 可能另一台电脑使用字体替换Arial Narrow - social.technet.microsoft.com/Forums/windows/en-US/…
  • 真的是不同的字体吗?您的客户端也可能有不同的 DPI 设置。
  • 当我使用打印机打印或打印到 pdf 文件时,DPI 应该无关紧要吗?
  • 我检查了注册表设置../FontSubstitutes,客户端机器上的一切都一样
  • Arial Narrow - 国际 TTF 吗?也许它是从字体中遗漏的选定代码页/字符集?

标签: delphi canvas fonts truetype


【解决方案1】:

首先你把图片的大小设置为位图,因为在使用画布之前,必须先创建位图。

所以bitmap.canvas.font 确实有一个默认大小,

所以以后它不会增加它的大小。所以会产生原始字体。

【讨论】:

  • 没有。您无需创建任何位图即可在 TImage.Canvas 上呈现。
  • 我设置了位图的大小
  • @zoidbergi,如果您在TImage.Picture.Bitmap.Canvas 上绘图,那么在该画布上设置字体(在您的问题中,您已经表明您使用TImage.Canvas)。
【解决方案2】:

获取 DPI 并调整字体大小为我做到了:

DC := GetDC(HWND_DESKTOP);
try
  DPI:=GetDeviceCaps(DC,LOGPIXELSY);
finally
  ReleaseDC(DC,HWND_DESKTOP);
end;
Image3.Canvas.font.size := round(myConstant*96/DPI);   

【讨论】:

  • 在您的代码中使用 PixelsPerInch 而不是 DPI
  • 有趣。但从 Windows 8.1 开始,每个显示器都有自己独立的 DPI。
猜你喜欢
  • 2019-05-26
  • 1970-01-01
  • 2019-10-17
  • 2014-06-07
  • 1970-01-01
  • 2010-11-29
  • 1970-01-01
  • 2015-02-28
  • 2012-01-26
相关资源
最近更新 更多