xterm: #xxxxxx 到 0-255 颜色转换 - 如何?

xterm: #xxxxxx 到 0-255 颜色转换 - 如何?

我使用 ANSI 扩展集背景序列打印出所有 255 个 xterm-colors(背景),如下所示:(\033[48;5;%dm%d0-255 替换)。我使用#eee9bfvia .Xdefaults with设置 xterm 窗口颜色xrdb

XTerm*background: LemonChiffon2

#eee9bf当我在 gimp 颜色选择器的帮助下进行目视检查时,ANSI 颜色怎么可能不匹配? xterm 色域仅从 0-255,那么这里发生了什么 - xterm 是如何转换#xxxxxx为 0-255 的? ANSI 如何融入其中?

import sys

bgn_marker = '\033[48;5;%dm '
fgn_marker = '\033[%dm'
end_marker = '\033[0m'

text = "11. hello, how are you - today is not a it;s d'ay"
space = ' ' * 40

def burp(bg):
    print '######################## %d ####################################' % bg
    for fg in range(30,38):
        print (bgn_marker + fgn_marker + text + space + end_marker) % (bg, fg)

(我想做的是为 xterm 选择一个合适的背景,不会隐藏使用 vim/dmesg 等时经常显示的 ANSI 颜色。)

答案1

ANSI 在此过程中不起任何作用。它从来没有这样做过,除了命名方便。 ANSI 定义了一组 8 种颜色,大多数人将其编号为 0-7。当将该方案扩展到 16、88 和 256 色时,方便的创建由相同类型的索引寻址的颜色值数组。

X 服务器(和您的显示配置)确实发挥了作用。

xterm 从您的资源中或间接通过名称获取十六进制值rgb.txt,并向 X 服务器请求“接近”R/G/B 值的颜色。服务器可能(并且经常)近似颜色。在 xterm 的源代码中,开始阅读的一个好地方是(足够适当)分配AnsiColor

进一步阅读:

相关内容