XeLaTeX + \setmainfont{CMU Serif} 产生错误字符

XeLaTeX + \setmainfont{CMU Serif} 产生错误字符

当我使用 XeLaTeX 进行编译并使用 时\setmainfont{CMU Serif},生成的字符会偏离一个。这意味着A变成b, A1变成2, ETC。

\documentclass{article}

\usepackage{fontspec}

\setmainfont{CMU Serif}


\begin{document}
Test test2

12345
\end{document}

错误输出

但是,当我使用\setmainfont{cmunrm.otf}文件名时,输出是正确的:

正确输出

当我使用 时\setmainfont{CMU Sans Serif},输出也是正确的,但是如果我使用\setmainfont{CMU Serif Extra},例如,输出再次错误,所以看起来Serif CMU 字体有问题?

是什么原因导致的?我该如何解决?

编辑:运行后的控制台输出xelatex -output-driver="xdvipdfmx -v" test.texhttp://pastebin.com/nb19aPuc.The登录http://pastebin.com/qgSC07YY。有趣的东西似乎从第 349 行开始。

的输出fc-list | grep 'CMU Serif'http://pastebin.com/BNWzyRkH) 似乎表明字体的安装没有任何问题。

我在 Windows 10 x64 上运行 MikTex 2.9,所有软件包都已更新到最新版本(至少根据 MikTex 更新工具)。

答案1

可能 type1 字体被用作原生字体。旧版 xdvipdfmx 无法处理原生 type1 字体。即将在 TeX Live 2016 中推出的 xdvipdfmx 中修复了这些错误。无论如何,即使在修复了错误的新版 xdvipdfmx 中,我也建议您隐藏

C:/MiKTeX-2.9/fonts/type1

对于字体配置。如果您隐藏 type1 字体,即使使用损坏的 xdvipdfmx,您也将获得所需的结果。

答案2

我检查了你的文件。它运行正常,并给出了正确的结果。

\begin{document}
\setmainfont{CMU Serif Extra}
\noindent Test test2 \\
12345 \\
\setmainfont{CMU Serif}
Test test2 \\
12345
\end{document}

检查:MiKTeX Options -> Formats -> xelatex (non exclude) -> Build。进一步:

更新格式,刷新 FNDB。应该没有错误。否则,请尝试以管理员身份登录。

我的设置:这是 XeTeX,版本 3.14159265-2.6-0.99998(MiKTeX 2.9.6500 64 位)

相关内容