Interaksi font bermasalah

Sep 11 2020

Dalam salah satu proyek (besar) saya beberapa tahun yang lalu, saya menggunakan fourier sebagai font utama dan roboto diringkas sebagai font sans-serif default (terutama digunakan di (sub) judul bagian). Ini bekerja dengan baik.

Saya mencoba menyusun ulang proyek hari ini dan saya menemukan bahwa, antara lain, gaya miring dan miring diabaikan. Hal ini tampaknya disebabkan oleh interaksi antara roboto condensed dan fourier.

Berikut adalah contoh kerja minimal yang menunjukkan masalah saya:

\documentclass{memoir}

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

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

Ini hasilnya:

Jika saya ganti \usepackage[condensed]{roboto}dengan \usepackage{roboto}, maka outputnya menjadi:

Seperti yang Anda lihat, yang terakhir berfungsi dengan baik, tetapi tidak yang pertama. Apa yang saya lakukan salah?

Jawaban

1 egreg Sep 11 2020 at 19:43

Ini sangat mirip dengan Masalah dengan huruf miring pada font lain saat menggunakan roboto condensed tetapi membutuhkan beberapa trik lagi untuk menghapus peringatan palsu yang mengganggu. Saya juga menambahkan skala untuk Roboto, yang sebaliknya lebih tinggi dari Fourier (sebenarnya 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

Meskipun Anda menyebutkan di komentar bahwa Anda menggunakan PDFTeX, solusi lain adalah memuat font versi OTF di LuaLaTeX (atau XeLaTeX). Anda dapat memuat Erewhon Math sebagai pengganti Fourier Anda, melalui fourier-otfatau unicode-math, dan versi OpenType dari Roboto dengan \setsansfont.

Saya akan merekomendasikan menggunakan toolchain modern bila Anda bisa, dan font 8-bit lawas bila perlu. Upgrade akan menghapus banyak hutang teknis pada paket lama.