许多 OpenType 字体(包括免费和商业字体)都只有 1、2 和 3 的上级,并且没有定义该sups
功能。
我想在脚注不超过三个的文件中使用上级。起初,我认为只需定义该sups
特征就足够了,如本例所示,使用红色上级进行比较:
% compile with lualatex
\documentclass{article}
\usepackage{filecontents,fontspec,realscripts,xcolor}
\usepackage[paperwidth=180pt,paperheight=150pt,margin=10pt]{geometry}
\begin{filecontents*}{pagella.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;
feature sups {
sub \one by \one.superior;
sub \one.prop by \one.superior;
sub \one.oldstyle by \one.superior;
sub \one.taboldstyle by \one.superior;
sub \two by \two.superior;
sub \two.prop by \two.superior;
sub \two.oldstyle by \two.superior;
sub \two.taboldstyle by \two.superior;
sub \three by \three.superior;
sub \three.prop by \three.superior;
sub \three.oldstyle by \three.superior;
sub \three.taboldstyle by \three.superior;
} sups;
\end{filecontents*}
\setmainfont{TeX Gyre Pagella}[FeatureFile={pagella.fea}]
\pagestyle{empty}
\newcommand{\red}[1]{\textcolor{red}{#1}}
\begin{document}
There\footnote{Note.} \red{¹} are\footnote{Note.} \red{²}
far\footnote{Note.} \red{³} too\footnote{Note.} many\footnote{Note.}
footnotes\footnote{Note.} in\footnote{Note.} this\footnote{Note.}
little\footnote{Note.} sentence.\footnote{Note.}
\end{document}
但结果却是这样的:
然后我在序言中添加了下面一行:
\renewcommand\footnotemarkfont{\addfontfeature{RawFeature={+sups}}}
现在,脚注标有真正的上级,但上级的大小减小且高度升高:
我尝试阅读代码,realscripts
但看不懂。有办法解决这个问题吗?
答案1
在 realscript 中有一个针对 sups 属性的测试。这个测试失败了,所以 realscript 会回到“fakesuperscript”,这是通过使用较小的字体大小来实现的。所以你应该重新定义\fakesuperscript
:
\documentclass{article}
\usepackage{filecontents,fontspec}
\usepackage{realscripts}
\usepackage{xcolor}
\renewcommand\footnotemarkfont{\addfontfeature{RawFeature={+sups}}}
\renewcommand\fakesuperscript[1]{#1}
\usepackage[paperwidth=180pt,paperheight=150pt,margin=10pt]{geometry}
\setmainfont{TeX Gyre Pagella}[FeatureFile={pagella.fea}]
\pagestyle{empty}
\newcommand{\red}[1]{\textcolor{red}{#1}}
\begin{document}
There\footnote{Note.} \red{¹} are\footnote{Note.} \red{²}
far\footnote{Note.} \red{³} too\footnote{Note.} many\footnote{Note.}
footnotes\footnote{Note.} in\footnote{Note.} this\footnote{Note.}
little\footnote{Note.} sentence.\footnote{Note.}
\end{document}
自然,这意味着其他上标会太大而无法凸起;-)
编辑
我认为 fontspec 或 luaotfload 中存在一个错误:FeatureFile 选项会创建一个相应的扩展 lua/luc 文件,其中包含 sups 可用的信息,但 luaotfload 或 fontspec 仅检查“正常”luc 文件。这需要进一步调查。
编辑2
我认为这是 fontspec 的一个错误/缺失的功能。仅使用 luaotfload,我就可以毫无问题地测试 sups 功能:
\documentclass{article}
\usepackage{luaotfload,xcolor}
\font\test="TeXGyrePagella:mode=node;script=latn;language=DFLT;+tlig;+trep;featurefile=pagella.fea;+sups;"
\font\testb="TeXGyrePagella:mode=node;script=latn;language=DFLT;+tlig;+trep;"
\begin{document}
\test test123 \directlua{if luaotfload.aux.provides_feature(font.current(),"latn","DFLT","sups")
then
tex.print("true")
else
tex.print("false")
end}
\testb test123 \directlua{if luaotfload.aux.provides_feature(font.current(),"latn","DFLT","sups")
then
tex.print("true")
else
tex.print("false")
end}
\end{document}
答案2
这根本不能替代@UlrikeFischer 的出色答案,而只是对使用 luatex 且需要比所提供的三个美观的脚注标记更多内容的人的一个补充。
对于 TeX Gyre Pagella,我们既可以使用 Michael Sharpe 的 TeXGyrePagellaX(在 TeX Live 中),也可以从FPL 新:
\documentclass{article}
\usepackage{fontspec,realscripts}
\setmainfont{TeX Gyre Pagella}
\newfontface\suppl{FPLNeu-Regular}
\renewcommand\footnotemarkfont{\suppl}
\begin{document}
There\footnote{Note.} are\footnote{Note.} far\footnote{Note.}
too\footnote{Note.} many\footnote{Note.} footnotes\footnote{Note.}
in\footnote{Note.} this\footnote{Note.} little\footnote{Note.}
sentence.\footnote{Note.}
\end{document}
然而,在大多数情况下,人们不会有相同字体的替代字体来借用缺失的字形,或者替代字体无法完美匹配。但是,只有少数上级字体的字体可能具有完整的分子集,并且它们可能在视觉上与上级字体难以区分。可以通过检查此代码片段的输出来测试这一点:
{\addfontfeatures{VerticalPosition=Numerator}1}¹
{\addfontfeatures{VerticalPosition=Numerator}2}²
{\addfontfeatures{VerticalPosition=Numerator}3}³
如果分子看起来与上级相同,\directlua{...}
则可以强迫他们为以下人员服务realscripts
:
\documentclass{article}
\usepackage{fontspec,realscripts}
% the sups feature, already defined, includes only 1–3, so we add to it:
\directlua{
fonts.handlers.otf.addfeature{
name = "sups",
type = "substitution",
data = {
four = "four.numerator",
five = "five.numerator",
six = "six.numerator",
seven = "seven.numerator",
eight = "eight.numerator",
nine = "nine.numerator",
zero = "zero.numerator",
},
}
}
\setmainfont{Bembo Book MT Pro}[
Numbers={OldStyle,Proportional},
Style=Alternate]
% the sups feature in Bembo Book replaces only the default figures,
% so we turn off other choices for the footnote marks::
\renewcommand\footnotemarkfont{\addfontfeature{RawFeature=-onum;-pnum}}
% to make the demonstration compact:
\usepackage[paperwidth=180pt,paperheight=90pt,margin=10pt]{geometry}
\usepackage[para]{footmisc}
\begin{document}
Testing appearance: {\addfontfeatures{VerticalPosition=Numerator}1}¹
{\addfontfeatures{VerticalPosition=Numerator}2}²
{\addfontfeatures{VerticalPosition=Numerator}3}³
Looks\footnote{Note.} good,\footnote{Note.} so\footnote{Note.}
here’s\footnote{Note.} a\footnote{Note.} short\footnote{Note.}
sentence\footnote{Note.} with\footnote{Note.} many\footnote{Note.}
notes.\footnote{Note.}
\end{document}
我不知道屏幕阅读器会如何理解这些混合的上级和分子,但至少打印出来的样子是应该的。