Polyglossia 忽略新字体系列(例如 greekfont)

Polyglossia 忽略新字体系列(例如 greekfont)

如果我将默认语言设置为英语,而另一种语言设置为希腊语,那么在使用 xelatex\newfontfamily\greekfont进行编译时,我无法让 polyglossia(即最终的 fontspec?)使用我在 xetex 代码中设置的希腊字体系列(使用)。如果我将默认语言设置为希腊语,另一种语言设置为英语,它就可以正常工作。

我的 M(not)WE 如下。在这里,我将 设置greekfont为 Liberation Sans,将greekfontsf设置为 Liberation Serif,只是为了表明它忽略了这些定义。它将普通希腊字母(衬线)部分渲染为衬线,将无衬线部分渲染为无衬线,如下所示:

enter image description here

\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},它会选择正确的字体形状:

enter image description here

发生了什么事?不幸的是,其他类似的问题没有帮助。具体来说,这个似乎非常相关。但它不起作用 :/

//更新:由于这个问题的范围得到了回答,我能够细化问题的实际内容。因此,我又打开了另一个问题这里

答案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}

相关内容