Pular para o conteúdo

Anatomia do Ícone

Specs fonte: specs/icons/

Um ícone de produto Koder é um símbolo 3D em que a forma é o conceito — sem texto, sem moldura — gerado a partir de um master SVG único e exportado pra toda plataforma pela ferramenta kicon, nunca desenhado por densidade à mão. As regras normativas moram em icons/products.kmd e a matriz de export por plataforma em generation-targets.kmd.

Um ícone se decompõe em quatro famílias de elementos: geométricos (o grid e suas zonas), visuais (a forma e a cor), de camada (a entrega adaptativa) e metadados.

Zonas concêntricas, elementos visuais, camadas técnicas e metadados.
Figura 1 — Anatomia do ícone: zonas, elementos visuais, camadas técnicas e metadados.

1. Elementos geométricos / estruturais

#ElementoDescriçãoValor Koder
1CanvasÁrea total do ícone (sistema de coordenadas)viewBox 0 0 512 512
2Live areaO que sobrevive à máscara do SOvaria por OEM
3Safe zoneRegião central nunca clipada66,7% (Android); 80% (PWA)
4Bleed zoneFaixa externa que pode ser clipada16,7% por lado (Android)
5Margem / paddingFaixa entre o desenho e a borda, igual nos 4 ladosalvo ~10%/lado (§3)
6Keyline shapesFormas-guia que igualam o peso ópticoquadrado/círculo/retângulo
7Centro / eixo ópticoPonto de equilíbrio visual (não o centro geométrico)centralização ±4px

2. Elementos visuais / de conteúdo

#ElementoDescriçãoRegra
8Silhueta dominanteA forma principal — é o íconeR2 (uma só)
9Glyph primárioSímbolo que nomeia a função (envelope, seta, mic…)R5 (branco sólido)
10Detalhe secundárioElementos de apoioR5 (opacidade 0,3–0,95)
11Espaço negativoVazio que reforça a leitura figura-fundofavorecer
12Cor dominante (hue)Cor de marca do produtoR6 (mono-hue)
13GradienteVariação de cor que dá luz/direçãoR3 (vertical 700→500→400)
14Overlay de profundidadeSombra de profundidade/assentamentoR4 (preto 0→0,18)
15Overlay de brilhoGloss discretoR4 (branco 0,12→0)
16Drop shadowSombra projetada que separa do fundofeDropShadow
17Luz direcionalFonte de luz coerente (de cima)R3

3. Camadas técnicas (entrega adaptativa)

#CamadaArquivo / formaConteúdo
18Master SVGicon.svg (raiz do produto)fonte única, 512²
19Foregroundic_launcher_foreground.pngsímbolo, fundo transparente
20Background@color/ic_launcher_backgroundcor de marca (não branco)
21Monochromeic_launcher_monochrome.pngsilhueta branca (Android 13+)
22Legacyic_launcher.pngAPI <26, sem camadas
23Adaptive descriptormipmap-anydpi-v26/ic_launcher.xmlliga bg+fg+monochrome
24Maskable / Darkicon-512-maskable · icon-dark.svgPWA 80% · variante escura

4. Gramática de família (normativa — R1 a R7)

RegraDefinição
R1 — Frameless absolutoNenhum retângulo/forma de fundo cobrindo o canvas no master. A silhueta é o ícone. kicon validate reprova fundo full-canvas (erro duro).
R2 — Uma silhueta dominanteReduzir a uma forma. Proibido: skeuomorfismo, cena literal, múltiplos elementos, line-art fino.
R3 — Gradiente = luz de cimalinearGradient vertical em userSpaceOnUse, 3 stops: 700 (base) → 500 (meio) → 400 (topo).
R4 — Overlays de profundidade/brilhodep: preto 0→0,18 (base). sh: branco 0,12→0 (topo). Ambos userSpaceOnUse.
R5 — Detalhe interno brancoGlyph primário branco sólido (#fff); detalhe secundário 0,3–0,95. Piso de legibilidade 32×32px.
R6 — Mono-hueUm hue dominante por produto. Sem acento policromático (exceto a travessia de R3).
R7 — Preenchimento ~92% no masterA silhueta preenche ~92% do canvas (margem óptica ±4%); kicon generate reduz pro foreground adaptativo.

5. Geometria — margem e área

A margem é uma medida linear (faixa por lado). Convertendo pra área do canvas: uma margem linear m por lado deixa conteúdo de lado (1−2m) → área do conteúdo = (1−2m)².

Margem linear / ladoConteúdo (% da área)Fundo (% da área)Uso típico
8%70,6%29,4%Material legacy keyline
10% (alvo Koder)64,0%36,0%logo-em-tile (macOS / PWA) — sweet-spot
12%57,8%42,2%alternativa mais folgada
16,7%44,4%55,6%foreground Android adaptive (anti-clip OEM)

6. Geração — kicon

Toda variante é gerada do master via kicon (nunca renderizada por densidade à mão). Rode kicon validate pra forçar a gramática R1–R7 + safe-circle, e kicon generate pras saídas por plataforma (mipmaps Android, iOS, macOS .icns, Windows .ico, Linux hicolor, favicons web, PWA maskable, store listing).

7. Glifo inscrito — figura em contêiner de UI (normativo)

Os capítulos 1–6 tratam do *ícone de produto* (3D, launcher). Esta seção fecha o outro plano: o *glyph de UI dentro de um contêiner* — botão circular, tile, chip, pílula. Spec normativa completa (fórmulas, keylines, testes T1–T4): specs/icons/inscribed-glyph.kmd.

O problema tem três objetos: o *contêiner* K (com centro C e margem m), a *figura* F (o conjunto de pontos com tinta — fills e strokes com a espessura contada) e o *envolvente da tinta* B. Inscrever é satisfazer três igualdades independentes: centro de B ≡ C; tinta escalada tocando o limite útil K⊖m; e a mesma razão de ocupação entre todos os irmãos da família.

Anatomia do glifo inscrito: contêiner, margem, envolvente da tinta e figura.

*A regra que evita 90% dos defeitos: medir a TINTA, nunca a moldura.* Duas figuras na mesma moldura (viewBox) podem pintar extensões 40% diferentes — com a mesma escala, uma família exibe glifos visivelmente desiguais. O protocolo em ordem: medir tinta → centralizar na moldura → escalar pelo contêiner → compor → ajuste óptico (se assimétrica) → medir de volta.

A escala máxima depende da *forma do contêiner* (formulação geral: funcional de Minkowski do contêiner erodido pela margem). No círculo, quem manda é o ponto da tinta mais distante do centro; no quadrado/squircle, a maior coordenada; na pílula, a altura da faixa central:

A mesma figura recebe escalas diferentes em círculo, squircle e pílula.

Para famílias heterogêneas, a consistência usa keylines (como Material/SF Symbols): extensões-alvo por proporção do envolvente — quadrado 0,82, retrato/ paisagem 0,90 na dimensão dominante, circular 0,86 — compensando a massa percebida de cada formato.

Antipadrão: escala pela moldura produz tintas desiguais; escala pela tinta iguala a ocupação.