Como pôr um banner ASCII num README do GitHub
Coloque num bloco de código Markdown e mantenha abaixo de 80 colunas.
O nome do projeto em forma de banner ASCII faz o topo de um README chamar atenção. Diferente de uma imagem, é texto puro: não adiciona arquivo ao repositório e fica certo nos temas claro e escuro.
Adicionando ao README
No Markdown, o banner precisa ficar dentro de um bloco de código. Fora dele, espaços repetidos viram um só, e _ e * viram marcadores de itálico e negrito, estragando a arte.
```text
_ _
_ __ ___ _ _ _ __ _ __ ___ (_) ___ ___| |_
| '_ ` _ \| | | |_____| '_ \| '__/ _ \| |/ _ \/ __| __|
| | | | | | |_| |_____| |_) | | | (_) | | __/ (__| |_
|_| |_| |_|\__, | | .__/|_| \___// |\___|\___|\__|
|___/ |_| |__/
```
# my-project
Uma pequena ferramenta CLI que roda direto no terminal.
- Escrever
textdepois das crases de abertura desliga o realce de sintaxe, e os caracteres ficam de uma cor só. - Coloque um título de texto de verdade (
# my-project) abaixo do banner. Buscadores e leitores de tela não leem o banner como nome do projeto. - Se a arte tiver três crases seguidas, envolva-a com quatro crases.
Mantenha abaixo de 80 colunas
Um bloco de código no GitHub rola para o lado quando a linha é longa demais. Um banner cortado perde o sentido, então fique abaixo de 80 colunas, ou por volta de 50 se quiser que caiba no celular também.
| Onde é lido | Largura sugerida |
|---|---|
| README do GitHub no computador | até 80 colunas |
| App do GitHub, telas estreitas | cerca de 50 colunas |
| Saída de terminal | até 80 colunas |
Para um nome longo, escolha uma fonte menor como Small ou Mini em vez de Standard ou Big, ou divida o nome em duas linhas. O canto superior direito de cada card de fonte no lab.ascii mostra a largura do resultado.
Adicionando a um comentário de código
Um banner no topo de um arquivo, ou no começo de uma seção grande, ajuda a se localizar num arquivo longo.
/*
* ___ ___ _ _ ___ ___ ___
* | _ \ __| \| | \| __| _ \
* | / _|| .` | |) | _|| /
* |_|_\___|_|\_|___/|___|_|_\
*/
export function render() {}
- Comece cada linha com o marcador de comentário (
*,//ou#). - Se a arte tiver
*/, o comentário de bloco termina ali. Use comentários de linha//para essa arte. - Se a equipe tiver limite de tamanho de linha, como 100 caracteres, faça o banner caber nele.
Mostrando ao iniciar um programa
Para mostrar um banner quando uma ferramenta CLI inicia, a arte precisa ser guardada como string. O problema é a barra invertida (\). Na maioria das linguagens ela inicia uma sequência de escape, então colar a arte como está perde caracteres ou gera erro.
Em JavaScript, String.raw mantém as barras invertidas como estão.
const banner = String.raw`
_ _ ___ _ _ ___
| || | __| | | | / _ \
| __ | _|| |__| |_| (_) |
|_||_|___|____|____\___/
`;
console.log(banner);
Uma crase ou ${ dentro da arte encerra a template string. Normalmente é mais fácil trocar de fonte para essa arte.
Em Python, use uma raw string colocando r na frente.
BANNER = r"""
_ _ ___ _ _ ___
| || | __| | | | / _ \
| __ | _|| |__| |_| (_) |
|_||_|___|____|____\___/
"""
print(BANNER)
Um banner de abertura não atrapalha se você seguir duas regras.
- Não mostre quando a saída vai para outro programa, como um pipe ou um arquivo de log.
- Ofereça uma opção como
--quietpara desligá-lo.
Qual fonte usar?
| Fonte | Estilo |
|---|---|
| Standard | O padrão seguro. Combina com qualquer nome |
| Slant | Letras inclinadas, com sensação de velocidade |
| Small | Um Standard menor. Bom para nomes longos |
| Banner | Letras pesadas preenchidas com #. A que mais chama atenção |
| Digital | Um banner pequeno de três linhas com cada letra numa caixa. Bom para comentários de código |
As 12 fontes do lab.ascii usam só caracteres ASCII, então ficam intactas no GitHub, em terminais e em ambientes antigos. Banners de caracteres de bloco (█ ╗ ═) de outros geradores podem quebrar em ambientes muito antigos; se o banner precisa funcionar em qualquer lugar, escolha uma fonte ASCII.
Digite o nome do seu projeto no lab.ascii para comparar banners em 12 fontes e clique num card para copiar.