![带 cfr-lm 的无衬线字体](https://linux22.com/image/427720/%E5%B8%A6%20cfr-lm%20%E7%9A%84%E6%97%A0%E8%A1%AC%E7%BA%BF%E5%AD%97%E4%BD%93.png)
该cfr-lm
包支持拉丁现代的旧式数字。它基于nfssext-cfr
定义\lnstyle
宏切换回衬线数字的包。通常我通过使用切换到无衬线字体\renewcommand{\familydefault}{\sfdefault}
,但在这种情况下,受影响的文本\lnstyle
不会切换到无衬线字体。
\documentclass{article}
% \usepackage{nfssext-cfr} % defines \lnstyle, does not cause problems on its own
\usepackage{cfr-lm} % switches to Latin Modern with old style numerals
\renewcommand{\familydefault}{\sfdefault} % switch to sans serif
% \renewcommand{\lnstyle}{\fontfamily{clm2s}\selectfont} % hard coded fix
\begin{document}
test 123 % sans serif old style numerals
\lnstyle test 123 % should be sans serif lining numerals
\end{document}
这种行为是一个错误还是我犯了一个错误?
答案1
一张图片也许能有所帮助。
这只是\rmfamily
直立形状。粗体、斜体、粗体斜体、小写字母。乘以\sffamily
和\ttfamily
……并非所有字体特征都会存在于所有排列中,因此会搜索“最接近”的那个……
这只是处理旧的 7 位和 8 位字体时所需复杂性的冰山一角。
据我了解,在传统字体世界中,要激活字体功能或停用字体功能,软件包nfssext-cfr
会使用一组开关,这些开关会逐渐增加或减少之前上游打开/关闭的功能。因此,开关的效果在很大程度上取决于上下文。
该软件包假定 (1) 字体文件使用 Berry 方案命名;(2) 使用 NFSS 字母代码,如图所示j
;2
(3) 默认字体设置尚未重新定义。
平均能量损失
\documentclass{article}
\usepackage{cfr-lm} % calls nfssext-cfr
\newcommand\testtext{123,456,789 \fontname\font }
\begin{document}
%=======================
\begin{tabular}{lll}
Setting & Sample + font used & Code\\
\hline Package Default & \testtext& \\
+j & \ostyle\testtext& \verb|\ostyle|\\
-j & \lstyle\testtext& \verb|\lstyle|\\
+2 & \pstyle\testtext& \verb|\pstyle|\\
-2 & \tstyle\testtext& \verb|\tstyle|\\
+j+2 & \postyle\testtext& \verb|\postyle|\\
-j-2 & \tlstyle\testtext& \verb|\tlstyle|\\
+j-2 & \tostyle\testtext& \verb|\tostyle|\\
-j+2 & \plstyle\testtext& \verb|\plstyle|\\
No style & \regstyle\testtext& \verb|\regstyle|\\
No style +j & \regstyle\ostyle\testtext& \verb|\regstyle\ostyle|\\
No style +2 & \regstyle\pstyle\testtext& \verb|\regstyle\pstyle|\\
\end{tabular}
\end{document}
添加
以下 MWE 显示了三种字体系列,分别为普通字体、粗体、粗体斜体、斜体、小型大写字母和小型大写字母粗体;以及在字体功能不可用时选择的最近的字体。
平均能量损失
\documentclass{article}
\usepackage{cfr-lm} % calls nfssext-cfr
\newcommand\testtext{123,456,789 \fontname\font }
\newcommand\tv[1]{\regstyle\normalfont\texttt{\textbackslash #1}}
\newcommand\thesample[1]{%
\noindent #1
\begin{tabular}{lll}
Setting & Sample + font used & Code\\
\hline Package Default & \testtext& \\
+j & \ostyle\testtext& \tv{ostyle}\\
-j & \lstyle\testtext& \tv{lstyle}\\
+2 & \pstyle\testtext& \tv{pstyle}\\
-2 & \tstyle\testtext& \tv{tstyle}\\
+j+2 & \postyle\testtext& \tv{postyle}\\
-j-2 & \tlstyle\testtext& \tv{tlstyle}\\
+j-2 & \tostyle\testtext& \tv{tostyle}\\
-j+2 & \plstyle\testtext& \tv{plstyle}\\
No style & \regstyle\testtext& \tv{regstyle}\\
No style +j & \regstyle\ostyle\testtext& \tv{regstyle}\tv{ostyle}\\
No style +2 & \regstyle\pstyle\testtext& \tv{regstyle}\tv{pstyle}\\
\end{tabular}
\par\bigskip
}
\begin{document}
%=======================
\rmfamily
\thesample{rmfamily normal}
\bfseries
\thesample{rmfamily bold}
\itshape
\thesample{rmfamily bold italics}
\mdseries
\thesample{rmfamily italics}
\upshape
\scshape
\thesample{rmfamily small caps}
\bfseries
\thesample{rmfamily small caps bold}
\upshape
\mdseries
%=======================
\sffamily
\thesample{sffamily normal}
\bfseries
\thesample{sffamily bold}
\itshape
\thesample{sffamily bold italics}
\mdseries
\thesample{sffamily italics}
\upshape
\scshape
\thesample{sffamily small caps}
\bfseries
\thesample{sffamily small caps bold}
\upshape
\mdseries
%=======================
\ttfamily
\thesample{ttfamily normal}
\bfseries
\thesample{ttfamily bold}
\itshape
\thesample{ttfamily bold italics}
\mdseries
\thesample{ttfamily italics}
\upshape
\scshape
\thesample{ttfamily small caps}
\bfseries
\thesample{ttfamily small caps bold}
\upshape
\mdseries
\end{document}