Damn Vegetables Asked: 2023-05-03 16:01:31 +0800 CST2023-05-03 16:01:31 +0800 CST 2023-05-03 16:01:31 +0800 CST 为什么终端配色方案的每种颜色都有两个值? 772 例如,下面是终端应用“Tilix”的设置页面。为什么每种颜色都有两个? linux 2 个回答 Voted Destroy666 2023-05-04T19:50:31+08:002023-05-04T19:50:31+08:00 这是因为传统的ANSI 转义序列将颜色定义为 8 种基本颜色(黑色、红色、绿色、黄色、蓝色、品红色、青色、白色)及其明亮的等价物,例如“亮黑色”,它被简单地称为灰色。这个旧标准后来被扩展以支持越来越多的颜色。阅读维基百科的颜色部分了解更多信息。 但是,许多终端应用程序要么坚持使用基本的 4 位 16 色集,要么让您仅重新映射该集,因为它通常被许多流行的 CLI 应用程序用于向后兼容目的。 至于配置部分,它在那里,例如,如果亮度让您不满意,您可以将默认的亮黄色更改为更暗的颜色。或者,如果您想更改窗口的背景,而默认颜色不适合它。 另请注意,如果您选择的终端 (Tilix) 的Colour palette设置在 UI/UX 方面有点混乱。列分组表明所选颜色似乎与背景/前景具体相关,但事实并非如此,它会为两者改变它们。 Best Answer egmont 2023-05-05T14:46:21+08:002023-05-05T14:46:21+08:00 这不是一个独立的答案,但我尝试继续@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 色扩展在 00 年代后期开始普及,16M 真彩色扩展在 10 年代开始流行,尽管典型的 PC 视频卡/显示器在千禧年左右已经支持真彩色。 使用这 16 种“主要”RGBI 颜色的传统在今天仍然存在,并且可能会永远存在。但是,对于颜色的确切阴影绝对没有达成共识。一个真正有问题的是深蓝色:人们希望它在黑色背景上可读,并希望它也可以用作漂亮的背景色(例如mc)。而这两者几乎是相互矛盾的。另一个标准的混淆是围绕黄色,通常深色变体是棕色,很难选择人类用同一个词(例如更暗和更亮的黄色)指代的两种色调,更不用说最好是在白色背景上可读的深色调。这就是为什么它们的确切颜色在绝大多数图形终端仿真器中都是可配置的。
这是因为传统的ANSI 转义序列将颜色定义为 8 种基本颜色(黑色、红色、绿色、黄色、蓝色、品红色、青色、白色)及其明亮的等价物,例如“亮黑色”,它被简单地称为灰色。这个旧标准后来被扩展以支持越来越多的颜色。阅读维基百科的颜色部分了解更多信息。
但是,许多终端应用程序要么坚持使用基本的 4 位 16 色集,要么让您仅重新映射该集,因为它通常被许多流行的 CLI 应用程序用于向后兼容目的。
至于配置部分,它在那里,例如,如果亮度让您不满意,您可以将默认的亮黄色更改为更暗的颜色。或者,如果您想更改窗口的背景,而默认颜色不适合它。
另请注意,如果您选择的终端 (Tilix) 的
Colour palette
设置在 UI/UX 方面有点混乱。列分组表明所选颜色似乎与背景/前景具体相关,但事实并非如此,它会为两者改变它们。这不是一个独立的答案,但我尝试继续@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 色扩展在 00 年代后期开始普及,16M 真彩色扩展在 10 年代开始流行,尽管典型的 PC 视频卡/显示器在千禧年左右已经支持真彩色。
使用这 16 种“主要”RGBI 颜色的传统在今天仍然存在,并且可能会永远存在。但是,对于颜色的确切阴影绝对没有达成共识。一个真正有问题的是深蓝色:人们希望它在黑色背景上可读,并希望它也可以用作漂亮的背景色(例如
mc
)。而这两者几乎是相互矛盾的。另一个标准的混淆是围绕黄色,通常深色变体是棕色,很难选择人类用同一个词(例如更暗和更亮的黄色)指代的两种色调,更不用说最好是在白色背景上可读的深色调。这就是为什么它们的确切颜色在绝大多数图形终端仿真器中都是可配置的。