在 XeLaTeX 中使用 CMU 字体时出现致命错误

在 XeLaTeX 中使用 CMU 字体时出现致命错误

我刚刚尝试使用 XeLaTeX 重新编译该russian-babel包的文档文件。源文件russianb.dtx最后一次修改是在 2017 年 1 月(https://www.ctan.org/pkg/babel-russian),然后编译总是成功的。但现在我得到了一个编译错误。经过短暂的调查发现,CMU 字体是导致问题的原因,如下例所示。

\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={TeX}}
%\setmainfont{STIX Two}[
%    UprightFont={* Math},
%    %UprightFont={* Text},
%    ItalicFont={* Text Italic},
%    BoldFont={* Text Bold},
%    BoldItalicFont={* Text Bold Italic},
%]
    \setmainfont{CMU Serif}
    \setsansfont{CMU Sans Serif}
    \setmonofont{CMU Typewriter Text}
    
\usepackage[russian,english]{babel}

\begin{document}

English
\textsf{English}
\texttt{English}

\selectlanguage{russian}
Русский
\textsf{Русский}
\texttt{Русский}
\end{document}

编译因以下错误而终止:

dvipdfmx:fatal: This font using the "seac" command for accented characters...

No output PDF file written.
 )
Error 1 (driver return code) generating output;
file test-CMU.pdf may not be valid.

因此可以猜测错误是由 XeLaTeX 可执行文件的一些最新更改引起的。有人能帮忙解决这个问题吗?但请注意,如果用 STIX Two 字体替换 CMU 字体,编译就会成功。

答案1

如果添加,\XeTeXtracingfonts=1您可以在日志中看到 miktex 为打字机字体找到 type1 字体(a .pfb):

/MiKTeX 2.9/fonts/type1/public/cm-unicode/cmuntt.pfb

当尝试排版带有重音符号的字符时,此操作会失败。

您可以通过使用文件名而不是字体名称来设置字体来避免这种情况(您也许必须设置类似的粗体打字机):

\setmonofont{cmuntt.otf}

相关内容