opentype 数学字体 kern

opentype 数学字体 kern

原始的 Computer Modern Math Italic 字体在其 TFM 指标中列出了适量的字距调整(主要用于标点符号,但也用于一些例外情况,例如小写 d)。

在此处输入图片描述

但是当我在 xelatex 或 lualatex 中使用拉丁现代数学来替代 unicode-math 时,那些字距似乎消失了。

在此处输入图片描述

我查看过的所有 unicode 数学字体中的 GPOS 表都没有字距表。OpenType 数学字体真的没有基于对的字距吗?当然,MATH 表中有斜体校正信息,但我没有在 MATH 表中看到任何与似乎缺失的字距相对应的内容。

答案1

OpenType 数学字体真的没有基于对的字距吗?

是的。如果你读规格,你首先会发现

数学公式的布局与使用 GSUB 和 GPOS 等表格进行的常规文本布局截然不同。常规文本布局主要处理一行文本,通常使用单一字体格式化。在这种情况下,可以通过访问文本行的完整上下文来执行上下文替换或字距调整等操作,并且可以使用已知的字形序列来表达规则。数学布局与此截然不同。

这表明 OpenType 数学没有进行字距调整。但继续向下滚动,你会发现一个很长的字距调整部分,但这恰好与阶梯字距有关(对于字形的每个角,可以设置字距来控制子字距、上字距和下字距的位置)。未提及字母对之间的字距。

如果我们回到您的示例,我并不认为您展示的非常紧密的字距调整 df 看起来不错。但也许稍微调整一下就好了。

其余的答案可能对你来说很有趣,也可能对你来说没意思。但对其他人来说可能很有趣,所以我还是把它加上了。

我确信 luatex 支持成对字距调整(我希望一些 LaTeX 用户会告诉你如何操作),但我不知道它是如何实现的。在 ConTeXt lmtx 中,它受支持,正确的添加方法是在 goodie 文件中。首先看一下没有这个调整时它是什么样子:

df-nottweaked

调整后它看起来是这样的:

df-调整

这个调整位于modern-math.lfg,是一个小的 lua 片段:

{
    tweak = "kernpairs",
    list = {
        [0x1D451] = { -- italic d
            [0x1D453] = -.2, -- italic f
        },
    },
},

当然,$df$两种情况都有用户输入。

最后:当查看阶梯字距(一些字体有阶梯字距)时,它们看起来往往有点奇怪,即使在 Cambria 中也是如此。也许这是他们添加的一个很酷的东西,但用处不大。在 ConTeXt lmtx 中,它们被转换为角字距(只有一个值),这似乎效果很好。例如,它们对大括号启用,使幂自动移动得更近一点(参见橙色框)。

2 的幂

相关内容