Как получить субтитры для цифр, но не для букв?

Как получить субтитры для цифр, но не для букв?

Я играю со шрифтом (найденнымздесь) у которого sups/subs определены для цифр, но не для букв. Если я их не включу, я их не получу:

Нет надлежащих дополнений/замен для цифр

Но если я \usepackage{realscripts}их включу, то я вообще потеряю возможность использовать буквы в качестве нижних/верхних индексов:

с пакетом realscripts

Есть ли способ получить цифры subs/sups, сохранив возможность использовать буквы в нижних/верхних индексах? Вот мой код:

\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).

Связанный контент