在 XeLaTeX/LuaLaTeX 中访问 GentiumPlus 中的用户可选功能

在 XeLaTeX/LuaLaTeX 中访问 GentiumPlus 中的用户可选功能

具体来说,F斜体字的末端是F撞到了抑扬符的顶部(其他字体也有同样的问题,但结果更丑陋)。我想通过使用 GentiumPlus 用户可选功能“低调变音符号”(lopr最新版本(版本 1.510)中的功能 ID 代码,1054在以前的版本中)来改善这种情况——根据最新版本的gentiumPlus 功能.pdf,显然只能在字体包中在线获得下载-- 具有值1=true0=false,如在中更正的SIL 技术说明针对此字体)。

这将产生一个蹲式抑扬符,应该错过碰撞F

SIL 页面上有关 GentiumPlus 新功能的其他说明似乎表示此功能可用作 Graphite 和 OpenType 功能,由于我希望能够在 LuaLaTeX 和 XeLaTeX 中执行此操作,因此我想使用 OpenType,因为 LaTeX 不支持 Graphite(除非通过 Fontspec 后门在字体功能文件中包含 Graphite 指令,如帖子中所述)这里,但在 Fontspec 手册中没有提到,其中假设它仅用于 OpenType 功能)。

现在如果我正在正确阅读 Fontspec 文档,并且如果我确实知道这是 OpenType 的一个特性,我可以用\addICUfeature(在 XeLaTeX 中)添加这个特性或者\addopentypefeature(在 LuaLaTeX 中)添加该特性。Fonspec 手册(第 43 页)给出的语法(使用命令名称的 XeLaTeX 版本)如下

\newICUfeature{<feature>}{<option>}{<feature tag>}

附示例(使用 LuaLaTeX 版本)

\newopentypefeature{Style}{NoLocalForms}{-locl}

与同一页面上的语法和用法进行比较\addAATfeature,很明显和<feature><option>出现在=参数中的右侧和左侧的名称,例如\addfontfeatures,而<feature tag>在这种情况下将是+lopr,假设前缀的加号/减号用作开启或关闭开关。

我似乎没有正确完成这项工作。我曾猜测<feature><option>只是用户创建的描述性名称,就像\newcommand。我使用的是

\newICUfeature{GentiumPlusFeatures}{LowProfile}{+lopr}

在序言中,对于激活命令(我将其与组合脱字符组合在一起,紧跟在无点的 i 后面),我使用了

fı{\addfontfeature{GentiumPlusFeatures=LowProfile}\char"0302}

我的文档成功编译,没有停止,但结果在视觉上与组合字符相同没有命令,以及原始的 i-circumflex 字符。日志显示了"icu-feature-not-exist-in-font"带有解释的fontspec 警告

OpenType feature 'GentiumPlusFeatures=LowProfile' (+lopr) not available for  
font 'GentiumPlus-R.ttf' with script 'Latin' and language 'Default'.

最后,我尝试补充Renderer=ICU论点\addfontfeatures,就像一篇可能相关的帖子所建议的那样这里但结果没有改变。(我猜想Renderer=ICU一旦对其余部分进行了更正,仍然是必要的,但也不知道这Renderer=ICU是否会在 LuaLaTeX 中起作用)。

更新:我尝试用字段和Low-profile diacritics中的名称替换,以便通过使用这些以及(加上试用版本和),我现在只使用字体文档的确切语言,但仍然没有成功。<feature>True<option>+lopr-loprlopr

我已经尽我所能自己解决这个问题了,希望真正有专业知识的人能够在几秒钟内检查并修复它。我知道这是一件小事……就像阑尾里的葡萄籽一样。

答案1

首先,这里有一个误解,LaTeX 作为宏包既不支持 OpenType 也不支持 Graphite,这也不是它的职责,这些应该由底层引擎支持。用于使用现代字体和功能的 LaTeX 包fontspec确实支持 Graphite,但这是一种相当基本的支持。字体功能文件是 LuaTeX 特有的功能,并且仅适用于 OpenType,它们与 LaTeX 或 Graphite 无关。

您想要的功能是 Graphite 功能,因此它们不适用于 LuaTeX。

您不能使用\newICUfeature其中任何一个,因为它将强制检查 OpenType 功能,并且由于fontspec没有提供命令,因此您可以使用接受任意输入的\newgraphitefeature通用命令:\newfontfeature

\documentclass{article}
\usepackage{fontspec}

\newfontfeature{LowDiacritics}{Low-profile diacritics=True}
\newfontfeature{HighDiacritics}{Low-profile diacritics=False}
\begin{document}
\fontspec[Renderer=Graphite,LowDiacritics]{Gentium Plus}
èáä fî
\fontspec[Renderer=Graphite,HighDiacritics]{Gentium Plus}
èáä fî
\end{document}

结果示例

这里我使用了描述性的功能名称,因为所有版本的 XeTeX 都支持它们。最新版本可以使用数字 ID 或 4 个字母的标签。

相关内容