luaotfload 或 fontspec、otf 最近有变化吗?

luaotfload 或 fontspec、otf 最近有变化吗?

我在 Ubuntu 上使用 TeXlive 2016 和 LuaLaTex,全部都是最新版本。大约一周前,以下代码对我有用。它使用 Lua 代码定义了一个新的自定义 Open Type 功能,如其他人所述。在序言中:

\ExplSyntaxOn
\DeclareDocumentCommand \CreateFontFeature { m m }
 {
  \IfEndWith{#1}{,}{\StrGobbleRight{#1}{1}[\@fakezero]}{\def\@fakezero{#1}}
  \def\@fakeone{["\@fakezero"}
  \StrSubstitute{\@fakeone}{=}{"]="}[\@faketwo]
  \StrSubstitute{\@faketwo}{,}{",\space["}[\@fakethree]
  \directlua{
    fonts.handlers.otf.addfeature {
      name = "#2",
      {type = "substitution", data = {\@fakethree},},
      "feature #2 for some fonts",
    }
  }
 }
%
\ExplSyntaxOff
\CreateFontFeature{emdash=emdash.alt}{emda}
%
\newfontfamily\agp[RawFeature=+emda]{Adobe Garamond Pro}

然后在文档中,我使用该字体作为{\agp text}

它所做的就是用较短的破折号代替通常的长破折号。遗憾的是,较短的破折号不属于 OT 功能集之一。

就在今天,我发现上面的代码不再起作用了。显然+emda不再处理并传递给字体。

可能性 1:在我的总代码中,作为 MWE,它太长了,无法在这里发布,我做了一些干扰上述操作的事情。

可能性 2:我注意到 fontspec 和 luaotfload 最近有一些更新。有问题吗?

所以我的问题是:还有其他用户做过类似的事情吗?截至今天为止的经验?

答案1

语法好像变了。看看在当前上下文中起作用的一些上下文示例(例如http://minimals.metatex.org/current/context/test/doc/context/tests/mkiv/fonts/extensions-001.tex) 不同之处在于datatype不再位于子表中,并且解释性文本已被删除。这对我来说有效:

\documentclass{article}
\usepackage{fontspec}

\directlua{
    fonts.handlers.otf.addfeature {
      name = "emda",
      type = "substitution",
      data = {emdash="A"},
      %"feature for xxx" %makes it fail
    }}

\newfontfamily\agp[RawFeature=+emda]{Arial}


\begin{document}
 —  {\agp —}
\end{document}

在此处输入图片描述

相关内容