Um ícone tem meio segundo e 24 pixels para ser entendido — e quase nunca é "universal"

Apostila completa de Iconografia & Sistemas de Ícones

Ícones são a linguagem visual mais condensada de uma interface. Esta apostila cobre a anatomia e o grid, os estilos (linha, sólido, cor), como desenhar um ícone da metáfora ao vetor, o ajuste óptico que faz uma família parecer coerente, o SVG e a acessibilidade no código, os sistemas de ícone com tokens e pipeline, os ícones em movimento, e a governança em escala — com o olho no que produtos e design systems pedem.

10 módulosGrid · keyline shapesAjuste ópticoSVG · a11yTokens · pipelineExercícios com gabarito
MÓDULO 01 · BÁSICO

O que é um ícone e para que serve

Objetivo: separar ícone de ilustração, logo e pictograma; entender as funções reais de um ícone; e enterrar o mito de que "ícone é universal".

1.1 Ícone, ilustração, logo, pictograma

TermoO que éEscala típica
Ícone (de UI)símbolo funcional pequeno que representa uma ação, objeto ou conceito numa interface16–48px
Pictogramaícone de sinalização/ambiente, geralmente isolado e maior (banheiro, saída)de placa
Ilustração (spot)imagem com estilo e narrativa; explica, dá afeto, ocupa espaçomédia/grande
Logo / símbolo de marcaidentifica uma entidade; carrega significado depositado pelo usoqualquer

Um ícone de "lixeira" pode aparecer em 200 telas; um logo aparece em uma marca. Ícone é vocabulário; logo é nome próprio. Ver a apostila Logótipos & Lettering.

1.2 Para que serve um ícone

1.3 O mito do ícone universal

Pouquíssimos ícones são realmente entendidos sem aprendizado: lupa (busca), casa (início), engrenagem (configurações), X (fechar), setas. A maioria — o disquete de "salvar", o "hambúrguer", os três pontinhos, o coração vs estrela vs marcador — é convenção aprendida, e varia por plataforma, cultura e faixa etária. Um ícone ambíguo sem rótulo é uma adivinhação.

💡 A regra que organiza a apostila

Ícone + rótulo, sempre que couber. O ícone acelera o reconhecimento para quem já sabe; o rótulo garante para quem não sabe e para leitores de tela. Ícone sozinho só quando (a) o significado é comprovadamente universal, (b) o espaço é crítico, e (c) há sempre um tooltip/nome acessível. Testar com usuários é a única forma de saber se um ícone "fala".

1.4 Quando NÃO usar um ícone

💼 Mercado de trabalho

Perguntas de abertura: "Qual a diferença entre ícone e ilustração?" (função e escala vs narrativa e afeto), "Ícones são universais?" (quase nenhum; a maioria é convenção aprendida — daí ícone + rótulo), "Quando você usaria um ícone sem texto?" (significado comprovado + espaço crítico + nome acessível sempre).

✏️ Exercício 1 — Ícone, rótulo ou os dois

Para cada item de UI, decida ícone só, rótulo só, ou os dois — e justifique: (a) o botão "fechar" de um modal; (b) uma ação "Exportar para CSV" num menu; (c) os itens de uma navegação principal (Início, Pedidos, Relatórios, Config.); (d) o status de um pedido numa tabela (pago/pendente/cancelado).

Gabarito (uma boa resposta): (a) ícone só (X é universal) + aria-label="Fechar". (b) rótulo (com um ícone de apoio opcional) — "exportar para CSV" não tem metáfora clara e o menu tem espaço. (c) ícone + rótulo — navegação principal se beneficia do reconhecimento rápido e do ensino; em mobile pode colapsar para ícone + rótulo pequeno, nunca só ícone para itens ambíguos como "Relatórios". (d) ícone/forma + rótulo + cor — status não pode depender só de cor (daltonismo; ver Cor e Acessibilidade Digital & WCAG); um selo com texto e um ícone de apoio.

MÓDULO 02 · BÁSICO

Anatomia e grid do ícone

Objetivo: entender o canvas, a live area, o padding, as keyline shapes e o grid de pixels — o andaime que faz uma família de ícones parecer do mesmo tamanho.

2.1 Canvas, live area e trim

2.2 Keyline shapes

Um conjunto de formas de referência — quadrado, círculo, retângulo em pé, retângulo deitado — cada uma com uma área visual equivalente (não a mesma medida). Você encaixa cada ícone na keyline que melhor lhe serve: um ícone "quadrado" (câmera) usa o quadrado; um "redondo" (relógio) usa o círculo, que é um pouco maior para compensar o overshoot (ver Logótipos & Lettering, Módulo 5). É isso que faz uma câmera e um relógio parecerem do mesmo tamanho na barra.

2.3 O grid de pixels

2.4 Densidades / a escala de tamanhos

TamanhoUso típicoNível de detalhe
16pxinline com texto, densidade alta, árvoresmínimo — só a silhueta essencial
20–24pxo padrão de UI (botões, menus, listas)a metáfora clara, poucos detalhes
32–40pxestados vazios pequenos, destaquesmais detalhe possível
48px+onboarding, marketing, ilustrativocaminho para ilustração

Famílias sérias entregam desenhos otimizados por tamanho (o de 16 não é o de 24 encolhido) — é o "optical size" da tipografia aplicado a ícone.

💼 Mercado de trabalho

Perguntas: "O que são keyline shapes e por que existem?" (formas de referência de área visual equivalente — igualam o tamanho percebido entre ícones redondos e quadrados), "Por que desenhar no tamanho-alvo?" (nitidez no grid de pixels), "O ícone de 16 é o de 24 reduzido?" (não — o ideal é um desenho por tamanho, com menos detalhe nos pequenos).

✏️ Exercício 2 — Monte o grid

Especifique o sistema de grid para uma família de ícones de UI: canvas, padding, live area, keyline shapes (com proporções relativas), largura de traço, e a escala de tamanhos. Explique por que o círculo da keyline é maior que o quadrado.

Gabarito (uma boa resposta): canvas 24×24; padding 2px em todos os lados; live area 20×20. Keyline shapes dentro da live area: quadrado ~18×18; círculo ~Ø20 (maior para overshoot — um círculo de 18 pareceria menor que o quadrado de 18); retângulo em pé ~14×20; retângulo deitado ~20×14. Traço: 2px (1.5px numa variante "small" para 16px), cantos com raio consistente (ex.: 2px), terminais e junções padronizados. Escala: 16 / 20 / 24 / 32 / 48, com o desenho de 16 simplificado (menos nós, sem detalhes internos). O círculo é maior porque uma forma redonda com o mesmo diâmetro que o lado do quadrado ocupa menos "massa" visual e parece menor — o overshoot compensa.

MÓDULO 03 · BÁSICO

Estilo: linha, sólido, cor

Objetivo: escolher entre line, solid, duotone e flat colorido; padronizar traço, cantos e nível de detalhe; e conhecer as famílias públicas.

3.1 Os estilos

EstiloComo éBom para
Line / outline / strokecontorno de traço uniforme, interior vazadoUI leve e neutra; o padrão hoje (Feather, Lucide, Heroicons outline)
Solid / filledformas preenchidas, sem (ou pouco) traçoestado ativo/selecionado, tamanhos muito pequenos, mais peso e contraste
Duotoneuma forma base clara + detalhes em cor cheiahierarquia interna, um toque de marca sem colorir tudo
Flat colorido / 3Dmúltiplas cores, às vezes profundidademarketing, onboarding, app icons — raramente UI funcional

Padrão comum: line para o repouso, solid para o estado ativo (a mesma metáfora, dois pesos) — como a tab bar do iOS.

3.2 Os parâmetros que definem a família

3.3 Famílias públicas de referência

💼 Mercado de trabalho

Perguntas: "Line ou solid?" (line para repouso/UI neutra; solid para ativo, pequeno, mais peso — comum usar os dois), "Que parâmetros definem uma família de ícones?" (traço, cap, join, raio, ângulos, detalhe, metáfora consistente), "Quando você usaria uma lib pronta vs desenhar?" (lib para o comum; desenhar para o específico da marca e para preencher lacunas — Módulo 9).

✏️ Exercício 3 — Especifique o estilo

Para um produto financeiro sério (confiável, moderno, denso), especifique o estilo da família de ícones: line ou solid (e onde cada um), traço, cap/join, raio, ângulos, e uma família open source que serviria de base.

Gabarito (uma boa resposta): line como padrão (leve, não compete com números), solid para estado selecionado na navegação. Traço 2px em 24 (1.5px na variante 20). Cap round ou buttround suaviza sem infantilizar; join round. Raio de canto pequeno (~2px) — moderno sem "bolha". Ângulos 0/45/90. Base: Lucide ou Heroicons outline (estilo sóbrio, cobertura ampla, licença permissiva), estendida com ícones próprios para conceitos do domínio (fatura, conciliação, split de pagamento) no mesmo grid e traço.

MÓDULO 04 · INTERMEDIÁRIO

Desenhar um ícone

Objetivo: da metáfora ao vetor — simplificar, alinhar ao grid, usar booleanas e curvas limpas, e testar em tamanho real.

4.1 Da ideia à forma

4.2 Construção no vetor

4.3 Encaixe óptico no grid

4.4 Testar

⚠️ Erros ao desenhar ícones

Auto-trace de um clipart. Traços em pixels fracionários (0.7, 1.3) → borrão. Detalhe demais para 16px. Metáforas misturadas. Nós redundantes nas curvas. Traço não expandido no SVG final (escala mal, não aceita currentColor em fill). Ícone que só funciona porque está grande na tela do designer. Diagonais em ângulos aleatórios. "Quase simétrico".

💼 Mercado de trabalho

Perguntas: "Como você desenha um ícone novo?" (metáfora convencional → reduzir ao essencial → primitivas + booleanas no grid → expandir traço → testar em tamanho real e na família), "Stroke ou fill no SVG final?" (expandir o traço em forma para produção), "Como você garante nitidez?" (desenhar no tamanho-alvo, traços em pixels inteiros).

✏️ Exercício 4 — Do conceito ao vetor

Desenhe (de verdade) três ícones para uma mesma família: "notificações", "favorito" e "filtrar". Documente para cada: a metáfora escolhida (e uma alternativa descartada), o traço/raio/ângulos, e um problema que apareceu em 16px.

Gabarito (critérios): metáforas convencionais (sino para notificações — não um alto-falante; estrela ou coração para favorito, escolhido e usado de forma consistente; funil para filtrar — não três linhas que se confundem com "menu"). Os três devem compartilhar traço (ex.: 2px), cap/join, raio e ângulos (45°). Problemas típicos em 16px: o badalo do sino somindo; as pontas da estrela empastando (abrir os ângulos, engrossar as contraformas); o funil virando um triângulo ilegível (simplificar para 2–3 traços). Todos testados em preto/branco e na grade com os vizinhos.

MÓDULO 05 · INTERMEDIÁRIO

Ajuste óptico e consistência da família

Objetivo: fazer todos os ícones da família parecerem do mesmo tamanho e peso — porque a medida igual não produz aparência igual.

5.1 Peso visual uniforme

5.2 Tamanho percebido

5.3 Junções, contraformas e detalhes

5.4 Alinhamento e o teste da família

💡 Consistência não é igualdade de medida

Se você desenhar todos os ícones exatamente 20×20, a família vai parecer irregular — o círculo pequeno, a seta magra perdida, o calendário pesado. Consistência de ícone é um trabalho de ajuste óptico ícone a ícone contra a família inteira, não de encaixar tudo na mesma caixa. É a diferença entre um set "de estagiário" e um set "de sistema".

💼 Mercado de trabalho

Perguntas: "Como você garante que uma família de ícones parece consistente?" (ajuste óptico ícone a ícone contra a família: peso visual, overshoot, junções, alinhamento; o teste da grade completa), "Por que a variante solid às vezes é menor?" (mais massa → mesmo tamanho percebido), "O que fazer com um ícone que tem muitos traços internos?" (reduzir densidade ou afinar o traço).

✏️ Exercício 5 — Equalize a família

Você tem 8 ícones desenhados todos em 20×20 exatos: alguns parecem grandes, outros pequenos, um (o "configurações", uma engrenagem) parece pesado. Liste os ajustes ópticos que você faria, ícone por tipo.

Gabarito (uma boa resposta): ícones redondos (relógio, alvo): aplicar overshoot, ampliar ~1–2px além da live area. Ícones magros/isolados (raio, seta): ampliar para preencher melhor a caixa. Ícones horizontais/verticais: esticar levemente no eixo curto da percepção. A engrenagem: reduzir o número de dentes, afinar o traço em ~0.25px em relação ao resto, abrir a contraforma central — ela concentra muito preto. Todos: rever junções (afinar cruzamentos), conferir alinhamento vertical com texto. Validar montando a grade dos 8 e escaneando com o olho meio fechado; iterar.

MÓDULO 06 · INTERMEDIÁRIO

Ícone no código: SVG e acessibilidade

Objetivo: entender o SVG de um ícone, otimizá-lo, escolher a forma de servir (inline, sprite, componente), e torná-lo acessível.

6.1 Anatomia do SVG de um ícone

<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
     viewBox="0 0 24 24" fill="none"
     stroke="currentColor" stroke-width="2"
     stroke-linecap="round" stroke-linejoin="round">
  <path d="M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m3 0v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/>
  <path d="M10 11v6M14 11v6"/>
</svg>

6.2 Otimização

6.3 Como servir os ícones

MétodoComoTrade-off
Inline SVGo <svg> direto no HTML/JSXestiliza tudo, anima, acessível; infla o DOM se repetido muito
Sprite <symbol> + <use>um arquivo com todos os ícones; <use href="#icon-trash">um request, cacheável, sem inflar o DOM; um pouco mais de setup
SVG-as-componentcada ícone é um componente (SVGR no React etc.)DX ótima, tree-shaking, props; parte do bundle JS
<img> / backgroundSVG como arquivo de imagemcacheável e simples; não herda currentColor, não anima peças
Ícone-fonte (glyphs)uma fonte onde cada caractere é um íconelegado — problemas de a11y, rendering, FOUT, alinhamento; evite em projeto novo

Recomendação atual: SVG-as-component em apps com framework (só o que se usa entra no bundle) ou sprite em sites — nunca ícone-fonte novo.

6.4 Acessibilidade

6.5 Alinhar ícone com texto

.icon{
  width: 1em; height: 1em;      /* escala com o font-size do contexto */
  fill: currentColor;            /* ou stroke */
  vertical-align: -0.125em;      /* ajuste fino à linha de base */
  flex: none;                    /* não deixa o ícone encolher num flex */
}
💼 Mercado de trabalho

Perguntas de front-end: "Como você serve ícones num app moderno?" (SVG-as-component com tree-shaking, ou sprite; nunca ícone-fonte novo), "O que currentColor resolve?" (um arquivo, todas as cores/temas), "Como um botão só-ícone fica acessível?" (aria-label no botão; ícone aria-hidden), "Ícone decorativo vs semântico — o que muda no markup?".

✏️ Exercício 6 — Markup correto

Escreva o markup acessível para: (a) um botão "Adicionar aos favoritos" que é só um ícone de coração; (b) um item de lista "Fatura de março" com um ícone de PDF à esquerda (o texto já diz que é uma fatura); (c) um badge de status "Erro" com um ícone de triângulo. Explique a decisão de a11y em cada.

Gabarito (uma boa resposta): (a) <button type="button" aria-label="Adicionar aos favoritos" aria-pressed="false"><svg aria-hidden="true" …></svg></button> — o nome vive no botão; o ícone é escondido; aria-pressed comunica o estado toggle; e o coração cheio vs vazado (forma, não só cor) marca o estado. (b) <svg aria-hidden="true"> — o ícone de PDF é decorativo porque "Fatura de março" já informa; se o formato importa, adicione um texto "PDF" visível ou <span class="sr-only">PDF</span>. (c) o badge tem texto "Erro" visível → o ícone é aria-hidden; o sentido vem do texto + forma do triângulo, não só do vermelho; contraste do texto e do ícone ≥ 4.5:1 / 3:1 com o fundo do badge.

MÓDULO 07 · AVANÇADO

Sistemas de ícone e tokens

Objetivo: nomear, versionar e distribuir uma biblioteca de ícones — variantes, ícones variáveis, pipeline do Figma ao pacote, e a integração com o design system.

7.1 Nomenclatura

7.2 Variantes

EixoValores típicosPor quê
Tamanho16 / 20 / 24 (desenhos otimizados)nitidez e detalhe por contexto
Estilo/pesoline / solid (às vezes thin, bold, duotone)repouso vs ativo; densidade
Direçãoup/down/left/rightsetas, chevrons — gerar por rotação quando possível

7.3 Ícones variáveis

Material Symbols e SF Symbols são fontes/ícones variáveis: eixos de weight (casando com o peso do texto), fill (0→1 entre line e solid), grade (ajuste fino de peso para dark mode, como o GRAD da tipografia) e optical size. Um arquivo, um espectro contínuo — menos assets, e o ícone "acompanha" a tipografia. Ver a apostila Tipografia, Módulo 7.

7.4 O pipeline

Figma (página de ícones, 1 component por ícone, no grid)
   │  plugin de export / API
   ▼
SVGs crus  ──►  SVGO (config do projeto)  ──►  validação
   │                                            (viewBox? currentColor? 1 cor? nome válido?)
   ▼
gerar saídas:
   • pacote SVG + sprite
   • componentes React/Vue/Web Components (SVGR)
   • índice pesquisável (JSON: nome, tags, categorias)
   ▼
publicar  @empresa/icons@x.y.z   (SemVer + changelog)

7.5 Integração com o design system

💼 Mercado de trabalho

Perguntas: "Como você nomeia ícones numa biblioteca?" (pela coisa, não pelo uso; aliases; índice com tags), "Como é o pipeline de uma biblioteca de ícones?" (Figma → export → SVGO → validação → SVG/sprite/componentes/índice → pacote versionado no CI), "O que é um ícone variável?" (eixos weight/fill/grade/opsz — Material/SF Symbols), "Como o ícone se integra ao design system?" (tokens de tamanho e cor; componentes recebem por prop).

✏️ Exercício 7 — Desenhe a biblioteca

Especifique a biblioteca de ícones de um produto: (a) a regra de nomes + 3 exemplos com aliases; (b) os eixos de variante que você suportaria; (c) o pipeline em 5 passos; (d) a política de versionamento com 2 exemplos.

Gabarito (uma boa resposta): (a) kebab-case, nome pela coisa, categorias por prefixo: trash (alias bin, delete), arrow-right (alias next), file-pdf (alias document-pdf). Índice JSON com keywords em PT e EN. (b) tamanho (16/20/24, desenhos otimizados), estilo (line/solid), direção (gerada por rotação para setas/chevrons). (c) Figma (1 component/ícone no grid 24) → export via plugin → SVGO com config do repo → validação (viewBox 0 0 24 24, currentColor, 1 path/cor, nome no padrão, sem <text>) → build (sprite + componentes SVGR + índice) e publish @empresa/icons. (d) adicionar qr-code → minor 1.4.0; renomear cog para settings (mantendo cog como alias por 1 ciclo, depois removendo) → major 2.0.0 com nota de migração.

MÓDULO 08 · AVANÇADO

Ícones em movimento e estados

Objetivo: animar ícones com propósito — micro-interações, morphs, ícones de estado — e as técnicas (CSS, SVG, Lottie) e limites (reduced motion).

8.1 Quando animar um ícone

8.2 Técnicas

TécnicaBom paraNotas
CSS transition/animation sobre SVG inlinerotação, escala, opacidade, stroke-dashoffset (desenhar traço), troca de d simplesleve, sem dependência; anime transform/opacity para performance
SVG SMIL / Web Animations APIanimar atributos SVG, timelines no JSWAAPI é o caminho moderno; SMIL tem suporte irregular
Morph de path (Flubber, GSAP MorphSVG)transformar um ícone em outro suavementeprecisa de paths compatíveis (mesmo nº de pontos) ou de interpolador
Lottie (Bodymovin)animações complexas feitas no After Effectsarquivo JSON + runtime; ótimo para onboarding/estado vazio; pesa mais
Rivestate machines interativas, ícones que respondem a inputruntime próprio; poderoso para micro-interação com estados

8.3 Princípios

8.4 prefers-reduced-motion

@media (prefers-reduced-motion: reduce){
  .icon-animate{ animation: none; transition: none; }
  /* troque o "desenhar o check" por ele já aparecendo */
}
💼 Mercado de trabalho

Perguntas: "Quando animar um ícone?" (feedback, mudança de estado, progresso — não decoração de itens estáticos), "CSS, Lottie ou Rive?" (CSS para micro-interações simples; Lottie para complexo/AE; Rive para interativo com estados), "Como você respeita reduced motion?" (versão estática equivalente; sem flash), "Que duração para uma micro-interação?" (~120–300ms, ease-out).

✏️ Exercício 8 — Especifique 3 animações

Para (a) um botão "curtir" (coração), (b) um menu que abre (hambúrguer → X), (c) um botão de "salvar" que processa e conclui — descreva a animação (o que se move, duração, easing), a técnica, e o comportamento com prefers-reduced-motion.

Gabarito (uma boa resposta): (a) coração: escala rápida 1→1.2→1 (~200ms, ease-out) + preenchimento (line→solid) + talvez um "burst" de partículas opcional; CSS transform/opacity sobre SVG inline; com reduced motion, só troca line→solid instantâneo. (b) hambúrguer→X: as três linhas rotacionam/transladam para formar o X (~250ms, ease-in-out); CSS transform em cada <line> (ou morph de path); com reduced motion, troca direta de ícone. (c) salvar: ícone de disquete/seta → spinner girando enquanto processa → check que se "desenha" via stroke-dashoffset ao concluir (~300ms) → volta ao repouso após 1s; CSS + estado no componente; com reduced motion, spinner vira um texto "Salvando…" e o check aparece pronto. Todos: duração curta, ease-out no fim, mesma linguagem de motion do resto do produto.

MÓDULO 09 · MUITO AVANÇADO

Governança, escala e cobertura

Objetivo: dimensionar o "core set", evitar duplicatas, rodar auditorias, lidar com múltiplas plataformas e i18n, e decidir entre lib open source e desenho próprio.

9.1 Quantos ícones um produto precisa

9.2 Duplicatas e sinônimos

9.3 Múltiplas plataformas

9.4 Internacionalização

9.5 Comprar/usar vs desenhar

Use uma lib open source quandoDesenhe quando
o estilo dela serve à marca; a cobertura cobre 90%+ do core set; a licença permite (checar)a marca precisa de um estilo próprio; há muitos conceitos de domínio sem ícone pronto; consistência total importa
time pequeno, sem icon designero set é pequeno e definido, e você tem quem desenhe e mantenha
abordagem: adote a lib e estenda no mesmo grid/traço para as lacunasabordagem: defina o sistema (Módulos 2–3) e produza contra ele
💼 Mercado de trabalho

Perguntas: "Quantos ícones um produto precisa?" (60–150 no core; libs têm milhares, você usa uma fração), "Como você evita duplicatas numa biblioteca?" (índice + aliases + dono + propor antes; auditoria de órfãos e fora-do-padrão), "iOS, Android e web usam o mesmo set?" (set de marca + símbolos do sistema por plataforma), "Quais ícones espelham em RTL?" (os direcionais; não os simétricos/neutros), "Usar Lucide ou desenhar?" (adotar + estender se o estilo serve; desenhar se a marca pede estilo próprio).

✏️ Exercício 9 — Estratégia de ícones

Uma startup tem web + apps iOS e Android, time de design pequeno, e ~40 telas. Recomende a estratégia de ícones: lib ou desenho, como cobrir as três plataformas, governança mínima, e o que fazer com 12 conceitos de domínio (ex.: "conciliação", "split de pagamento") que nenhuma lib tem.

Gabarito (uma boa resposta): adotar uma lib open source de estilo sóbrio (Lucide/Heroicons) como base na web e Android; no iOS, usar SF Symbols para o que é convencional (economiza muito) e trazer os ícones de marca só onde precisa de identidade. Governança mínima: um dono da biblioteca, um arquivo Figma único com os ícones no grid da lib (24, traço 2px), um índice com aliases, e a regra "proponha antes de adicionar". Os 12 conceitos de domínio: desenhar no mesmo grid e traço da lib base (para se fundirem à família), revisados na grade completa, versionados no pacote @startup/icons. Auditar a cada trimestre por órfãos e divergências. Marcar quais dos direcionais espelham em RTL (se houver plano de i18n).

MÓDULO 10 · CARREIRA

Mercado de trabalho: roadmap, entrevistas e portfólio

Objetivo: converter o conteúdo dos módulos em contratação — onde a habilidade é usada, um plano de estudo, um banco de perguntas e projetos que geram entrevista.

10.1 Onde iconografia pesa

10.2 Roadmap de estudo (5–7 semanas)

SemanasFocoPrática
1Função, mitos, grid e keyline shapes (Módulos 1–2)Auditar 3 apps: listar seus ícones, quais funcionam sem rótulo, o grid aparente
2Estilo e desenho (Módulos 3–4)Definir um sistema (grid, traço, cantos, ângulos) e desenhar 12 ícones nele
3Ajuste óptico (Módulo 5)Equalizar os 12 na grade completa; documentar cada ajuste
4SVG e acessibilidade (Módulo 6)Otimizar com SVGO; montar sprite + componentes; markup acessível de 3 casos
5Sistema e tokens (Módulo 7)Nomear a biblioteca, criar o índice pesquisável, esboçar o pipeline e o versionamento
6Movimento e governança (Módulos 8–9)Animar 3 ícones (CSS/Lottie); escrever a política de contribuição e i18n/RTL
7PortfólioPublicar o set com o estudo de caso (grid, decisões, ajustes, entrega)

10.3 Banco de perguntas (com a resposta que aprova)

Júnior/pleno — "Ícones são universais?"

Quase nenhum. Lupa, casa, engrenagem, X e setas são amplamente entendidos; o resto é convenção aprendida e varia por plataforma, cultura e idade. Por isso a regra é ícone + rótulo, com ícone sozinho só quando o significado é comprovado, o espaço é crítico e há sempre um nome acessível.

Pleno — "O que são keyline shapes e por que existem?"

Formas de referência (quadrado, círculo, retângulos) com área visual equivalente — não a mesma medida. Cada ícone se encaixa na que lhe serve. Existem porque um círculo e um quadrado do mesmo tamanho medido parecem tamanhos diferentes; a keyline (com overshoot no círculo) faz a família parecer uniforme.

Pleno — "Como você garante consistência numa família de ícones?"

Um sistema fixo (grid, traço, cap/join, raio, ângulos, metáfora) + ajuste óptico ícone a ícone contra a família: peso visual uniforme (compensar ícones "cheios"), overshoot em redondos, afinar junções, alinhamento vertical com texto. O teste é montar todos numa grade pequena e escanear com o olho meio fechado — o que "salta" se ajusta.

Pleno/front-end — "Como você serve ícones e por que não ícone-fonte?"

SVG-as-component (tree-shaking, só o que se usa) em apps com framework, ou sprite <symbol>/<use> em sites. currentColor para herdar cor/tema. Ícone-fonte é legado: problemas de acessibilidade (lido como caractere), de rendering, FOUT, e alinhamento frágil.

Pleno — "Ícone decorativo vs semântico no markup?"

Decorativo (ao lado de um rótulo que já diz tudo): aria-hidden="true". Semântico/sozinho (botão só-ícone): o controle recebe aria-label; o ícone continua aria-hidden. Alvo de toque ≥ 24px, contraste ≥ 3:1 se carrega informação, e não depender só da cor entre estados.

Sénior — "Como você estrutura uma biblioteca de ícones?"

Nomes pela coisa (não pelo uso) + aliases + índice pesquisável com keywords; variantes por tamanho/estilo/direção; pipeline Figma → export → SVGO → validação → SVG/sprite/componentes/índice → pacote SemVer no CI (add = minor; renome/remoção = major com alias/codemod); tokens de tamanho e cor integrados ao design system; paridade de nomes Figma ↔ código.

Sénior — "iOS, Android e web devem usar o mesmo set?"

Não necessariamente. Um set de marca compartilhado para os ícones específicos do produto + os símbolos do sistema (SF Symbols no iOS, Material no Android) para o que é convencional em cada plataforma — assim a UI parece nativa. Na web, controle total, mas com atenção ao bundle.

Armadilha — "Pego 300 ícones de uma lib e pronto"

Você usa 60–150; o resto é peso e ruído se importado inteiro. E uma lib genérica não cobre os conceitos de domínio nem casa 100% com a marca. O certo é adotar uma lib de estilo compatível, importar só o que usa (tree-shaking), e estender no mesmo grid/traço para as lacunas — com governança para não acumular duplicatas.

10.4 Projetos de portfólio que geram entrevista

  1. Um set coeso de 24–36 ícones (âncora): um sistema documentado (grid, keyline shapes, traço, ângulos), os ícones equalizados na grade, e o antes/depois de 3 ajustes ópticos.
  2. Um ícone do conceito ao SVG: um estudo de caso de um único ícone difícil — as metáforas testadas, os esboços, o encaixe no grid, o ajuste óptico, o SVG otimizado e o markup acessível.
  3. Biblioteca com pipeline: um repo com SVGs → SVGO → sprite + componentes + índice pesquisável, publicado como pacote, com README de nomenclatura e versionamento.
  4. Estudo de acessibilidade e i18n: os mesmos ícones com markup decorativo vs semântico, estados que não dependem de cor, e o mapa de quais espelham em RTL.
  5. Contribuição real para uma lib open source (Lucide, Tabler, Phosphor) — um ou dois ícones aceitos, seguindo as guidelines delas.

10.5 Fontes para continuar

🏁 Síntese final da apostila

Cinco ideias sustentam a iconografia: (1) ícone é vocabulário funcional, quase nunca universal — ícone + rótulo por padrão; (2) um grid com keyline shapes e um estilo fixo (traço, cantos, ângulos, metáfora) são o andaime; (3) consistência é ajuste óptico ícone a ícone contra a família, não medida igual; (4) no código, SVG com currentColor, servido como componente ou sprite, com acessibilidade explícita — nunca ícone-fonte novo; (5) em escala, é uma biblioteca versionada com pipeline, nomes e governança, integrada ao design system.