\Scalefont 未(严格)单调缩放

\Scalefont 未(严格)单调缩放

我注意到,当使用命令\scalefont{}(来自scalefnt包)时,缩放因子的减小并不总是会导致显示字体大小的相应减小。

为了说明,考虑

\documentclass{book}
\textwidth=5.76in
\usepackage{scalefnt}
\usepackage{lipsum}
\usepackage{xcolor}

\begin{document}
\thispagestyle{empty}
\parindent 0pt
\large

\textcolor{red}{\LARGE{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}
\textcolor{red}{\LARGE{\scalefont{0.99}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.98}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.97}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.96}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.95}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.94}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.93}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\textcolor{red}{\LARGE{\scalefont{0.92}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}
\\[3pt]
\textcolor{red}{\LARGE{\scalefont{0.91}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION \textcolor{black}{(0.91)}}}}}
\\[8pt]
\lipsum[13]
\end{document}

其输出是

在此处输入图片描述

文本宽度设置为 5.76 英寸,并且输出中的第一个红色标题没有应用任何缩放。

应用于第二至第八个标题的缩放因子分别为 0.99、0.98、0.97、0.96、0.95、0.94、0.93 和 0.92。

但是,检查输出后发现没有实际的扩展一直持续到第十个标题——其与 0.91 的比例因子相关。

问题:是什么原因(可能)导致了缩放因子和实际输出之间的这种异常,根据 MWE,这似乎是经常发生的?有没有办法纠正这种现象,以便缩放因子的变化总是会产生一些影响——因为正如我们所见,巨大差距当字体大小最终减小时会发生这种情况,而人们在此过程中所期望的逐渐减小似乎目前无法实现?

谢谢。

答案1

注意 LaTeX 会发出警告。每次选择字体大小都会产生警告,例如

LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <15.89755> not available
(Font)              size <17.28> substituted on input line 20.

在跑步结束时

LaTeX Font Warning: Size substitutions with differences
(Font)              up to 1.38245pt have occurred.

Computer Modern 设置为仅使用一组固定的大小,以避免用位图字体填满您的磁盘,尽管在过去的 25 年左右的时间里,默认情况下并未使用位图字体,而是使用可扩展的 type1 版本,并且无论如何位图都不会填满您的磁盘。

如果你选择或多或少的任何其他字体集,它将按指定比例缩放,

\usepackage{lmodern}

使用拉丁现代变体,或者如果你想要自然缩放计算机现代,请添加

\RequirePackage{fix-cm}

在文档的开始处。

无关,但注意\Large不接受参数,因此使用\Large ...\Large{...}并将段落末尾包含在其范围内以获得适当大的基线跳过(这就是为什么图像中的大文本没有在合适的基线上间隔开的原因)

答案2

导致问题的原因:a) 字体必须是可缩放的 b) 您需要用 分隔每行\par。因为 TeX 会将所有行视为一个段落,并应用一次字体大小。如果您可以使用 LuaLaTeX,它会为您提供更多使用该包的选项fontspec

% run with LuaLaTeX or pdfLaTeX
\documentclass{book}
\textwidth=5.76in
\usepackage{scalefnt}
\usepackage{xcolor}
\ifdefined\directlua
\usepackage{fontspec}
  \setmainfont{texgyrepagella-regular.otf}[
     BoldFont = texgyrepagella-bold.otf ,
     ItalicFont = texgyrepagella-italic.otf ,
     BoldItalicFont = texgyrepagella-bolditalic.otf ]
\else
  \usepackage{mathpazo}
\fi
\begin{document}
\thispagestyle{empty}
\parindent 0pt
\large

\textcolor{red}{\LARGE{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}\par
\textcolor{red}{\LARGE{\scalefont{0.99}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.98}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.97}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.96}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.95}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.94}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.93}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.92}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}\par
\textcolor{red}{\LARGE{\scalefont{0.91}{\textbf{A TITLE TO ILLUSTRATE AN OBSERVATION}}}}

 \ExplSyntaxOn
  \dim_zero:N \l_tmpa_dim
  \dim_set:Nn \l_tmpa_dim {0.5pt}
  \dim_while_do:nNnn {\l_tmpa_dim} < {13pt} {
       \dim_add:Nn \l_tmpa_dim {1pt}
       \bfseries\fontsize{\l_tmpa_dim}{\l_tmpa_dim*1.2}\selectfont
       Fontsize\par
  }
\ExplSyntaxOff
\end{document}

在此处输入图片描述

相关内容