\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. \@defaultunitspt数値のみが指定された場合は引数に追加し、その値を\@tempdimb(サイズ引数の場合)または\@tempskipa(ベースラインスキップ引数の場合)に格納します。

  2. \f@size\f@baselineskip2つの引数からポイント単位(単位なし)の値に設定されます。\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}、あるいは単位の有無にかかわらず任意の組み合わせを呼び出すことができます。単位なしの場合は暗黙的にポイント単位であると想定されます。

関連情報