
Sixel は「6 ピクセル」の略で、DECの端末とプリンタでサポートされているビットマップグラフィック形式です。高さ 6ピクセル、幅 1 ピクセルのパターンで構成され、64 種類のパターンが考えられます。各パターンにはASCII文字が割り当てられているため、7 ビット シリアル リンクで Sixel を簡単に送信できます。
Sixel は、 LA50などのDECドット マトリックス プリンタにビットマップ グラフィックスを送信する方法として最初に導入されました。「sixel モード」にすると、次のデータが解釈され、9 ピンプリント ヘッドのピンのうち 6 つが直接制御されます。sixel 文字の文字列は、画像の 6 ピクセル高の行を 1 つエンコードします。
このシステムは後に、カスタム文字セットを定義するときに、VT200 シリーズおよびVT320端末にビットマップ データを送信する方法として再利用されました。一連のシクセルを使用して、各文字のビットマップを転送します。この機能は、ソフト文字セットまたは動的に再定義可能な文字セット( DRCS ) として知られています。VT240 、VT241、VT330、およびVT340を使用すると、端末は、以前にプリンタに送信されていたものと同様に、完全なシクセル イメージを画面にデコードできます。
説明
Sixel は、ビットマップを一連の 6 ピクセルの高さの水平ストリップに分割して画像をエンコードします。特定のストリップ内の 1 ピクセル幅の垂直列ごとに 1 つの Sixel が形成されます。各 Sixel のピクセルはバイナリとして読み取られ、1 つの 6 ビット数値にエンコードされます。このとき、「オン」のピクセルは 1 としてエンコードされます。この数値 (10 進数で 0 から 63 まで) は、1 つの ASCII 文字に変換され、63 でオフセットされるため、すべて黒の Sixel (10 進数で 0) は としてエンコードされます?。これにより、Sixel がASCII 文字セットの印刷可能な文字範囲内に収まるようになります。キャリッジ リターン(CR) は で表され、ライン フィード(LF)は; で表されます。カーソルを行頭 に戻すには、両方を順番に送信する必要がありました。 $-CRLF
Sixel には、ランレングス エンコーディング(RLE)を使用した基本的な圧縮形式も含まれています。これは、文字の後に繰り返す回数の 10 進数、そして繰り返す 1 つの Sixel 文字で実現されます。および 10 進数は、エンコードされた範囲外にある有効な Sixel データにはなり得ないため、エンコードはソフトウェアで簡単に識別して展開できます。 !!
「シクセルモード」に入るには、シーケンス+を送信します。p1 から p3 はオプションの設定パラメータで、p1 はアスペクト比(p3 に取って代わられたため非推奨) を定義し、p2 はゼロの色の解釈方法、p3 は単純なグリッドサイズパラメータです。+は標準の DEC「デバイス制御文字列」、つまり DCS で、DEC の機器のさまざまな特殊機能をオンまたはオフにするために使用されました。「q」はシクセル識別子です。[a]次に、q の後にシクセルデータが続きます。「文字列ターミネータ」シーケンス+は、デバイスを通常の文字モードに戻します。 ESCPp1;p2;p3;qESCPESC\
印刷の場合、シクセルはプリンタに送信され、バイナリにデコードされて、プリント ヘッドの 6 つのピンに直接送信されます。唯一の複雑な点は、RLE を内部印刷バッファに拡張することです。端末での表示は、もう少し複雑です。グラフィックスをサポートする端末では、ReGISグラフィックス システムを使用して、シクセル パターンを画面のビットマップに直接描画します。これは、ビットマップ パターンをグリフとして保存し、それをブリットすることで高速に実行されました。
カスタム文字セットの定義に使用する場合、エスケープ コードが変更された以外は、形式はほぼ同じです。データに関して言えば、唯一の大きな違いは、別々の CR/LF が 1 つの に置き換えられたことです/。たとえば、 VT300 シリーズでは、80 列の文字グリフは幅 15 ピクセル、高さ 12 ピクセルでした。つまり、合計 30 個のシクセルを送信することで文字を定義できることになります。
色は、文字 の後に、デバイスごとに異なる多数の色レジスタの 1 つを参照する数字を続けることでもサポートされます。レジスタ内の色は、特殊な DEC 形式のRGB 値またはHLS値を使用して定義されます。プリンタでカラー イメージを作成するには、端末のレジスタ ベースの色 (通常は 2 ビットまたは 4 ビット) からの単一のビットプレーンを表す 1 行のシクセルを複数回送信します。ハードウェアの機能は多岐にわたるため、カラー シクセルの描画は対象デバイスにのみ出力できます。非グラフィックス端末は、通常、シクセルのエスケープ シーケンスを暗黙的に無視します。 #
サンプル

␛Pq #0;2;0;0;0#1;2;100;100;0#2;2;0;100;0 #1~~@@vv@@~~@@~~$ #2??}}GG}}??}}??- #1!14@ ␛\
上記の例では、シクセル モードに入り、3 つのカラー レジスタを設定し、それらのレジスタを使用してそれらの色でシクセルを描画します。これは、#0;2;0;0;0「カラー レジスタ 0 を設定し、モード 2 (RGB モード) を使用し、R、G、B を 0% に設定する」と解釈されます。これにより、カラー 0 が黒に設定され、次のコマンドはレジスタ 1 を黄色 (100%、100%、0%) に、レジスタ 2 を緑 (0%、100%、0%) に設定します。各カラー チャネルに 8 ビット値 (0 ~ 255) を割り当てるほとんどの最新システムとは異なり、RGB モードは各チャネルの 0% ~ 100% の「強度」に基づいています。
後続のデータ行では、色を選択します。最初と 3 番目は黄色、真ん中は緑色です。その後、6 セルを描画します。最後の行は、RLE の使用を示しています。これは、「@( 0b100000) を 14 回繰り返す」ことを意味します。最終的な出力は 14 ピクセル x 7 ピクセルなので、最後の行は、0b100000最後の行を埋めるために 14 回繰り返されるだけです。$行末の は、次の行が現在の行をオーバープリントすることを意味し、 は、-次の行が 6 セルの新しい行を表すことを意味します。
注記
- ^ 小文字の「p」はReGIS識別子でした。
参照
参考文献
- 「VT330/VT340 プログラマ リファレンス マニュアル、第 2 巻: グラフィックス プログラミング」、Digital、EK-VT3XX-GP-002、1988 年 5 月
- クリス・キエサ、All About SIXELs、1990 年 9 月 29 日
- Moy, Edward; Gildea, Stephen; Dickey, Thomas (2023 年 12 月 31 日)。「XTerm 制御シーケンス」。XTerm マニュアル。
外部リンク
- 「シクセルグラフィックニュース」
- 「Sixel ソフトウェア ライブラリ」
- 「VT320 ソフト文字セット」
- 「Sixel ビューアとサンプルの Sixel 画像」
- 「BMP から Sixel へのコンバーター」
