为了使用一些 LaTeX 模板,我将一些字体从 MacBook 复制到了我的 Dell XPS 13(默认安装 Ubuntu 16.04.3 LTS)。我只会偶尔使用这些模板,但我认为将这些字体用于其他应用程序也无妨。
但自从我使用 fontconfig 库的每个应用程序启动都非常慢,大约需要 15 秒。即使是一个简单的应用程序fs-list
也要这么长时间。当然,我已经执行了fs-cache -fv
几次,甚至生成了fonts.dir
文件,fonts.scale
但无济于事。
我首先将这些字体放入,~/.fonts
然后~/.local/share/fonts
在了解到前一个目录已被弃用后放入,最后/usr/local/share/fonts
在了解到某些系统在为用户字体生成缓存文件时存在问题后放入,但问题仍然存在。
我可以看到缓存文件,~/.cache/fontconfig
并且/var/cache/config
具有适当的读取权限。但是当我以管理员权限启动应用程序时也会发生此问题,因此不太可能存在权限问题。
解决这些问题的唯一方法是再次删除字体(即将它们保存在 fontconfig 不知道的目录中)。但这让我怀疑我是否遗漏了什么,因为我认为这不应该是一个问题?
当使用strace
在应用程序启动过程中似乎减慢速度的调用时,似乎是这种类型:
stat("/usr/local/share/fonts/Arial Black.ttf", {st_mode=S_IFREG|0644, st_size=122556, ...}) = 0
open("/usr/local/share/fonts/Arial Black.ttf", O_RDONLY) = 4
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
fstat(4, {st_mode=S_IFREG|0644, st_size=122556, ...}) = 0
mmap(NULL, 122556, PROT_READ, MAP_PRIVATE, 4, 0) = 0x7f0ac8cab000
close(4) = 0
如您所见,文件不仅被打开,还被加载并映射到内存中,这似乎没有道理,因为预装的字体不会发生这种情况。似乎每个用户字体都会发生这种情况,我有大约 280 种字体,这肯定可以解释速度变慢的原因。
我抄袭的字体大多是.ttf
和.ttc
有一些.otf
和 少量.dfont
。
有人知道我错过了什么吗?