python - Linux 上用于 Python 和 Tkinter 的字体管理

标签 python linux fonts tkinter

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

我通过 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 文件复制到所有其他机器上,但没有成功

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

任何帮助将不胜感激

最佳答案

据推测,您的 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 中公开解放字体(mkfontdir 和 friend ,如所有 2000 年之前的 Linux 字体 howtos 中所述)。并祈祷不会破坏其他东西,X 核心字体系统不是特别健壮。

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

中期你将不得不以 fontconfig 的方式来做,因为 x 核心字体即将淘汰(当 RHEL 5 大约在 2007 年发布时已经是这种情况)。

关于python - Linux 上用于 Python 和 Tkinter 的字体管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16172466/

相关文章:

c++ - 使用数据包套接字在同一网络接口(interface)上发送和接收时无法接收数据包

c++ - 如何在 Linux 平台的 Visual Studio c++ 中编写 GTK 应用程序?

html - 在 CSS 中显示 @font-face 的替代字体

python - 在将字典保存到 CSV 之前忽略一些键值对

Python 类方法在调用另一个方法时运行

python - 使用 apply() 合并 Pandas DataFrame 仅在两列中部分匹配时合并

html - 字体系列在输出中没有改变

python - 测试 Django allauth

linux - 文件解压再压缩后md5不一样

python - 在 Python 中以一定角度(旋转)绘制文本