在 XeLaTeX 中使用带有 fontspec 的小型大写字母和倾斜字体时出现奇怪的行为

在 XeLaTeX 中使用带有 fontspec 的小型大写字母和倾斜字体时出现奇怪的行为

我使用 XeLaTeX 和fontspec包。

现在,我喜欢使用 Linux Libertine 作为标准字体。倾斜(不是斜体)字符存储在不同的字体中。现在,要将它们与一起使用\slshape,我必须明确选择它们:

\setmainfont[
    SlantedFont={Linux Libertine Slanted O},
    SmallCapsFeatures={Letters=SmallCaps},
    Mapping=tex-text, Numbers=OldStyle, Variant=01, Ligatures={TeX, Common}, Contextuals=WordFinal,
    % Style=Alternate, Ligatures={Rare, TeX, Common}
            ]{Linux Libertine O}

如您所见,在SlantedFont={Linux Libertine Slanted O}参数中选择了倾斜字体。

当我\slshape现在在我的文档中使用时:

{\slshape \lipsum[1-2]}

它创建正确的倾斜文本。

\usepackage{lipsum}位于文件上方。)

现在,当我想使用小型大写字母时,我会使用\scshape

{\scshape \lipsum[3-4]}

文本是倾斜的小型大写字母!为了避免这种情况,我必须注释掉SlantedFont中的参数\setmainfont,这会使小型大写字母直立,但我失去了倾斜文本功能。

我怎样才能让两者都表现正确?

答案1

添加 ItalicFeatures 可以让你部分实现这一点...我的眼睛不够好,无法分辨出差异......

\setmainfont[
    ItalicFont={Linux Libertine O}, ItalicFeatures={SmallCapsFont={Linux Libertine O Italic}},
    SlantedFont={Linux Libertine Slanted O},
    SmallCapsFont={Linux Libertine O},
    SmallCapsFeatures={Letters=SmallCaps},
    Mapping=tex-text, Numbers=OldStyle, Ligatures={TeX, Common}, Contextuals=WordFinal,
            ]{Linux Libertine O}

 {\slshape Abc}

{\scshape Def}

 {\scshape\itshape Ghi}

{\scshape\slshape Lmn}%

与上图类似的图像...GHI 和 Lmn 相同...但倾斜或斜体图片

答案2

在这种特殊情况下,省略SmallCapsFeatures密钥就足够了:

\documentclass{article}
\usepackage{fontspec}
\setmainfont[
    SlantedFont={Linux Libertine Slanted O},
    SmallCapsFont={Linux Libertine O},
    SmallCapsFeatures={Letters=SmallCaps},
    Mapping=tex-text, Numbers=OldStyle, Ligatures={TeX, Common}, Contextuals=WordFinal,
            ]{Linux Libertine O}
\begin{document}
{\slshape Abc}

{\scshape Def}

{\scshape\itshape Ghi}

{\scshape\slshape Lmn}

\end{document}

在此处输入图片描述

相关内容