Fontconfig 错误:无法加载默认配置文件

Ele*_*ace 12 fonts 14.04

当我启动大多数图形程序时遇到问题。简单地说

Fontconfig error: Cannot load default config file
Run Code Online (Sandbox Code Playgroud)

我可以确认/etc/fonts/fonts.conf存在并具有正确的权限。

-rw-r--r--   1 root root  5497 Jan 16 09:55 fonts.conf
Run Code Online (Sandbox Code Playgroud)

我没有得到与此错误相关的任何其他信息,搜索也没有提供任何有用的信息。

我能做些什么来解决这个问题?

运行 gedit、geany、chromium-browser、firefox、libreoffice……基本上任何使用字体的图形程序

编辑 使用strace我发现问题源于这里:

access("/data/jenkins/pms-deps-universal/BUILD_TAG/linux-ubuntu-i686/output/pms-depends-linux-ubuntu-i686-release-8400c3b/etc/fonts/fonts.conf", R_OK) = -1 ENOENT (No such file or directory)
write(2, "Fontconfig error: ", 18Fontconfig error: )      = 18
write(2, "Cannot load default config file", 31Cannot load default config file) = 31
Run Code Online (Sandbox Code Playgroud)

我以前从未使用过 Jenkins,我会尝试将其删除,看看会发生什么

sudo apt-get purge jenkins
Run Code Online (Sandbox Code Playgroud)

这将返回未安装 jenkins ...

我什至没有/data/分区。

如何更改 Fontconfig 的路径?

小智 21

您需要$FONTCONFIG_PATH正确设置。通常它是设置的,/etc/profile但是,如果您从非登录 shell 执行命令(例如,通过 cron),那么您需要通过执行以下操作来显式设置它:

export FONTCONFIG_PATH=/etc/fonts
Run Code Online (Sandbox Code Playgroud)


jco*_*and 5

就在 fontconfig 构建之前,它被配置。这对查找各种文件的路径进行了硬编码。您的程序链接到的 fontconfig 配置不正确。Fontconfig 应该这样配置:

./configure --enable-static --sysconfdir=/etc --localstatedir=/var
Run Code Online (Sandbox Code Playgroud)

这将使 fontconfig 查找fonts.confin/etc/fonts而不是/data/jenkins/pms-deps-universal/BUILD_TAG/linux-ubuntu-i686/output/pms-depends-linux-ubuntu-i686-release-8400c3b/etc/fonts.

  • 那些想删除这个答案的人。它出什么问题了?这是为什么 fontconfig 显示引用的错误消息的正确答案。仅仅因为您不喜欢从源代码重建 fontconfig 的想法并不会使它成为无效的答案。 (2认同)