A descrição do terminal linux-16color
usa o console piscando e em negrito -atribui para mapear códigos 0-15 nas 16 cores que o console é capaz de fazer. Na descrição, isso é feito usando 5
vs 25
e 1
x 21
constantes nos recursos setaf
e setab
que você pode observar na página de manual do console_codes (4).
Você pode achar mais fácil ver usando a opção -f
de infocmp
:
setab=\E[4
%p1%{8}%m%d
%?
%p1%{7}%>
%t;5
%e
;25
%;
m,
A sequência (lendo de cima para baixo) faz isso:
- envia um escape ASCII (o
\E
), - seguido por
[
e4
, - verifica se o primeiro parâmetro é maior que 7,
- se for maior que 7, envia
;
(um delimitador) e5
(o atributoblink
), - caso contrário, envia
;
2
5
para desativarblink
) - termina o SGR enviando
m
Esses atributos funcionam com drivers VGA que (geralmente) não fazem o texto piscar ou usam uma fonte diferente para mostrar texto em negrito. Em vez disso, eles permitem estender o conjunto de cores (de maneira não padrão, é claro). Se você tiver um dispositivo de exibição diferente (como as máquinas virtuais com as quais trabalho), nada disso se aplica mais.
Há uma complicação desde que foi configurada: configurações que carregam uma fonte compatível com Unicode (ou seja, 512 glifos versus o 256 original) assumem um dos bits usados para essas 16 cores, então você realmente só tem 8 cores . Isso é mencionado aqui e ali isso, por exemplo , mas foi introduzido desde a última página de manual atualizado:
Due to the use of a 512-glyph LatArCyrHeb-16 font in the previous example, bright colors are no longer available on the Linux console unless a framebuffer is used. If one wants to have bright colors without framebuffer and can live without characters not belonging to his language, it is still possible to use a language-specific 256-glyph font, as illustrated below: