问题概述
Windows 平台使用 XeLaTeX 编译时,偶尔会出现卡住不动的情况。特点是会卡在读入字体文件的时候,比如 size10.clo
、eu1lmr.fd
等,并且往往出现在新安装字体之后。
正常情况下,xetex
在发现字体变动时,会自动调用 fontconfig
库刷新字体缓存,因此在后续编译过程中速度便可恢复正常。
不过,在 Windows 下 TeX Live 2016、2017 似乎实现有问题(fontconfig Bug 99360),导致 xetex
在刷新缓存时无法正确覆盖旧的文件,因此每次编译都需花费大量时间[1]。
解决方法
正常的解决方法是手工刷新字体缓存。命令行中执行:
bash
fc-cache
这一命令可以带如下选项:
-f
、--force
:强制刷新-r
、--really-force
:清除缓存再重新扫描-v
、--verbose
:显示详细信息
注意刷新字体缓存可能需要花费十多分钟甚至更长时间。每次安装或卸载字体之后,可能都需要运行一次。
如果 fc-cache
不能解决问题,可以依次尝试以下方法:
- 加上选项
-f
或-r
来执行fc-cache
- 开启管理员权限,即在「命令提示符(管理员)」中执行上述命令
- 删除字体缓存目录(
texlive/<年份>/texmf-var/fonts/cache/
)下的所有文件,并检查目录权限 - 在
xelatex.exe
(位于texlive/<年份>/bin/win32/
下)的属性中设置「以兼容性模式运行这个程序:Windows 7」[2] - 设置兼容性模式后再取消[2]
- 卸载并重新安装 TeX Live