\fontsize{}{} 内部如何工作?

\fontsize{}{} 内部如何工作?

我发现这个问题\fontsize{}{} 如何工作?在寻求对的理解时\selectfont,但我很失望地看到“工作”一词指的是它的用法而不是它的实现,即它在内部实际上是如何工作的。

文档在哪里\fontsize{}{}\selectfont?认为它应该包含在 source2e 中是错误的吗?如果是,为什么?

答案1

代码如下:

2400 \DeclareRobustCommand\fontsize[2]
2401    {\set@fontsize\baselinestretch{#1}{#2}}

2697 \def\set@fontsize#1#2#3{%
2698     \@defaultunits\@tempdimb#2pt\relax\@nnil
2699     \edef\f@size{\strip@pt\@tempdimb}%
2700     \@defaultunits\@tempskipa#3pt\relax\@nnil
2701     \edef\f@baselineskip{\the\@tempskipa}%
2702     \edef\f@linespread{#1}%
2703     \let\baselinestretch\f@linespread
2704       \def\size@update{%
2705         \baselineskip\f@baselineskip\relax
2706         \baselineskip\f@linespread\baselineskip
2707         \normalbaselineskip\baselineskip
2708         \setbox\strutbox\hbox{%
2709           \vrule\@height.7\baselineskip
2710                 \@depth.3\baselineskip
2711                 \@width\z@}%
2712         \let\size@update\relax}%
2713   }
  1. \@defaultunits如果只出现一个数字,则负责添加pt到参数中,并将值存储在\@tempdimb(对于大小参数)或\@tempskipa(对于基线跳过参数)中

  2. \f@size\f@baselineskip设置为两个参数的点值(无单位)\fontsize

  3. \f@linespread从第一个参数设置,即从\baselinestretch
  4. 定义了一个临时宏来更新值,该宏将在下一个\selectfont命令中执行;宏 \size@update will then redefine itself to be\relax`

请注意,\size@update还将包含的重新定义\strutbox,因此\strut将始终适合当前字体大小。

您可以将\fontsize{3cm}{4cm}或称为\fontsize{15}{18}或任何有单位或无单位的混合物;无单位的混合物被隐含地假定为以点为单位。

相关内容