解决 编译卡住不动的问题

  • 482
  • 2 min

问题概述

Windows 平台使用 编译时,偶尔会出现卡住不动的情况。特点是会卡在读入字体文件的时候,比如 size10.cloeu1lmr.fd 等,并且往往出现在新安装字体之后。

正常情况下,xetex 在发现字体变动时,会自动调用 fontconfig 库刷新字体缓存,因此在后续编译过程中速度便可恢复正常。

不过,在 Windows 下 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]
  • 卸载并重新安装 Live

注释

  1. ^该问题在 Live 2018 中应该已经得到修复。
  2. ^ab原因不明,见 tuna/thuthesis #278 中的讨论。

参考