LuaTeX 和 Asana Math 的奇怪字体/间距问题

LuaTeX 和 Asana Math 的奇怪字体/间距问题

尝试在某些大型文档中使用 LuaTeX 字体支持,除了 Asana Math 字体出现小故障外,一切都很顺利。问题如下:

\documentclass{standalone}
\usepackage{unicode-math}

\begin{document}
\setmathfont{Asana Math} %(probably unrelated, but without this nothing will show up)

Spacing issues:
\begin{tabular}{cccccccc}
\setmathfont{Asana Math}
$α_1$ & $ω_a$ & $ωa$ & $ω_1$ & $ω^a$ & $\omega_1$ & $Ω_1$ & $λ_k$ \\
\setmathfont{XITS Math}
$α_1$ & $ω_a$ & $ωa$ & $ω_1$ & $ω^a$ & $\omega_1$ & $Ω_1$ & $λ_k$ \\
\end{tabular}

\end{document}

Asana Math 的字体问题

ω 在下标(和上标)方面有点问题。使用 CTAN 上可用的最新版本更新了字体和 unicode-math,但问题仍然存在。

知道是什么原因造成的吗?有没有不需要检测每次出现的“ω_”的解决方法?

答案1

我很确定这是一个字体错误。正如使用FontForge,右下角下标的锚点距离字形太远(锚点是第三个面板中基线上的小点):

右下角数学字距

在 Microsoft Word 中结果是相同的,它是 OpenType 数学的参考实现:

MS Word 与 Asana Math

这在 XeTeX 中“有效”,因为 XeTeX 的 OpenType 数学实现不如 LuaTeX 和 MS Word 的实现复杂:XeTeX 只是忽略了数学字距,因此您(大概还有 Asana Math 的创建者)看不到那里的错误。

以下是在 LuaTeX 中加载字体时如何修复此类错误的示例。这只需删除有问题的字距信息(字距似乎不正常,否则您可以使用任何您想要的字距数组):

\documentclass[pagesize=auto, version=last]{scrartcl}

\usepackage{unicode-math}
\usepackage{luacode}

\begin{luacode*}
local function patch_asana(fnt)
  if fnt.psname == "Asana-Math" then
    fnt.characters[0x1D714].mathkern.bottom_right = nil
  end
end
luatexbase.add_to_callback("luaotfload.patch_font", patch_asana, "patch_asana")
\end{luacode*}

\setmathfont{Asana Math}

\begin{document}

$\omega_a$

\end{document}

相关内容