众所周知,luatex
需要该fontspec
选项Renderer = Basic
以便在使用microtype
's时显示小型大写字母。tracking = true
\documentclass{article}
\usepackage[tracking = true]{microtype}
\usepackage{fontspec}
\setmainfont{Libertine Serif}[%
SmallCapsFeatures = {%
% Renderer = Basic, % breaks kerning, but allows small caps
Letters = SmallCaps}]
\begin{document}
\textsc{ipa}
\end{document}
和 Renderer = Basic
但是,字符P
和之间的正确字距调整A
被删除了:
@KhaledHosny告诉我这是因为“Libertine 使用基于类的字距调整,而 luaotfload 的基本模式似乎不支持该调整”。我很好奇是否有办法解决这个问题?
-25
以下来自 FontForge 的屏幕截图显示,小型大写字母P
和A
(单击图片可查看完整尺寸版本)之间应该有一个字距调整。
作为测试,我尝试将字距从-25
增加到-80
,但输出luatex
没有变化。
答案1
您可以使用中的 LetterSpace 选项fontspec
。如果您将其与 Renderer=basic 的输出进行比较,您会发现它保留了字距调整:
\documentclass{article}
\usepackage{microtype}
\usepackage{fontspec}
\setmainfont{LinLibertine_R}[%
Extension = .otf,
SmallCapsFeatures = {%
LetterSpace = 10,
Letters = SmallCaps}]
\setsansfont{LinLibertine_R}[%
Extension = .otf,
SmallCapsFeatures = {%
LetterSpace = 10,
Renderer = Basic,
Letters = SmallCaps}]
\begin{document}
\textsc{ipav} \par \sffamily \textsc{ipav}
\end{document}