我想使用 fontspec 访问一些替代字形形式。具体来说,我使用的是 Garamond Premier Pro 字体,我想使用 Q(字形 245)、W(字形 246)和 &(字形 301)的替代形式。该字体有 4 种风格集,但通过 fontspec 使用它们不会影响所述字母的形状。
以下是仍然存在问题的最少代码:
\documentclass{article}
\usepackage[no-math]{fontspec}
\setmainfont[Ligatures=Common, StylisticSet={1,2,3,4}]{Garamond Premier Pro}
\title{Title}
\begin{document}
\maketitle
Test: WQ\&.
\end{document}
PS:Style= Alternate
在 fontspec 中使用会改变所有内容,而不仅仅是三个字母(它还会选择我不想要的 & 的替代形式)。
PPS:XeLaTeX 和 LuaLaTeX 都存在此问题。
答案1
我不知道我们是否有相同版本的字体,因为你提到的字形编号与我看到的不匹配。但在 LuaTeX 中,你可以这样做(如果显示的不是你想要的,请将 & 符号字形的名称调整为ampersand.alt2
或):ampersand.alt3
\documentclass[12pt]{article}
\usepackage[no-math]{fontspec}
\directlua{
fonts.handlers.otf.addfeature{
name = "malt",
type = "alternate",
data =
{
Q = "Q.alt",
["q.sc"] = "q.scalt",
W = "W.alt",
["w.sc"] = "w.scalt",
Wcircumflex = "Wcircumflex.alt",
Wgrave = "Wgrave.alt",
Wacute = "Wacute.alt",
Wdieresis = "Wdieresis.alt",
["wacute.sc"] = "wacute.scalt",
["wcircumflex.sc"] = "wcircumflex.scalt",
["wdieresis.sc"] = "wdieresis.scalt",
["wgrave.sc"] = "wgrave.scalt",
ampersand = "ampersand.alt1",
},
}
fonts.handlers.otf.addfeature{
name = "oops",
type = "alternate",
data =
{
["ampersand.alt1"] = "ampersand.sc",
},
}
}
\setmainfont{Garamond Premier Pro}[RawFeature=+malt]% “malt” for “my alternates”; choose another name if you like
\begin{document}
Test: W Q \&.
Ẃ Ẁ Ŵ Ẅ
% because the font doesn’t have small cap ampersand variants:
{\addfontfeature{RawFeature=+oops}\textsc{Test: w q \& ẃ ẁ ŵ ẅ}}
\end{document}
如果您不想{\addfontfeature{RawFeature=+oops}...}
在出现小型大写字母“&”时记住添加,只需fontspec
在序言中像这样调用即可:
\setmainfont{Garamond Premier Pro}[
RawFeature=+malt,
SmallCapsFeatures={RawFeature=+oops}]
看如何调整LuaTeX 中的字体功能?了解更多详情。对于带有长尾的字形,定义上下文替代通常是更好的选择。