如何获取数字的 subs/supps 而不是字母?

如何获取数字的 subs/supps 而不是字母?

我正在玩一种字体(发现这里) 为图形定义了 sups/subs,但没有为字母定义。如果我不启用它们,我就得不到它们:

没有合适的图片

但如果我\usepackage{realscripts}启用它们,我将完全失去使用字母作为下标/上标的能力:

使用 realscripts 包

有没有办法让我获得 subs/sups 数字,同时保留在 sub/superscript 中使用字母的能力?这是我的代码:

\documentclass{standalone}
\usepackage{fontspec}
\setmainfont{OFLGoudyStM}[
    Extension      = .otf,
    Ligatures      = {Common, TeX},
    ItalicFont     = OFLGoudyStM-Italic]
\usepackage{realscripts}

\begin{document}
\begin{tabular}{l}
  M\textsuperscript{abc0123456789def} \\
  M\textsubscript{abc0123456789def}
\end{tabular}
\end{document}

答案1

否,realscripts仅在以下情况下有用全部您需要上标或下标的字形是专门在字体中绘制的。XeTeX 中没有办法检测给定的字体功能是否会影响特定字形(或字形序列),因此您甚至在排版文档并检查输出之前都无法知道。

好吧,在某些情况下,您可以制作一个框并比较在设置字体功能之前和之后它的大小,但是该方法可能存在一些极端情况,会导致它偶尔不可靠。

另一个选择可能是检查参数的内容\textsuperscript并根据输入进行分支。即,

\textsuperscript{a1} -> 
\textsuperscript{a}\textsuperscript{1} ->
\fakesuperscript{a}\realsuperscript{1}

但这看起来很糟糕,因为a和看起来非常不同,所以在这种情况下1最好使用\fakesuperscript(即不喜欢)。realscripts

相关内容