このページの本文へ

前へ 1 2 次へ

Windows Info 第153回

進化するWindows 10のターミナル、“色”で30年来の制限から脱却

2018年12月30日 15時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

 Windows 10の次期大型アップデートで現在プレビュー版が提供されている19H1(来年4月にリリース予定)では、コンソールが改良された。具体的には、文字色と背景色で「デフォルトカラー」をサポートした。そのほかにカーソルの形状や色の指定などが可能になっている。ここでは、この文字色と背景色について考えてみる。

現在プレビュー中の19H1ではコンソールが改良され、プロパティダイアローグボックスに「ターミナル」タブが新設された。ここでは、文字色と背景色のデフォルトカラーなどを指定できる

Windowsコンソールの表示色は
IBM PC当初のハードウェアの制限を受け続けていた

 そもそもWindowsのコンソールは、Win32アプリケーション(デスクトップアプリケーション)がコンソールAPIを使って出力などをするように作られたもの。コンソールは、文字や背景の色を16個のカラーコードで指定する。つまり全部で16色しか利用できない。

 WindowsアプリケーションはグラフィックスでRGB各8bitのフルカラーを使えるというのに、コンソールの中の文字や背景の色はたった16色しか指定できないのである。

 これは、IBM PCに搭載されたCGAなどのテキストモードの仕様を引き継いだからだ。現在のコンソールは、アプリケーションが指定した文字列をWindowsがフォントのビットパターンとして描画している。しかし、IBM PCが発売された当時は、CPUも高速ではなかったため、現在のような「ビットマップディスプレイ」で文字を扱うと描画速度が遅くなってしまう。

 そんなIBM PCのディスプレイカード(CGA、MGAと呼ばれるハードウェア)では、文字をハードウェアで表示していた。具体的には、ビデオメモリーに文字コードとアトリビュートを書き込むと、ハードウェアでフォントパターン(当時は、これをキャラクタージェネレーターと呼んでいた)として表示させていた。プログラム側は、8bitの文字コードをビデオメモリに書き込むだけで、文字が表示できた。

 このときビデオメモリには、文字コードだけでなく、表示色を指定する「アトリビュート」も同時に書き込んだ。合わせて16bitをメモリに書き込むだけで文字が表示できたわけだ。IBM PCはそのままではいわゆる7bitアスキーコードや互換の1バイト文字コードしか想定しておらず、日本語の表示はできない。

 アトリビュートは、表示モード(たとえば白黒モードなどもある)によって違うが、テキストモードでは、上位4bitが背景色、下位4bitが文字色になっていた(正確には、点滅ビットや輝度ビットなどがあるのだが、それについては省略)。それぞれ4bitしかないため、最大16色しか指定できない。

 そもそも、CGAは16色表示のCRTディスプレイのためのハードウェアで、最大16色しか表示させることができなかった。16色表示のディスプレイは、Red、Green、BlueのいわゆるRGB各1bitと輝度(Intensety)1bitの4bitでドットを表現する。RGB各1bit値を組みあわせた8色(黒、青、緑、シアン、赤、マゼンタ、ブラウン、明るいグレー)の暗い色と明るい色で合計16色となる(明るいグレーの輝度の高いものが白。黒の輝度の高いものが暗いグレー、ブラウンの輝度の高いものが黄色になることに注意)。

 この仕組みはずっと継承されており、後継のEGA、PS/2向けに開発されたVGAでもテキストモードは、この方式のアトリビュートを使っていた。VGAではこの16色に対して、RGB値を自由に割り当てる「カラーパレット」の仕組みも持っていた。カラーパレットを使うことで、同時に表示できる色は16色だが、任意の色を表示させることができた。

 Windowsのコンソールは、CGAやVGAのテキストモードを前提に開発されたMS-DOSアプリケーションを移植しやすいように作られた。このため、テキスト表示時のアトリビュートは、CGAから使われている「伝統ある」方式を踏襲している。

 また、カラーパレットもコンソールAPIから制御可能だ。さらに、コンソールプロパティのダイアローグボックスにある「画面の色」タブで、ユーザーは手動で16色に対して任意のRGB値を設定することもできる。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン