Interazioni di caratteri problematiche

Sep 11 2020

In uno dei miei (grandi) progetti di alcuni anni fa, stavo usando fourier come carattere principale e roboto condensato come carattere sans-serif predefinito (utilizzato principalmente nei titoli delle (sotto) sezioni). Questo ha funzionato bene.

Ho provato a ricompilare il progetto oggi e ho scoperto che, tra gli altri, vengono ignorati gli stili corsivo e obliquo. Ciò sembra essere dovuto a un'interazione tra roboto condensato e fourier.

Ecco un esempio di lavoro minimo che mostra il mio problema:

\documentclass{memoir}

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

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

Ecco l'output:

Se sostituisco \usepackage[condensed]{roboto}con \usepackage{roboto}, l'output diventa:

Come puoi vedere, quest'ultimo funziona bene, ma non il primo. Che cosa sto facendo di sbagliato?

Risposte

1 egreg Sep 11 2020 at 19:43

Questo è abbastanza simile a Problemi con il corsivo in altri caratteri quando si utilizza roboto condensato, ma richiede qualche trucco in più per rimuovere fastidiosi avvisi spuri. Ho aggiunto anche un ridimensionamento per Roboto, che altrimenti è più alto di Fourier (in realtà 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

Sebbene tu menzioni nei commenti che stai utilizzando PDFTeX, un'altra soluzione è caricare le versioni OTF dei caratteri in LuaLaTeX (o XeLaTeX). Puoi caricare Erewhon Math come sostituto di Fourier, tramite fourier-otfo unicode-math, e la versione OpenType di Roboto con \setsansfont.

Consiglierei di utilizzare la moderna toolchain quando possibile e i caratteri legacy a 8 bit quando è necessario. L'aggiornamento cancellerà molti debiti tecnici per i vecchi pacchetti.