文字ではなく数字の subs/sup を取得するにはどうすればよいでしょうか?

文字ではなく数字の subs/sup を取得するにはどうすればよいでしょうか?

私はフォントで遊んでいます(見つけたここ) では、数字には sups/subs が定義されていますが、文字には定義されていません。有効にしないと、取得されません。

フィギュアに適切なサップ/サブがない

しかし、\usepackage{realscripts}それらを有効にすると、文字を下付き文字/上付き文字として使用する機能がまったくなくなります。

パッケージrealscripts付き

下付き/上付き文字に文字を使用する機能を維持しながら、下付き/上付き数字を取得する方法はありますか? これが私のコードです:

\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

関連情報