Adicionando emojis ao seu console - Série de consoles Spectre
Spectre.Console é uma biblioteca .NET que ajuda você a transformar aplicativos de console C# comuns em ferramentas bonitas, ricas em recursos e informativas. Em sua série Spectre Console, Tim Corey dedica um vídeo inteiro a " Adicionando emojis ao seu console - Série Spectre Console ".
Neste artigo, vamos analisar mais detalhadamente como trabalhar com emojis no Spectre.Console, seguindo o vídeo do Tim passo a passo.
Introdução: Visão geral dos emojis do console Spectre
No início da aula, Tim explica que o Spectre Console permite "transformar seus aplicativos de console C# em aplicativos visualmente atraentes e informativos". Ele observa que o código-fonte da demonstração está disponível no GitHub através do link na descrição do vídeo, o que facilita a instalação do pacote e o acompanhamento.
Tim diz que nesta lição vamos aprender como adicionar emojis à saída do console. Ele destaca que incluiu um link para a lista oficial de emojis e mais documentação sobre como usá-los. Isso é crucial, diz ele, porque existem três maneiras diferentes de exibir emojis no Spectre Console e duas delas envolvem saber o nome da string do emoji.
Isso se relaciona diretamente com a ideia de dicas de Markdown e Markup do Spectre Console , que Tim usa amplamente em sua demonstração.
Método 1: Usando strings de emojis em Markup do Spectre Console
A primeira demonstração de Tim mostra a maneira mais simples de exibir emojis: incorporando os nomes dos emojis na marcação do Spectre Console. Ele usa AnsiConsole.MarkupLine para escrever uma linha com marcadores de posição para emojis:
AnsiConsole.MarkupLine("I like :baseball: :american_football:");
AnsiConsole.MarkupLine("I like :baseball: :american_football:");
Tim explica que o sistema de marcação detecta os dois pontos como o início e o fim de uma sequência de emojis e os substitui pelos caracteres emoji reais. Se você executar esse código dentro do método main estático de uma classe simples Program, o console exibirá emojis de beisebol e futebol americano diretamente na saída.
No entanto, Tim alerta sobre a sintaxe: se você digitar o nome do emoji incorretamente (por exemplo, usar :football: em vez de :american_football:), o terminal exibirá apenas o texto :football:. Ele observa que você precisa digitar a sequência de emojis exatamente como está definida na lista de emojis.

Este exemplo também mostra como a codificação de saída e o suporte a fontes do console afetam a exibição. Tim afirma que o sistema subjacente, a fonte e o terminal (Windows Terminal, PowerShell, cmd, etc.) determinam como e se esses caracteres serão exibidos.
Método 2: Utilizando o objeto Emoji.Known para facilitar a pesquisa
Tim então passa para sua segunda abordagem: usar o objeto Emoji.Known. Essa abordagem evita a necessidade de memorizar os nomes dos emojis e permite selecioná-los a partir de uma lista disponibilizada pela biblioteca. Ele escreve:
AnsiConsole.WriteLine($"Hello {Emoji.Known.WorldMap}");
AnsiConsole.WriteLine($"Hello {Emoji.Known.WorldMap}");
Tim observa que isso facilita a seleção programática de emojis. No IDE, você pode ver todos os emojis gerais que o Spectre.Console suporta, como banana, abacate, rostos e muito mais, que podem ser inseridos sem a necessidade de digitar nomes separados por dois pontos.
Ele também explica por que você pode preferir essa abordagem. Este estilo é mais fácil de inserir em um banco de dados ou em uma fonte externa. Mais tarde, ao renderizar a saída do console, basta obter a referência do objeto (como Emoji.Known.Banana) e exibi-la. Essa também é uma ótima maneira de obter SpectreDemoEmoji de forma fortemente tipada, em vez de depender de strings.
Método 3: Substituindo sequências de emojis por fontes externas
A terceira abordagem de Tim simula a extração de dados de um banco de dados. Ele escreve:
string displayText = "I am totally normal :zany_face:\n";
AnsiConsole.Write(displayText);
string displayText = "I am totally normal :zany_face:\n";
AnsiConsole.Write(displayText);
Ao executar este código, o console não exibe nenhum emoji. Em vez disso, imprime literalmente :zany_face:. Tim demonstra que é necessário substituir explicitamente os nomes dos emojis por emojis reais usando o método Emoji.Replace:
AnsiConsole.Write(Emoji.Replace(displayText));
AnsiConsole.Write(Emoji.Replace(displayText));
Este método transforma a string proveniente de uma fonte externa em uma que seja renderizada com emojis reais. Tim afirma que isso é crucial quando seu texto contém marcadores de posição com emojis inseridos pelo usuário ou dicas em Markdown.

Emojis em outros recursos do console Spectre
Tim observa que os emojis não servem apenas para textos estáticos. Alguns dos widgets e seletores integrados do Spectre.Console já usam emojis internamente. Ele menciona um girador meteorológico que alterna entre faces ensolaradas, nubladas e chuvosas. Isso demonstra que funções, métodos e tarefas dentro do Spectre.Console podem usar emojis para tornar suas exibições mais expressivas.
Problemas de suporte a terminais e sistemas operacionais
Depois de mostrar como os emojis podem ser legais, Tim explica uma limitação importante: o suporte a emojis depende do seu sistema operacional, da fonte do console e da codificação de saída.
Ele demonstra a execução do mesmo código no Terminal do Windows, no console do Visual Studio e no shell cmd clássico. Em alguns casos, em vez de emojis, você verá pontos de interrogação. Isso ocorre porque o console não consegue lidar com caracteres Unicode.
Tim alerta que você deve projetar a saída do console de forma que ela ainda faça sentido mesmo se os emojis não forem exibidos. Por exemplo, se você mostrar "Eu gosto de ⚾ 🏈" e os emojis não aparecerem, ficará "Eu gosto de ?". ?" e o usuário já não sabe do que você está falando. Mas se você exibir "Eu gosto de beisebol ⚾", mesmo sem o emoji, o texto ainda transmite o significado.

Ele enfatiza que, embora os emojis possam dar um toque especial ao seu aplicativo Spectre.Console, você não deve usá-los como seu único método de comunicação.
Mais ajuda com emojis e opções seguras
Tim conclui indicando o endereço URL que forneceu. Esse link contém a lista completa de emojis suportados, dicas de Markdown e quais são os mais seguros em diferentes terminais. Ele sugere consultar o site para obter mais ajuda, exemplos e atualizações sobre emojis. Aqui você encontrará os nomes definidos para bananas, abacates, rostos e outros ícones divertidos, além de informações sobre compatibilidade com navegadores ou sistemas operacionais.
Conclusão
Tim Corey conclui resumindo as três principais maneiras de usar emojis no Spectre.Console:
-
Marcação do console Spectre com nomes separados por dois pontos.
-
O objeto Emoji.Known para facilitar a pesquisa.
- O método Emoji.Replace para strings provenientes de fontes externas.
Ele também reitera que o suporte a fontes, a codificação de saída e o terminal ou sistema operacional do usuário (cmd, PowerShell, Terminal do Windows) afetam a forma como os emojis são exibidos. Inclua sempre texto ao lado dos emojis e teste a saída do console em vários shells para garantir a compatibilidade.
Seguindo o vídeo do Tim, você pode facilmente criar, instalar e executar aplicativos Spectre.Console que usam emojis para tornar a saída do seu console mais amigável e informativa, sem perder a clareza quando o suporte a emojis é limitado.
