在我几年前的一个(大型)项目中,我使用 fourier 作为主字体,使用 roboto condensed 作为默认无衬线字体(主要用于(子)部分标题)。这很有效。
今天我尝试重新编译该项目,发现除其他外,斜体和倾斜样式被忽略了。这似乎是由于 roboto condensed 和 fourier 之间的相互作用造成的。
这是一个显示我的问题的最小工作示例:
\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
这非常类似于使用 roboto condensed 时,其他字体的斜体出现问题但需要一些技巧才能消除恼人的虚假警告。我还为 Roboto 添加了缩放功能,否则它比 Fourier(实际上是 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}
答案2
尽管您在评论中提到您正在使用 PDFTeX,但另一种解决方案是在 LuaLaTeX (或 XeLaTeX) 中加载字体的 OTF 版本。您可以通过fourier-otf
或加载 Erewhon Math 作为 Fourier 替换,unicode-math
并使用 加载 Roboto 的 OpenType 版本\setsansfont
。
我建议尽可能使用现代工具链,必要时使用旧版 8 位字体。升级将消除旧软件包带来的大量技术债务。