如果我将默认语言设置为英语,而另一种语言设置为希腊语,那么在使用 xelatex\newfontfamily\greekfont
进行编译时,我无法让 polyglossia(即最终的 fontspec?)使用我在 xetex 代码中设置的希腊字体系列(使用)。如果我将默认语言设置为希腊语,另一种语言设置为英语,它就可以正常工作。
我的 M(not)WE 如下。在这里,我将 设置greekfont
为 Liberation Sans,将greekfontsf
设置为 Liberation Serif,只是为了表明它忽略了这些定义。它将普通希腊字母(衬线)部分渲染为衬线,将无衬线部分渲染为无衬线,如下所示:
\documentclass{article}
\usepackage{polyglossia}
\setmainfont{Liberation Serif}
\setsansfont{Liberation Sans}
\newfontfamily\greekfont{Liberation Sans}
\newfontfamily\greekfontsf{Liberation Serif}
\setdefaultlanguage{english}
\setotherlanguage{greek}
\begin{document}
\tableofcontents{}
\section{Αυτό είναι ελληνικά.}
Welcome to Greek should-not-be-serif: Αυτό είναι ελληνικά
Welcome to Greek should-not-be-sans: \textsf{Αυτό είναι ελληνικά}
Another try to should-not-be-sans: \textgreek{\textsf{Αυτό είναι ελληνικά}}
\end{document}
如果现在设置\setdefaultlanguage{greek}
和\setotherlanguage{english}
,它会选择正确的字体形状:
发生了什么事?不幸的是,其他类似的问题没有帮助。具体来说,这个似乎非常相关。但它不起作用 :/
//更新:由于这个问题的范围得到了回答,我能够细化问题的实际内容。因此,我又打开了另一个问题这里。
答案1
只需尝试首先指定您的系列字体,然后指定希腊文本。如您所见,在第二种情况下,定义被考虑在内,而在第三种情况下,定义被忽略
\documentclass{article}
\usepackage{polyglossia}
\setmainfont{Liberation Serif}
\setsansfont{Liberation Sans}
\newfontfamily\greekfont{Liberation Sans}
\newfontfamily\greekfontsf{Liberation Serif}
\setdefaultlanguage{english}
\setotherlanguage{greek}
\begin{document}
\tableofcontents{}
\section{Αυτό είναι ελληνικά.}
Welcome to Greek should-not-be-serif: Αυτό είναι ελληνικά
Welcome to Greek should-not-be-sans: \sffamily{\textgreek{Αυτό είναι ελληνικά}}
Another try to should-not-be-sans: \textgreek{\sffamily{Αυτό είναι ελληνικά}}
\end{document}