アスペクト比とSixel描画
さて、具体的にアスペクト比を変えて描画してみよう。Sixelグラフィックスのエスケープシーケンスで、アスペクト比を指定すると、1ピクセルの縦方向が、1/2/3/5ドットとなる。これにともない、ターミナル上の文字との相対サイズが変化する。
アスペクト比が2:1(<アスペクト比>設定値としては0または1)の場合、ピクセルは縦2ドット、横1ドットとなり、1文字は10×10 Sixelピクセルに相当する。これは、フォントサイズに関係がない。つまり、フォントサイズが大きくなると、それに応じてSixelピクセルのサイズが追従して大きくなる。
たとえば、アスペクト比5:1(設定値としては2)の場合、PowerShellで記述した以下のエスケープシーケンスで、縦5ドットのSixelグラフィックスを描画できる。
$aspect=2;write-host "`e[4;10HH`eP${aspect};1;0;q@ACGO_-??????@ACGO_`e\`e[5;10HH`e[6;10HH`e[6;12HH aspect=$aspect`n"
このとき、横方向では1文字はSixelで10ピクセルに相当し、縦方向では4ピクセルに相当する。
同じくアスペクト比3:1(設定値としては3)の場合、
$aspect=3;write-host "`e[4;10HH`eP${aspect};1;0;q@ACGO_-??????@ACGO_-????????????@ACGO_`e\`e[5;10HH`e[6;10HHHH`e[6;15Haspect=$aspect`n"
となる。このとき、1文字の縦方向は、6.666...ドットと整数ではなくなる。このため、写真ではHで上書きされたSixelグラフィックス右下のドットが小さく欠けている。
アスペクト比1:1(設定値としては7)の場合には、1文字は、Sixelグラフィックスでは10×20ピクセルに相当する。エスケープシーケンスとしては、
$aspect=7;write-host "`e[4;10HH`eP${aspect};1;0;q@ACGO_-??????@ACGO_-????????????@ACGO_-??????????????????@ACGO_`e\`e[5;10HHHHH aspect=$aspect`n"
となる。
デフォルトのアスペクト比である2:1(設定値を省略または0を指定)の場合には、1文字は10×10ピクセルに相当する。エスケープシーケンスは、以下になる。
$aspect=0;write-host "`e[4;10HH`eP${aspect};1;0;q@ACGO_-??????@ACGO_-????????????@ACGO_-??????????????????@A`e\`e[5;10HHHHH aspect=$aspect`n"
アスペクト比を変えることで、Sixelの1ビットで描画できる縦方向ドットのサイズを変更できる。ただし、現状、1ピクセルの横方向のサイズを変更する方法はなく、Sixelを横方向に並べる必要がある。
Sixelグラフィックスは、ターミナル内の任意の場所に点を打つグラフィックスとして考えるとちょっと面倒なところがある。とりあえずは、ユーザー定義文字のように1行内でSixelグラフィックスを描画するか、ツールやライブラリ(LibSixel)を使って、画像ファイルを表示させるか、といった使い方になるのではないか。
かつてのBASICのように、線や矩形、円などを描画するには、それぞれプログラムを記述する必要がある。
この連載の記事
-
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds - この連載の一覧へ