答案1
OpenType 数学字体真的没有基于对的字距吗?
是的。如果你读规格,你首先会发现
数学公式的布局与使用 GSUB 和 GPOS 等表格进行的常规文本布局截然不同。常规文本布局主要处理一行文本,通常使用单一字体格式化。在这种情况下,可以通过访问文本行的完整上下文来执行上下文替换或字距调整等操作,并且可以使用已知的字形序列来表达规则。数学布局与此截然不同。
这表明 OpenType 数学没有进行字距调整。但继续向下滚动,你会发现一个很长的字距调整部分,但这恰好与阶梯字距有关(对于字形的每个角,可以设置字距来控制子字距、上字距和下字距的位置)。未提及字母对之间的字距。
如果我们回到您的示例,我并不认为您展示的非常紧密的字距调整 df 看起来不错。但也许稍微调整一下就好了。
其余的答案可能对你来说很有趣,也可能对你来说没意思。但对其他人来说可能很有趣,所以我还是把它加上了。
我确信 luatex 支持成对字距调整(我希望一些 LaTeX 用户会告诉你如何操作),但我不知道它是如何实现的。在 ConTeXt lmtx 中,它受支持,正确的添加方法是在 goodie 文件中。首先看一下没有这个调整时它是什么样子:
调整后它看起来是这样的:
这个调整位于modern-math.lfg
,是一个小的 lua 片段:
{
tweak = "kernpairs",
list = {
[0x1D451] = { -- italic d
[0x1D453] = -.2, -- italic f
},
},
},
当然,$df$
两种情况都有用户输入。
最后:当查看阶梯字距(一些字体有阶梯字距)时,它们看起来往往有点奇怪,即使在 Cambria 中也是如此。也许这是他们添加的一个很酷的东西,但用处不大。在 ConTeXt lmtx 中,它们被转换为角字距(只有一个值),这似乎效果很好。例如,它们对大括号启用,使幂自动移动得更近一点(参见橙色框)。