Fontspec 未找到适用于 XeLaTeX 的字体

Fontspec 未找到适用于 XeLaTeX 的字体

考虑一下这个MWE:

\documentclass{minimal}

\usepackage{fontspec}
  \setmainfont{Latin Modern Roman}
  \setsansfont{Latin Modern Sans}
  \setmonofont{Latin Modern Mono}

\begin{document}
X marks the spot.
\end{document}

在 Ubuntu 14.04.1 上使用 TeXLive 2014 的标准 ISO,LuaLaTex 可以编译此文件;而 XeLaTeX 则会出现此错误:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! fontspec error: "font-not-found"
! 
! The font "Latin Modern Roman" cannot be found.
! 
! See the fontspec documentation for further information.
! 
! For immediate help type H <return>.
!...............................................  

l.4   \setmainfont{Latin Modern Roman}

发生了什么事?我该如何解决这个问题?

答案1

\usepackage{fontspec}

就足够了。默认情况下,它会将字体设置为 Latin Modern。也就是说,您的代码对我来说编译得很好。

我对 XeLaTeX 不太熟悉。但是,我知道它使用 OS 字体,并且我知道它处理事情的方式与 LuaLaTeX 不同。因此,您可能需要告诉您的系统有关 TeX 字体的信息。例如,我有以下配置文件/etc/fonts/conf.avail/09-texlive-fonts.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <dir>/usr/local/texlive/current/texmf-dist/fonts/opentype</dir>
  <dir>/usr/local/texlive/current/texmf-dist/fonts/truetype</dir>
  <dir>/usr/local/texlive/current/texmf-dist/fonts/type1</dir>
  <dir>/usr/local/texlive/texmf-local/fonts/opentype</dir>
  <dir>/usr/local/texlive/texmf-local/fonts/truetype</dir>
  <dir>/usr/local/texlive/texmf-local/fonts/type1</dir>
</fontconfig>

然后,它就从 sym 链接过来了/etc/fonts/conf.d/。然后,您需要更新fontconfig缓存等。但是,处理此问题的最佳方法是查看您的发行版中是否有一个包,当安装其自己的包时,它会执行类似的操作。如果有,只需按照该包的提示进行操作,使其适应上游安装。

有用的命令:mkfontscalemkfontdir fc-cache。但请检查您的发行版 - 它可能更喜欢其中一些命令的包装器。

请注意,我使用的current可能不适合您。您可能需要2014改为使用。

相关内容