\addfontfeatures 属性は、次の fontspec コマンドの後に失われます (\textbf{} など)

\addfontfeatures 属性は、次の fontspec コマンドの後に失われます (\textbf{} など)
  1. 私はLinux Libertineフォント(システムから)を使用していますXeTeX.
  2. 本文では数字を使用していますが、表にも数字がOldStyle必要です。Lining
  3. テキストが入ったセルがいくつかある表をタイプセットしています\bfseries

ただし、この\addfontfeature設定は通常のテキストにのみ適用され、 に設定されているテキストには適用されません\bfseries

ムウェ

\documentclass{scrartcl}
\usepackage{array,booktabs,fontspec}
\setmainfont[Ligatures={Common},Numbers={OldStyle}]{Linux Libertine O}

\begin{document}
\begin{table}
  \addfontfeature{Numbers={Lining}}
  \begin{tabular}{>{\bfseries}ll} \toprule
    3 & 3 \\ \bottomrule
  \end{tabular}
\end{table}
\end{document}

これにより次のようになります:

<code>\bfseries</code> 内の数字は依然として <code>OldStyle</code> です

\addfontfeatures{Numbers={Lining}}グループ内のすべてのテキストに適用するように設定するにはどうすればよいですか?

答え1

この問題は表形式がなくても再現可能です。

\documentclass{scrartcl}
\usepackage{array,booktabs,fontspec}
\setmainfont[Ligatures={Common},Numbers={OldStyle}]{Linux Libertine O}

\begin{document}

1234567890

{\addfontfeatures{Numbers=Lining}

1234567890

\normalfont 1234567890

\bfseries 1234567890}

1234567890

\end{document}

ここに画像の説明を入力してください

ご覧のとおり、 の呼び出しにより、\normalfont機能が最初に指定した状態にリセットされます。\bfseriesコマンドは\fontseries{\bfdefault}\selectfont、選択された機能を無効にします。

\addfontfeatures私のアドバイスは、たとえ多少のコード​​重複が発生しても、可能な限り避けることです。

\documentclass{scrartcl}
\usepackage{array,booktabs,fontspec}
\setmainfont[Ligatures={Common},Numbers={OldStyle}]{Linux Libertine O}
\newfontfamily{\mainlining}[Ligatures=Common,Numbers=Lining]{Linux Libertine O}

\begin{document}

\begin{table}
\mainlining

\begin{tabular}{>{\bfseries}ll}
\toprule
3 & 3 \\
\bottomrule
\end{tabular}

\end{table}

\end{document}

ここに画像の説明を入力してください

答え2

使用

 \documentclass{scrartcl}
 \usepackage{array,booktabs,fontspec}
 \usepackage[oldstyle]{libertine}
 \defaultfontfeatures{Ligatures=Common}
 \begin{document}

\begin{table}[!htb]
\libertineLF
 \begin{tabular}{>{\bfseries}ll} \toprule
            123 & 31234 \\ \bottomrule
 \end{tabular}
\end{table}

 \end{document}

ここに画像の説明を入力してください

関連情報