Поиск по сайту:

Почему текст в терминале имеет только шестнадцать цветов


Если вы уделяли много внимания окну терминала Linux или консоли Windows, вы могли заметить, что текст имеет ограниченный набор цветов. Почему цвета выглядят именно так? То, как IBM решила представить цвет текста на исходном ПК, установило стандарт для цвета текста.

В оригинальном персональном компьютере IBM 1981 года использовался монохромный дисплей, где весь текст был зеленым на простом черном фоне. Вскоре после этого IBM представила Color Graphics Adapter, или CGA, который первым поддерживал цвет. В те первые дни истории ПК память была ограничена, поэтому IBM выжала из этих ограниченных данных максимум возможностей.

Вы можете отобразить любой цвет, комбинируя различное количество чистого красного, зеленого и синего света. Это сочетание красного+зеленого+синего (или «RGB») является основой для всех цветов ПК. Давайте начнем с простейшего случая, когда вы можете смешать равное количество красного, зеленого и синего света. Для представления этой комбинации требуется значение «включено» или «выключено» для каждого компонента «RGB». И помните, что «включено» или «выключено» также называется «битом» в компьютерной терминологии: 1 или 0.

В этом простейшем случае вы можете предположить, что один бит представляет каждый цвет: красный, зеленый и синий. Если какой-либо из битов «RGB» равен 1, тогда отображается красный, зеленый или синий свет с полной интенсивностью. Это дает восемь возможных цветов:

000 Black
001 Blue
010 Green
011 Cyan
100 Red
101 Magenta
110 Yellow
111 White

Вы можете удвоить количество цветов, добавив дополнительный бит, и именно так IBM определила стандарт CGA. Вместо трех битов «RGB» CGA реализовал цвета как «iRGB», где первый бит был «интенсивностью». Если бы первый бит был установлен в 1, то ПК отображал бы цвет с полной яркостью. Если бы первый бит был установлен в 0, то он отображал бы цвет с более низкой яркостью.

IBM фактически внедрила модифицированную модель «iRGB». Если бит «интенсивность» был равен 0, то любые 1 в «RGB» означали, что красный, зеленый или синий цвета были установлены на две трети яркости. И если бит «интенсивность» был равен 1, то любые 1 в «RGB» означали, что красный, зеленый или синий были установлены на полную яркость, но любые 0 в «RGB» были установлены на одну треть яркости. Единственным исключением был 0110, который получил треть яркости зеленого («G»), что превратило «желтый цвет низкой интенсивности» в оранжевый или коричневый цвет.

0000 Black 1000 Bright Black
0001 Blue 1001 Bright Blue
0010 Green 1010 Bright Green
0011 Cyan 1011 Bright Cyan
0100 Red 1100 Bright Red
0101 Magenta 1101 Bright Magenta
0110 Brown 1110 Yellow
0111 White 1111 Bright White

С этой моделью «iRGB» CGA фактически мог отображать шестнадцать цветов: восемь цветов «низкой интенсивности» и восемь цветов «высокой интенсивности». По другим техническим причинам ПК мог отображать только восемь цветов «низкой интенсивности» в качестве фоновых цветов. Но текст переднего плана может использовать все шестнадцать цветов.

Сегодня эмуляторы терминала, такие как терминал GNOME, позволяют изменять цветовую палитру. В зависимости от выбранных вами цветов вы можете увидеть цвета, отличные от показанных здесь, но вы по-прежнему ограничены шестнадцатью цветами текста и восемью цветами фона.