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

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ











