Проблемные взаимодействия шрифтов

Sep 11 2020

В одном из моих (больших) проектов несколько лет назад я использовал fourier в качестве основного шрифта и roboto, сокращенный как шрифт без засечек по умолчанию (в основном используемый в заголовках (под) разделов). Это сработало.

Сегодня я попытался перекомпилировать проект и обнаружил, что среди прочего игнорируются курсивный и наклонный стили. Похоже, это связано с взаимодействием между roboto condensed и фурье.

Вот минимальный рабочий пример, который показывает мою проблему:

\documentclass{memoir}

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

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

Вот результат:

Если я заменю \usepackage[condensed]{roboto}на \usepackage{roboto}, то вывод станет:

Как видите, последние работают нормально, но не первые. Что я делаю неправильно?

Ответы

1 egreg Sep 11 2020 at 19:43

Это очень похоже на Проблемы с курсивом в другом шрифте при использовании roboto condensed, но требует еще нескольких приемов, чтобы удалить надоедливые ложные предупреждения. Я добавил также масштабирование для Roboto, которое в остальном выше, чем Фурье (на самом деле Утопия).

\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

Хотя в комментариях вы упоминаете, что используете PDFTeX, другим решением является загрузка OTF-версий шрифтов в LuaLaTeX (или XeLaTeX). Вы можете загрузить Erewhon Math в качестве замены Фурье с помощью fourier-otfили unicode-math, а версию Roboto OpenType с помощью \setsansfont.

Я бы порекомендовал использовать современный инструментарий, когда это возможно, и устаревшие 8-битные шрифты, когда это необходимо. Обновление снимет большой технический долг перед старыми пакетами.