考虑一下这个MWE:
\documentclass{article}
\usepackage{fontspec}
\directlua{luaotfload.add_fallback("noto_fallback",
{
"NotoSerif:mode=base;color=FF8800;",
})}
\setmainfont{Source Serif Pro}
[RawFeature={fallback=noto_fallback;color=A0A0A0}]
\setsansfont{Source Sans Pro}
\begin{document}
\section*{Some Polytonic Greek}
\setlength\parindent{0pt}
\setlength\parskip{1.5ex}
Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι,
ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς
λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ
τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿
εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ
πρότερον κακῶς σκέψασθαι δέον.
\sffamily
As you can see, \emph{Source Serif Pro} (grey) contains some, but not
all required glyphs, which are then pulled from my fallback
font \emph{Noto Serif} (orange). I'd like all Greek characters to be
taken from Noto Serif (i.e., be orange in this example.)
\end{document}
我的文本主要是英文(实际上是德文,但这并不重要),但需要一些穿插多音调希腊语。我有一个字体可以处理我的所有希腊语需求,并指定为后备字体:我如何才能LuaLaTeX
拉全部为了保持一致性,是否要使用该字体的希腊字形?
答案1
babel
包可以检测字形属于哪个 Unicode 块并自动更改字体,但标点符号和数字(以及空格)位于 Unicode 的拉丁区,因此即使被希腊语包围也不会改变。
平均能量损失
\documentclass{article}
\usepackage[greek,english]{babel}
\babelprovide[import, onchar = fonts ids]{greek}
\babelfont[greek]{rm}[Colour=FF8800]{Noto Serif}
\setmainfont{Source Serif Pro}
\begin{document}
Some text here. Consider the following:
Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι,
ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς
λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ
τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿
εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ
πρότερον κακῶς σκέψασθαι δέον.
\end{document}
polyglossia
处理文本和标点符号(以及其他内容),但需要手动切换\selectlanguage{greek}
,因此不是自动的。
平均能量损失
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage[variant=polytonic]{greek}
\newfontfamily\greekfont{Gentium Plus}[Colour=FF8800]
\begin{document}
Some text here. Consider the following:
\selectlanguage{greek}
Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι,
ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς
λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ
τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿
εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ
πρότερον κακῶς σκέψασθαι δέον.
\end{document}
答案2
在大多数情况下,最好使用 Cicada 提到的 babel 支持,因为它还可以调整例如连字符模式,并且具有更好的用户界面,但如果您只关心字体,那么 luaotfload 有一个multiscript
功能,其工作原理与 类似fallback
,不同之处在于它根据使用的脚本选择字体,而不是使用第一个具有字形的字体。这也避免了 babel 似乎存在的标点符号问题:
\documentclass{article}
\usepackage{fontspec}
\directlua{luaotfload.add_multiscript("noto_greek",
{
% Could be: grek = "NotoSerif:mode=base;color=FF8800", as in your example, but especially for Polytonic Greek the language and script should always be set and `mode=base` is except for math fonts almost always a bad choice.
grek = "NotoSerif:mode=node;color=FF8800;script=grek;language=PGR",
})}
\setmainfont{Source Serif Pro}
[RawFeature={multiscript=noto_greek;color=A0A0A0}]
\setsansfont{Source Sans Pro}
\begin{document}
\section*{Some Polytonic Greek}
\setlength\parindent{0pt}
\setlength\parskip{1.5ex}
Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι,
ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς
λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ
τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿
εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ
πρότερον κακῶς σκέψασθαι δέον.
\sffamily
As you can see, \emph{Source Serif Pro} (grey) contains some, but not
all required glyphs, which are then pulled from my fallback
font \emph{Noto Serif} (orange). I'd like all Greek characters to be
taken from Noto Serif (i.e., be orange in this example.)
\end{document}