在 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
应该可以解决问题。