我在这篇文章中提出的问题涉及 .otf 功能与 LaTeX 代码设置之间的对应关系。因为实际上,我似乎发现这种对应关系并不完美。
带有 Fontspec 和 Babel 的 (Lua)LaTeX 允许您在以下几个选项中进行选择:1) 单调现代希腊语,2) 多调现代希腊语,3) 古(多调)希腊语。事实上,我们知道多调希腊语不是古希腊语。在这种情况下,我可以使用的代码如下:
\usepackage[italian]{babel}
\babelprovide[import]{ancientgreek}
\babelprovide[import]{polytonicgreek}
\babelprovide[import]{greek}
但是我应该在字体中设置适当的脚本。现在,也可以参考例如这个列表: https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags 我找不到与古希腊语相关的特定标签。事实上,OTL 语言系统针对希腊语的标签只有:
Greek 'ELL'
Polytonic Greek 'PGR'
现在,我可以将 ELL 标签与现代单调希腊语匹配,将 PGR 标签与现代多调希腊语匹配。
实际上,我也可以使用 PRGpolytonicgreek
正确地书写古希腊语的变音符号,但此时我必须放弃正确的连字符模式。
我问的是是否有方法或技巧可以正确生成 otf 特性和古希腊语 Latex 设置之间的平行性。
谢谢
后记
从印刷方面来看,这些字体(从 Adobe Garamond Premiere Pro 到 EBGaramond)的单调和多调的重音略有不同(显然很尖锐),因此该问题在印刷上表现得非常明显。
由于 .otf 标签和 LaTeX 代码相匹配,因此单调正确地使用了其重音。
同样,多音调也能正确使用其重音,因为 .otf 标签和 LaTeX 代码之间再次存在对应关系。
相反,古希腊语混合了重音符号,因为它明显地从多音节中吸收了重音符号,但是从单音节中吸收了尖音符号,这就产生了印刷上的不均匀性。
一个不完美的解决方案是总是使用polytonicgreek
和从不ancientgreek
:因此即使对于古希腊语来说,重音也是同质的,但是这样连字模式就适用于现代希腊语而不是古希腊语。
\documentclass{article}
\usepackage{fontspec}
\usepackage[italian]{babel}
\babelprovide[import]{ancientgreek}
\babelprovide[import]{polytonicgreek}
\babelprovide[import]{greek}
\babelfont[ancientgreek]{rm}{SimonciniGaramondPro}
\babelfont[polytonicgreek]{rm}{SimonciniGaramondPro}
\babelfont[greek]{rm}{SimonciniGaramondPro}
\begin{document}
\selectlanguage{ancientgreek}
Ancient Greek
ὰ ὲ ὴ ὶ ὸ ὺ ὼ
ά έ ή ί ό ύ ώ
\selectlanguage{polytonicgreek}
Polytonic Greek
ὰ ὲ ὴ ὶ ὸ ὺ ὼ
ά έ ή ί ό ύ ώ
\selectlanguage{greek}
(Monotonic) Greek
ά έ ή ί ό ύ ώ
\end{document}
答案1
Fontspec 没有特殊支持处理 babel 尝试在此处使用的“OpenType 语言”“古希腊语”,因此它会返回到默认语言。相反,您可以language=
在加载语言时使用 babel 选项告诉 babel 使用“多音调希腊语”作为 fontspec 语言说明符:
(示例代码有点复杂,因为我没有好的测试字体,所以测试使用了以下构造:使用 babel 的多音调希腊语标签反而)
\documentclass{article}
% Emulate some font supporting polytonic greek as in https://tex.stackexchange.com/questions/542882/tags-for-polytonic-greek-with-babel
\directlua {
fonts.handlers.otf.addfeature{
name = "tonosoxia",
features = {grek = {pgr = true}},
type = "substitution",
data = {
Alphatonos = 0x1FBB,
Epsilontonos = 0x1FC9,
Etatonos = 0x1FCB,
Iotatonos = 0x1FDB,
Omicrontonos = 0x1FF9,
Omegatonos = 0x1FFB,
Upsilontonos = 0x1FEB,
alphatonos = 0x1F71,
epsilontonos = 0x1F73,
etatonos = 0x1F75,
iotatonos = 0x1F77,
iotadieresistonos = 0x1FD3,
omicrontonos = 0x1F79,
omegatonos = 0x1F7D,
upsilontonos = 0x1F7B,
upsilondieresistonos = 0x1FE3,
},
}
}
\usepackage{fontspec}
\usepackage[italian]{babel}
\babelprovide[import]{polytonicgreek}
\babelprovide[import,language=Polytonic Greek]{ancientgreek}% <--- !!! This is the important line
\babelprovide[import]{greek}
\babelfont[polytonicgreek]{rm}[RawFeature=tonosoxia]{EB Garamond}
\babelfont[ancientgreek]{rm}[RawFeature=tonosoxia]{EB Garamond}
\babelfont[greek]{rm}[RawFeature=tonosoxia]{EB Garamond}
\begin{document}
\selectlanguage{polytonicgreek}
Polytonic Greek
ὰ ὲ ὴ ὶ ὸ ὺ ὼ
ά έ ή ί ό ύ ώ
\selectlanguage{ancientgreek}
Ancient Greek
ὰ ὲ ὴ ὶ ὸ ὺ ὼ
ά έ ή ί ό ύ ώ
\selectlanguage{greek}
(Monotonic) Greek
ά έ ή ί ό ύ ώ
\end{document}