制御列

制御シーケンス (文字コード)

[17] (せい) (ぎょ) シーケンス (control sequence) は、 CSI から始まる制御機能を表すビット組合せ列 (バイト列) です。

仕様書

[16] ISO/IEC6429 / JISX0211 で定義されてます。

意味

[4]

制御シーケンス (control sequence)
制御機能 CONTROL SEQUENCE INTRODUCER (CSI, 制御シーケンス開始) から始まるビット組合せの列であって、 パラメタをもつか又はもたない制御機能の符号化表現のために使う。 (JIS X 0211‐1994 4.2.24)

[3]

制御シーケンス (control sequence)
制御機能 CONTROL SEQUENCE INTRODUCER (CSI, 制御シーケンス開始) から始まる一つ以上のビット組合せであって、 制御機能符号化表現のために使う。 JIS X 0201:1997 3.5

構文

[12] ISO/IEC 6429:1991 5.4 を元に ABNF で書くと、大まかな構造はこんなんです。

7ビット・8ビット変換のための例外的解釈

冒頭の ABNF は、こんな風に修正しないといけません。

  • control-sequence = CSI *(s P) *(s I) s F
  • s = %x0E / %x0F ;; SHIFT OUT / SHIFT IN
  • P = %x30-3F / %xB0-BF
  • I = %x20-2F / %xA0-AF
  • F = %x40-7E / %xC0-FE

詳しくは7ビット符号と8ビット符号を参照。

ISO/IEC 10646 における利用

[18] ISO/IEC 10646 および Unicode での利用については、 ISO/IEC 10646におけるエスケープシーケンス参照。

その他の非 ISO/IEC 2022 符号体系における利用

[19] ISO/IEC 2022 とも ISO/IEC 10646 とも異なる文字コード体系における利用については、 エスケープシーケンス参照。

終端バイト

[13] 制御シーケンスの末尾の終端バイト制御シーケンスの意味を表します。

[14] つまり制御シーケンスを受信して処理するときは、制御シーケンスの末尾までを読み終わる必要があります。

[15] エスケープシーケンス終端バイトとは割当が完全に異なります。

パラメーター・バイト

sub-string の先導 *"0" は無視可能。 ("0123" == "123", "000" == "0") sub-string は空 (empty) になり得る。最後の sub-string が空であるのは、その直前の separator が無いのと同じ意味。 ("1;1;" == "1;1")

SGML での定義

[5]

(137) 制御シーケンス (control sequence)
それ以降の文字列解釈表現又はその他の処理制御する機能制御文字で始まる文字並び
出典: JIS X 4151‐1992 3.

[1] SGMLでは、>>5と定義しています。符号化文字集合規格で言う制御シーケンス (CSI で始まる列) のほかに、 例示にあるようにエスケープ・シーケンスも含みます。 (ほかに SS2 などの制御文字も含むのかもしれません。 SGML の文字集合は ISO の体系に限りませんから、漢字イン漢字アウトなども含まれると思われます。)

関連

[6] 制御ストリングは別。

メモ

[8] 俗にANSIエスケープシーケンスというとき、大抵は制御シーケンスのことを指しています。 (制御シーケンス以外のエスケープシーケンスを指す場合もあります。)

[7] Digital Ansi-Compliant Print Protocol Lev 2 Program. Ref. Man. - PPLV2PMB.PDF, , http://sup.xenya.si/sup/info/digital/MDS/jun99/Cd3/PRINTER/PPLV2PMB.PDF#page=92

[9] ARIB STD-B5, ARIB STD-B24, T.61, T.101

[10] ISO文字コードにおける書字方向

[11] GB 8565.3-88

[22] New Terminal Control Commands for Ambiguous Width Characters - Google ドキュメント, https://docs.google.com/document/d/1Dgq81J0eQEfjq3MR__O7VrbSVnatr9CCqMEITse9psk/edit?pli=1

[23] Control functions - akinomyoga/contra, , https://akinomyoga.github.io/contra/escseq.html

[24] SGR

[25] DRCSMMv1

[26] DECSFC

[27] DECPCTERM

[28] Inline Image Protocol

[29] 【色文字】Discordでカラフルな色文字を使う方法【カラフル】 – なんちゃらのDiscord管理者, https://nanchara.jp/colortext/

[30] >>29 Markdown の構文色付け付きコードブロック構文で ansi を指定することで ANSIエスケープシーケンスが使えるのを色指定付き文字に流用するハックがあるらしい