Marca SEED
4. Tipografia — 2 famílias de sistema + 1 celebratória de fronteira estreita
marca-seed.md v5.64 · §04seção 5 de 2204-tipografia-2-familias-de-sistema-1-celebratoria.md · MD5 f3fae345Em uma frase: Montserrat para marca e interface (400/500/600/700), JetBrains Mono para dado e identificador, Caveat só em display celebratório de 1 a 3 palavras.
Vocabulário desta seção: subset
O que esta seção NÃO cobre: A Caveat NÃO entra nos tokens nem em corpo de texto, documento, material técnico, interface ou e-mail. — se é disto que você precisa, não preencha em silêncio: gere o pedido de cobertura (https://ds.seed.eng.br/pedidos/).
4.1 Montserrat — marca e interface#
Do display ao corpo. Pesos carregados pelo sistema: 400 (Regular), 500 (Medium), 600 (SemiBold), 700 (Bold) — são os quatro que o subset seed (gen-subset-fontes.py), os 17 moldes e o registry @seed/fontes servem (medido em 2026-09-15, FT-P2, MANIFESTO §225.3). O 300 (Light) existe como TTF em 03-assets/fontes/montserrat/ e é permitido em peça impressa, que embute a fonte que usa; em tela, corpo é Regular (400) — até esta versão o §4.1 mandava Light no corpo, a tela-documento obedecia e recebia 400 em silêncio, porque nenhum molde carregava o 300 (veredito dele, gate do Grupo 2, MANIFESTO §226.1: "V-FT2.4 light: b"). Itálico não é carregado: <em> rende como oblíquo sintético do navegador, e é o aceito ("V-FT2.3 itálico: b"; 76 elementos medidos, 0 B). 800 (ExtraBold) e 900 (Black) são display de marketing (§4.3) e não entram nos moldes — e por isso <strong>/<b> dentro de texto que já é 700 não engrossa (o bolder pede 900 e não há face): a ênfase ali é por cor (--seed-text-brand-strong, peso herdado), regra em seed-componentes.md §75.8 ("V-FT2.1 strong: b"). Versão variável: preferir onde o consumidor a suporta; os moldes servem estáticos.
| Uso | Especificação |
|---|---|
| Título principal | Bold (700), tracking -0.5 a -2px |
| Subtítulo | SemiBold (600) |
| Corpo | Regular (400) em tela; Light (300) só em peça impressa, que embute a fonte completa (V-FT2.4 = b, 2026-09-15; em woff2 desde a REV-P6, §4.5) |
| Texto corrido longo | Regular com line-height 1.65 (Light só no impresso) — pesos médios em massa ficam monótonos nesta fonte (regra de legibilidade, obrigatória em blog/relatório) |
4.2 JetBrains Mono — dados e técnica#
Pesos: 400, 500, 700. Papel exclusivo: dados de medição (kWh, kWp, demanda), identificadores (UC, ART, nº de proposta), código, timestamps, e acento técnico em labels micro (o caption pode ser mono — ver escala). Algarismos tabulares nativos: colunas de números alinham. Nunca em títulos ou parágrafos.
4.3 Camada expressiva e fonte celebratória (decisões de 2026-07-31)#
Camada expressiva da Montserrat — pesos 800/900 liberados para display de marketing. A família tem 9 pesos; o sistema usa 4 no dia a dia, e o marketing ganha ExtraBold (800) e Black (900) para títulos de impacto em social e campanhas. Repertório oficial de tratamento (usar antes de pensar em fonte nova): Black gigante com tracking apertado · grifo amarelo (accent-highlight) atrás da palavra-chave · contraste Light+Black na mesma frase · contorno/outline do Black · caixa alta empilhada · número gigante em JetBrains Mono como quebra técnica. Fundamento (pesquisa 2026): o erro mais comum é buscar fonte nova quando o sistema só precisa ser usado com mais criatividade.
Fonte celebratória: Caveat (Google Fonts, SIL OFL, pesos 400–700 variável, PT-BR completo). Escolhida pelo Rafael em comparativo real de 3 candidatas (vs. Shantell Sans e Kalam, mockup "Feliz 2026!" na linguagem v5.0). É a resposta oficial à necessidade que a Indie Flower atendia de forma errada — o registro manuscrito para momentos humanos, agora com fonte contemporânea e fronteiras duras:
- Onde: display de peças celebratórias e de emoção — datas comemorativas, celebrações, conquistas, campanhas humanas. 1 a 3 palavras por peça (ex.: "Feliz 2026!"), sempre em Bold (700) para presença.
- Nunca: corpo de texto, propostas, documentos, material técnico, licitação, UI/produtos, e-mail. Por decisão deliberada, a Caveat não entra nos tokens (
seed-tokens.*) — mantê-la fora do sistema de produto é o que garante a fronteira. - Sempre pareada com layout limpo: Montserrat no restante da peça, lei 70/20/10 valendo.
- Fundamento (pesquisa 2026): tipografia manuscrita é tendência central ("imperfect by design" — reação à perfeição gerada por IA), com a ressalva de mercado que adotamos como regra: funciona para o caloroso/humano, nunca para o corporativo/técnico.
4.4 Aposentadorias (supersede formal)#
- Indie Flower — aposentada (2026-07-30). A tagline manuscrita "Soluções Sustentáveis" sai de cena como elemento visual; o texto segue existindo como texto normal quando fizer sentido. Motivo: a fonte (marker fina, genérica, de 2010) envelhecia o visual — mas a categoria manuscrita provou-se válida e ganhou sucessora oficial com fronteiras: a Caveat (§4.3).
- Neo Tech — aposentada (2026-07-30). Não tinha papel definido, não está no Google Fonts, nenhuma peça recente a usava.
4.5 Pilhas de fallback (tokens) — e desde 2026-08-26 elas são PLANO B de verdade#
⚠⚠ A pilha não é mais o mecanismo de entrega da fonte — é reserva. Decisão
dele em 2026-08-26 ("podemos deixar o plano B, mas temos que forçar sempre a
fonte canônica"): peça impressa EMBUTE a família (contrato TP1, aborta se
faltar) e bancada/tela referencia por URL relativa os TTF de
03-assets/fontes/. A pilha abaixo só trabalha em arquivo aberto fora do
repositório ou mutilado. Instalação no sistema é opcional e documentada em
03-assets/fontes/LEIA-ME.md. ⭐ Antes disso, "fallback" era eufemismo: sem
@font-face em lugar nenhum, a pilha era o mecanismo primário — e o mono
rasterizava Consolas em tudo que estava vivo.
--seed-font-sans: 'Montserrat', -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
--seed-font-mono: 'JetBrains Mono', 'SF Mono', Consolas, 'Courier New', monospace;
⛔ O SUBSET seed NÃO COBRE TUDO — e o buraco só aparece na peça pronta (novo na v5.42). Medido em
2026-09-08 ao refazer dois documentos com o DS: o montserrat-seed-400.woff2 não tem a seta →
(U+2192), e o navegador trocou os três caracteres pelo Segoe UI do sistema, sem erro, sem aviso e
sem que ninguém percebesse — foi o conferir-peca.py (CP-2) que achou, medindo o PDF entregue. Os TTF
completos de 03-assets/fontes/ têm o glifo.
Regra que fica: peça de TELA usa o subset (é o que ele existe para fazer — peso de página);
peça IMPRESSA e documento que vira PDF usam a fonte completa, embutida em woff2, pelo mesmo motivo — a
cobertura — pelo qual o PPTX e o DOCX usam o TTF completo (03-assets/fontes/ttf-por-url.md). O woff2 completo tem
os MESMOS glifos e o mesmo cmap do TTF (1.312 pontos de código, 2.747 glifos por peso); só a compressão muda. Ele é
gerado pelo gen-subset-fontes.py em 03-assets/fontes/montserrat/woff2-completa/ (300 a 700), com --checar.
✅ REV-P6, 2026-09-26 — a letra desta regra dizia "TTF completo". Veredito dele na folha da REV-P1, v2
(MANIFESTO §249.2 e §250), verbatim: "3 fonte das peças: woff2". Medido na aplicação: as 67 peças que embutiam o
TTF passaram a 39,4 MB (eram 135,6 MB; −96,2 MB), com o PNG de MD5 igual em 67 de 67 e o PDF com as mesmas páginas,
as mesmas fontes e 0 px de diferença a 150 dpi em 67 de 67. E, em qualquer caso, a conferência é do arquivo
pronto: o CP-2 reprova fonte de fora do DS, e é assim que um fallback silencioso vira defeito
visível. ✅ MR-P17 FECHADA em 2026-09-13 — ele decidiu AMPLIAR (folha "Fila do DS — decisões rápidas", D-2 = A,
verbatim "ampliar o subset (com o gerador e o re-render)", MANIFESTO §208 e §210). Desde a v5.46 o subset seed
cobre a faixa de setas e sinais: os 25 pontos de código de U+2190–U+22FF que a Montserrat possui (as 8 setas
← ↑ → ↓ ↔ ↕ ↖ ↗ ↘ ↙, ∂ ∅ ∆ ∏ ∑ − ∕ ∙ √ ∞ ∫ ≈ ≠ ≤ ≥), nas duas famílias — 230 pontos de código na Montserrat e 234 na
JetBrains Mono. E o subset passou a ter GERADOR: 06-validacao/geradores/gen-subset-fontes.py declara o
repertório faixa a faixa, gera os sete woff2 de forma determinística (duas gerações, mesmo MD5; --checar prova
o disco contra o regenerado) e confere o nome interno de cada arquivo. Custo medido na geração: Montserrat 400
25.928 → 26.728 B (+800), 500 +760, 600 +852, 700 +820; JetBrains Mono +892 a +964 B por peso. As 12 famílias
de peça que embutem o subset em base64 foram regeradas pelos próprios geradores e a evidência PNG re-renderizada.
A regra "peça de tela usa o subset; impresso e PDF usam a fonte completa" continua — a ampliação fecha o buraco
da seta em tela, não substitui a fonte inteira no papel (desde a REV-P6, a fonte inteira vai em woff2, acima).
4.6 Regras absolutas (herdadas de 2018, auditadas e mantidas)#
Sem sombras em texto · sem layouts diagonais · sem texto em curva · line-height títulos 1.1–1.2, corpo 1.5–1.7.
4.7 Escala tipográfica#
| Nível | Tamanho / lh | Peso e tracking | Uso |
|---|---|---|---|
| DISPLAY | 64/72 | Bold · -2px | Hero, capa |
| H1 | 42/48 | Bold · -0.5px | Título de página |
| H2 | 32/38 | Bold | Título de seção |
| H3 | 24/30 | SemiBold · text-brand |
Subtítulo principal |
| H4 | 18/24 | SemiBold | Subtítulo secundário |
| BODY LARGE | 17/26 | Light | Lead |
| BODY | 14/22 | Regular | Corpo padrão |
| SMALL | 12/18 | Regular · text-muted |
Notas, metadados |
| CAPTION | 11/14 | SemiBold ou JetBrains Mono Medium · 2px tracking · UPPERCASE | Labels, eyebrows, micro-headers |
Nota da v5.0: o CAPTION em mono é o acento de "precisão de engenharia" da linguagem editorial (§10). A escala vale para peças, sites e documentos; a nota da v4.1 sobre escala própria do ERP morre junto com o erp-seed-design.md — produtos usam esta escala (densidades específicas serão tokens de componente na Fase 3).
4.8 Piso tipográfico por classe de peça (novo na v5.40)#
Por que esta subseção existe. A escala da §4.7 é de tela, em px, e por isso o canon nunca teve
resposta para uma pergunta simples: qual é o menor tamanho de texto aceitável num documento impresso?
A lacuna apareceu quando o conferidor de peça (conferir-peca.py, contrato CP, F9.10) mediu dois PDF da
casa e encontrou 76 e 148 trechos abaixo do menor degrau da escala de tela — sem ter régua para dizer se
aquilo estava certo ou errado. Régua que não existe não reprova ninguém, então o item avisava em vez de
reprovar. Fechada pelo veredito dele em 2026-09-08, verbatim: "pode adotar a tabela acima".
| classe de texto | piso | de onde vem |
|---|---|---|
| cláusula contratual e condição comercial em contrato de adesão | 12 pt | [norma] é lei — CDC (Lei 8.078/1990), art. 54, § 3º, com a redação da Lei 11.785/2008: "os contratos de adesão escritos serão redigidos em termos claros e com caracteres ostensivos e legíveis, cujo tamanho da fonte não será inferior ao corpo doze" (texto oficial lido em 2026-09-08) |
| texto corrido de documento — laudo, relatório, memorial, proposta | 10 pt | [SEED] convenção da casa; é onde os documentos já estavam (corpo medido: 10,5 pt) |
| rótulo, legenda, nota de rodapé, célula de tabela densa | 8 pt — piso absoluto, nada abaixo disso | [SEED] convenção da casa |
| peça lida à distância — placa, etiqueta, adesivo de frota, roll-up | altura da letra = distância de leitura ÷ 200 | [norma] ABNT NBR 9050:2020, Versão Corrigida:2021 (a ABNT declara a 9050:2020 equivalente ao conjunto 9050:2015 + Emenda 1:2020 — foi esse conjunto que se leu em 2026-09-08; ficha lida em 2026-09-15), subseção 5.2.9.1.3: "a dimensão das letras e números deve ser proporcional à distância de leitura, obedecendo à relação 1/200" |
| sinalização de edificação | 15 mm a 50 mm de altura de caractere | [norma] mesma norma |
Três regras que vêm de carona da NBR 9050 e valem para toda peça de campo: fonte sem serifa;
texto em caixa alta e baixa, evitando texto na vertical; e caixa alta apenas em mensagem de
advertência. Elas já estavam no seed-praticas.md §23 como convenção nossa — agora têm norma.
⚠ O que é lei e o que é convenção, dito na cara: o 12 pt e a relação 1/200 são norma; o 10 pt e o 8 pt são decisão da casa, tomadas com o custo medido (adotar o piso de 8 pt custou mexer em 10 % e 15 % dos trechos dos dois documentos auditados; um piso único de 10 ou 12 pt seria redesenho, 74 % a 97 %). Quem precisar contestar o 10 e o 8 contesta uma convenção, não uma norma.
Como isto é medido: o CP-3 do conferir-peca.py reprova qualquer texto abaixo de 8 pt em peça
de página impressa e informa quantos ficam abaixo de 10 pt; em peça de tela, o piso continua sendo o
menor degrau da §4.7 (11 px).