Windows Subsystem for Linuxの搭載で
必要になったコンソールの進化
しかし時は流れて、マイクロソフトはWindows XPではMS-DOSを捨て、64bit版Windowsは16bitモードを捨てた。このため、もはやIBM PCのテキストディスプレイとはなんの関係もないはずにも関わらず、コンソールAPIの仕様はそのまま残っているのである。
WSLが搭載されたことで、VT100互換のエスケープシーケンスを受け付けるようになった。そもそも、MS-DOS時代の「コンソール」は、VT互換のエスケープシーケンス(当時はANSIエスケープシーケンスと呼んだ)機能を持っていた。それが、NTカーネルと統合された段階で廃止となり、以来ずっと、コンソールAPIを使ってアプリケーションが開発されてきた。
このVT互換の端末装置(ターミナル)にもカラー表示が可能なものがあり、やはり文字、背景それぞれに16色を指定することができる。ただし、VT互換のエスケープシーケンスは、デフォルトカラーという概念を持つ。これは、黒地に白文字などのデフォルトの文字色、背景色に色指定を戻すもので、文字色/背景色指定のエスケープシーケンスでデフォルトカラーに戻すことができるようになっている。
これに対して、コンソールAPIでは、いつでも好きな色で文字と背景を表示できるため、デフォルトカラーという概念がなく、カラーパレットにより、16色のカラーコードにそれぞれ独立して24bitのRGBを設定できる。つまり、文字色も背景色も1677万7216色の任意の色に設定できる。
Windowsでは、1つのコンソールでWin32アプリを起動し、そこからWSL側のコマンドを起動することもできる。このため、WSLのコマンドが動作しているとき、すでにWin32アプリにより文字色や背景色が設定されていたり、カラーパレットが変更されている可能性がある。WSL側が文字色や背景色を16個のカラーコードから指定しても、望み通りの色になることは保証できない。そればかりか、カラーパレットの状態によっては黒地に黒文字などユーザーには見えない表示になってしまう可能性さえある。
このために作られたのが、19H1にある「前景分離」「背景分離」の機能だ。この設定をオンにすると、設定した色が文字と背景のデフォルトカラーになる。初期状態がこの色になるのと、エクスケープシーケンスでデフォルトカラーを選択したときにカラーパレットの状態にかかわらず、指定した色が使われる。
色の問題は解決したが、Windowsコンソールが対応しなければならない問題はいくつもある。そのうちの1つが文字コードの問題だ。
簡単に言えば、現時点では8bitまたは16bitにエンコードされた文字コードしか扱うことができない。たとえばUTF-8では1文字を表すのに1~4バイトが必要になる。さらに、絵文字などの表示では、指定されたフォントセットにない文字を他のフォントセットから切り替えて使う「Font-fallback」といった仕組みが必要になる。
さらに細かく見ていくと、絵文字では、男女や肌の色などを切り替えるために文字の合成機能を使う。そこで複数の文字を組みあわせて1つの文字として表示する機能などが必要になる。コンソールは、このあたりが今のところまったく対応できていない。マイクロソフトのブログなどによれば、「October 2018 Update」(RS5、Windows 10 Ver.1809)には、UTF-8を扱うための基本的な仕組みは組み込まれたものの、完全なかたちでUTF-8をサポートするところまでは到達していないという。コンソール改良の道はまだ半ばというところか。

この連載の記事
-
第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が改良される - この連載の一覧へ











