我想使用 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,它具有大大改进的字体处理功能,并且正在积极开发中。