在Windows / Linux上使用wxPython的字体差异

时间:2011-01-27 19:49:55

标签: fonts cross-platform wxpython

我的应用程序正在使用wxPython,无需修改即可在Linux和Windows上运行。问题是显示字体。在Linux上它看起来很完美,但在Windows上,“ - ”符号完全被破坏,文本不太好。以下是一些比较图片:

Fedora 13

Windows

查看Windows上“添加”块中的减号如何被破坏。这是通过将标准连字符转换为unicode字符以获得完整大小的减号来呈现的。我猜这个字符在Windows中使用的默认字体中不存在。其他东西在Windows上看起来也很差,但在某种程度上是可以容忍的。

我正在使用的代码如下:

if (text == '-'): text = u'\u2212' #unicode has a better minus
s = self.dc.GetTextExtent(text)
self.dc.DrawText(text, x_position, y_position - int(s[1]/2))

在Windows上获得体面减号的最简单的平台独立方式是什么?我可以在包含此内容的应用程序中添加免费许可字体吗?我如何在wxPython中使用它?

我不想在系统上安装字体,我不想使用连字符“ - ”字符,因为它的大小在这些图中看起来很糟糕。

3 个答案:

答案 0 :(得分:0)

尝试检查www.dafont.com作为免费字体的资源。那里有很多带有合适许可证的字体。

答案 1 :(得分:0)

如果使用dc.DrawLabel,有什么区别吗?我不得不在Windows上DrawText使用它,因为它不能正确显示换行符;它们看起来像小方块,就像丢失了unicode字符一样。

答案 2 :(得分:0)

现在我找到了一个可以接受的答案。在查看wxDemo代码时,我注意到他们如何选择字体并意识到我甚至没有指定字体。我认为演示代码很可能适用于两个平台,所以尝试了一下:

self.dc.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.NORMAL))

这使得文本大小更加一致,并且使用u2212在Windows和Linux上提供可接受的+/-符号。似乎从文件加载字体可能不是独立于平台的 - 这很糟糕,因为我确实发现其中一种STIX字体非常适合这个应用程序。所以现在我已经与可接受的字体保持一致,如果不是我的首选。