paulo1205
(usa Ubuntu)
Enviado em 11/07/2020 - 07:20h
Vai depender do tipo de terminal que você tem, os recursos que ele oferece, e as fontes tipográficas que estão disponíveis e em uso, que teriam de ter os símbolos necessários.
Terminais compatíveis com o DEC VT-100 podem usar as sequências de escape "\33(0" e "\33(B" (onde "\33" é uma representação do código do caráter de controle
ESC do ASCII, cujo índice na tabela de caracteres é 27, e que é obtido nos nossos teclados através da tecla
ESC ou de Control-[) para, respectivamente, ativar e desativar um modo de exibição que comuta os caracteres na faixa que inclui as letras minúsculas do ASCII (96 até 126, que inclui alguns outros símbolos, além das letras minúsculas, com 31 caracteres ao todo) para símbolos gráficos que incluem molduras com linha simples, sinais matemáticos e alguns outros símbolos.
O exemplo abaixo usa as letras
j,
k,
l e
m para desenhar uma caixinha, usando apenas os caracteres correspondentes aos quatro cantos de um quadro (a marcação “
^[” é, na verdade, a forma como o shell representa o caráter
ESC, e você pode obtê-lo na linha de comando digitando Control-V seguido ou da tecla
ESC ou de Control-[).
echo "^[(0lk^[(Blk"; echo "^[(0mj^[(Bmj"
Você pode encontrar a tabela com esses caracteres em vários lugares, tais como em
https://en.wikipedia.org/wiki/DEC_Special_Graphics.
Se o seu terminal aceitar Unicode e a fonte que você usa contiver os símbolos que você quer usar, você pode inseri-los diretamente no código fonte do seu programa. Possivelmente não ai conseguir digitá-los no teclado, mas pode usar uma aplicação de mapa de caracteres para selecionar os caracteres desejados e copiá-los, e depois colá-los no seu programa, conforme as figura anexas mostram.
Note novamente as variáveis envolvidas. Usar Unicode dá mais flexibilidade, pois dispõe de um número muito maior de símbolos. No entanto, você tem de ter todas as características certas para que funcione: SO que aceite, terminal que saiba trabalhar com ela, configuração correta de conjunto e codificação de caracteres e fonte que possua tais símbolos. Nem todo sistema tem todas as características ao mesmo tempo; sistemas mais antigos ou versões comerciais de UNIX, além do próprio Windows, estão provavelmente no campo de menos chance de isso funcionar. Se tais características não estiverem presentes e você mandar imprimir de qualquer jeito, este método tem grandes chances de produzir uma saída completamente estranha, pois cada símbolo gráfico pode ser composto por até três bytes e, dependendo da configuração, cada um desses
bytes pode vir a ocupar uma posição diferente na tela.
Por outro lado, as sequências de escape costumam funcionar mesmo em sistemas mais antigos e nos comerciais, pois quase todos os emuladores de terminal e mesmo alguns consoles têm compatibilidade com VT-100 (o Windows, de novo, pode ser uma exceção importante), mas tem a desvantagem de oferecer um número muito menor de símbolos gráficos para uso. Caso o terminal não suporte os símbolos gráficos, geralmente a perturbação visual é menor do que com o caso anterior, uma vez que cada símbolo ocupa apenas uma posição na tela, e a consequência de uma falha de representação não costum ser mais grave do que uma moldura formada por letras, em vez de linhas.
EDIT: Nenhum desses caracteres é ASCII. Os do VT-100 substituem símbolos do ASCII com outros, e os do Unicode têm índices que estão fora da faixa de 0 a 127, cujos símbolos coincidem com os do ASCII com mesmo índice. Dessa forma, o título do tópico traz consigo um erro, pois tenta limitar a resposta a um escopo onde a resposta não tem como existir.
... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)