0

我正在使用“Xlib”来查询 linux 机器上可用的字体。一个字符串被发送到机器(类似于'xfontsel')。令我惊讶的是,即使以下内容在某些 linux 机器上也不可用。

"-misc-fixed-*-*-*-*-*-*-*-*-*-*-*-*"

我想确保用户不必安装任何字体来使用我的应用程序。是否有任何字体(几乎)保证在所有 linux 机器上都可用?

4

1 回答 1

3

X 核心字体子系统在 Linux 下已被弃用多年(它已被基于 fontconfig 的字体堆栈所取代,而 fontconfig 大约有十年的历史)。

在大多数发行版中,它仍然作为兼容性措施保留,但也慢慢被淘汰(从字体集合开始)。除了大多数发行版已经宣布他们将弃用 X11,替代品(wayland、mir)首先摆脱的是 X 核心字体系统(因为大多数 GUI 应用程序很久以前就已经切换到 fontconfig)。

所以回答你的问题:现在 Linux 下最常见的字体是 DejaVu 字体(当他们仍然对字体调查感到困扰时,通过 codestyle 测量,几乎完全渗透)。它们通常不在 X 核心字体子系统中公开,但始终在 fontconfig 中。即使它们不存在,fontconfig 也有一个很好的别名系统,其中“sans”、“serif”和“monospace”别名将始终存在并指向可用的最佳字体。另一方面,X 核心字体系统的状态在 Linux 发行版之间会有很大差异,从完整到退化,您不能依赖其中存在的任何特定字体(甚至根本不依赖核心字体子系统)。

帮自己和您的用户一个忙,在完全忘记它所依赖的字体系统之前,将您的应用程序切换到其他人使用的字体系统。您的问题不是要使用的字体,您的问题是您所依赖的整个软件堆栈现在都被杀死了。

如果您不想了解处理现代智能字体所需的所有库的详细信息,只需使用 pango。它为处理 unicode opentype 字体所需的所有组件(fontconfig、freetype、freebidi、harfbuzz,我可能忘记了一些,每年都会添加新的,因为字体格式变得更加复杂)提供了一个稳定的接口。

http://behdad.org/text/

于 2013-06-22T11:34:56.450 回答