95% do design é tipografia — e quase todo texto que você lê hoje passou por decisões de alguém

Apostila completa de Tipografia: fontes, escala e hierarquia

Tipografia é a disciplina de dar forma ao texto para que ele seja lido, compreendido e sentido do jeito certo. Esta apostila cobre a anatomia da letra, as classificações de tipos, como escolher e parear fontes, escala e hierarquia, tipografia na web com CSS, fontes variáveis e recursos OpenType, acessibilidade e internacionalização, e como montar um sistema tipográfico com tokens — sempre com o olho no que estúdios e produtos pedem de designers e front-ends.

10 módulosAnatomia · ClassificaçãoEscala · HierarquiaVariable fonts · OpenTypeWCAG · i18n · TokensExercícios com gabarito
MÓDULO 01 · BÁSICO

O que é tipografia e por que importa

Objetivo: entender o que a tipografia faz por um texto, separar os termos que todo mundo confunde (fonte, tipo, família, glifo) e ver onde ela aparece no trabalho.

1.1 Tipografia é a voz do texto

Duas páginas com as mesmas palavras podem comunicar coisas opostas: uma parece um contrato intimidador, a outra um convite. A diferença é tipografia — a escolha das fontes, o tamanho, o espaço entre linhas e letras, a largura da coluna, a hierarquia entre título e corpo. O leitor raramente percebe a tipografia conscientemente; ele percebe se o texto é fácil, confiável, agradável — e isso é resultado de decisões.

Para quem projeta interfaces, o peso é ainda maior: a maior parte de qualquer aplicativo é texto. Botões, rótulos, mensagens de erro, tabelas, menus. Acertar a tipografia é acertar a maior superfície do produto.

💡 A regra que organiza a apostila

Tipografia boa é invisível quando deve e expressiva quando pode. No corpo de texto longo, o objetivo é sumir: nada deve atrapalhar a leitura. Em títulos, marca e chamadas, a tipografia pode (e deve) ter personalidade. Saber em que registro você está é metade das decisões.

1.2 Fonte, tipo, família, glifo: os termos

TermoO que éExemplo
Tipo / typefaceO design das letras — a ideia, o desenhoHelvetica, Georgia, Inter
Fonte / fontUma instância concreta desse design: um arquivo, um peso, um estiloInter Bold Italic 16px; Inter-Bold.woff2
Família / familyO conjunto de fontes que formam um tipo: pesos, itálicos, largurasInter Thin → Black + itálicos
Glifo / glyphA forma visual de um caractere (ou de vários juntos)o desenho do "a"; a ligadura "fi"
Caractere / characterA unidade abstrata de texto (Unicode), independente da formaU+0061 LATIN SMALL LETTER A
Peso / weightA espessura do traçoRegular (400), Bold (700)
Estilo / styleVariação dentro da famíliaItalic, Condensed, SmallCaps

A tabela esconde duas hierarquias. Do lado do texto: o caractere é a unidade abstrata (o "a" como ideia, com um número no Unicode) e o glifo é a forma concreta que aparece na tela — e os dois não são 1 para 1. A ligadura "fi" é um glifo para dois caracteres; o "á" pode chegar como um caractere só ou como dois ("a" + acento combinante), detalhe que morde em PT-BR. Do lado do desenho: o tipo é o projeto (a ideia das letras), a família é a coleção que nasce dele (todos os pesos, itálicos e larguras) e a fonte é um arquivo concreto — um recorte da família num peso e num estilo. Analogia: o tipo é a composição, a família é a discografia, a fonte é uma faixa gravada.

Na web essa distinção vira código: font-family nomeia o tipo/família; cada @font-face carrega uma fonte (um .woff2); font-weight e font-style só escolhem qual fonte da família usar. Você licencia um tipo (ou a família inteira), mas entrega arquivos de fonte no site — por isso o peso em KB e a licença de webfont se contam por arquivo. Na conversa do dia a dia "fonte" e "tipo" viram sinônimos e ninguém morre por isso; em contexto técnico — CSS, licenciamento, foundries — a distinção evita erro.

1.3 Legibilidade × leiturabilidade

Um tipo muito legível pode ser mal composto (linha de 200 caracteres, entrelinha apertada) e ficar cansativo. Os dois trabalham juntos.

1.4 Onde a tipografia aparece no trabalho

💼 Mercado de trabalho

Tipografia é a habilidade que mais separa um portfólio "ok" de um "contrata já". Perguntas de abertura: "Qual a diferença entre fonte e tipo?", "O que é legibilidade vs leiturabilidade?", "Como você escolheria a fonte de um produto?" (módulo 4). Demonstrar que você pensa no leitor e no contexto de uso, e não em "qual fonte é bonita", já sinaliza maturidade.

✏️ Exercício 1 — Termos no lugar certo

Classifique cada item como tipo, fonte, família, glifo ou caractere: (a) "Roboto"; (b) o arquivo Roboto-MediumItalic.ttf; (c) o desenho da ligadura "ff"; (d) "A letra à com crase"; (e) o conjunto Roboto Thin/Light/Regular/Medium/Bold/Black com seus itálicos.

Gabarito: (a) tipo (o design); (b) fonte (instância concreta: peso Medium, estilo Italic, formato TTF); (c) glifo (forma visual, aqui de dois caracteres juntos); (d) caractere (a unidade abstrata "à", U+00E0 — independente de como é desenhada); (e) família (todas as fontes que compõem o tipo).

MÓDULO 02 · BÁSICO

Anatomia da letra

Objetivo: aprender o vocabulário das partes da letra e das linhas de referência — porque é isso que permite descrever, comparar e escolher tipos com precisão.

2.1 As linhas de referência

LinhaO que marca
BaselineA linha sobre a qual as letras "se apoiam". É a referência do CSS vertical-align e da métrica da fonte.
x-heightAltura das minúsculas sem ascendente (o "x"). A medida mais importante para leitura em tela: x-height alto = letras mais "cheias" no mesmo corpo.
Cap heightAltura das maiúsculas. Costuma ser menor que a dos ascendentes.
Ascender lineTopo das hastes que sobem (b, d, h, k, l).
Descender lineBase das hastes que descem (g, j, p, q, y).
Mean line / midlineTopo da x-height.
Veja: as cinco linhas, na mesma palavra
Hxbpg ascender line — topo do b cap height — topo do H mean line — topo do x BASELINE descender line — base do p, g
baseline — a linha onde as letras assentam faixa da x-height demais linhas de referência

O topo do H (cap height) fica um pouco abaixo do topo do b (linha dos ascendentes) — nesta fonte a diferença é de ~5%, mas quase toda fonte a tem. A faixa verde é a x-height: a zona entre a baseline e a mean line onde cabe o corpo da maioria das minúsculas — é a parte da letra que o olho mais percorre num texto corrido.

A soma ascendente + x-height + descendente (mais um respiro) é o corpo — historicamente o bloco de metal, hoje a métrica que o font-size escala. Por isso dois tipos no mesmo font-size podem parecer tamanhos diferentes: o que você percebe é a x-height.

Veja: mesma medida, tamanhos diferentes
x-height ALTA
Hamburgo

Inter, 44 px

x-height BAIXA
Hamburgo

EB Garamond, 44 px

As duas palavras têm exatamente o mesmo font-size — e a da esquerda parece bastante maior. É a x-height que o olho lê como "tamanho". É por isso que trocar de fonte mantendo o mesmo font-size quase sempre obriga a reajustar a escala inteira, e por isso fontes de x-height alta funcionam melhor em corpos pequenos e em ecrã.

2.2 Partes da letra

Veja: onde estão as serifas
COM serifa (serifada) H n T

Libre Baskerville. Cada ponto vermelho marca uma serifa — o pequeno traço transversal no fim de uma haste. O H tem quatro; o n, três (o topo da haste esquerda e os dois pés); o T, quatro (as pontas do braço e os dois pés).

SEM serifa (sans-serif) H n T

Inter. As mesmas hastes acabam a direito — o remate chama-se terminal, não serifa.

A serifa não é decoração gratuita: nasceu do gesto do cinzel e da pena, e tem um efeito prático — alinha as letras numa linha horizontal implícita e ajuda a distinguir formas parecidas. Daí a ideia (muito repetida e pouco comprovada) de que serifadas se leem melhor em papel. O que a evidência sustenta é mais modesto: o que decide legibilidade é a familiaridade, a x-height e a abertura das contraformas, não a presença da serifa.

2.3 Contraste e eixo

Veja: contraste alto, médio e nenhum
contraste ALTO
Oo

Playfair Display. Os lados são grossos e o topo e a base afinam quase até desaparecer. Elegante em título; frágil a 12 px, onde os finos somem.

contraste MÉDIO
Oo

EB Garamond. A variação existe e é suave — o eixo é inclinado, herdado do gesto da pena.

contraste NENHUM
Oo

Poppins. Espessura constante em toda a volta. Robusta em qualquer tamanho e sem eixo perceptível.

Incline a cabeça e olhe para o "O" do meio: a parte fina não está exatamente no topo, está ligeiramente rodada. Essa inclinação é o eixo — e é o vestígio de uma pena de ponta larga segurada em ângulo. No Playfair o eixo é vertical, porque nasceu do buril e não da pena.

2.4 O espaço entre as letras

Veja: o mesmo texto, espaçamentos diferentes
tracking apertado −0.03em
AVIÃO Today
normal (0)
AVIÃO Today
tracking largo +0.14em
AVIÃO Today

Duas regras que saem daqui e valem para sempre. Títulos grandes pedem tracking negativo — o espaço entre letras cresce visualmente com o corpo, e o que estava certo a 16 px fica frouxo a 60 px. E maiúsculas pedem tracking positivo: foram desenhadas para conviver com minúsculas, não umas com as outras. O "AVIÃO" da terceira coluna respira; o da primeira aperta.

💡 x-height é o que você "sente" como tamanho

Ao comparar fontes para corpo de texto em tela, ignore o nome e olhe a x-height e a abertura. Tipos como Inter, Source Sans, IBM Plex e Georgia têm x-height generoso e aberturas amplas — por isso "seguram" bem em 14–16px. Um tipo lindo com x-height baixo vai exigir um font-size maior para a mesma legibilidade, e aí a comparação muda.

✏️ Exercício 2 — Descreva a letra

Sem usar o nome da fonte, descreva o "a" minúsculo de duas fontes que você tenha à mão (ex.: a do sistema e uma do Google Fonts) usando: número de andares (um ou dois), bojo, contraforma, abertura, contraste, presença de serifa/gota. Depois diga qual das duas você usaria para uma tabela de dados densa e por quê.

Gabarito (modelo de resposta): "A fonte X tem 'a' de dois andares, bojo fechado, contraforma pequena, abertura estreita, contraste baixo, terminal reto — compacta. A fonte Y tem 'a' de dois andares, contraforma ampla, abertura larga, gota no terminal — mais legível em corpo pequeno." Para tabela densa: a de abertura mais ampla e x-height mais alto, com numerais tabulares disponíveis (módulo 7), porque a leitura é de relance e em corpo reduzido.

MÓDULO 03 · BÁSICO

Classificação de tipos

Objetivo: reconhecer as grandes categorias de tipos, o que cada uma comunica e onde funciona — para escolher com intenção e conversar com outros designers.

3.1 Serifadas

SubgrupoMarcas visuaisHumor / usoExemplos
Humanista / old-styleEixo inclinado, contraste moderado, serifas em cunhaCaloroso, orgânico; leitura longa, livrosGaramond, Sabon, Georgia
TransicionalEixo quase vertical, contraste maior, serifas mais retasNeutro, institucionalTimes New Roman, Baskerville
Moderna / didoneEixo vertical, contraste extremo, serifas finas e retasElegante, "moda", editorial de luxo; frágil em corpo pequenoDidot, Bodoni
Slab / egípciaSerifas grossas, retangulares, pouco contrasteFirme, "máquina", chamadas e brandingRockwell, Roboto Slab, Zilla
Veja: as quatro serifadas, na mesma palavra
Hamburgevons
EB Garamond
Humanista / old-style
Eixo inclinado, contraste suave, serifas em cunha. A perna do R sai em curva.
Hamburgevons
Libre Baskerville
Transicional
Eixo quase vertical, contraste maior, serifas mais retas e finas.
Hamburgevons
Playfair Display
Moderna / didone
Contraste extremo, serifas em fio. Repare como o fino quase desaparece aqui.
Hamburgevons
Roboto Slab
Slab / egípcia
Serifas retangulares e grossas, contraste quase nulo. Parece construída, não escrita.

Leia da esquerda para a direita e verá quatrocentos anos em quatro palavras: a serifa começa em cunha, como o gesto da pena; endireita-se; afina até virar um fio; e depois, na era industrial, engrossa para aguentar cartaz. O "g" e o "R" são os melhores diagnósticos — se quiser identificar uma fonte, olhe primeiro para eles.

Por que "Hamburgevons"? Não é uma palavra — é a string de amostra padrão no design de tipos (há variantes: "Hamburgefonts", "Handgloves"). Em ~11 letras junta quase todas as formas que definem um tipo: ascendentes (h, b, l), descendente (g), curvas (o, e), os arcos (m, n, u), a diagonal (v) e o trio que mais varia entre fontes — a, g, e. Um olhar a esta palavra diz mais que um parágrafo aleatório.

3.2 Sans-serif (sem serifa)

SubgrupoMarcas visuaisHumor / usoExemplos
GrotescaInício do sans; leve irregularidade, aberturas fechadasIndustrial, honestaFranklin Gothic, Akzidenz
Neo-grotescaMuito neutra, uniforme, aberturas fechadas"Sem voz", corporativa, sinalizaçãoHelvetica, Arial, Inter
HumanistaProporções caligráficas, aberturas amplas, contraste sutilAmigável, muito legível em UIFrutiger, Segoe UI, Source Sans, Open Sans
GeométricaConstruída de círculos e retas; "o" quase circularModerna, clean, um tanto fria; ótima para títulosFutura, Century Gothic, Poppins, Montserrat
Veja: as sans, e o que as separa
Hamburgevons
Libre Franklin
Grotesca
A primeira geração de sans: leve irregularidade, aberturas ainda fechadas, um "g" de dois andares. Honesta, não neutra.
Hamburgevons
Inter
Neo-grotesca
Muito neutra e uniforme. Terminais horizontais, aberturas fechadas. Descende da grotesca, sem a irregularidade.
Hamburgevons
Source Sans 3
Humanista
Proporções caligráficas, aberturas amplas, leve contraste. Lê melhor em texto corrido e UI.
Hamburgevons
Poppins
Geométrica
O “a” é um círculo com haste e o “g” tem um só andar. Construída com compasso.
Hamburgevons
Archivo Black
Grotesca pesada
Peso extremo, contraformas apertadas. Feita para ocupar espaço, não para ler.
Hamburgevons
Anton
Display condensada
Muito estreita e alta. Só serve em título — em texto corrido é ilegível.

O teste rápido para distinguir geométrica de grotesca é o “a” minúsculo: na geométrica é um círculo perfeito com uma haste colada (um andar); na grotesca e na humanista tem uma barriga e uma curva por cima (dois andares). Compare o "a" de "Hamburgevons" na Poppins com o da Inter — é a diferença mais fácil de treinar.

3.3 As outras categorias

Veja: as categorias restantes
Hamburgevons
Dancing Script
Script casual
Gesto solto, letras ligadas. Nunca em maiúsculas: as ligações partem-se.
Hamburgevons
Pinyon Script
Script formal
Caligráfica, contraste alto de pena fina. Convites, diplomas, rótulos de luxo.
Hamburgevons
Caveat
Informal / brush
Parece marcador. "Artesanal", anotação, humano — desde que curto.
Hamburgevons
UnifrakturMaguntia
Blackletter / gótica
A "letra medieval" — a Textura de Gutenberg. Só cabeçalho, rótulo, brasão.
Hamburgevons
JetBrains Mono
Monoespaçada
Todos os caracteres ocupam a mesma largura — repare no espaço em volta do "a".
Hamburgevons
Oswald
Condensada
Grotesca espremida na largura. Cabe mais por linha; impacto vertical em manchete.
Hamburgevons
Lora itálico
Itálico verdadeiro
Não é a vertical inclinada: as formas mudam. Compare este "a" com o da Lora normal.

A última merece atenção: um itálico verdadeiro é um desenho diferente, mais próximo da caligrafia, e não uma versão inclinada da romana. Quando o navegador não encontra o itálico e inclina a vertical por conta própria (faux italic), o resultado é reconhecivelmente pior — as curvas ficam distorcidas e a espessura desequilibra-se.

💡 "Body text" e "display" não são categorias — são papéis

Quase toda categoria séria vem em cortes de texto e cortes de display. O corte de texto (às vezes chamado "body", "text" ou o eixo opsz baixo) é mais robusto: x-height mais alto, contraste menor, espaçamento mais folgado, serifas mais firmes — para aguentar 10–16 px. O corte de display tem detalhe fino, contraste maior e espaçamento apertado — só brilha grande. Por isso "que fonte para o corpo do artigo?" pergunta pelo papel (texto), não por uma categoria: uma humanista serif, uma humanista sans ou uma transicional no corte de texto servem; uma didone ou uma display, não.

3.4 As classificações formais (e por que são só um guia)

Existem sistemas — Vox-ATypI, o do British Standards, o do Bringhurst por época histórica. Eles ajudam a estudar e a nomear, mas tipos reais misturam características ("humanista com detalhes geométricos"), e categorias novas surgem. Use os rótulos para comunicar ("preciso de uma humanista sans com x-height alto") — não os trate como gavetas rígidas.

3.5 Superfamílias

Alguns projetos entregam serif + sans + mono (às vezes slab) com o mesmo esqueleto: mesmas proporções, x-height, pesos. São ouro para sistemas, porque combinam por construção. Ex.: IBM Plex (Sans/Serif/Mono/Condensed), Source (Sans/Serif/Code), Roboto (Sans/Serif/Slab/Mono), Recursive, Fira.

3.6 Linha do tempo: quem mudou a tipografia

As categorias de 3.1–3.3 não caíram do céu — cada uma resolveu um problema de uma época, quase sempre por causa de uma pessoa, uma oficina ou uma tecnologia nova. Conhecer a linhagem ajuda a escolher (e a parear) com intenção. A história não parou: continua nos arquivos de fonte e no carregamento web (Módulo 6) e nas fontes variáveis (Módulo 7).

  1. c. 1450 · Mainz

    Johannes Gutenberg

    Ourives e impressor

    Tipos móveis de metal + prensa. A sua Bíblia de 42 linhas usa uma Textura (blackletter) que imita o manuscrito gótico — o tipo ainda tentava parecer escrita à mão. exemplo: Textura · fonte: UnifrakturMaguntia

  2. 1470–1501 · Veneza

    Nicolas Jenson · Aldus Manutius & Francesco Griffo

    Impressores e gravadores de punção

    Jenson desenha a primeira romana verdadeiramente legível — base de todas as humanistas. Trinta anos depois, Manutius e Griffo criam o itálico para caber mais texto no livro de bolso, e o "Bembo". O gesto: a barra do "e" é inclinada, como a da pena. exemplo: humanista & itálico · fonte: EB Garamond

  3. c. 1530 · Paris

    Claude Garamond

    Gravador de punção

    Refina a old-style francesa a tal ponto que os seus tipos (e os do seu sucessor Jean Jannon) definem a leitura de livro por 200 anos. "Garamond" hoje é um nome genérico para dezenas de revivals. exemplo: old-style · fonte: EB Garamond

  4. c. 1722 · Londres

    William Caslon

    Gravador de punção e fundidor

    A workhorse inglesa — robusta, sem gênio mas sempre funcional. "When in doubt, use Caslon." A Declaração de Independência dos EUA foi composta nela. exemplo: Caslon · fonte: Libre Caslon Text

  5. 1757 · Birmingham

    John Baskerville

    Impressor (e fabricante de laca)

    Papel mais liso, tinta mais preta, prensa mais precisa → pôde aumentar o contraste e endireitar o eixo. Nasce a transicional, a ponte entre a old-style e a didone. O gesto: eixo quase vertical, serifas finas e afiadas, o "g" de bojo aberto. exemplo: transicional · fonte: Libre Baskerville

  6. c. 1790 · Parma / Paris

    Giambattista Bodoni · Firmin Didot

    Impressores de corte

    Levam o contraste ao extremo e o eixo à vertical perfeita: a didone ("moderna"). Racionalista, glamorosa — e frágil em corpo pequeno. Até hoje é o alfabeto da moda. O gesto: o traço fino quase desaparece; a serifa é um fio reto, sem transição. exemplo: Didone · fonte: Playfair Display

  7. 1815–1816 · Inglaterra

    Vincent Figgins · Robert Thorne · William Caslon IV

    Fundidores da era industrial

    A publicidade quer berrar. Surgem as primeiras slab / egípcias (serifa grossa), as fat faces para cartaz e, em 1816, o primeiro tipo sem serifa ("Two Lines English Egyptian", de Caslon IV) — então achado feio e chamado "grotesco". exemplo: CARTAZ · fonte: Archivo Black · slab · Roboto Slab

  8. 1896 · Berlim

    Berthold — Akzidenz-Grotesk

    Fundição tipográfica

    A grotesca "de trabalho" que virou padrão de facto na Europa — e a semente direta da Helvetica e da Univers, sessenta anos depois. exemplo: grotesca · fonte: Inter (neo-grotesca próxima)

  9. 1919–1933 · Weimar / Alemanha

    Bauhaus — Herbert Bayer · Paul Renner · Jan Tschichold

    Escola de design e tipógrafos

    "A forma segue a função": só minúsculas, geometria pura. Renner desenha a Futura (1927, a geométrica definitiva) e Tschichold escreve Die neue Typographie (1928) — assimetria, sans, grelha. O gesto: o "o" é um círculo perfeito e o "a" tem um só andar. exemplo: geométrica · fonte: Poppins (Futura-like)

  10. 1932 · Londres

    Stanley Morison — Times New Roman

    Consultor tipográfico da Monotype / The Times

    Encomendada para o jornal The Times: uma transicional compacta, econômica em papel, resistente em corpo pequeno. Tornou-se, por décadas, o tipo mais visto do mundo. exemplo: jornal · fonte: Lora (transicional de tela)

  11. 1957 · Suíça

    Max Miedinger & Eduard Hoffmann (Helvetica) · Adrian Frutiger (Univers)

    Designers e fundições Haas / Deberny & Peignot

    No mesmo ano nascem as duas neo-grotescas que definem o Estilo Internacional Suíço: neutralidade absoluta, grelha, "a tipografia não deve ter voz". A Univers estreia um sistema numerado de pesos e larguras. O gesto: terminais cortados na horizontal, aberturas apertadas (o "c" quase fecha). exemplo: neutra · fonte: Inter (neo-grotesca)

  12. 1968–1976 · Paris

    Adrian Frutiger — sinalização de Roissy → Frutiger

    Designer de tipos

    Para o aeroporto Charles de Gaulle: uma sans humanista, de aberturas amplas, legível de longe, de esguelha e em movimento. Vira o padrão da sinalização de aeroportos e estradas no mundo inteiro. exemplo: humanista · fonte: Source Sans 3

  13. 1984–1991 · EUA

    Macintosh + PostScript · Susan Kare · Emigre (Zuzana Licko & Rudy VanderLans)

    Adobe, Apple e uma revista/foundry independente

    O computador pessoal + PostScript (Adobe) tornam qualquer pessoa um tipógrafo. Kare desenha as fontes de tela do Mac pixel a pixel; a Emigre e Licko abraçam a grelha de baixa resolução como estética (Lo-Res, Mrs Eaves) em vez de a esconder. exemplo: 01001 · fonte: JetBrains Mono

  14. 1994–1996 · Microsoft

    Matthew Carter — Verdana e Georgia

    Designer de tipos (co-fundador da Bitstream / Carter & Cone)

    Desenhadas do pixel para fora: x-height enorme, formas abertas, espaçamento generoso, hinting obsessivo. Provaram que dava para ler bem em ecrã de 1996 — e moldaram a webfont que veio depois. exemplo: ecrã · fonte: Lora (serif de tela)

  15. 2010–2016 · web

    Google Fonts · fontes variáveis · Inter (Rasmus Andersson)

    Consórcio Apple/Google/Microsoft/Adobe e foundries indie

    Google Fonts (2010) democratiza a webfont; o formato variável (OpenType 1.8, 2016) põe um espaço contínuo de pesos/larguras/óptica num arquivo; a Inter nasce open-source como a sans de UI. Em paralelo, foundries indie (Klim, Grilli Type, Dinamo, Pangram Pangram) reafirmam o desenho de autor. exemplo: wght 100→900 · fonte: Inter

Os medalhões mostram uma letra num tipo daquele momento (quase sempre um revival digital em Google Fonts — Garamond, Baskerville, Bodoni etc. nunca deixaram arquivos de fonte), não uma fotografia da pessoa: esta apostila é sem imagens, e retratos históricos trariam questões de licença e peso — o mesmo tipo de cuidado que a secção 4.5 pede para qualquer fonte. Para ver os originais, procure "specimen" + o nome numa biblioteca como a Letterform Archive ou o catálogo da Klingspor.

💼 Mercado de trabalho

Perguntas: "Que tipo de fonte você usaria para um app financeiro sério?" (neo-grotesca ou humanista sans, numerais tabulares — nunca uma display), "Diferença entre uma sans geométrica e uma humanista?" (construção por círculos vs proporções caligráficas; humanista lê melhor em texto corrido), "O que é uma superfamília e por que ela ajuda num design system?". Saber nomear o que você vê é o que diferencia numa conversa de portfólio.

✏️ Exercício 3 — Classifique e justifique

Para cada cenário, nomeie a categoria (e subgrupo) que você escolheria e uma que você evitaria: (a) o corpo de texto de um site de notícias; (b) o título de uma capa de revista de moda; (c) os rótulos de um dashboard de métricas; (d) a marca de uma cafeteria artesanal.

Gabarito (uma boa resposta): (a) serifada humanista/transicional ou humanista sans de x-height alto para leitura longa; evitar didone (contraste frágil) e display. (b) didone (Didot/Bodoni) ou uma display com personalidade; evitar monoespaçada. (c) humanista ou neo-grotesca sans com numerais tabulares; evitar script e slab pesado. (d) pode ousar — uma serifada humanista, uma script bem-feita ou uma geométrica com ajustes; evitar Arial/Helvetica "de fábrica", que não diz nada de marca.

MÓDULO 04 · INTERMEDIÁRIO

Escolha e pareamento de fontes

Objetivo: escolher uma fonte por critérios objetivos (não por gosto), combinar duas sem conflito, e saber onde encontrá-las e como avaliar qualidade e licença.

4.1 Critérios para escolher uma fonte

CritérioPergunta a fazer
PropósitoÉ para corpo longo, para UI, para títulos, para dados? Cada um pede coisas diferentes.
Legibilidade em corpo pequenox-height alto? aberturas amplas? formas distintas (I / l / 1, O / 0)?
Número de pesos e estilosTem itálico de verdade (não oblíquo sintético)? Pesos suficientes para hierarquia (mín. Regular, Medium/SemiBold, Bold)?
Cobertura de caracteresAcentos do português, aspas curvas, travessão, símbolos de moeda, os idiomas que você precisa?
Recursos OpenTypeNumerais tabulares e old-style? Ligaturas? Small caps reais? (Módulo 7)
Hinting e qualidade em telaRenderiza limpo em Windows/baixa densidade? Foi desenhada para tela ou é uma digitalização de tipo de metal?
LicençaUso web permitido? Limite de pageviews? Pode empacotar num app? Custo? (4.5)
Peso do arquivoQuantos KB por peso em WOFF2? Tem versão variável? (Módulo 6–7)

4.2 Quantas fontes usar

A resposta segura é uma família bem explorada. Uma superfamília, ou uma sans com muitos pesos, resolve título + corpo + rótulo + código com variações de peso, tamanho e caixa. Duas famílias (uma para display, uma para texto) é o próximo passo. Três ou mais exige justificativa e um sistema muito claro — na dúvida, não.

4.3 Princípios de pareamento

Pares que quase sempre funcionam

Veja: um par que funciona e outro que não
FUNCIONA — contraste claro
Uma serifada de contraste alto no título
A tipografia é a arte de dar forma ao texto para que ele possa ser lido sem esforço. Quando funciona, ninguém repara nela; quando falha, ninguém consegue explicar porquê.

São claramente diferentes — categoria, contraste e peso. A diferença é intencional e lê-se como decisão.

NÃO FUNCIONA — parecidas demais
Uma geométrica no título
A tipografia é a arte de dar forma ao texto para que ele possa ser lido sem esforço. Quando funciona, ninguém repara nela; quando falha, ninguém consegue explicar porquê.

Duas sans de proporções próximas. Não chocam — e é esse o problema: parece que alguém se enganou na fonte, não que escolheu duas.

A regra prática: ou muito parecidas (a mesma família em pesos diferentes) ou claramente diferentes. O território do meio — duas fontes semelhantes mas não iguais — é onde quase todos os pares maus vivem, porque a diferença lê-se como erro em vez de intenção.

Veja: três pares que funcionam
Serifada humanista + sans humanista
O relatório anual
O corpo fica numa sans de aberturas amplas, fácil em 13 px; o título herda o calor da serifa old-style.

Elo: mesmo "humor" (humanista, eixo caligráfico). Papéis: serifa manda no título, sans no corpo. Ex.: Garamond + Frutiger/Source.

Didone display + old-style no texto
Edição de Primavera
Duas serifadas — mas de séculos e funções diferentes: a didone brilha grande, a old-style carrega o parágrafo.

Elo: as duas são serifadas "de livro". Contraste: o desenho da serifa (fio vs cunha) é gritante. Ex.: revista de moda / editorial.

Slab com carácter + neo-grotesca invisível
Como funciona o cache
O slab dá firmeza e voz ao título; a Inter some no corpo, que é o que se quer. Bom para docs e produto técnico.

Elo: mesmo esqueleto (família Roboto). Papéis: display com personalidade, texto neutro.

O par mais seguro é não parear: uma superfamília (IBM Plex, Source) ou uma única sans com muitos pesos resolve título + corpo + rótulo + código sem risco de conflito. Só acrescente uma segunda família quando ela trouxer algo que a primeira não tem.

4.4 Fontes de sistema e a "system font stack"

Usar as fontes já instaladas no dispositivo do usuário: zero download, zero CLS, aparência "nativa". O custo é menos controle e inconsistência entre plataformas.

/* stack de fontes de sistema — sans neutra em cada SO */
font-family:
  -apple-system, BlinkMacSystemFont,   /* macOS / iOS (San Francisco) */
  "Segoe UI",                        /* Windows */
  Roboto,                              /* Android / ChromeOS */
  "Helvetica Neue", Arial,           /* fallback antigo */
  "Noto Sans",                       /* Linux */
  sans-serif,
  "Apple Color Emoji", "Segoe UI Emoji";   /* emoji coloridos */

4.5 Onde achar e como avaliar licença

⚠️ Erros clássicos de licença e escolha

Usar uma fonte "achada na internet" (pirata) num projeto de cliente — risco jurídico real. Assumir que "de graça para pessoal" vale para comercial. Ignorar o limite de pageviews de uma webfont paga. Escolher pela amostra em corpo 100 e descobrir que em 15px o contraste some. Usar itálico e negrito sintéticos (o browser inclina/engorda na força) quando a família tem os arquivos reais — fica pior e "amador".

💼 Mercado de trabalho

Perguntas: "Como você escolhe a fonte de um produto?" (critérios objetivos: propósito, x-height, pesos, cobertura, licença, peso — não "gosto"), "Como parear duas fontes?" (contraste sem conflito, compartilhar um elo, papéis distintos, testar no real), "Prós e contras de usar system fonts?", "Como funciona o licenciamento de webfonts?". Ter um par bem justificado no portfólio, com o raciocínio escrito, vale muito.

✏️ Exercício 4 — Escolha e pareie

Você vai projetar um blog técnico com artigos longos, blocos de código e uma home com um título grande de marca. Proponha: (a) quantas famílias; (b) qual papel para cada uma; (c) dois candidatos concretos (do Google Fonts) e por quê; (d) o que você testaria antes de fechar.

Gabarito (uma boa resposta): (a) duas famílias + uma mono. (b) uma sans humanista para corpo e UI, uma display/serif com caráter para o título de marca, uma monoespaçada para código. (c) ex.: Source Sans 3 (x-height alto, muitos pesos, itálico real, ótimo em 16px) para corpo; Fraunces ou Lora para o título (contraste e personalidade, com opsz no caso da Fraunces); JetBrains Mono ou IBM Plex Mono para código (formas distintas I/l/1, ligaturas opcionais). (d) testar acentos PT-BR, numerais no corpo do artigo, o par título+corpo lado a lado, render no Windows, peso total em WOFF2, e o código em 13–14px.

MÓDULO 05 · INTERMEDIÁRIO

Escala, hierarquia e ritmo

Objetivo: definir tamanho de corpo, medida e entrelinha certos; construir uma escala tipográfica; e criar hierarquia com o mínimo de recursos.

5.1 O corpo de texto e a medida

Veja: a mesma medida, três larguras
CURTA — ~28 caracteres
A tipografia é a arte de dar forma ao texto para que ele possa ser lido sem esforço. Quando funciona, ninguém repara nela; quando falha, ninguém consegue explicar porquê, mas toda a gente sente que alguma coisa está errada na página.

O olho salta de linha demasiadas vezes. Cansa e quebra o ritmo.

BOA — ~60 a 75 caracteres
A tipografia é a arte de dar forma ao texto para que ele possa ser lido sem esforço. Quando funciona, ninguém repara nela; quando falha, ninguém consegue explicar porquê, mas toda a gente sente que alguma coisa está errada na página.

O regresso ao início da linha seguinte é fácil e o olho não se perde.

LONGA — ~110 caracteres
A tipografia é a arte de dar forma ao texto para que ele possa ser lido sem esforço. Quando funciona, ninguém repara nela; quando falha, ninguém consegue explicar porquê, mas toda a gente sente que alguma coisa está errada na página.

Ao chegar ao fim, perde-se onde começa a próxima — e relê-se a mesma linha.

A largura ideal não é um capricho: é o alcance do movimento de retorno do olho. Entre 60 e 75 caracteres, o salto para a linha seguinte é quase automático. Em CSS, max-width: 34em resolve isto sozinho e ajusta-se quando o corpo muda — medir em em e não em píxeis é a diferença entre uma regra que se mantém e uma que se parte no primeiro ajuste.

5.2 Entrelinha (line-height)

Veja: a mesma medida, três entrelinhas
1.1 — apertada
A tipografia é a arte de dar forma ao texto para que ele possa ser lido sem esforço. Quando funciona, ninguém repara nela; quando falha, ninguém consegue explicar porquê, mas toda a gente sente que alguma coisa está errada na página.

As linhas colam-se; ascendentes e descendentes quase se tocam.

1.6 — confortável
A tipografia é a arte de dar forma ao texto para que ele possa ser lido sem esforço. Quando funciona, ninguém repara nela; quando falha, ninguém consegue explicar porquê, mas toda a gente sente que alguma coisa está errada na página.

O bloco lê-se como um objeto contínuo, com ar suficiente.

2.4 — solta demais
A tipografia é a arte de dar forma ao texto para que ele possa ser lido sem esforço. Quando funciona, ninguém repara nela; quando falha, ninguém consegue explicar porquê, mas toda a gente sente que alguma coisa está errada na página.

As linhas deixam de formar parágrafo e passam a ser tiras soltas.

Duas relações que quase ninguém explicita: quanto mais longa a linha, mais entrelinha é precisa (o olho precisa de mais ajuda para encontrar o regresso), e quanto maior o corpo, menos — títulos grandes pedem entrelinha perto de 1.0, texto corrido pede 1.5 a 1.7. Uma entrelinha fixa aplicada a tudo é o erro mais comum de um sistema tipográfico.

5.3 A escala tipográfica modular

Em vez de tamanhos aleatórios, escolha uma razão e multiplique a partir do corpo. Assim os tamanhos se relacionam e a página tem harmonia.

RazãoNomeSensação
1.125Segunda maiorSutil — bom para UI densa
1.200Terça menorEquilibrada — padrão seguro para produto
1.250Terça maiorContraste claro — sites de conteúdo
1.333Quarta perfeitaEditorial, expressiva
1.500 / 1.618Quinta / áureaMuito dramática — landing pages, pouca densidade
/* escala com razão 1.25 a partir de 16px, arredondada */
--text-xs:   0.64rem;  /* 10.24 → ~10px  (evite para leitura) */
--text-sm:   0.8rem;   /* 12.8  → 13px   legendas, rótulos */
--text-base: 1rem;     /* 16px          corpo */
--text-lg:   1.25rem;  /* 20px          subtítulo / lead */
--text-xl:   1.563rem; /* 25px          h3 */
--text-2xl:  1.953rem; /* 31px          h2 */
--text-3xl:  2.441rem; /* 39px          h1 */
--text-4xl:  3.052rem; /* 49px          display */

Você não precisa usar todos os degraus, e pode "quebrar" a escala no display (títulos gigantes muitas vezes são escolhidos a olho). Mas ter a escala evita a bagunça de 15 tamanhos quase-iguais.

Veja: uma escala modular de razão 1.25
  • 61 pxTítulo de página
  • 49 pxSecção
  • 39 pxSubsecção
  • 31 pxDestaque
  • 25 pxSubtítulo
  • 20 pxCorpo grande
  • 16 pxCorpo
  • 13 pxAuxiliar

Cada degrau é o anterior multiplicado por 1.25 — 16, 20, 25, 31, 39, 49, 61. Nenhum tamanho foi escolhido à mão, e é isso que faz o conjunto parecer intencional. Uma escala com razão maior (1.414, 1.5) dá mais drama e serve editorial; uma razão pequena (1.125, 1.2) dá mais degraus utilizáveis e serve interfaces, onde é preciso distinguir muitos níveis num espaço apertado. O erro comum não é escolher a razão errada — é não ter razão nenhuma e ir inventando tamanhos até parecer bem.

5.4 Hierarquia: os recursos e a disciplina

Você tem seis alavancas para dizer "isto é mais importante que aquilo":

  1. Tamanho — o mais óbvio, mas o que mais infla a página se abusado.
  2. Peso — Regular vs SemiBold vs Bold. Muitas vezes basta peso, sem mexer no tamanho.
  3. Cor / contraste — texto secundário em cinza (respeitando contraste mínimo — Módulo 8).
  4. Espaçamento — espaço antes de um título vale mais que espaço depois; espaço agrupa e separa.
  5. Família / estilo — itálico, uma segunda fonte, caixa alta.
  6. Caixa — versalete, caixa alta com tracking para overlines.
💡 Use duas alavancas, não seis

Para cada nível de hierarquia, mude uma ou duas propriedades — não todas. "Título = maior + mais pesado" já basta. "Maior + mais pesado + outra fonte + caixa alta + colorido + com borda" é ruído. Menos contraste, mais claramente aplicado, lê melhor.

Veja: o mesmo conteúdo, com e sem hierarquia
SEM hierarquia
Relatório trimestral
Resultados do primeiro trimestre
A receita cresceu 12% face ao período anterior, sobretudo no canal direto.
Próximos passos
Rever a previsão de julho.

Tudo com o mesmo peso. O leitor tem de ler tudo para saber o que importa — e por isso não lê nada.

COM hierarquia
Relatório trimestral
Resultados do primeiro trimestre
A receita cresceu 12% face ao período anterior, sobretudo no canal direto.
Próximos passos
Rever a previsão de julho.

Três níveis, criados com tamanho, peso, cor, caixa e espaço — e nenhuma fonte nova.

Repare no que não foi usado à direita: nenhuma segunda família, nenhum sublinhado, nenhuma caixa colorida. Hierarquia faz-se com os recursos que já existem, e o mais subestimado deles é o espaço — os 10 px antes de cada rótulo fazem mais trabalho que qualquer aumento de corpo.

5.5 Ritmo vertical e espaçamento

5.6 Tracking (letter-spacing)

💼 Mercado de trabalho

Perguntas: "Qual a medida ideal de uma linha de texto e por quê?" (45–75 caracteres; max-width em ch), "Como você define a entrelinha?" (1.4–1.6 no corpo, mais apertada em título; cresce com a medida), "O que é uma escala tipográfica modular?", "Como criar hierarquia sem só aumentar a fonte?" (peso, cor, espaço — duas alavancas por nível).

✏️ Exercício 5 — Monte a hierarquia

Defina uma escala e a hierarquia para: um artigo com H1, H2, H3, corpo, citação em bloco, legenda de imagem e "tempo de leitura" (metadado). Para cada um dê tamanho (em rem), peso, cor (papel) e o espaço antes. Use razão 1.25 a partir de 16px.

Gabarito (uma boa resposta): corpo 1rem/1.6, peso 400, cor primária, max-width: 68ch. H1 2.441rem, peso 700, entrelinha 1.15, tracking −0.02em, espaço antes grande. H2 1.953rem, peso 700, espaço antes 2.5rem. H3 1.563rem, peso 600, espaço antes 2rem. Citação: 1.125rem, itálico ou peso 400 com borda à esquerda, cor levemente suave, recuo. Legenda: 0.8rem, peso 400, cor secundária (contraste ≥ 4.5:1), espaço acima pequeno. "Tempo de leitura": 0.8rem, caixa alta, tracking +0.08em, peso 600, cor secundária. Só tamanho+peso+cor+espaço — sem trocar de fonte.

MÓDULO 06 · INTERMEDIÁRIO

Tipografia na tela (CSS)

Objetivo: dominar as propriedades e unidades que controlam texto na web, carregar fontes sem prejudicar a performance, e evitar o layout shift da troca de fonte.

6.1 Unidades

UnidadeÉ relativa aUse para
pxnada (pixel de referência)bordas, detalhes; evite em font-size (não respeita a preferência do usuário)
remo font-size da raiz (html)tamanhos de fonte e espaçamento — escala com a preferência do usuário
emo font-size do próprio elementoletter-spacing, margin proporcional ao texto local, ícones ao lado de texto
cha largura do "0" da fonte atualmax-width de coluna de texto (a medida)
% / sem unidadeo pai (%) / o próprio font-size (line-height)line-height sem unidade (herda proporcional)
clamp(), vwa viewporttipografia fluida (6.2)

6.2 Propriedades essenciais

body{
  font-family: "Inter", system-ui, sans-serif;
  font-size: 1rem;
  line-height: 1.6;               /* sem unidade */
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
h1{
  font-size: clamp(2rem, 1.4rem + 3vw, 3rem);   /* fluida: min, preferida, max */
  line-height: 1.1;
  letter-spacing: -0.02em;
  text-wrap: balance;            /* equilibra as linhas de um título curto */
}
p{
  max-width: 65ch;               /* a medida */
  text-wrap: pretty;             /* evita "viúvas" na última linha */
  hyphens: auto;                 /* precisa de lang no HTML */
}
.uppercase-label{
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
}

6.3 A system font stack e o system-ui

A palavra-chave system-ui resolve para a fonte de interface do SO. É prática, mas tem armadilhas (em alguns sistemas cai numa fonte sem os caracteres de certos idiomas). O padrão robusto continua sendo a stack explícita do Módulo 4, opcionalmente com system-ui no começo.

6.4 Os arquivos de fonte: formatos e como uma fonte nasce

Antes de carregar uma fonte, vale saber o que é o arquivo. Todos os formatos modernos são OpenType por dentro — mudam a extensão, a embalagem e o tipo de curva do contorno, não a natureza.

FormatoO que éOnde usar
.otf / .ttfOs dois "mestres" OpenType. A diferença real é a curva do contorno: .ttf usa curvas quadráticas; .otf usa Bézier cúbicas (PostScript/CFF), arquivo às vezes menor. Para o resultado na tela, tanto faz.Desktop (instalar no SO), e como fonte para gerar o WOFF2.
.woff2Não é outro desenho: é o mesmo OpenType reembalado e comprimido com Brotli. ~30% menor que o WOFF1 e ~50% menor que o .ttf cru.A web, hoje. Só ele.
.woffVersão anterior, compressão zlib.Só se precisar de navegadores muito antigos — na prática, não.
.eot, SVG fontsLegado (IE ≤ 11; SVG fonts nunca vingaram e foram removidas).Nunca.
.ttc / .otc"Collection": vários tipos partilhando glifos num arquivo.Fontes de sistema (comum em CJK). Raro na web.

Uma fonte variável (Módulo 7) não é um formato novo — é um .ttf/.otf/.woff2 normal com uma tabela fvar descrevendo os eixos e os "deltas" entre extremos. Dentro de qualquer arquivo há tabelas: glyf ou CFF (os contornos), cmap (caractere → glifo), GSUB/GPOS (ligaduras, small caps, kerning), hmtx (larguras), OS/2 e hhea (métricas: ascendente, descendente, x-height), name (nome, licença), fvar/gvar (variável).

Como uma fonte é feita, do desenho ao .woff2:

  1. Desenho dos glifos num editor de fontes — Glyphs ou FontLab (comerciais, padrão da indústria), RoboFont, ou FontForge (livre). O formato-fonte aberto é o UFO (um glifo por arquivo) + um designspace.
  2. Contornos em curvas de Bézier, com consistência de espessura, overshoot nas curvas (o "O" ultrapassa um pouco as linhas para parecer do mesmo tamanho do "H") e correções ópticas.
  3. Espaçamento e kerning: definir a "almofada" lateral de cada glifo e depois corrigir os pares problemáticos ("AV", "To", "f)").
  4. Recursos OpenType escritos em código (arquivos .fea): liga, kern, smcp (small caps), onum (numerais old-style), ss01… (stylistic sets), locl (formas locais — importa para acentos e o "ç" do português).
  5. Hinting: instruções que ajudam telas de baixa resolução a encaixar os traços na grade de pixels. Hoje pesa quase só no Windows; costuma ser automático (ttfautohint).
  6. Se for variável: declarar os eixos (wght, wdth, opsz, GRAD…), desenhar os masters nos extremos e deixar o editor interpolar o meio.
  7. Compilar o UFO para binário .otf/.ttf com fontmake (Google), o makeotf do AFDKO (Adobe) ou a biblioteca fonttools — que sustenta quase todo o ecossistema.
  8. Pós-produção para a web: pyftsubset (fonttools) remove glifos que você não usa; woff2_compress gera o .woff2; opcionalmente geram-se as métricas de fallback (as "f-mods" do 6.6).
💡 Abra a fonte e veja por dentro

Wakamai Fondue (wakamaifondue.com) recebe qualquer arquivo de fonte e lista tabelas, eixos variáveis, recursos OpenType, glifos e idiomas suportados. Ótimo para auditar uma fonte — sobretudo os acentos do português e o itálico real — antes de adotá-la.

6.5 Carregando webfonts: @font-face

@font-face{
  font-family: "Inter";
  src: url("/fonts/Inter-Roman.var.woff2") format("woff2-variations");
  font-weight: 100 900;          /* range: é uma fonte variável */
  font-style: normal;
  font-display: swap;            /* mostra o fallback já, troca quando a fonte chega */
  unicode-range: U+0000-00FF, U+0131, U+2000-206F;  /* subset latino */
}
font-displayComportamentoQuando
swapfallback imediato → troca ao carregar (pode causar "flash")corpo de texto — conteúdo visível já
optionalfallback; só usa a webfont se ela chegar quase instantânea (senão, nesta visita, fica no fallback)quando zero layout shift importa mais que a fonte
fallbackmeio-termo: janela curtíssima de "invisível", depois fallback, troca se chegar logoequilíbrio
blocktexto invisível até a fonte (ou ~3s)quase nunca — ruim para percepção

6.6 Performance e o layout shift da fonte

/* fallback ajustado para casar com a métrica da webfont e não "pular" */
@font-face{
  font-family: "Inter-fallback";
  src: local("Arial");
  size-adjust: 107%;
  ascent-override: 90%;
  descent-override: 22%;
  line-gap-override: 0%;
}
body{ font-family: "Inter", "Inter-fallback", sans-serif; }

6.7 Recursos de fonte via CSS

.tabela-numeros{ font-variant-numeric: tabular-nums; }      /* números alinham em colunas */
.preco-antigo{ font-variant-numeric: oldstyle-nums; }
.titulo{ font-feature-settings: "liga" 1, "dlig" 1; }       /* ligaturas */
.sigla{ font-variant-caps: all-small-caps; }
.fracao{ font-variant-numeric: diagonal-fractions; }

Prefira as propriedades de alto nível (font-variant-*) quando existirem; caia para font-feature-settings para recursos específicos (ss01, cv05, salt). Detalhe no Módulo 7.

⚠️ Os erros de tipografia web que mais aparecem em auditoria

font-size em px fixo (ignora quem aumentou a fonte do navegador); line-height com unidade; servir TTF de 400KB; nenhum font-display (FOIT de segundos em conexão ruim); webfont sem preload e sem fallback casado → CLS alto no Lighthouse; @import de Google Fonts no CSS (bloqueia a renderização em cascata); usar negrito sintético porque só se carregou o peso 400.

💼 Mercado de trabalho

Perguntas de front-end: "px, em ou rem para font-size — e por quê?" (rem: respeita a preferência do usuário e escala), "O que é FOUT vs FOIT e como você controla?" (font-display), "Como reduzir o CLS causado por webfonts?" (preload + fallback com size-adjust/overrides), "Como você serviria fontes hoje?" (WOFF2, self-host, subset, preload do peso crítico, variável se possível). text-wrap: balance/pretty e tabular-nums são pontos de "esse aí acompanha a plataforma".

✏️ Exercício 6 — Escreva o carregamento de fontes

Escreva o CSS + o HTML de <head> para carregar uma fonte variável self-hospedada (peso 100–900, romana e itálica) para o corpo, com o mínimo de layout shift e sem bloquear a renderização. Liste também 3 coisas que você mediria depois.

Gabarito (uma boa resposta): dois @font-face (normal e italic) apontando para .woff2 com font-weight: 100 900, font-display: swap, unicode-range do subset; um @font-face de fallback com size-adjust/ascent-override casando a métrica; font-family: "Minha", "Minha-fallback", system-ui, sans-serif. No <head>: <link rel="preload" as="font" type="font/woff2" crossorigin href="…roman.woff2"> (só a romana, que é a crítica). Medir depois: CLS e LCP no Lighthouse/Web Vitals; o tamanho transferido das fontes; se há FOIT em "Slow 3G"; se o negrito/itálico usados existem nos arquivos (nada sintético).

MÓDULO 07 · AVANÇADO

Fontes variáveis e OpenType

Objetivo: usar fontes variáveis (um arquivo, muitos pesos/larguras/tamanhos ópticos) e os recursos OpenType que separam tipografia caprichada de "só escolhi a fonte".

7.1 O que é uma fonte variável

Uma fonte variável guarda, em um arquivo, um espaço contínuo de variações ao longo de eixos. Em vez de baixar Regular + Medium + SemiBold + Bold + itálicos (6–12 arquivos), você baixa um e interpola qualquer valor.

EixoTagO que faz
Weightwghtespessura, 1–1000 (400 = regular, 700 = bold)
Widthwdthlargura condensada ↔ expandida (%)
Optical sizeopszajusta o desenho para o tamanho de uso (7.2)
Slantslntinclinação em graus (oblíquo)
Italicital0 ↔ 1: troca para as formas itálicas de verdade (a, g diferentes)
GradeGRADengorda o traço sem mudar a largura — útil para dark mode e para "aumentar peso sem reflow"
(custom)ex. CASL, MONO, CRSVeixos próprios do designer (casual, monoespaçamento, cursividade…)

Eixos registrados vêm em minúsculas (wght), eixos customizados em maiúsculas (GRAD).

7.2 Optical sizing (opsz) — o eixo subestimado

Tipos de metal tinham desenhos diferentes para cada tamanho: os pequenos ("texto") com mais contraste baixo, x-height alto, espaçamento folgado, serifas robustas; os grandes ("display") com contraste alto e detalhes finos. Fontes digitais perderam isso — opsz traz de volta.

h1{ font-optical-sizing: auto; }        /* o browser liga opsz ao font-size — ligado por padrão em fontes com o eixo */
.ajuste-manual{ font-variation-settings: "opsz" 8; }   /* força o desenho "texto pequeno" */

7.3 CSS de fontes variáveis

@font-face{
  font-family: "Recursive";
  src: url("/fonts/Recursive.woff2") format("woff2");
  font-weight: 300 1000;
  font-stretch: 75% 125%;      /* o range do eixo wdth */
}
.botao{ font-weight: 560; }                       /* qualquer valor, não só 400/700 */
.condensado{ font-stretch: 85%; }
.grau-dark{ font-variation-settings: "GRAD" 40; }   /* eixos sem propriedade dedicada */
⚠️ font-variation-settings não herda como você espera

Ele é tudo-ou-nada: ao redefini-lo num filho, você precisa repetir todos os eixos que quer manter, senão eles voltam ao default. Prefira as propriedades de alto nível (font-weight, font-stretch, font-optical-sizing) e reserve font-variation-settings para eixos sem equivalente. Se usar muito, defina os eixos como custom properties e componha.

7.4 Ganho e trade-offs

7.5 Recursos OpenType

RecursoTag(s)Para que serve
Ligaturas padrãoliga"fi", "fl" — junta formas que colidiriam. Ligado por padrão; desligue em monoespaçada.
Ligaturas discricionáriasdlig"ct", "st" decorativas — só para display.
Numerais tabulares / proporcionaistnum / pnumtabulares: mesma largura, alinham em coluna (tabelas, dados, timers). proporcionais: espaçados para texto corrido.
Numerais lining / old-stylelnum / onumlining: altura das maiúsculas (UI, tabelas). old-style: com ascendentes/descendentes, "convivem" com minúsculas no texto.
Fraçõesfractransforma "1/2" em ½ bem desenhado.
Ordinais / sobrescritoordn, sups, subs1º, 2ª, notas, fórmulas.
Versalete (small caps)smcp, c2scmaiúsculas na altura da x-height — para siglas em meio ao texto sem "gritar".
Alternativas estilísticassalt, ss01–ss20, cv01–trocar o "a", o "g", o "1" com serifa etc. — a fonte documenta quais. Ex.: Inter cv05, cv11.
Swashesswshterminais floreados — display, convites.
table td.num{ font-variant-numeric: tabular-nums lining-nums; }
article p{ font-variant-numeric: oldstyle-nums proportional-nums; }
abbr{ font-variant-caps: all-small-caps; letter-spacing: .04em; }
.recipe{ font-variant-numeric: diagonal-fractions; }
.inter-tweaks{ font-feature-settings: "cv05" 1, "cv11" 1, "ss03" 1; }  /* g de andar único, 1 sem serifa… */

7.6 Animar eixos — com parcimônia

Dá para animar font-weight / font-variation-settings (hover num link que "engorda", peso que responde ao scroll). Efeito bonito e caro em atenção. Sempre envolva em @media (prefers-reduced-motion: reduce) e mantenha sutil; nunca anime o corpo de texto que a pessoa está lendo.

🔬 Aprofundamento

Numa mesma fonte variável você pode: usar GRAD (não wght) para engrossar o texto ~30–40 unidades no dark mode — telas claras sobre fundo escuro parecem mais finas ("irradiação"), e GRAD compensa sem mudar a largura, então nada reflui. Combine com font-optical-sizing: auto e uma escala fluida (Módulo 5–6) e a tipografia se ajusta a tamanho, tema e viewport sem você manter dezenas de arquivos.

💼 Mercado de trabalho

Perguntas: "O que é uma fonte variável e quando vale a pena?" (eixos; vale com 3+ pesos, larguras, opsz/GRAD), "O que é optical sizing?", "Como alinhar números numa tabela?" (font-variant-numeric: tabular-nums), "Diferença entre numerais lining e old-style?", "Por que font-variation-settings te surpreende na herança?" (é tudo-ou-nada). Mostrar tabular-nums numa tabela de dados e cvXX ajustando um "g" é sinal de cuidado.

✏️ Exercício 7 — Recursos no lugar certo

Para cada caso, diga qual recurso/propriedade OpenType você usaria: (a) uma tabela financeira onde os valores precisam alinhar; (b) as datas "1º de maio" num texto; (c) a sigla "NASA" no meio de um parágrafo, sem que ela domine visualmente; (d) a fração "3/4" numa receita; (e) o corpo de um artigo literário onde os números devem "fluir" com o texto; (f) desligar as ligaduras num trecho de código.

Gabarito: (a) font-variant-numeric: tabular-nums lining-nums. (b) ordn (font-variant-position/font-feature-settings:"ordn") para o "º". (c) font-variant-caps: all-small-caps + leve letter-spacing. (d) font-variant-numeric: diagonal-fractions (ou "frac"). (e) font-variant-numeric: oldstyle-nums proportional-nums. (f) font-variant-ligatures: none (ou font-feature-settings: "liga" 0, "clig" 0).

MÓDULO 08 · AVANÇADO

Tipografia acessível e internacional

Objetivo: compor texto que funciona para quem amplia a página, usa leitor de tela, tem baixa visão ou dislexia — e para idiomas e sistemas de escrita além do português.

8.1 O que a WCAG exige do texto

CritérioEm resumo
1.4.4 Resize texto texto pode ser ampliado a 200% sem perda de conteúdo ou função (não desative o zoom; use rem).
1.4.10 Reflowa 320px de largura equivalente, o conteúdo não exige rolagem horizontal — a coluna de texto reflui.
1.4.3 / 1.4.6 Contrastetexto normal ≥ 4.5:1 (AA) ou 7:1 (AAA); texto "grande" (≥ 24px, ou ≥ 18.66px bold) ≥ 3:1. Vale para o texto secundário em cinza também.
1.4.12 Text spacinga página não pode quebrar se o usuário forçar: line-height ≥ 1.5× o tamanho; espaço entre parágrafos ≥ 2×; letter-spacing ≥ 0.12em; word-spacing ≥ 0.16em.
1.4.8 Visual presentation (AAA)medida ≤ 80 caracteres; não justificado; entrelinha ≥ 1.5; cores de texto/fundo ajustáveis.

Os números da WCAG podem ser revisados entre versões — confira sempre a versão vigente ao auditar. A apostila Acessibilidade Digital & WCAG cobre o resto (foco, ARIA, testes com leitor de tela).

8.2 Práticas de leiturabilidade acessível

8.3 Dislexia: o que ajuda de verdade

Fontes vendidas "para dislexia" têm evidência científica fraca de que melhoram a leitura. O que a pesquisa apoia:

Ou seja: boa tipografia geral já é boa tipografia para dislexia. Ofereça a opção de fonte alternativa se quiser, mas não a imponha.

8.4 Formas ambíguas

Onde o leitor não pode adivinhar pelo contexto — senhas, códigos de verificação, identificadores, trechos de código, dados — a fonte precisa distinguir sem esforço:

Fontes desenhadas para isso: JetBrains Mono, IBM Plex Mono, Source Code Pro, Inconsolata, e várias sans de UI têm um ssXX/cvXX que ativa o "l" com cauda e o "0" pontilhado. Para código e senhas, prefira monoespaçada.

8.5 Internacionalização

8.6 Números em dados

⚠️ Armadilhas de acessibilidade tipográfica

Bloquear o zoom com user-scalable=no na meta viewport (falha WCAG direto). Texto dentro de imagem (não escala, não é lido, não traduz). "Ícone-fonte" sem rótulo acessível. Placeholder cinza-claro fazendo as vezes de label. Layout que estoura quando o usuário aumenta o letter-spacing. Caixa alta via conteúdo real (<h1>TÍTULO</h1>) em vez de text-transform.

💼 Mercado de trabalho

Perguntas: "Que critérios da WCAG envolvem texto?" (resize 200%, reflow, contraste 4.5:1, text-spacing 1.4.12), "Fontes para dislexia funcionam?" (evidência fraca; o que ajuda é espaçamento, x-height, formas distintas, deixar ajustar), "Como você garante que I, l e 1 não se confundem num campo de senha?", "O que muda na tipografia ao suportar árabe ou japonês?" (RTL, formas contextuais, sem itálico, subsetting pesado). Pensar em i18n desde o layout é sinal de senioridade.

✏️ Exercício 8 — Auditoria rápida

Um componente mostra: título em <h2> com text-transform: uppercase e font-size: 22px; corpo em 14px/line-height: 18px; legenda #9aa0a6 sobre branco; um "código de convite" em Arial; botões com width: 120px. Aponte os problemas e as correções.

Gabarito: (1) font-size em px → use rem (resize/preferência). (2) line-height: 18px com unidade e < 1.5× → use line-height: 1.5 sem unidade (1.4.12). (3) corpo 14px é pequeno para leitura → 16px base. (4) legenda #9aa0a6 em branco ≈ 2.6:1 → falha 4.5:1; escureça para ~#5f6368. (5) "uppercase" ok se via text-transform (está) — mas confirme que não é conteúdo real e que não é um bloco longo. (6) código de convite em Arial → I/l/1/O/0 ambíguos; use monoespaçada com formas distintas. (7) botão width: 120px fixo → quebra em idiomas mais longos e com letter-spacing do usuário; use min-width + padding.

MÓDULO 09 · MUITO AVANÇADO

Sistema tipográfico e tokens

Objetivo: transformar decisões soltas em um sistema — papéis de texto, tokens, nomenclatura, fluid type e governança — que escala para um produto inteiro e vários times.

9.1 De estilos soltos a papéis

Um sistema não lista "tamanhos" — lista papéis (o que o texto faz), e cada papel amarra família + tamanho + peso + entrelinha + tracking + cor.

PapelUso
displaynúmeros/frases de impacto numa landing; raríssimo em produto
heading-1…4 (ou xl/lg/md/sm)títulos de página e seção
title / subtitletítulos de card, de modal, de grupo
body / body-strong / body-smtexto corrido e suas variações
labelrótulos de formulário, de botão, de aba
caption / helpertextos auxiliares, mensagens de campo
overlinerótulo curto em caixa alta acima de um título
codetrechos monoespaçados inline e em bloco

9.2 Tokens de tipografia

Três camadas, como em cor:

/* 1. PRIMITIVOS — os valores crus, sem significado de uso */
--font-sans: "Inter", "Inter-fallback", system-ui, sans-serif;
--font-mono: "JetBrains Mono", ui-monospace, monospace;
--font-serif: "Lora", Georgia, serif;

--weight-regular: 400;  --weight-medium: 500;  --weight-semibold: 600;  --weight-bold: 700;

--size-100: 0.75rem;  --size-200: 0.875rem;  --size-300: 1rem;
--size-400: 1.125rem; --size-500: 1.25rem;   --size-600: 1.5rem;
--size-700: 1.875rem; --size-800: 2.25rem;   --size-900: 3rem;

--leading-tight: 1.15;  --leading-snug: 1.35;  --leading-normal: 1.55;
--tracking-tight: -0.02em;  --tracking-normal: 0;  --tracking-wide: 0.08em;

/* 2. SEMÂNTICOS — um papel, composto dos primitivos */
--text-body-font: var(--font-sans);
--text-body-size: var(--size-300);
--text-body-leading: var(--leading-normal);
--text-body-weight: var(--weight-regular);

--text-heading-1-size: var(--size-800);
--text-heading-1-leading: var(--leading-tight);
--text-heading-1-weight: var(--weight-bold);
--text-heading-1-tracking: var(--tracking-tight);
/* 3. USO — uma classe/utilitário por papel (ou o shorthand `font`) */
.text-body{
  font: var(--text-body-weight) var(--text-body-size)/var(--text-body-leading) var(--text-body-font);
}
.text-heading-1{
  font: var(--text-heading-1-weight) var(--text-heading-1-size)/var(--text-heading-1-leading) var(--font-sans);
  letter-spacing: var(--text-heading-1-tracking);
}

9.3 Nomenclatura: semântica × escala

9.4 Fluid type no sistema

9.5 Onde os tokens vivem

9.6 Governança e o specimen

9.7 Respeitar a plataforma e o usuário

💡 O teste de um bom sistema tipográfico

Peça a duas pessoas do time para maquetar a mesma tela sem se falarem. Se a tipografia sai igual — mesmos papéis, mesmos tamanhos — o sistema funciona. Se cada uma inventou uma hierarquia, faltam papéis claros ou sobra escala demais. Um sistema tipográfico é bom quando tira decisões da mesa, não quando oferece mais opções.

💼 Mercado de trabalho

Perguntas de design systems / front-end sênior: "Como você estrutura os tokens de tipografia?" (primitivos por escala → semânticos por papel → componentes só consomem semânticos), "Semântico ou por escala na nomenclatura?" (os dois, em camadas), "Como manter Figma e código em sincronia?" (mesmos nomes/valores; Style Dictionary como fonte única), "Quando usar fluid type?" (só nos papéis grandes, com rem nos limites). Ter um mini-sistema com specimen no portfólio é forte.

✏️ Exercício 9 — Desenhe a escala de um design system

Para um produto SaaS (web app denso + site de marketing), especifique: (a) as famílias e seus papéis; (b) a razão da escala e 6–8 degraus com valores em rem; (c) 6 papéis semânticos com família/tamanho/peso/entrelinha/tracking; (d) quais papéis são fluidos; (e) duas regras de governança.

Gabarito (uma boa resposta): (a) uma sans humanista variável para tudo (app + marketing) + uma mono para código; opcional uma serif display só no marketing. (b) razão 1.2, degraus 0.75 / 0.875 / 1 / 1.125 / 1.25 / 1.5 / 1.875 / 2.25 rem (+ um 3rem "display" escolhido a olho). (c) body sans/1rem/400/1.55/0; body-sm sans/0.875/400/1.5/0; label sans/0.875/600/1.3/0.01em; heading-2 sans/1.5/700/1.2/−0.015em; heading-1 sans/2.25/700/1.15/−0.02em; overline sans/0.75/600/1.3/0.08em caixa alta; code mono/0.875/400/1.5. (d) só heading-1, heading-2 e o display do marketing, com clamp() em rem. (e) nada de font-size literal em componentes (lint), e todo papel novo precisa de aprovação + entrada no specimen em claro/escuro.

MÓDULO 10 · CARREIRA

Mercado de trabalho: roadmap, entrevistas e portfólio

Objetivo: converter o conteúdo dos módulos anteriores em contratação — onde a tipografia pesa, um plano de estudo, um banco de perguntas com respostas e projetos que geram entrevista.

10.1 Onde tipografia pesa

10.2 Roadmap de estudo (6–8 semanas)

SemanasFocoPrática
1Anatomia e classificação (Módulos 2–3)Pegar 10 sites/apps que você admira e nomear cada fonte por categoria e por que funciona
2Escolha e pareamento (Módulo 4)Montar 3 pares justificados por escrito; testar no conteúdo real, no Windows e no celular
3Escala, medida, hierarquia (Módulo 5)Redesenhar a hierarquia de um artigo real com uma escala modular; antes/depois
4Tipografia web: unidades, propriedades, carregamento (Módulo 6)Implementar o artigo da semana 3 em HTML/CSS com rem, ch, clamp(), @font-face, preload
5Variable fonts e OpenType (Módulo 7)Trocar por uma variável; usar opsz, tabular-nums numa tabela, ajustar 2 cvXX
6Acessibilidade e i18n (Módulo 8)Auditar o projeto com Lighthouse + zoom 200% + teste de text-spacing; simular alemão/árabe
7Sistema e tokens (Módulo 9)Extrair um mini design system tipográfico: primitivos, semânticos, specimen em claro/escuro
8PortfólioEscrever os estudos de caso com o raciocínio (não só telas bonitas); publicar

10.3 Banco de perguntas de entrevista (com a resposta que aprova)

Júnior/pleno — "Qual a diferença entre fonte e tipo (typeface)?"

Tipo é o design das letras (a ideia — "Helvetica"). Fonte é uma instância concreta desse design: um peso, um estilo, um arquivo/tamanho ("Helvetica Bold 12pt", Helvetica-Bold.woff2). Você licencia um tipo e carrega arquivos de fonte. Família é o conjunto de fontes que formam o tipo.

Pleno — "Como você escolhe a fonte de um produto?"

Por critérios objetivos, não gosto: propósito (corpo longo? UI? dados?), legibilidade em corpo pequeno (x-height, aberturas, formas distintas I/l/1/O/0), número de pesos e itálico real, cobertura de caracteres para os idiomas do produto, recursos OpenType (tabular-nums), qualidade de render no Windows, licença de web/app e peso do WOFF2. Depois testo no conteúdo e nos tamanhos reais, no device real.

Pleno — "Qual a medida ideal de uma linha e a entrelinha do corpo?"

Medida: 45–75 caracteres por linha (~66 ideal); em CSS max-width: 65ch. Entrelinha do corpo: 1.4–1.6, sem unidade, crescendo quando a linha é mais longa ou o texto menor. Títulos grandes: entrelinha mais apertada (1.1–1.25) e tracking levemente negativo.

Pleno/front-end — "px, em ou rem para font-size?"

rem: escala com o font-size da raiz e respeita a preferência de tamanho do usuário no navegador. px em font-size ignora essa preferência (problema de acessibilidade). em é útil para letter-spacing e margens proporcionais ao texto local, mas acumula em elementos aninhados. line-height sem unidade.

Pleno/front-end — "FOUT vs FOIT, e como controlar?"

FOIT = Flash of Invisible Text (o texto some até a fonte carregar); FOUT = Flash of Unstyled Text (mostra o fallback e troca). FOUT é preferível — o conteúdo é legível na hora. Controle com font-display: swap (FOUT) para corpo, optional quando zero shift importa mais. Reduza o "pulo" da troca com preload da fonte crítica e um @font-face de fallback com size-adjust/ascent-override.

Sénior — "Quando usar uma fonte variável?"

Quando você usa 3+ pesos, ou precisa de larguras, ou quer opsz (optical sizing) / GRAD (peso sem reflow, útil no dark mode). Um arquivo variável pesa menos que 4–5 estáticos, mas mais que um único estático — se você só usa Regular + Bold, dois estáticos subsetados podem pesar menos. Faça a conta com o subset real.

Sénior — "Como você garante alinhamento de números numa tabela financeira?"

font-variant-numeric: tabular-nums lining-nums (todos os dígitos com a mesma largura, alinham em coluna), alinhamento à direita ou pelo separador decimal, e uma fonte que tenha o recurso. Sem tabular-nums as colunas "dançam" a cada dígito diferente.

Sénior — "Fontes 'para dislexia' funcionam?"

A evidência de que fontes específicas melhoram a leitura de pessoas disléxicas é fraca. O que a pesquisa apoia: espaçamento generoso (letra, palavra, linha), x-height alto, formas de letra distintas (b/d/p/q não idênticos espelhados), alinhamento à esquerda, medida curta, e principalmente deixar o usuário ajustar fonte/tamanho/espaçamento. Boa tipografia geral já cobre isso.

Armadilha — "É só escolher uma fonte bonita"

Tipografia é composição, não seleção: a mesma fonte fica ótima ou ilegível conforme tamanho, medida, entrelinha, hierarquia, contraste e carregamento. E "bonita numa amostra em corpo 72" não prediz "legível em 14px no Windows". A escolha é ~20% do trabalho; os 80% são escala, hierarquia, ritmo e implementação.

10.4 Projetos de portfólio que geram entrevista

  1. Type specimen interativo (âncora): uma página que apresenta uma família — pesos, opsz, recursos OpenType, pares, a escala — com texto real e controles. Mostra domínio de anatomia, OpenType e CSS.
  2. Redesign de hierarquia: pegue um artigo/tela real com hierarquia fraca e refaça com uma escala modular; publique o antes/depois com o raciocínio de cada decisão.
  3. Sistema tipográfico completo: primitivos + semânticos + specimen em claro/escuro + página de governança, implementado em CSS custom properties e espelhado em Figma text styles.
  4. Estudo de pareamento: 4–5 duplas de fontes para contextos diferentes, cada uma com o elo que as une e o teste no conteúdo real.
  5. Refactor de performance de fontes: um site real; antes/depois de CLS e bytes transferidos após WOFF2 + subset + preload + fallback casado + variável. Números do Lighthouse.

10.5 Fontes para continuar

🏁 Síntese final da apostila

Quatro ideias sustentam a tipografia: (1) é composição, não seleção — tamanho, medida, entrelinha e hierarquia importam mais que o nome da fonte; (2) x-height, abertura e formas distintas são o que se lê em tela — olhe isso, não a amostra em corpo grande; (3) hierarquia com duas alavancas por nível (tamanho + peso, ou peso + cor) — menos contraste, mais claro; (4) na web, a implementação é metade do trabalho: rem, ch, clamp(), WOFF2 + subset + preload, fallback casado, tabular-nums e acessibilidade. Um sistema de tokens transforma tudo isso em decisões que o time não precisa refazer.