使用 luatex 中的字体功能调整连字符的字距

使用 luatex 中的字体功能调整连字符的字距

处理字体有点令人望而生畏,通常对我来说太难了,所以我限制自己做几件事。我使用 Duffner 的 EB Garamond——他的原始版本来自他的网站我对以下输出有点困惑:

\documentclass{scrartcl}
\usepackage{fontspec}

\directlua
  {fonts.handlers.otf.addfeature 
    {
    name = "ktest",
    type = "kern",
    data = {
    ["t"] = { ["«"] = -80},
    ["f_t"] = { ["«"] = -100},
    ["i"] = { ["«"] = -120},
    ["f_i"] = { ["«"] = -300},
    ["f"] = { ["«"] = -300},
    ["ı"] = { ["«"] = -300},                                           
    }
  }
}

\setmainfont{EBGaramond}
[
Path=./EBGaramond-0.016/otf/,
UprightFont=*12-Regular,
RawFeature=+calt;+ktest,
]

\begin{document}
t« fft« ft« i« fi« f« ff«
\end{document}

在此处输入图片描述

Duffner 的 EB Garamond 有漂亮的连字符英尺傅里叶变换,但不知何故,它们对通过字体功能进行的操作没有反应;ff只需添加字体功能即可更改连字F,但情况不同英尺. 尝试通过以下方式直接到达字形t正如在 FontForge 中寻找它时所称的,它什么也不做。

这里发生了什么,我该如何调整字距«英尺«

答案1

ft 和 fft 可能看起来像连字,但实际上并非如此:在此字体中,它们实际上是 f/ff后面跟着一个特殊的t。因此,您必须为此 t 变体设置字距:

\documentclass{scrartcl}
\usepackage{fontspec}


\directlua
  {fonts.handlers.otf.addfeature
    {
    name = "ktest",
    type = "kern",
    data = {
    ["t.f_"] = { ["«"] = -300},
    ["f_t"] = { ["«"] = 1000}, %to demonstrate the f_t ligature
    }
  }
}

\setmainfont{EBGaramond}
[
Path=./EBGaramond-0.016/otf/,
UprightFont=*12-Regular,
RawFeature={+calt;+ktest;}
]

\begin{document}\pagestyle{empty}
 ft« fft« 

\char983114 «  % this is the real ft ligature, 

\end{document}

在此处输入图片描述

相关内容