如何将字体与luaotfload结合起来?

如何将字体与luaotfload结合起来?

考虑一下这个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}

在此处输入图片描述

相关内容