Tipografia

A maior parte do que as pessoas leem na web é texto, e a maioria da sensação que uma página transmite vem de como esse texto está configurado. Mude a fonte, ajuste o espaçamento entre linhas, limite o comprimento da linha, e o mesmo parágrafo passa de apertado e desagradável para calmo e legível. Nada disso é decoração. É tipografia, o punhado de propriedades CSS que decide o quão confortável suas palavras são de ler, e este capítulo é o passeio pelos que você usa diariamente.
Escolhendo uma fonte
A propriedade que escolhe sua fonte é font-family, e você não lhe passa apenas uma fonte, mas uma lista. Esta lista é a pilha de fontes: o navegador tenta a primeira fonte, e se ela não estiver disponível, volta para a próxima, e assim por diante.
body {
font-family: "Helvetica Neue", Arial, sans-serif; /* tenta Helvetica, depois Arial, depois qualquer sans-serif */
}O último nome deve sempre ser uma família genérica como sans-serif ou serif. Essa é sua rede de segurança: se nenhuma das fontes nomeadas estiver no dispositivo do leitor, o navegador ainda mostra algo sensato em vez de um padrão que você não escolheu. Nomes de fonte com espaços vão entre aspas; nomes de uma só palavra não precisam delas.
font-family recebe uma lista, não uma fonte, e o navegador usa a primeira que conseguir encontrar. Sempre termine a lista com uma família genérica como sans-serif para que haja um fallback seguro. Envolva qualquer nome de fonte com espaços em aspas. Dimensionando texto
Você define o tamanho do texto com font-size. Você pode atribuir a ele um valor em pixels, mas o tamanho que você deve usar é o rem, uma unidade ligada ao tamanho de fonte base da página. Um rem é igual ao tamanho de texto padrão do navegador, que geralmente é 16px, então 1rem é um tamanho de leitura normal e 1.25rem é um pouco maior.
body {
font-size: 1rem; /* o tamanho de leitura base, geralmente 16px */
}
h1 {
font-size: 2rem; /* o dobro do tamanho base */
}font-size define o tamanho do texto, e rem é a unidade para usar. Um rem é o tamanho de texto normal do navegador, então 1rem é regular e 2rem é o dobro. Evite dimensionar corpo de texto em px, que é o que os próximos níveis exploram. Peso e estilo
Duas propriedades mudam a forma das suas letras. font-weight controla o quão negrito o texto é, e font-style ativa itálicos.
strong {
font-weight: bold; /* traços mais pesados e espessos */
}
em {
font-style: italic; /* inclinado */
}bold e normal são as palavras-chave de peso de todos os dias. Para itálicos, italic inclina o texto e normal o mantém vertical.
font-weight torna o texto mais negrito ou mais leve, e font-style: italic o inclina. As palavras-chave bold e normal cobrem a maioria do que você precisa dia a dia. Use itálicos para ênfase, não para parágrafos inteiros, que ficam difíceis de ler. Espaçamento que torna o texto legível
Texto confortável é principalmente sobre espaço. line-height controla o espaço entre linhas, e dar a ele um pouco de espaço torna um parágrafo muito mais fácil de ler.
p {
line-height: 1.5; /* uma vez e meia o tamanho da fonte */
}Use um número simples como 1.5 sem unidade. Isso significa "uma vez e meia o tamanho da fonte", então o espaçamento cresce em passo com o texto. Linhas apertadas são uma das razões mais comuns pelas quais uma página parece difícil de ler, e este valor resolve a maioria disso.
line-height define o espaço entre linhas, e um valor em torno de 1.5 torna o texto muito mais fácil de ler. Escreva como um número simples sem unidade para que o espaçamento cresça com o texto. Linhas apertadas são uma razão principal pela qual uma página parece difícil de ler, e isso resolve a maioria. Alinhando e decorando
Três propriedades lidam com alinhamento e toques finais. text-align move o texto para esquerda, direita ou centro. text-transform muda o caso, como fazer texto em maiúsculas. E text-decoration adiciona ou remove linhas como sublinhados.
h1 {
text-align: center; /* centra o cabeçalho */
}
.button {
text-transform: uppercase; /* mostra em maiúsculas */
text-decoration: none; /* remove o sublinhado do link */
}text-transform: uppercase mostra o texto em maiúsculas sem você redigitá-lo, então o conteúdo original permanece como palavras normais. Sublinhados são adicionados ou removidos com text-decoration.
text-align move texto para esquerda, direita ou centro, text-transform: uppercase o mostra em maiúsculas, e text-decoration adiciona ou remove linhas como sublinhados. Maiúsculas em CSS mantém seu texto real como palavras normais, então você nunca o redigita em maiúsculas. Use text-decoration: none quando quiser remover o sublinhado de um link. A abreviatura de fonte e herança
Propriedades de fonte têm um traço útil: elas descem. Defina font-family no <body> e cada parágrafo, cabeçalho e link dentro a herda, então você raramente se repete.
body {
font-family: system-ui, sans-serif; /* tudo dentro herda isso */
line-height: 1.5;
}Por causa disso, a maioria de sua tipografia vive em um lugar perto do topo de sua folha de estilo, e elementos individuais apenas sobrescrevem o que precisam diferir.
font-family no body uma vez e tudo a herda. Isso mantém sua tipografia em um lugar perto do topo da folha de estilo. Elementos individuais apenas sobrescrevem os bits que precisam mudar. 
