如何獲得數字而不是字母的子/子?

如何獲得數字而不是字母的子/子?

我正在玩一種字體(發現這裡),它為數字定義了升/降,但沒有為字母定義。如果我不啟用它們,我就不會得到它們:

人物沒有合適的替補/替補

但如果我\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並根據輸入進行分支。 IE,

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

但這看起來很糟糕,因為a和看起來非常不同,所以在這種情況下1最好使用\fakesuperscript(即不喜歡)。realscripts

相關內容