我遇到了一些缺少字体形状的问题。MWE:
\documentclass{article}
\usepackage[default]{lato}
\usepackage[T1]{fontenc}
\begin{document}
\section{Lato font}
\begin{itemize}
\item \textbackslash{}textsc \textsc{No Small Caps!}
\item \textbackslash{}emph \emph{works as expected}
\item \textbackslash{}itshape\textbackslash{}scshape
{\itshape\scshape Normal font}
\item \textbackslash{}emph\{\textbackslash{}textsc{}\{\}\}
\emph{\textsc{Also Generates Normal Font}}
\end{itemize}
\end{document}
得出的结果为:
使用默认字体会稍微好一些:
\documentclass{article}
\begin{document}
\section{Default font}
\begin{itemize}
\item \textbackslash{}textsc \textsc{Produces Small Caps}
\item \textbackslash{}emph \emph{works as expected}
\item \textbackslash{}itshape\textbackslash{}scshape
{\itshape\scshape Generates Small Caps, No Italics}
\item \textbackslash{}emph\{\textbackslash{}textsc{}\{\}\}
\emph{\textsc{Also Generates Small Caps, No Italics}}
\end{itemize}
\end{document}
几周前,我用相同样式的文件编译了一个文档,该文档可以使用 Lato 字体,并且可以毫无问题地组合斜体/小型大写字母:
如何才能让我的字体再次起作用?
系统信息:
- Debian Linux(测试)
- texlive 软件包 2017.20171128-1_all
- texlive-fonts-extra 2017.20171128-1_all.deb
- latex——版本
pdfTeX 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian)
kpathsea 版本 6.2.3
版权所有 2017 Han The Thanh (pdfTeX) 等。
使用 libpng 1.6.32 编译;使用 libpng 1.6.34
使用 zlib 1.2.8 编译;使用 zlib 1.2.8
使用 poppler 版本 0.57.0 编译
答案1
Lato 不再提供小写字母了。手册中
4.1.2 小型大写字母
由于 Lato 字体系列尚未提供“真正的”小型大写字母,因此该
lato
软件包的早期版本提供了伪造的小型大写字母(通过缩小大写字母),效果非常差。此外,没有方便的方法使用 XeTeX 或 LuaTeX 引擎和原生 OpenType 字体生成伪造的小型大写字母。出于这些原因,从软件包 3.0 版开始,不再提供伪造的小型大写字母
lato
。无论如何,LaTeX 应该会自动用正常形状替换缺失的小型大写字母形状。
答案2
如果您加载同时包含小型大写字母和斜体小型大写字母的字体,它就会起作用。
例如,
\documentclass{article}
\usepackage{cfr-lm}
\begin{document}
\section{Latin Modern Roman}
\begin{itemize}
\item \textbackslash{}textsc \textsc{Produces Small Caps}
\item \textbackslash{}emph \emph{works as expected}
\item \textbackslash{}itshape\textbackslash{}scshape
{\itshape\scshape Generates Italic Small Caps}
\item \textbackslash{}emph\{\textbackslash{}textsc{}\{\}\}
\emph{\textsc{Also Generates Italic Small Caps}}
\end{itemize}
\end{document}
至少,如果支持包适当地“扩展”NFSS,它就可以工作。lmodern
例如,即使cfr-lm
和lmodern
使用相同的字体,上述方法也无法与一起使用。
\documentclass{article}
\usepackage{lmodern}
\begin{document}
\section{Latin Modern Roman}
\begin{itemize}
\item \textbackslash{}textsc \textsc{Produces Small Caps}
\item \textbackslash{}emph \emph{works as expected}
\item \textbackslash{}itshape\textbackslash{}scshape
{\itshape\scshape Generates Small Caps, No Italics}
\item \textbackslash{}emph\{\textbackslash{}textsc{}\{\}\}
\emph{\textsc{Also Generates Small Caps, No Italics}}
\end{itemize}
\end{document}
斜体小写字母缺失,因为 NFSS 不支持它们,并且lmodern
将其对拉丁现代字体的支持限制在 NFSS 支持的字体尺寸范围内。这里的关键问题是小写字母和斜体都被编码为“字体形状”,因此在 NFSS 提供的框架内,它们无法组合在一起,除非使用一些技巧。