当我打开一个 pdf 文件在 Evince 的终端中:
I/O Error: Cannot open '/usr/local/texlive/2014/texmf-dist/fonts/opentype/public/tex-gyre/texgyrecursor-regular.otf'
Syntax Error: failed to load truetype font<0a>
some font thing failed
pdf 文件中没有显示一些程序代码。我想知道这个错误是什么意思,我该怎么办?谢谢。
答案1
该问题是由于 Evince 的 AppArmor 配置文件限制了 Evince 可用的文件资源。
由于 TexLive 字体已提供给系统,因此在某些情况下它们可能会被 Evince 选取(在我的系统上,/etc/fonts/conf.avail/30-metric-aliases.conf 中定义了一条规则,该规则将“Tex Gyre Heros”和“Helvetica”绑定在一起。由于我没有安装 Helvetica 字体,因此 fontconfig 会选取 Tex Gyre Heros)。
该错误消息有些误导,但如果您查看内核日志(dmesg
在控制台中输入,或tail -f /var/log/syslog
),您会看到如下错误消息:
[345695.334701] type=1400 audit(1462672575.673:72990): apparmor="DENIED" operation="open" profile="/usr/bin/evince" name="/usr/local/texlive/2015/texmf-dist/fonts/opentype/public/tex-gyre/texgyreheros-regular.otf" pid=31050 comm="EvJobScheduler" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
要授予 Evince 对 TexLive 字体的读取访问权限,您可以在文件中添加以下规则/etc/apparmor.d/local/usr.bin.evince
:
/usr/local/texlive/**/public/** r,
保存文件并通过发出以下命令(在终端中)重新加载规则:
sudo service apparmor reload
并退出任何打开的 Evince 实例。下次在 Evince 中打开 PDF 文件时,它应该可以正确显示 PDF,并可以使用所需的字体。