编辑

编辑

许多 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}

输出

我不知道屏幕阅读器会如何理解这些混合的上级和分子,但至少打印出来的样子是应该的。

相关内容