Roboto 浅色浓缩未定义字体形状警告

Roboto 浅色浓缩未定义字体形状警告

我正在使用 Roboto 轻量压缩字体,但总是出现以下字体警告:

字体形状改为OT1/cmr/lc/n' undefined(Font) usingOT1/cmr/m/n'

生成警告的示例文档是:

\documentclass{article}

\usepackage[sfdefault, light, condensed]{roboto}
\usepackage[utf8]{inputenc}

\begin{document}
    Why does Roboto font give a warning?
\end{document}

我正在通过 TeXLive 使用 pdflatex。有人知道如何解决这个问题吗?

答案1

PDFLaTeX 包在更改某些默认值后roboto加载fontenc,但在更改默认系列之前加载。因此,在加载时fontenc仍然是有效的系列。包是每次或时cmr实际上都会重新加载的例外之一。因此行\usepackage\RequirePackage

\usefont\encodingdefault\familydefault\seriesdefault\shapedefault

文件中的 会被执行,即使您在 之前自己加载了包roboto。此时\familydefault仍然是cmr。这会导致(在您的情况下不需要)选择一个cmr不存在的 的精简版本。

你可以直接忽略这个警告。如果你真的必须避免这个警告,你可以禁用加载fontenc内部包roboto(并且可以选择在加载包之前先加载你自己):

\documentclass{article}
\usepackage{fontenc}
% NOTE: I DO NOT RECOMMEND TO DO THIS, BUT IT MAKES THE FONT WARNING GO AWAY.
\makeatletter
\disable@package@load{fontenc}
\makeatother
\usepackage[sfdefault, light, condensed]{roboto}
\makeatletter
\reenable@package@load{fontenc}
\makeatother
\begin{document}
Roboto font does not give a warning. Produces light condensed text.
\end{document}

但当然,这需要您自担风险!

答案2

编译lualatex

\documentclass{article}
% Compile using lualatex.
\usepackage[sfdefault, light, condensed]{roboto}
\begin{document}
    Roboto font does not give a warning. Produces light condensed text.
\end{document}

答案3

还发现了这个解决方法:

\DeclareFontShape{\encodingdefault}{cmr}{lc}{n}{<->ssub*cmr/m/n}{}
\usepackage[sfdefault, light, condensed]{roboto}

它将默认 LaTeX 计算机现代字体 (cmr) 的缺失字体 (light condensed) 设置为普通 cmr。

由于 Roboto 可能一开始就不应该加载 cmr light condensed,因此它无法解决根本问题。但它可以安全地防止出现警告。

相关内容