Programação Por Equipe DevBras

Capa do artigo: Ícone grátis tem licença: como usar Font Awesome, Material e outros sem dor de cabeça

Ícone grátis tem licença: como usar Font Awesome, Material e outros sem dor de cabeça

Saiba o que as licenças mais comuns de ícones pedem, por que ícone de marca é outro assunto, e monte um manifesto de licenças na pasta com um script que barra arquivo sem origem.

O app de delivery estava pronto para a campanha de lançamento quando o jurídico do cliente mandou uma pergunta simples: "de onde vieram os ícones?". A pasta tinha 38 SVGs. Uns vieram de uma biblioteca conhecida, outros de um pacote baixado num site de ícones grátis, três de um print redesenhado e um era o logo de uma carteira digital achado numa busca de imagens. Ninguém sabia dizer qual era qual. A campanha atrasou uma semana enquanto alguém refazia o levantamento arquivo por arquivo.

A resposta curta: "grátis" quer dizer que você não paga, não que não há regras. Cada conjunto de ícones tem uma licença que diz se você precisa dar crédito, se pode modificar e redistribuir. Logos de empresas são outro assunto: além do direito autoral do desenho, há a marca registrada. Escolha conjuntos com licença clara, anote a origem de cada arquivo no dia em que ele entra no projeto e deixe um script recusar ícone sem registro.

O que as licenças mais comuns pedem

A maioria das bibliotecas de ícones populares usa licenças permissivas. Elas deixam usar em projeto comercial, modificar e redistribuir, e quase sempre pedem uma coisa: manter o aviso de licença junto do código.

  • MIT e ISC: usadas por conjuntos como Bootstrap Icons (MIT) e Lucide (ISC). Permitem quase tudo, desde que o texto da licença e o aviso de copyright acompanhem as cópias do software.
  • Apache 2.0: a do Material Symbols, do Google. Parecida com a MIT, com exigências adicionais sobre manter avisos e indicar arquivos modificados.
  • Creative Commons Atribuição (CC BY 4.0): a dos ícones do Font Awesome Free. Exige crédito. O próprio Font Awesome explica que os arquivos baixados já trazem comentários com a atribuição suficiente, então, em uso normal, basta não removê-los.
  • "Grátis com crédito" de sites agregadores: muitos sites de ícones liberam o download gratuito com a condição de um crédito visível, e a versão sem crédito é paga. A regra fica nos termos do site, não num arquivo de licença padrão.
  • Sem licença nenhuma: arquivo achado numa busca de imagens ou num pacote sem termos. Sem licença, a regra padrão do direito autoral vale e você não tem permissão. Não use.

Essas descrições são um resumo para orientar a escolha. O texto que vale é o da licença no repositório ou no site de cada conjunto, e ele pode mudar entre versões. Leia antes de adotar, e guarde a versão que você leu.

O detalhe do minificador

No caso do Font Awesome, a atribuição está num comentário dentro do SVG. Ferramentas de otimização de SVG costumam remover comentários por padrão, e o build passa a publicar ícones CC BY sem o crédito que a licença exige. Confira a configuração do seu otimizador e preserve o comentário de licença, ou dê o crédito numa página de créditos do site.

Ícone de marca é outra conversa

O logo de uma carteira digital, de uma rede social ou de um banco pode estar num conjunto com licença MIT. A licença cobre o desenho do ícone, não o direito de usar a marca. Marca é propriedade de quem a registrou, e os donos costumam publicar um manual de uso: proporção, cores, área livre e em que situações você pode exibi-la.

Na prática, ícone de marca serve para indicar o que ele é: "pague com tal carteira", "entre com tal conta", "siga-nos em tal rede". Não pode ser redesenhado, recolorido para combinar com o seu tema nem usado como enfeite que sugira parceria inexistente. No app de delivery, o logo da carteira digital foi trocado pelo arquivo oficial do kit de marca do próprio serviço, aplicado conforme o manual.

E um ícone genérico nunca deve imitar a marca de outro produto. Um balão de conversa verde muito parecido com o de um aplicativo conhecido confunde o usuário e chama atenção de quem cuida daquela marca.

Como organizar a pasta de ícones

No app de delivery, a reorganização seguiu estes passos:

  1. Escolha um ou dois conjuntos principais com licença clara. Menos fontes significam menos licenças para acompanhar e uma interface mais coerente, como defende ícones sem poluir a interface.
  2. Crie um manifesto ao lado dos arquivos. Um licencas.json na pasta, com uma entrada por arquivo: origem, conjunto, licença, versão, se exige crédito e se foi modificado.
  3. Copie o texto das licenças para o repositório. Um arquivo por licença, como LICENSE-lucide.txt, junto dos ícones. É isso que as licenças MIT, ISC e Apache pedem.
  4. Faça o build falhar sem registro. Um script compara os SVGs da pasta com o manifesto e para o CI se faltar entrada.
  5. Publique uma página de créditos quando algum conjunto exigir atribuição visível. Para CC BY, a recomendação da Creative Commons é informar título, autor, fonte e licença.

O manifesto:

{
  "carrinho.svg": {
    "origem": "https://lucide.dev",
    "conjunto": "Lucide",
    "versao": "a versão que você baixou",
    "licenca": "ISC",
    "credito_visivel": false,
    "modificado": false
  },
  "moto-entrega.svg": {
    "origem": "desenho próprio",
    "conjunto": "Sabor de Casa",
    "licenca": "propriedade do cliente",
    "credito_visivel": false,
    "modificado": false
  },
  "carteira-digital.svg": {
    "origem": "kit de marca oficial do serviço",
    "conjunto": "marca de terceiro",
    "licenca": "uso conforme manual de marca",
    "credito_visivel": false,
    "modificado": false
  }
}

No campo de versão, anote o número exato do pacote que entrou no projeto. E o script que roda no CI:

// scripts/conferir-icones.js
const fs = require('fs');
const path = require('path');

const pasta = path.join(__dirname, '..', 'src', 'icones');
const manifesto = JSON.parse(fs.readFileSync(path.join(pasta, 'licencas.json'), 'utf8'));
const arquivos = fs.readdirSync(pasta).filter((nome) => nome.endsWith('.svg'));

const semRegistro = arquivos.filter((nome) => !manifesto[nome]);
const orfaos = Object.keys(manifesto).filter((nome) => !arquivos.includes(nome));

if (semRegistro.length || orfaos.length) {
  if (semRegistro.length) console.error('Ícones sem licença registrada: ' + semRegistro.join(', '));
  if (orfaos.length) console.error('Entradas sem arquivo: ' + orfaos.join(', '));
  process.exit(1);
}
console.log(arquivos.length + ' ícones, todos com origem registrada.');

Com isso, quem acrescenta um ícone sem dizer de onde veio vê o build falhar antes do merge, e a pergunta do jurídico passa a ter resposta em um minuto. A mesma ideia vale para fotos, como em guarde a licença da imagem na mesma pasta.

Licença resolvida não resolve tudo: ícone que funciona como botão ainda precisa de nome acessível, assunto de ícone SVG com nome.

Erros comuns

  • Baixar de agregador sem ler os termos. O plano gratuito pode exigir crédito visível, e o app foi publicado sem ele.
  • Minificar SVG removendo o comentário de licença. O ícone CC BY vai ao ar sem a atribuição que permitia usá-lo.
  • Recolorir ou redesenhar logo de terceiro. Viola o manual de marca e pode sugerir uma parceria que não existe.
  • Usar arquivo achado em busca de imagens. Sem licença, não há permissão, por mais comum que o desenho pareça.
  • Misturar cinco conjuntos. São cinco licenças para acompanhar e uma interface com traços e pesos diferentes.
  • Anotar a origem "depois". Depois, ninguém lembra, e o levantamento vira trabalho de detetive na véspera do lançamento.

Checklist

  • Todo SVG da pasta tem entrada no licencas.json com origem e licença.
  • Os textos das licenças dos conjuntos usados estão no repositório.
  • O CI roda o script de conferência e falha com ícone sem registro.
  • O otimizador de SVG preserva comentários de licença, ou há página de créditos.
  • Logos de terceiros vêm do kit oficial e seguem o manual de marca.
  • Nenhum ícone genérico imita a marca de outro produto.
  • Ícones que exigem crédito visível aparecem na página de créditos.

Abra agora a pasta de ícones do seu projeto e escolha três arquivos ao acaso: você consegue dizer de onde veio cada um e o que a licença dele pede?

Avalie este artigo

Referência: http://www.iconesbr.net/