Libertine 与 ConTeXt 和 XeTeX 的自由裁量和历史连字符

Libertine 与 ConTeXt 和 XeTeX 的自由裁量和历史连字符

我想使用 ConTeXt 和 XeTeX 编译激活 Libertine 的自由裁量和历史连字符。

目前,我正在使用这个:

\definetypeface[Libertine][rm][Xserif][Linux Libertine O]
\setupbodyfont[Libertine, 9pt]

\starttext
fi ffl ct st
\stoptext

有任何想法吗?

答案1

廉价的解决方案:您可以通过将字体功能添加到默认功能集来全局启用字体功能:

%% The “default” set is always active.
\definefontfeature [default] [default] [
  liga=yes,
  hlig=yes,
  dlig=yes,
]

\definetypeface[Libertine][rm][Xserif][Linux Libertine O]
\setupbodyfont[Libertine, 9pt]

\starttext
fi ffl ct st
\stoptext

为了更精确地控制连字符的激活时间,你需要一个打字稿features=default。这允许您单独指定为每种字体启用哪些功能集。但您也可以通过在相关行中请求来关闭连字,例如粗体字体。以下示例将连字集应用于所有四种衬线字体:

%% 1. Create a feature set, inheriting the defaults.
\definefontfeature [extraligatures] [default] [liga=yes,script=latn,hlig=yes,dlig=yes]

%% 2. Map font files for Libertine to type faces, applying the “extraligatures” features.
\starttypescript [serif] [mylibertine]
    \definefontsynonym[Serif]           [file:LinLibertine_R]    [features=extraligatures]
    \definefontsynonym[SerifItalic]     [file:LinLibertine_RI]   [features=extraligatures]
    \definefontsynonym[SerifBold]       [file:LinLibertine_RB]   [features=extraligatures]
    \definefontsynonym[SerifBoldItalic] [file:LinLibertine_RBI]  [features=extraligatures]
\stoptypescript

% 3. Define corresponding type face identifier.
\definetypeface [mylibertine] [rm] [serif] [mylibertine] [default]

% 4. Use the font in the document.
\setupbodyfont[mylibertine]

% 5. Test all four defined styles.
\def\ligatest#1{\bgroup#1fi ffl ct st\egroup\par}
\starttext
  \processcommacommand[,\italic,\bold,\bolditalic]\ligatest
\stoptext

上述代码片段的输出。

注意:Xetex 在 ConTeXt 中没有得到很好的支持,也没有得到广泛使用。您可以考虑切换到 MkIV,它具有大大改进的字体处理功能,并且正在积极开发中。

相关内容