【问题标题】:Fonts management on Linux for Python and Tkinter用于 Python 和 Tkinter 的 Linux 上的字体管理
【发布时间】:2013-04-16 20:26:24
【问题描述】:

我用 Python2.7/Tkinter 编写了一个应用程序。 我有 2 台 Linux 机器:
1 带有 python 2.7.4 的 Xubuntu 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文件复制到所有其他机器上,但没有成功

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

任何帮助将不胜感激

【问题讨论】:

    标签: python linux fonts tkinter


    【解决方案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

    由于 x 核心字体即将淘汰(大约在 2007 年发布 RHEL 5 时,情况已经如此),因此无论如何您都必须以 fontconfig 方式进行中期操作。

    【讨论】:

      猜你喜欢
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 2021-05-20
      • 2017-12-24
      • 2021-08-26
      • 1970-01-01
      相关资源
      最近更新 更多