Como \fontsize{}{} funciona internamente?

Como \fontsize{}{} funciona internamente?

encontrei esta perguntaComo \fontsize{}{} funciona?enquanto procurava entender o \selectfont, mas fiquei desapontado ao ver que o termo "trabalho" se referia ao seu uso e não à sua implementação, ou seja, como ele realmente funciona internamente.

Onde está \fontsize{}{}\selectfontdocumentado? É errado pensar que deveria ser incluído no source2e? Se sim, por quê?

Responder1

Aqui está o código:

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é responsável por adicionar ptao argumento se apenas um número aparecer, armazenando o valor em \@tempdimb(para o argumento de tamanho) ou em \@tempskipa(para o argumento de salto de linha de base)

  2. \f@sizee \f@baselineskipsão definidos com o valor em pontos (sem unidade) dos dois argumentos para\fontsize

  3. \f@linespreadé definido a partir do primeiro argumento, ou seja, de\baselinestretch
  4. É definida uma macro temporária para atualização dos valores, que será executada no próximo \selectfontcomando; a macro \size@update will then redefine itself to be\relax`

Observe que \size@updatetambém conterá uma redefinição de \strutbox, portanto, a \strutsempre caberá no tamanho da fonte atual.

Você pode ligar \fontsize{3cm}{4cm}ou \fontsize{15}{18}qualquer mistura com ou sem unidades; um sem unidade é implicitamente assumido como estando em pontos.

informação relacionada