Windows Terminalのプレビュー版V.1.22には、Sixelと呼ばれるグラフィックス機能が搭載されている。Sixelは、縦6ドットを単位としたグラフィックス描画機能である。
描画はエスケープシーケンスを介するが、Sixel描画に対応したアプリケーションがあれば、Windows Terminalでも利用可能だ。
たとえば、Image Magickは、以前からSixelに対応しているため、WindowsやLinux(WSL)の両方で画像ファイルをSixel表示させることができる。

Sixelは、1980年台にDECのVT200シリーズに実装された機能で、いくつかの端末エミュレーターが対応している。このため、ImageMagickはSixelに対応しており、画像ファイルをターミナルに表示できる
また、Linuxには、「LibSixel」と呼ばれるライブラリがあり、これに「im2sixel」コマンドがある。どちらも画像ファイルをSixelグラフィックスでターミナル内に表示できる。
そもそもSixelとは?
Sixelとは、「Six+Pixel」の意味で、縦6ドットを単位としたグラフィック機能を指す。いわゆるユーザー定義文字をエスケープシーケンスで実現するためのデータ表現形式として、1980年代に作られたDEC社のVT200シリーズに搭載された。これをDRCS(Dynamically Redefined Character Set)という。
VT240/241、後継機種のVT300などでは、DRCSのデータ形式をグラフィックス表現形式として利用した。これがグラフィックス描画機能としてのSixelの始まりである。
ユーザー定義文字を作るため、縦に並ぶドットを単位とした。6ドットに制限されたのは、エスケープシーケンス中でアルファベット文字としてビットを表現するためである。ターミナルの画面に表示されたアルファベット1文字は、Sixelでは、10×10ピクセルである。日本語など全角文字では20×10ドットになる。
多くの端末や端末ソフトウェアでは、カーソル位置は、次に文字が表示される位置を示す。つまり、最後に表示された文字の後ろにカーソルが置かれる。Sixelも現在のカーソル位置を起点にするが、Sixelの描画は、文字カーソル位置に影響を与えない。
この記事では便宜的に、Sixelの描画位置を「Sixelポインタ」、描画されるピクセル(縦6ドット単位)をSixelと呼ぶ。Sixelが描画されるたびにSixelポインタは右に1ピクセル移動する。次のSixelは、隣の列に移る。
Sixelでは、一度に背景色(0のビット)と描画色(1のビット)の2色しか描画できない。このため、1つのSixelに複数色を描画したい場合、描画色を変えて再度描画する(方法は後述)。このとき、0のビットは、既存の描画に影響を与えない。
Sixelの描画には、以下のエスケープシーケンスを使う。
CSI q [<カラーレジスタ定義>] <描画色指定> <Sixel文字> ST
CSI = Esc P
ST = \ Esc またはCtrl+G
カラーレジスタ定義 = #<カラーレジスタ番号> ; 2 ; <R値(%)> ; <G値(%)> ; <B値(%)>
描画色指定 = # <カラーレジスタ番号>
Sixel文字参照(以下の表参照)

Sixelの描画は、カーソル位置から始まる。エスケープシーケンスを使い、文字で縦6 bitのピクセルを表す。なお、同じ文字を繰り返す場合には、「!<回数>;<Sixel文字>」という形式でデータを圧縮できる
同じSixelに再描画する場合には、Sixelポインタの初期値(カーソル位置)に、復帰する「$」(Sixelではこれをキャリッジリターンと呼ぶ)を使う。

Sixelのエスケープシーケンスでは、0から255の数値で表されるカラーレジスタを定義して、描画色として指定できる。また、Sixelポインタの初期値に復帰する「$」(キャリッジリターン)や、Sixelポインタ初期値の6ピクセル下にSixelポインタを設定する「-」(ニューライン)が使える
エスケープシーケンスに「$」を入れると、その時点で、Sixelポインタが初期値(カーソル位置)に戻る。ここで描画色を切り替えて再度描画する。
現在のSixel位置の下を描画するときには、「-」(同ニューライン)を使う。ニューラインでは、Sixelポインタは初期位置の6ピクセル下に設定される。
ここまでが基本だが、Sixelを使うためには、カーソル位置の制御などもする必要がある。また、Sixel描画はカーソル位置を変えないため、カーソル位置を設定してやらないと、後続する文字表示がSixel描画を上書きしてしまう。このあたりを含め、次回もう少し詳しくSixelを見ていくことにする。

この連載の記事
-
第469回
PC
Windows Updateの27年 悪役だった頃から改良が進んで、徐々に目立たない存在に -
第468回
PC
2025年のWindowsどうなる!? Windows Insider Programの状況をあらためて見る -
第467回
PC
Copilot+ PCのNPUでカメラを処理する「Windows Studio Effects」 その内容や効果は? -
第466回
PC
PowerToysの最近の新機能には、複数アプリを指定位置に起動する「ワークスペース」や新規作成のカスタマイズがある -
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた - この連載の一覧へ