此示例来自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
在两个目录上运行没有发现任何差异。
发生了什么事?我该怎么办?