TeX 徽标与 LuaTeX 和 Linux Biolinum O/G

TeX 徽标与 LuaTeX 和 Linux Biolinum O/G

在 LuaTeX 下,使用 Linux Biolinum O 字体的 TeX 和 LaTeX 徽标存在问题。我在 Windows 上使用 MiKTeX 2.9。这是一个最小的工作示例:

\documentclass{minimal}

\usepackage{fontspec}
\newfontfamily\LinBioO{Linux Biolinum O}
\newfontfamily\LinBioG{Linux Biolinum G}

\begin{document}
{\LinBioO\LaTeX}\quad{\LinBioG\LaTeX}
\end{document}

使用 LuaTeX,我得到

这

而使用 XɘTeX 你会得到正确的结果:

结果

除了 Linux Libertine O 和 G,我并没有真正尝试过其他字体,它们都能够正确对齐“E”。该问题是否特定于 Linux Biolinum O 字体?

答案1

虽然这是字体中的一个错误,但使用 LuaTeX 我们可以即时“修补”字体,下面是一个可能的修复方法:

\directlua {
local function fix_biolinum_xheight(fontdata)
  if fontdata.fullname:find("Linux Biolinum") then
    if fontdata.characters[string.byte("x")] then
      fontdata.parameters.x_height = fontdata.characters[string.byte("x")].height
    end
  end
end

luatexbase.add_to_callback("luaotfload.patch_font", fix_biolinum_xheight, "mypatch.fix_biolinum_xheight")
}

加载后立即添加这几行fontspec应该可以解决问题。

相关内容