Gentium Plus 上的石墨特征(汉语拼音和低变音符号)

Gentium Plus 上的石墨特征(汉语拼音和低变音符号)

我正在尝试激活 Gentium Plus 上的 Graphite 功能(中文拼音声调符号 + 低变音符号)。这是我的最小示例:

\documentclass[utf8,12pt,letterpaper]{article}
\usepackage{fontspec}
\begin{document}
\fontspec[Renderer=Graphite,RawFeature={1057=1},RawFeature={1054=1}]{Gentium Plus}

mā má mǎ mà

\end{document}

但是,当我使用 XeLaTeX 进行编译时,这些功能没有被激活。相反,我收到了这个警告:

*************************************************
* fontspec warning: "only-luatex-feature"
* 
* Ignored LuaTeX only feature: 'Renderer=Full/Basic'.
*************************************************

尽管我没有选择Full或Basic。

我已经考虑到了这一点:在 XeLaTeX 上使用 Graphite 字体

答案1

经过进一步调查,这似乎是两个不同来源的问题。第一个是fontspec,它导致 Graphite 渲染器无法访问。这个错误已经已报告并修复,并且应该会在 的下一版本中出现fontspec。作为临时修复,您可以将以下代码添加到您的文档中(后面会提供完整的示例文档):

\ExplSyntaxOn
\keys_define:nn {fontspec-preparse} {
  Renderer .choice_code:n = {
    \fontspec_update_fontid:n {+rend:\l_keys_choice_tl}
    \int_compare:nTF {\l_keys_choice_int <= 3} {
      \tl_set:Nv \l_fontspec_renderer_tl
        { g_fontspec_renderer_tag_ \l_keys_choice_tl }
    }{
      \fontspec_warning:nx {only-luatex-feature} {Renderer=Full/Basic}
    }
  }
  ,
  Renderer .generate_choices:n = {AAT,ICU,Graphite,Full,Basic}
}
\ExplSyntaxOff

然而,这只是问题的一半。最新版本的 Gentium Plus 字体已从数字字体功能更改为字母字体功能,因此过去

RawFeature={1054=1}

现在应该是

RawFeature={lopr=1}

但是,XeTeX 似乎无法正确处理这些新的字体特征指定,并假设它们是数值。这可以从aat-info.tex针对 Graphite 改编的文件的输出中看出:

在 Gentium Plus 1.504 版本上运行该程序会产生旧的编号系统(左图),而在 Gentium Plus 最新版本 1.510 上运行该程序则会显示不同的数字,而不是预期的字母代码(右图):

旧数字新数字

XeTeX 的开发版本支持字母数字 ID,但与此同时,也可以将“新”数字值传递为RawFeatures,或者传递为哈立德·霍斯尼在注释中指出,请使用 Gentium Plus 文档中所述的功能的完整长名称。下面是一份完整的文档,显示现在可以使用不同的数字或长格式名称访问相关功能。请注意准确匹配名称:ID 名称区分大小写,“True”和“False”也是如此(必须如图所示)。

% !TEX TS-program = XeLaTeX

\documentclass[12pt,letterpaper]{article}
\usepackage{fontspec}
\ExplSyntaxOn
\keys_define:nn {fontspec-preparse} {
  Renderer .choice_code:n = {
    \fontspec_update_fontid:n {+rend:\l_keys_choice_tl}
    \int_compare:nTF {\l_keys_choice_int <= 3} {
      \tl_set:Nv \l_fontspec_renderer_tl
        { g_fontspec_renderer_tag_ \l_keys_choice_tl }
    }{
      \fontspec_warning:nx {only-luatex-feature} {Renderer=Full/Basic}
    }
  }
  ,
  Renderer .generate_choices:n = {AAT,ICU,Graphite,Full,Basic}
}
\ExplSyntaxOff
\begin{document}
\newfontfamily\lowfull[Renderer=Graphite,RawFeature={Low-profile diacritics=True}]{Gentium Plus}
\newfontfamily\lownumeric[Renderer=Graphite,RawFeature={1819242610=1}]{Gentium Plus}
\newfontfamily\high[Renderer=Graphite,RawFeature={Low-profile diacritics=False}]{Gentium Plus}


{\lowfull mā má mǎ mà \qquad (Low profile)}

{\lownumeric  mā má mǎ mà \qquad (Low profile)}

{\high  mā má mǎ mà \qquad (Regular profile)}



\end{document}

代码输出

相关内容