Fontspec / Babel 支持一些 .otf 功能

Fontspec / Babel 支持一些 .otf 功能

我在这篇文章中提出的问题涉及 .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 设置之间的平行性。

谢谢

后记

从印刷方面来看,这些字体(从 Adob​​e 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}

在此处输入图片描述

相关内容