1

我在 Python2.7/Tkinter 中编写了一个应用程序。我有 2 台 Linux 机器:
1 台带有 python 2.7.4 的 Xubuntu 1 台带有 python 2.7.1 的 CentOS (5.2) (不幸的是,在有人问之前,我无法升级这台机器)

我通过 SSH 从我的 WindowsXP 笔记本电脑连接到两台机器,然后导出显示。Xming 作为 X 服务器安装在 windows 机器上。两台机器上的脚本完全相同(两台机器上都安装了共享驱动器)。

在脚本中我有:

# show which fonts the system know 
print tkFont.families()
# configure the default font
default_font = tkFont.nametofont("TkDefaultFont")
default_font.configure(family="Liberation Sans", size="10")
master.option_add("*Font", default_font)

字体“Liberation”安装在 Linux 机器和 Xming 中(并已配置)。
在应用程序中我使用了网格管理器,因此字体对结果界面有很大影响。

当我从 Xubuntu 启动应用程序时:

  • 应用程序界面看起来很漂亮。tkFont.families给我看一些 Xming 中没有安装的字体(但在 Xubuntu 上)

当我从 CentOs 启动应用程序时:

  • 应用程序界面丑陋几乎不可读,完全变形。tkFont.families仅当在 Xming 中安装和配置时,才在列表中显示“解放”字体。

从今天早上开始我就挠头了,我什至将Xubuntu的liberation*.ttf文件复制到所有其他机器上,但没有成功

如何抑制两台机器之间的这种差异,我的界面在两台机器上看起来都一样?

任何帮助将不胜感激

4

1 回答 1

1

猜测一下,您的 tk 安装服务器端依赖于 X Core 字体子系统来呈现字体(这就是它显示 xming 字体的原因)。

这个子系统很久以前就被 fontconfig 取代了(但是 tk 切换的很晚)。Centos 5.2 可能已经足够老了,它的 tk 版本仍然依赖于 X Core 字体子系统。然而,Fedora 和 Red Hat 很久以前就停止将系统 truetype 字体公开为 X Core 字体(它破坏了遗留应用程序)。

所以你的解决方案是:

– 要么升级到可以使用 fontconfig 的 tk(或重新配置它以使用 fontconfig):这样它将看到安装在 Centos 中的现代字体,包括 Liberation http://wiki.tcl.tk/9015

– 或者,使用所有遗留魔法在 xfs 中公开 liberation 字体(mkfontdir 和朋友,如所有 2000 年以前的 Linux 字体指南中所述)。并且祈祷不要破坏其他东西,X核心字体系统并不是特别强大。

https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s1-x-fonts.html

中期你必须以 fontconfig 的方式进行,因为 x 核心字体即将推出(大约在 2007 年发布 RHEL 5 时已经是这种情况)。

于 2013-06-24T17:14:48.800 回答