使用 babel 的多音调希腊语标签

使用 babel 的多音调希腊语标签

使用 Lualatex + fontspec + babel 进行组合,传递希腊语的选项(如果我没记错的话)应该是:greekgreek.polutonikogreek.ancient

现在,如您所知,字体中存在替换机制(某些类型的查找),可以通过文本中的某些选项(例如)或简单地调用某种语言来激活。一个例子是通过使用命令RawFeature=+calt将语言设置为土耳其语将大写字母 < I > 转换为小写无点字母 < ı > 的机制。这是因为字体中有一个对 有效的替换查找。\selectlanguage{turkish}\MakeLowercase{II}latn{ TRK}

我在字体中创建了一个适用于多音希腊语的 = 替换查找,因此单音希腊语使用带重音符号 tonos 的元音,而多音希腊语使用带重音符号 oxia 的元音。当希腊语不是单音希腊语时,应激活grek{ PGR}此查找(单个替换或)。'locl'

问题是,如果我设置\usepackage[greek.polutoniko]{babel}该机制,它不起作用,也就是说,在这种情况下,Lualatex 似乎无法识别多音调希腊语,因此它应该应用替换规则。简而言之,当latn{ TRK}语言是土耳其语时,字体标签会触发替换,但当语言是多音调希腊语时,字体标签grek{ PGR}不会触发替换。

我问(如果我足够清楚的话)如何以某种方式标记文本,以便在文本内部调用字体内部的 PGR 语言系统功能查找。

谢谢

附录

最小(不)工作示例

\documentclass{article}
\usepackage{fontspec}
\usepackage[italian]{babel}
\babelprovide[import]{polytonicgreek}
\newfontlanguage{Polutoniko}{PGR}
\babelfont[italian]{rm}[Numbers={Proportional,OldStyle},RawFeature=+supkern,RawFeature=+calt]{SimonciniGaramondPro} 
\babelfont[greek]{rm}[Language=Polutoniko,RawFeature=+calt]{SimonciniGaramondPro}

\begin{document}

quel ramo del lago di Como

\selectlanguage{greek}

ά ὰ έ ὲ

\end{document}

出口:

! Package babel Error: You haven't defined the language nil yet.
(babel)                Perhaps you misspelled it or your installation
(babel)                is not complete.

附录2

感谢您的指示,看来我设法解决了。如果我没有立即理解这些指示,我深表歉意。此外,由于我必须在字体查找和 Lualatex 代码之间创建正确的交互,因此问题变得复杂。

这是最终的代码:

\documentclass{article}
\usepackage{fontspec}
\usepackage[italian]{babel}
%\babelprovide[import, main]{italian}
\babelprovide[import]{polytonicgreek}
\babelprovide[import]{greek}
\babelfont{rm}[Numbers={Proportional,OldStyle},RawFeature=+calt]{SimonciniGaramondPro}
\babelfont[polytonicgreek]{rm}[RawFeature=+calt]{SimonciniGaramondPro}
\babelfont[greek]{rm}[RawFeature=+calt]{SimonciniGaramondPro}

\begin{document}

\selectlanguage{greek}

ά έ ή ί ό ώ ύ 

\selectlanguage{polytonicgreek}

ά έ ή ί ό ώ ύ

ά ὰ έ ὲ

\end{document}

从图中可以看出,左侧的 Adob​​e Garamond Premiere Pro 本身就存在在多音调中使用单音调的尖音的问题,与多音调略有不同,导致渲染缺乏同质性(参见第三行)。右侧是我正在处理的字体的最终渲染。

在此处输入图片描述

最后一个问题:由于主要语言是意大利语,如果不使用,直接将其作为 babel 选项输入是否正确\babelprovide

感谢您的合作和耐心:)

答案1

嗯,我意识到你的问题与希腊字母:tonos 和 oxia。请不要忘记包含 MWE 和相关问题的链接:

\documentclass{article}

\usepackage{babel}

\babelprovide[import, main]{polytonicgreek}
\babelprovide[import]{greek}

\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,
  },
}
}

\babelfont{rm}[RawFeature=+calt;+tonosoxia]{EB Garamond}
\babelfont[greek]{rm}[RawFeature=+calt]{EB Garamond}

\begin{document}

ά έ ή ί ό ώ ύ 

\selectlanguage{greek}

ά έ ή ί ό ώ ύ

\end {document}

不幸的是,标准希腊风格加载语言的方式有点棘手,核心babel无法捕捉到并设置字体语言系统,但基于的替代方法可以\babelprovide正确设置它。

在此处输入图片描述

答案2

编辑

的维护者 Javier Bezosbabel在评论中推荐了该命令

\babelprovide[import,main]{polytonicgreek}

这应该可以正确设置语言标签。main如果它不是主要语言,则删除。

原始答案

如果您有字体特定的功能,您可以在通过 加载该字体时选择它们作为选项\babelfont。如果程序中的每个希腊字体都应加载相同的 OpenType 语言标签,您也可以使用 加载希腊语\babelprovide[import, language=...]

fontspec由于语言标签中没有预定义的接口PGR,因此您需要使用以下命令来定义它:

\usepackage{fontspec}
\newfontlanguage{Polutoniko}{PGR}

加载后babel、调用前

\babelfont[greek]{rm}
          [Language=Polutoniko]{MyCustomFont.otf}

相关内容