Interactions de polices problématiques

Sep 11 2020

Dans l'un de mes (gros) projets d'il y a quelques années, j'utilisais fourier comme police principale et roboto condensé comme police sans-serif par défaut (principalement utilisée dans les titres de (sous) sections). Cela a bien fonctionné.

J'ai essayé de recompiler le projet aujourd'hui et j'ai découvert que, entre autres, les styles italique et incliné sont ignorés. Cela semble être dû à une interaction entre roboto condensé et fourier.

Voici un exemple de travail minimal qui montre mon problème:

\documentclass{memoir}

\usepackage{fourier}
\usepackage[condensed]{roboto}

\begin{document}
    Test \textit{Test} \textsl{Test} \textbf{Test} \(Test\) \textsf{Test}
\end{document}

Voici la sortie:

Si je remplace \usepackage[condensed]{roboto}par \usepackage{roboto}, alors la sortie devient:

Comme vous pouvez le voir, ce dernier fonctionne bien, mais pas le premier. Qu'est-ce que je fais mal?

Réponses

1 egreg Sep 11 2020 at 19:43

Ceci est assez similaire aux problèmes avec l'italique dans d'autres polices lors de l'utilisation de roboto condensed mais nécessite quelques astuces supplémentaires afin de supprimer les avertissements parasites ennuyeux. J'ai également ajouté une mise à l'échelle pour Roboto, qui est autrement plus grande que Fourier (en fait Utopia).

\documentclass{memoir}
\usepackage[T1]{fontenc} % fourier does it, so it's best here

% avoid a spurious warning about cmr
\DeclareFontShape{T1}{cmr}{c}{n}{<->ssub*cmr/m/n}{} % avoid a spurious warning

% load roboto (but scaled because fourier is less tall)
\usepackage[scaled=0.9,condensed]{roboto}

% avoid a spurious warning about futs
\input{t1futs.fd}
\DeclareFontShape{T1}{futs}{c}{n}{<->ssub*futs/m/n}{} % avoid a spurious warning

% load fourier
\usepackage{fourier}

% fix the wrong setting by roboto
\renewcommand{\seriesdefault}{m}

\begin{document}

Test \textit{Test} \textsl{Test} \textbf{Test} \(Test\) \textsf{Test}

\end{document}

1 Davislor Sep 12 2020 at 05:49

Bien que vous mentionniez dans les commentaires que vous utilisez PDFTeX, une autre solution consiste à charger les versions OTF des polices dans LuaLaTeX (ou XeLaTeX). Vous pouvez charger Erewhon Math comme remplacement de Fourier, via fourier-otfou unicode-math, et la version OpenType de Roboto avec \setsansfont.

Je recommanderais d'utiliser la chaîne d'outils moderne lorsque vous le pouvez et les anciennes polices 8 bits lorsque vous le devez. La mise à niveau effacera beaucoup de dette technique envers les anciens packages.