![Roboto 浅色浓缩未定义字体形状警告](https://linux22.com/image/464017/Roboto%20%E6%B5%85%E8%89%B2%E6%B5%93%E7%BC%A9%E6%9C%AA%E5%AE%9A%E4%B9%89%E5%AD%97%E4%BD%93%E5%BD%A2%E7%8A%B6%E8%AD%A6%E5%91%8A.png)
我正在使用 Roboto 轻量压缩字体,但总是出现以下字体警告:
字体形状改为
OT1/cmr/lc/n' undefined(Font) using
OT1/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,因此它无法解决根本问题。但它可以安全地防止出现警告。