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を見ていくことにする。

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
















