comportement étrange de \ fontseries

Oct 26 2020

Dans le MWE suivant, "Lorem ipsum" devrait être léger, mais vous obtenez le poids normal.

%\RequirePackage[2019/10/01]{latexrelease}
\documentclass{article}
  
\begin{document}

\fontseries{l}\fontfamily{NotoSans-TLF}\selectfont Lorem ipsum

\end{document}

L'avertissement dit:

LaTeX Font Warning: Font shape `OT1/cmr/l/n' undefined
(Font)              using `OT1/cmr/m/n' instead on input line 6.

Apparemment, LaTeX essaie OT1 / cmr / l / n (qui n'existe pas), remplace OT1 / cmr / m / n, et enfin vous obtenez OT1 / NotoSans-TLF / m / n.

Si vous utilisez \RequirePackage[2019/10/01]{latexrelease}(cela annule les modifications NFSS de LaTeX 2020-02-02), vous obtenez la série légère comme prévu.

Autres observations:

  • Si vous demandez \fontseries{sb}, vous obtenez à la bplace.
  • Si vous demandez \fontseries{c}, vous obtenez à la mplace.
  • Si vous demandez ul, el, m, b, ebou ub, vous obtenez la série de police demandée. (Ceci est très déroutant car par exemple OT1 / cmr / ul / n n'existe pas non plus)
  • Si vous utilisez à la \fontfamily{NotoSans-TLF}\fontseries{l}\selectfont Lorem ipsumplace, vous obtenez la série de polices demandée.
  • Le même problème se produit avec d'autres polices.

Réponses

6 egreg Oct 26 2020 at 18:19

Les attributs de police sont modifiés dans l'ordre

\fontencoding
\fontfamily
\fontshape
\fontseries
\fontsize

Donc, ce qui se passe avec votre entrée, c'est que la forme est d'abord modifiée l, ce que Computer Modern n'a pas fait, donc elle est remplacée par la valeur par défaut m.

En utilisant le bon ordre, le résultat est comme prévu:

\documentclass{article}

\begin{document}

\fontfamily{NotoSans-TLF}\fontseries{l}\selectfont Lorem ipsum

\end{document}

Le plus important est d'avoir la déclaration de famille au début, car cela amènera LaTeX à lire le fichier de définition de police (si ce n'est déjà fait) afin que les autres attributs possibles soient connus.

6 UlrikeFischer Oct 26 2020 at 18:43

La différence entre la ulet la lsérie est que le noyau LaTeX a une règle pour le m/lcommutateur:

\DeclareFontSeriesChangeRule {m}{l}{l}{m}

Cette règle signifie que si m(premier argument) est la série courante, et lest demandé (deuxième argument) alors lest essayé (troisième argument) et s'il n'existe pas, la série revient à m(quatrième argument).

Comme egreg l'a écrit, vous essayez de changer la série alors qu'elle cmrest toujours active, et donc, comme elle n'a pas de lsérie, mest forcée.

Vous pouvez obtenir un effet similaire ulsi vous déclarez également une règle pour cela:

\documentclass{article}

\begin{document}

{ \fontseries{ul}\fontfamily{NotoSans-TLF}\selectfont Lorem ipsum }

\DeclareFontSeriesChangeRule {m}{ul}{ul}{m}

{ \fontseries{ul}\fontfamily{NotoSans-TLF}\selectfont Lorem ipsum }

\end{document}  

Vous pouvez éviter le retour en arrière men supprimant le quatrième argument de la règle:

\documentclass{article}

\DeclareFontSeriesChangeRule {m}{l}{l}{}
\begin{document}

\fontseries{l}\fontfamily{NotoSans-TLF}\selectfont Lorem ipsum 

\end{document}