# ADR-011 — Tipografia de conteúdo: Atkinson Hyperlegible Next

| Campo | Valor |
|---|---|
| **Status** | Aceito (2026-10-20) |
| **Data** | 2026-10-14 |
| **Plano de origem** | `wiki/plan/09-design-system-daisyui.md` |
| **Relacionadas** | ADR-016, ADR-010, ADR-025 |

## Contexto

O portal é governamental e precisa ser **legível** para toda a população (baixa visão, dislexia,
baixo letramento digital). As referências usavam fontes genéricas (Montserrat no `sucesu-cms`,
Inter no CMS). Legibilidade é requisito de acessibilidade (eMAG/WCAG), não preferência estética.
Além disso, **zero CDN** (ADR-010) e **tema ajustável pelo usuário** (ADR-016) precisam ser
respeitados.

## Decisão

- A **tipografia principal de conteúdo** (corpo/editorial/`.prose`) tem como **default**
  **Atkinson Hyperlegible Next** (Braille Institute) — desenhada para máxima legibilidade
  (baixa visão/dislexia).
- **Self-hosted/vendorizada** como **WOFF2 variable** (`@font-face`, `font-display: swap`,
  `preload` do arquivo crítico, subset e fallback com `size-adjust` para reduzir CLS).
  **Sem CDN.**
- **Ajustável pelo usuário** na **configuração global** (tema, ADR-016): o tenant pode trocar a
  fonte de conteúdo; o default é Atkinson Hyperlegible Next. Token: `--font-content`.
- Aplica-se ao **conteúdo**. Títulos/UI podem usar uma face de display (`--font-display`), mas o
  **conteúdo** herda Atkinson por padrão.
- **Licença:** SIL OFL 1.1 → pode ser vendorizada/embutida; manter o arquivo de licença no repo.
- Complementa (não substitui) os controles de acessibilidade (dislexia/espaçamento/contraste),
  que continuam vencendo a cadeia de tema (ADR-016).

## Justificativa (alternativas descartadas)

- **Montserrat/Inter como conteúdo** — descartada: genéricas, legibilidade inferior para baixa visão.
- **Só fontes de sistema** — descartada: mantidas como *fallback*, mas sem controle de legibilidade.
- **Google Fonts via CDN** — descartada: viola zero CDN e privacidade.

## Consequências

**Positivas**
- Melhor legibilidade para cidadãos; alinhado ao eMAG/WCAG e ao modo dislexia.
- Vendorizada (offline, sem CDN); um único arquivo variable cobre os pesos.

**Custos / negativas**
- Um asset a mais (mitigado por subset/preload/`swap`/`size-adjust`).
- O tema precisa expor `--font-content` e o fallback precisa ser calibrado.

## Exemplo mínimo (comparativo)

```css
/* ❌ CDN + fonte genérica para conteúdo */
@import url("https://fonts.googleapis.com/css2?family=Inter&display=swap");

/* ✅ Vendorizada + default legível + token ajustável */
@font-face {
  font-family: "Atkinson Hyperlegible Next";
  src: url("/fonts/atkinson-hyperlegible-next.woff2") format("woff2") tech(variations);
  font-weight: 200 800;
  font-display: swap;
}
:root { --font-content: "Atkinson Hyperlegible Next", system-ui, sans-serif; }
```

## Verificação

- Fonte **vendorizada** (sem CDN; `tools/vendor-check`) e licença OFL presente.
- Conteúdo usa `--font-content`; troca pelo usuário na configuração global funciona sem deploy;
  a11y (dislexia/contraste) continua vencendo.
- Fonte pré-carregada; CLS dentro do orçamento (plano 14).

## Emenda 2026-10-20 — modo dislexia: OpenDyslexic

- O **default de conteúdo** continua **Atkinson Hyperlegible Next** (legibilidade ampla).
- O **modo dislexia** (preferência `data-a11y-dyslexia="true"`) usa **OpenDyslexic** como primeira
  família de `--font-content`, seguida do fallback métrico do Atkinson e de alternativas de sistema.
  Assim a preferência explícita do usuário vence o default, sem perder um fallback calibrado.
- OpenDyslexic é **vendorizada** (4 WOFF2: regular/bold/itálico/bold-itálico) com
  `LICENSE-OPENDYSLEXIC-OFL.txt` (SIL OFL 1.1) ao lado dos arquivos; zero CDN.
- O `ContentFontTest` cobra os arquivos, a licença própria e a pilha do modo dislexia; o
  `assets-licenses-check` passou a validar as duas licenças OFL.

## Referências

- `.agents/skills/css-moderno/11-tipografia-moderna.md` (variable fonts, `font-display`, `size-adjust`);
  Atkinson Hyperlegible Next — Braille Institute (SIL OFL 1.1).
