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{}{}\selectfont
documentado? É 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 }
\@defaultunits
é responsável por adicionarpt
ao 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)\f@size
e\f@baselineskip
são definidos com o valor em pontos (sem unidade) dos dois argumentos para\fontsize
\f@linespread
é definido a partir do primeiro argumento, ou seja, de\baselinestretch
- É definida uma macro temporária para atualização dos valores, que será executada no próximo
\selectfont
comando; a macro \size@updatewill then redefine itself to be
\relax`
Observe que \size@update
também conterá uma redefinição de \strutbox
, portanto, a \strut
sempre 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.