作者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