fontspec 或 lualatex 中的 fakebold 错误

fontspec 或 lualatex 中的 fakebold 错误

我一直在尝试伪造 Myriad Pro 中没有的小写字母。因此我使用了 Scale 和 FakeBold 选项。缩放没问题,但正如你们所知,字形会变细。为了解决这个问题,我尝试稍微“加粗”它们。

使用 lualatex(最新的 TeX-Live)时,下面的代码不会“加粗”缩放后的字符。使用 xelatex(也是最新的 TeX-Live)则没问题。

我认为这是一个错误。

\documentclass[11pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont{TeX Gyre Heros}
\begin{document}
ABC {\fontspec[FakeBold=5,Scale=0.72]{TeX Gyre Heros} ABC} ABC
\end{document}

为了演示,上面的代码使用了另一种实际上支持小型大写的字体。

答案1

LuaTeX 不支持加粗,因此FakeBold不起作用。fontspec应该在这里发出警告。

可能可以在 lua 中实现加粗,比如在luaotfload包中,但我没有仔细调查。

这是使用 pdf 文字的解决方法(这基本上是 XeTeX 在后台所做的事情)。

\def\embolden#1#2{%
    \pdfliteral direct {2 Tr #1 w}%
     #2%
    \pdfliteral direct {0 Tr 0 w}%
}
ABC \embolden{0.5}{ABC} ABC
\bye

这甚至适用于 pdftex。

(请注意,当您使用 时Scale=0.72FakeBold将是5*0.72,因此您可能希望使用0.36而不是0.5


随着 LuaTeX 0.95.0 的出现,\pdf...原语已移至统一\pdfextension接口。上述代码不再起作用,必须进行修改以反映这些变化。

\def\embolden#1#2{%
    \pdfextension literal direct {2 Tr #1 w}%
     #2%
    \pdfextension literal direct {0 Tr 0 w}%
}
ABC \embolden{0.5}{ABC} ABC
\bye

或者也可以定义\pdfliteralLuaTeX 手册

\protected\def\pdfliteral{\pdfextension literal}

相关内容