为什么终端配色方案每种颜色有两个值?

为什么终端配色方案每种颜色有两个值?

例如,下面是终端应用程序“Tilix”的设置页面。为什么每种颜色都有两个? 在此处输入图片描述

答案1

这不是一个独立的答案,但我尝试继续@Destroy666 的回答并更深入地探究“为什么”。

和计算机的其他部分一样,显示器/终端也在几十年间一点点地改进。从最初的单色显示器过渡到拥有数百万个 3x10 位(左右)色深的微小像素的显示器,不可避免的是开始支持一些颜色。

在其中一个重要的里程碑中,红、蓝、绿子像素已经可用,但内存仍然是一个相当大的限制因素。用 2 个字节来表示每个字符单元是一种很自然的方法。一个用于字母(在 Unicode 之前,一次只有一个 8 位代码页),另一个用于图形属性。

通过决定 R、G、B 中的每一色是否点亮该像素,您可以获得基本的 8 种颜色。您可以对前景色和背景色执行此操作,即 6 位。您还剩下 2 位。

假设为了获得更多颜色而增加更多额外存储空间(例如每个字符单元 4 个字节而不是 2 个字节)在这个里程碑上是不现实的,这将显著增加架构的复杂性并增加成本。但是,工程师也不能就这样浪费这 2 个位。

因此,显而易见的想法是增加一位来表示颜色强度,结果为RGBI,你的问题与调色板有关。

现在,有些系统肯定已经为前景添加了一个,为背景添加了一个。其他一些系统为前景添加了一个,并将第 8 个用于其他用途(即背景始终是颜色对中较暗的一个),这是标准 80×25 VGA 文本模式所做的(可能至今仍是如此)。ZX Spectrum(在终端仿真方面完全无关紧要)有一个影响前景和背景的单个强度位,第 8 位用于闪烁。

因此,我们开始产生很多困惑:我们谈论的是 8 种颜色还是 16 种颜色,它们与现有的模糊“粗体或明亮”属性有何关系,如何使明亮的颜色可用于背景等等,但这是另一个故事。

我猜大概在这个时候,硬件终端大部分被图形终端仿真器所取代,而且它们并不急于跟上硬件的功能。16 种颜色对于终端仿真器中的大多数用例来说已经足够好了(现在仍然如此)。终端仿真器中的 256 色扩展在 2000 年代后期开始普及,16M 真彩色扩展在 2010 年代开始普及,尽管典型的 PC 显卡/显示器在千禧年左右就已经支持真彩色了。

使用这 16 种“主要”RGBI 颜色的传统至今仍在延续,而且可能将永远延续下去。但是,对于确切的颜色色调,人们并没有达成共识。一个真正有问题的是深蓝色:人们希望它在黑色背景下可读,也希望它能作为一种漂亮的背景颜色(例如mc)。而这两者几乎是相互矛盾的。另一个常见的混淆是黄色,通常深色变体是棕色,很难选出两种被人类用同一个词(例如更深和更亮的黄色)指代的色调,更不用说最好是深色色调在白色背景上可读了。这就是为什么它们的确切色调在绝大多数图形终端仿真器中都是可配置的。

答案2

这是因为传统上ANSI 转义序列将颜色定义为 8 种基本颜色(黑色、红色、绿色、黄色、蓝色、洋红色、青色、白色)及其明亮等价色,例如“亮黑色“,它的名字很奇怪,叫灰色。这个旧标准后来被扩展以支持越来越多的颜色。阅读颜色请参阅维基百科部分以了解更多信息。

但是,许多终端应用程序要么坚持使用基本的 4 位 16 色集,要么让您重新映射该集,因为许多流行的 CLI 应用程序通常使用它来实现向后兼容的目的。

至于配置部分,它的存在是为了让您能够将默认的亮黄色更改为更深的颜色(如果您不喜欢亮度)。或者,如果您想更改窗口的背景,而默认颜色不适合它。

还请注意,对于您选择的终端 (Tilix),该Colour palette设置在 UI/UX 方面有点令人困惑。列分组表明所选颜色与背景/前景特别相关,但事实并非如此,它会为两者更改颜色。

相关内容