在我维护的数学字体中,我使用CharacterVariant
功能来切换数学中的希腊语变体,因为该cv06
功能使\phi
输出
mitvarphi
(U+1D711) 而不是mitphi
(U+1D719) 成为默认输出。它有效,但我最近注意到这些变体的上标存在问题:当未启用该功能时,将使用加粗的字形mitphi.st
(和mitphi.sst
)(如果可用)表示上标cv06
,但字形
mitvarphi.st
(和mitvarphi.sst
) 是不曾用过是否cv06
已启用。
Fontforge 内部结构:
- 在 GSUB 查找
ssty
功能中,所有cvNN
; 两行mitphi mitphi.st mitphi.sst
和mitvarphi mitvarphi.st mitvarphi.sst
都在那里。 - 我尝试在功能中添加线条
mitphi.st mitvarphi.st
和 ,但即使颠倒和功能的顺序也无济于事。mitphi.sst mitvarphi.sst
cv06
ssty
cv06
下面是用 LuaLaTeX 编译的示例文件 [我在mitphi.st
和mitvarphi.st
字形上都添加了一个水平小条,以使问题更加明显]:
\documentclass{article}
\usepackage{unicode-math}
\begin{document}
\setmathfont{XCharter-Math.otf}
\[a^{φ + c^{φ}} + φ\]
\[a^{\phi + c^{\phi}} + \phi\]
\setmathfont{XCharter-Math.otf}[CharacterVariant={6}]
\[a^{\phi + c^{\phi}} + \phi\]
\end{document}
和输出(最新的 TEXLive2023):
横线出现在mitvarphi.st
(第一行)和mitphi.st
(第二行)上,但没有出现在第三行。在第三行上,上标和的上标mitvarphi
是通过缩减从基本mitvarphi
字形绘制的,因此上标与第一行相比看起来太细了。
更糟糕的是:使用 XeLaTeX 编译时,最后一行如下所示:
这意味着该cv06
功能对于 XeLaTeX 的上标根本不起作用。
我错过了什么?
@mickep 评论后更新(2023/10/18)
反转特征的顺序(cvNN
前 ssty
) 看起来是正确的做法。通过此设置,XeLaTeX 可以按预期工作,luametatex 也是如此(根据@mickep):第一行和最后一行相同。剩下的问题是 LuaTeX 打印为第三行:
(cv06
不适用于上标)。
这是否意味着 LuaTeX 或 unicode-math 中存在错误?
更新(2024/02/17)
最后,此问题需要两项修复:
- 在字体方面:调用该
ssty
功能后。这在、、和的cvNN
当前版本中已经完成。这对于 XeLaTeX 来说已经足够了。XCharter-Math
Erewhon-Math
Concrete-Math
Euler-Math
KPfonts
- LuaTeX 需要 3.27 版
luaotfload
。感谢 Marcel Krüger 和 LaTeX3 团队,上标的输出现在与 LuaLaTeX 的预期一致!