El atributo \addfontfeatures se pierde después del siguiente comando fontspec (como \textbf{})

El atributo \addfontfeatures se pierde después del siguiente comando fontspec (como \textbf{})
  1. Estoy usando la fuente Linux Libertine (del sistema) conXeTeX.
  2. En el cuerpo, uso OldStylenúmeros mientras quiero Liningnúmeros en las tablas.
  3. Estoy escribiendo tablas que tienen algunas celdas con \bfseriestexto.

Sin embargo, la \addfontfeatureconfiguración solo se aplica al texto normal, pero no al texto configurado en formato \bfseries.

MWE

\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}

Esto produce:

los números en <code>\bfseries</code> todavía son <code>OldStyle</code>

¿Cómo puedo configurar \addfontfeatures{Numbers={Lining}}para que se aplique a todo el texto de un grupo?

Respuesta1

El problema es reproducible sin una tabla:

\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}

ingrese la descripción de la imagen aquí

Como puede ver, la llamada \normalfontrestablece las funciones a lo que se indicó al principio. El \bfseriescomando \fontseries{\bfdefault}\selectfontanula la característica elegida.

Mi consejo es evitarlo \addfontfeaturessiempre que sea posible, incluso a costa de duplicar algún código.

\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}

ingrese la descripción de la imagen aquí

Respuesta2

Usar

 \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}

ingrese la descripción de la imagen aquí

información relacionada