绿色的绿到底是不是green,你说的绿是什么绿?

1,681 阅读4分钟

先来玩个游戏,思考一个问题,让你回答5个绿色的东西,你能最先想到的是什么?随处可见的绿色植物,比如我桌子上的绿萝,绿油油的。绿色的水杯、绿色的白板磁钉、绿色的垃圾回收箱、绿色的削皮刀、荧光笔帽、安全出口提示灯,还有交通信号灯🚥、绿色肥肥的鹦鹉、乔治的恐龙、迷彩服、美元、国旗、台球桌、放眼望去看不到边的青青草原,其中有一群养居住在羊村,灰太狼一家???🐸🐢🍏🥝绿色出行,低碳环保。留言告诉我你的答案。

image.png

(上图来自网络)乌克兰 Klevan 火车隧道

Green

我们今天要说的,是 RGB 颜色模型中的绿色。

CSS Level 1 定义的16种颜色名称和十六进制对应关系 image.png

最近在研究 RGB 的颜色模型,发现一件非常有意思的事。在 CSS 的颜色关键字(Color Keywords)中,红色 red的 RGB 值为#FF0000,蓝色 blue 的为#0000FF,而绿色 green 为#008000???不应该是#00FF00嘛?竟然叫lime,还绿黄,黄色在哪里,我瞎了么?

不透明度\颜色红色绿色蓝色
100%red - FF0000\colorbox{#FF0000}{red - FF0000}lime - 00FF00\colorbox{#00FF00}{lime - 00FF00}blue0000FF\color{#0000FF} blue-0000FF
50%maroon - 800000\colorbox{#800000}{maroon - 800000}green - 008000\colorbox{#008000}{green - 008000}navy000080\color{#000080} navy - 000080

CSS Level 1 只接受 16 个基本颜色,称为VGA颜色,因为它们来源于 VGA 显卡所显示的颜色集合而被称为 VGA colors (视频图形阵列色彩)。最初,浏览器接受其它的颜色,由于一些早期浏览器是 X11 应用程序,这些颜色大多数是 X11 命名的颜色列表,虽然有一点不同。SVG 1.0 是首个正式定义这些关键字的标准;CSS 色彩标准 3 也正式定义了这些关键字。它们经常被称作扩张的颜色关键字, X11 颜色或 SVG 颜色 。

规范中指出,最早的命名来源于Windows 的 VGA 调色板,但是为什么要这么做?鬼才逻辑?当时并没有考虑未来的发展?

神秘邮件

找到一个关于这个问题的邮件,大致内容是这样说的。

有个叫Chris的问了个问题:为什么SVG 1.0中的颜色命名与X11中的不一样,到底哪个才是正确的?其中冲突最大的是 green 的命名,因为它是 RGB 模型中的原色。

image.png

2002423日下午7:29:28\color{green} 2002年4月23日下午7:29:28 正在看新闻联播的 John 看到了邮件,立刻拿出吃饭的家伙,回复:

Green 的命名由来已久,早些见于 HTML3.2,然后是 HTML4、CSS1、CSS2,最终是在 XSL、SVG 中。
green 被定义为半强度的绿原色,是完全不透明绿色`lime`的一半强度,就像是 maroon 和 red 的关系
一样,这个标准呢,已经存在很多年,你可以去 Netscape 1、 MSIE 2 和 Opera 1 发现它。最早可追
溯1931年国际颜色标准进行的客观测量。

然后说最好能够建立标准,相信 W3C,巴拉巴拉,并提到不认为有实际冲突,只是一套颜色的命名规则。

1931\color{red} 1931年的颜色国际标准:CIE 1931 色彩空间

使用标准的波长获取三原色,700 nm (red), 546.1 nm (green) and 435.8 nm (blue).

image.png

the human eye can actually see light with wavelengths up to about 810 nm, but with a sensitivity that is many thousand times lower than for green light. These color matching functions define what is known as the "1931 CIE standard observer".

看了下测量过程,没太看明白,也没找到具体为什么要这么叫的原因,只知道科学实验表明,人眼感受到的绿光要比红光和蓝光要强烈。

总结

在 Web 开发中,green指的是#008000,不是#00FF00,后者叫做lime。这种叫法来源于早期的 HTML 和 CSS 规范中定义的。HTML 和 CSS 中可以使用 green 英文名字代替十六进制的值,在 早期的 X11 颜色规范中,green/lime有同样的十六进制值,都是#00FF00

在最后

扯了这么多,也不知道说没说明白,还有刚开始说绿帽子的那位同学,放学别走。另外喜洋洋到底是什么羊?青青草原为什么叫青青草原?

参考资料

  1. Office Green
  2. CIE 1931 Color Space
  3. Color Value
  4. X11 Color Set
  5. Green and 00FF00
  6. Awesome Color
  7. Color Tool