作者HZYSoft (pcman.ptt.cc)
看板PCman
标题[公告] 跟大家解说ANSI彩色码,请参阅
时间Sat Jul 3 00:01:49 2004
近日来不少网友在讨论 ANSI 色彩码的问题,我在此跟大家做些说明
先看一段网路上节录的说明,我後面在补上我的说明
==========================================================================
以下节录自
http://www.dee.ufcg.edu.br/~rrbrandt/tools/ansi.html
ESC[Ps;...;Psm
Set Graphics Mode: Calls the graphics functions specified by the
following values. These specified functions remain active until the next
occurrence of this escape sequence. Graphics mode changes the colors and
attributes of text (such as bold and underline) displayed on the
screen.
Text attributes
0 All attributes off
1 Bold on
4 Underscore (on monochrome display adapter only)
5 Blink on
7 Reverse video on
8 Concealed on
Foreground colors
30 Black
31 Red
32 Green
33 Yellow
34 Blue
35 Magenta
36 Cyan
37 White
Background colors
40 Black
41 Red
42 Green
43 Yellow
44 Blue
45 Magenta
46 Cyan
47 White
Parameters 30 through 47 meet the ISO 6429 standard.
==========================================================================
请注意到我标上黄字的两行,^[[0m 就是清除所有文字色彩等各种属性
一般来说也就是预设黑底灰字,而 ^[[m 在不使用参数的情况下形同 ^[[0m
也就是清除所有色彩,所以应该回到黑底灰字才是正确的,而控制码参数 1
在单色萤幕上显示为粗体,彩色萤幕上则是"高亮度",^[[m还原成灰色字体之後
加上 ^[[1m 高亮度,则灰色应改变成亮白色,这样的色码写法我认为是正确的
很显然 ^[[m^[[1m 会比 ^[[m^[[1;37;40m 来的精简,所以 PCMan 刻意设计成如此
至於其他软体为何会解读成其他色彩,除非是我误解了标准,否则不需要列入考虑
另外请注意到第二个标注黄字的地方,事实上,底线支援并非标准,注意原文
monochrome是指单色的意思,也就是说底线本来只有在单色显示的萤幕之下才支援
底线本来是没有和彩色同时使用的,所以不要再说PCMan破坏标准不支援底线功能
因为底线本来就不是这样用,而且另一分英文文件指出 (不过非正式官方文件)
^[[4m控制码是underscore "if available",如果按照这样的说法,事实上
底线支援本来就不是必要的要求,而且本来底线就不是和色彩混用的,更不是当今的用法
说实话 PCMan 并没有支援单色模式,但现今BBS也没人在用单色,所以不构成问题
除了这点瑕疵,不支援底线其实并不算破坏标准。另外过去有网友质疑为何 PCMan
没有支援 KKman 可以使用的 ^[[38m 控制码,大家可以自己看一下,这绝对不是
PCMan 的问题, ^[[38m 在KKman 支援成什麽我不管,但是很肯定色码里面本来按照
规定就根本没有 38 这种东西,更没有"不支援"的问题,因为本来就没这东西。
以上简短说明解答使用者疑问,并希望帮助各位更了解 ANS彩色码,如有错敬请指正
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.226.102.225
※ 编辑: HZYSoft 来自: 61.226.102.225 (07/03 00:03)
1F:推 hjdmllmedbu:kkman 38 是什麽东西? 218.160.38.49 07/03
2F:→ commiserate:kkman的38好像是随机出现的颜色... 220.136.160.240 07/03
3F:推 honst37:收录至中 Z-15-7 !! 218.167.178.224 07/04