为什么设置 \russianfont 会导致 fontspec 在以 \setmainfont 和俄语为主要语言的字体中发现不支持西里尔字母?

为什么设置 \russianfont 会导致 fontspec 在以 \setmainfont 和俄语为主要语言的字体中发现不支持西里尔字母?

此示例来自ScumCoder 的问题, 基于Grigory M 等人的回答

如果我使用 XeLaTeX 编译以下代码,一切正常:

\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{russian}
\setotherlanguage{english}
\setmainfont{Linux Libertine O}
\begin{document}
Привет
\begin{english}
Hello!
\end{english}
\end{document}

预期结果(我假设)

但是,如果我添加的定义\russianfont,则会遇到问题:

\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{russian}
\setotherlanguage{english}
\newfontfamily\russianfont[Script=Cyrillic]{Linux Libertine}
\setmainfont{Linux Libertine O}
\begin{document}
Привет
\begin{english}
Hello!
\end{english}
\end{document}

尽管我仍然\setmainfont{...}需要设置俄语字体。

不会俄语(不期望)

在这种情况下,XeLaTeX 声称该字体不支持西里尔文。如果我切换俄语和英语,俄语也是一种other语言,也会发生同样的情况(因此\russianfont可能确实需要定义)。

\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{russian}
\newfontfamily\russianfont[Script=Cyrillic]{Linux Libertine}
\begin{document}
\begin{russian}
Привет
\end{russian}
\begin{english}
Hello!
\end{english}
\end{document}

我不确定如何判断 XeTeX 尝试使用哪个字体副本。我已在操作系统和 TeX Live 中安装了该字体。此外还fontconfig了解 TeX Live 目录。

fc-match -v "Linux Libertine O"返回/usr/share/fonts/otf-linux-libertine-ibx/LinLibertine_R.otf(和一堆信息)。

然而,在 Linux Libertine 的情况下,为 TeX Live 安装的字体和为系统安装的字体似乎相同。diff -qr在两个目录上运行没有发现任何差异。

发生了什么事?我该怎么办?

相关内容