当主语言使用西里尔字母时使用 Courier New 字体

当主语言使用西里尔字母时使用 Courier New 字体

如果我将使用西里尔字母的语言设置为默认语言,则无法使用字体Courier New

\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{russian}
\setmonofont{Courier New}
\newfontfamily\cyrillicfont{Courier New}
\begin{document}
\texttt{русский язык}
\end{document}

编译器抱怨:
! Package polyglossia Error: The current roman font does not contain the Cyrillic script! (polyglossia) Please define \cyrillicfont with \newfontfamily.

但是,正如您所见,Courier New是用 定义的\newfontfamily\cyrillicfont{Courier New}

我使用 XeLaTeX 进行编译。

编辑:polyglossia需要包。

答案1

polyglossia对字体中的脚本非常严格。因此,如果字体没有定义西里尔脚本,则不允许您使用它。特别是对于 Courier New:

% otfinfo -s Courier_New.ttf
arab            Arabic
arab.URD        Arabic/Urdu
hebr            Hebrew
latn            Latin
latn.LTH        Latin/Lithuanian
latn.ROM        Latin/Romanian

babel另一方面,它不关心脚本,它只需要西里尔字符到位。以下代码运行良好:

\documentclass{article}
\usepackage{fontspec}
\usepackage[russian]{babel}
\setmonofont{Courier New}
\begin{document}
\texttt{русский язык}
\end{document}

答案2

使用\newfontfamily\cyrillicfonttt{Courier New}

\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{russian}
\setmainfont{Arial}
\newfontfamily\cyrillicfont{Arial}
\setmonofont{Courier New}
\newfontfamily\cyrillicfonttt{Courier New}
\begin{document}
\texttt{русский язык}
\end{document}

相关内容