Как работает \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}или любую смесь с единицами измерения или без них; без единиц измерения подразумевается, что они выражены в пунктах.

Связанный контент