ブログトップ 記事一覧 ログイン 無料ブログ開設

試験運用中なLinux備忘録 RSSフィード

2008/07/03 (Thu)

端末の256色拡張の色(パレット)について

http://www.frexx.de/xterm-256-notes/

から入手できるテストスクリプト256colors2.plを(256色拡張に対応した)色々な端末エミュレータ上で実行してみたところ、システムカラー(16色部分)を除いた部分(カラーキューブ色(216色)とグレイスケール色(24色))は、どの端末エミュレータを使用しても同じ色になっている*1ことが分かったように見えた。

256色パレット上の色の変更と既定のパレットに関する追記(いわもとこういち氏に感謝)

(2010/9/14)256色パレット上の色(番号と色の対応)は可変で、その色はパレット色変更のためのシーケンスによって色番号ごとに行えるということが分かった。指定できる色は24bitカラー(16,777,216色)の任意の色で、この中から240色(16番-255番)が自由に選択できることになる。

パレット上のそれぞれの色の変更は以下のいずれかの形によって行い、即座に画面表示に反映される。下はコマンドによる方法だが、256colors2.plの前半のようにスクリプトの中で変更することもできる。

色を変更した後に256colors2.plを実行するとxtermの既定のパレットと同じものにパレットが書き換えられてしまうため、これを用いて色の確認をしたい場合は先頭の行と「display the colors」のコメントから後ろの行を別ファイルに保存してそれを実行するとよい。

(色成分ごとの指定)
bash/zsh$ echo -e "\e]4;[色番号(16-255)];rgb:[赤成分の16進表記]/[緑成分の16進表記]/[青成分の16進表記]\a"

(#付きの16進表記による指定)
bash/zsh$ echo -e "\e]4;[色番号(16-255)];#[赤成分の16進表記][緑成分の16進表記][青成分の16進表記]\a"

bash,zsh以外のシェル(dash含む)では外部コマンド(/bin/echo)に置き換えると同様に処理することができる。

例として、パレットの17番の色を#FECCF0にしたい場合は

bash/zsh$ echo -e "\e]4;17;rgb:fe/cc/f0\a"
(もしくは)
bash/zsh$ echo -e "\e]4;17;#feccf0\a"

となる。

256色対応端末の既定のパレットは本記事の冒頭に書いたように一般的には端末によらずxtermの既定のパレットと同じものだが、異なる可能性はある。その場合は256colors2.plを実行するとこれに合わせることができる。

以下は以前の内容となるが、これはxtermの既定のパレットに関する内容となる。

色の段階について

カラーキューブ色

端末の256色拡張の覚え書き」で書いたように、赤/緑/青の各成分がそれぞれ6段階で変更できる形となっているのだが、その色成分は、

  1. 0x00
  2. 0x5F
  3. 0x87
  4. 0xAF
  5. 0xD7
  6. 0xFF

の6段階となっている。重要なのは、間隔が赤/緑/青の成分に対して均等ではないこと(もし均等なら「0x00」「0x33」「0x66」...「0xFF」となるはず)。

例えば、「#5FAFD7」という色は存在するが「#99CC33」という色は存在しない。

グレイスケール色

赤/緑/青の各成分は同じ値をとり、その値は、低いものから順に

0x08 0x12 0x1C 0x26 0x30 0x3A 0x44 0x4E 0x58 0x62 0x6C 0x76 0x80 0x8A 0x94 0x9E 0xA8 0xB2 0xBC 0xC6 0xD0 0xDA 0xE4 0xEE

となっている。実際のグレイスケール色は、上記24色とカラーキューブから赤/緑/青の成分が同じ6色*2とを合わせたものとなる。

256colors2.plの出力に合わせた色一覧

f:id:kakurasan:20080703200245p:image

レイアウトを上の出力に合わせた16進表記の色コードの一覧表を作成した。カラーキューブ色は左のものから順に1つのテーブルにまとめている(後ろ/右のテーブルほど赤成分が強い)。

カラーキューブに含まれるグレイスケール色(無彩色)は強調表示にした。

グレイスケール色は、都合により、6色ずつで折り返している。

カラーキューブ色

f:id:kakurasan:20080703222236p:image 1/6(16-51)
 012345
16#000000#00005F#000087#0000AF#0000D7#0000FF
22#005F00#005F5F#005F87#005FAF#005FD7#005FFF
28#008700#00875F#008787#0087AF#0087D7#0087FF
34#00AF00#00AF5F#00AF87#00AFAF#00AFD7#00AFFF
40#00D700#00D75F#00D787#00D7AF#00D7D7#00D7FF
46#00FF00#00FF5F#00FF87#00FFAF#00FFD7#00FFFF

f:id:kakurasan:20080703222237p:image 2/6(52-87)
 012345
52#5F0000#5F005F#5F0087#5F00AF#5F00D7#5F00FF
58#5F5F00#5F5F5F#5F5F87#5F5FAF#5F5FD7#5F5FFF
64#5F8700#5F875F#5F8787#5F87AF#5F87D7#5F87FF
70#5FAF00#5FAF5F#5FAF87#5FAFAF#5FAFD7#5FAFFF
76#5FD700#5FD75F#5FD787#5FD7AF#5FD7D7#5FD7FF
82#5FFF00#5FFF5F#5FFF87#5FFFAF#5FFFD7#5FFFFF

f:id:kakurasan:20080703222238p:image 3/6(88-123)
 012345
88#870000#87005F#870087#8700AF#8700D7#8700FF
94#875F00#875F5F#875F87#875FAF#875FD7#875FFF
100#878700#87875F#878787#8787AF#8787D7#8787FF
106#87AF00#87AF5F#87AF87#87AFAF#87AFD7#87AFFF
112#87D700#87D75F#87D787#87D7AF#87D7D7#87D7FF
118#87FF00#87FF5F#87FF87#87FFAF#87FFD7#87FFFF

f:id:kakurasan:20080703222251p:image 4/6(124-159)
 012345
124#AF0000#AF005F#AF0087#AF00AF#AF00D7#AF00FF
130#AF5F00#AF5F5F#AF5F87#AF5FAF#AF5FD7#AF5FFF
136#AF8700#AF875F#AF8787#AF87AF#AF87D7#AF87FF
142#AFAF00#AFAF5F#AFAF87#AFAFAF#AFAFD7#AFAFFF
148#AFD700#AFD75F#AFD787#AFD7AF#AFD7D7#AFD7FF
154#AFFF00#AFFF5F#AFFF87#AFFFAF#AFFFD7#AFFFFF

f:id:kakurasan:20080703222252p:image 5/6(160-195)
 012345
160#D70000#D7005F#D70087#D700AF#D700D7#D700FF
166#D75F00#D75F5F#D75F87#D75FAF#D75FD7#D75FFF
172#D78700#D7875F#D78787#D787AF#D787D7#D787FF
178#D7AF00#D7AF5F#D7AF87#D7AFAF#D7AFD7#D7AFFF
184#D7D700#D7D75F#D7D787#D7D7AF#D7D7D7#D7D7FF
190#D7FF00#D7FF5F#D7FF87#D7FFAF#D7FFD7#D7FFFF

f:id:kakurasan:20080703222253p:image 6/6(196-231)
 012345
196#FF0000#FF005F#FF0087#FF00AF#FF00D7#FF00FF
202#FF5F00#FF5F5F#FF5F87#FF5FAF#FF5FD7#FF5FFF
208#FF8700#FF875F#FF8787#FF87AF#FF87D7#FF87FF
214#FFAF00#FFAF5F#FFAF87#FFAFAF#FFAFD7#FFAFFF
220#FFD700#FFD75F#FFD787#FFD7AF#FFD7D7#FFD7FF
226#FFFF00#FFFF5F#FFFF87#FFFFAF#FFFFD7#FFFFFF

グレイスケール色(6色ずつで折り返し)

f:id:kakurasan:20080703223649p:image 1/1(232-255)
 012345
232#080808#121212#1C1C1C#262626#303030#3A3A3A
238#444444#4E4E4E#585858#626262#6C6C6C#767676
244#808080#8A8A8A#949494#9E9E9E#A8A8A8#B2B2B2
250#BCBCBC#C6C6C6#D0D0D0#DADADA#E4E4E4#EEEEEE

関連記事:

まとめドキュメント:

関連URL:

*1:つまり、その216色+24色の部分のパレットが共通している

*2:具体的には#000000/#5F5F5F/#878787/#AFAFAF/#D7D7D7/#FFFFFF

いわもとこういちいわもとこういち 2010/09/14 10:23 各端末のデフォルトのパレットが同じだというのは大抵は正しいのですが、256colors2.plの結果を見てそう結論付けるのは正しくないです。

xtermの256色拡張には、パレットの各色を設定する制御シーケンスが存在します。
256colors.plではこれを使って色番号16-255の色を設定していますので、例えデフォルトのパレットの配色が違っていても、正しく256色拡張に対応した端末ならばパレットがxtermのデフォルトと同じに設定されるため表示も同じになります。
# 256色拡張に対応していてパレット変更に対応していない端末は、私の知る範囲では PuTTY だけです

デフォルトには存在しない色を割り当てる事も出来ますので、たとえばzshの場合 echo "\e]4;16;#99CC33\a" を実行すれば色番号16の色が#99CC33に変わります。

kakurasankakurasan 2010/09/14 21:48 コメントありがとうございます。
256色対応の端末で使える色は固定されていたもの(可変ではない)と思っていたのですが違っていたのですね。色の指定の仕方も含め、大変参考になりました。
今回、既定のパレットについてとパレット上の色を設定するための処理についての内容を追記し、まとめドキュメントの内容も修正しました。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kakurasan/20080703/p1
カスタム検索

カテゴリ「メールマガジン」を除いた本ウェブログ上の文章は、クリエイティブ・コモンズ・ライセンス(表示-非営利-継承 2.1 日本)の下でライセンスされています(引用・転載されたものを除く)。
Creative Commons License

本ウェブログの表示につきましては、横幅1,000ピクセル以上を推奨します。
はじめに | お知らせ | 最新の記事 | 記事一覧 | プライバシーポリシー | 別館トップ | まとめドキュメント | ご意見・ご要望