[26] 
[DFN[C1]] は、補助的な[[制御文字]]のための[[符号化文字集合]]です。

[27] 
[[ISO/IEC 2022]] の符号構造における [[CR領域]]や、
[[[CODE(charname)@en[ESC]] [VAR[Fe]]]]
型の[[エスケープシーケンス]]で利用できます。

[28] 
[[Unicode]] では [CODE[U+0080]] - [CODE[U+009F]] や、
[[[CODE(charname)@en[ESC]] [VAR[Fe]]]]
型の[[エスケープシーケンス]]で利用できます。


* 概要

[6] 符号化制御機能補助集合は、 [DFN[C1]]
とも呼ばれます [SRC[[[JIS X 0202]]:1998 6.4.4]]。

[1] 符号化制御機能補助集合の要件:
- [2] 各[[ビット組合せ]]には[[一意]]な[[制御機能]]を[[割当]]てるか、
または使用しないかを宣言しなければなりません
[SRC[[[JIS X 0202]]:1998 6.4.1]]。
- [3] [CODE(charname)[[[ESCAPE]]]] を含んではなりません
[SRC[[[JIS X 0202]]:1998 6.4.1, 6.4.3]]。
- [5] [[JIS X 0211]] の[[符号化制御機能基本集合]]の[[伝送制御機能]]を含んではなりません
[SRC[[[JIS X 0202]]:1998 6.4.3]]。

[4] 符号化制御機能補助集合は、 [CODE(char)[[[CR]]]]
([CODE(char)[08/00]]〜[CODE(char)[09/15]]) 
に[[呼出]]された時にはその[[ビット組合せ]]1つで[[制御文字]]として[[表現]]できます。
また、[[エスケープ・シーケンス]] 
[CODE(char)[[CODE(charname)[[[ESC]]]] [VAR[Fe]]]]
([CODE(math)[[VAR[Fe]] = [CODE(char)[04/00]]〜[CODE(char)[05/15]]]])
のでも[[表現]]できます。
[SRC[[[JIS X 0202]]:1998 6.4.3]]

[7] >>4 の後者の[[エスケープ・シーケンス]]による[[表現]]は、
[[制御文字]]ではありません (定義上)。一般に [[C0]] や [[C1]]
は[[制御文字集合]]と呼ばれますが、
わざわざそうではなく[[制御機能]]の[[集合]]だとしているのはそういう理由と思われます。

[8] [[8ビット符号]]で[[単独シフト機能]]を使用する場合は、
[[符号化制御機能補助集合]] ([[C1]]) に
[CODE(charname)[[[SS2]]]] と [CODE(charname)[[[SS3]]]]
が含まれなければなりません [SRC[[[JIS X 0202]]:1998 8.5.2]]。
[[7ビット符号]]で [[単独シフト機能]]を使用する場合は、
[[符号化制御機能基本集合]] ([[C0]]) または
[[符号化制御機能補助集合]] ([[C1]]) に
[CODE(charname)[[[SS2]]]] と [CODE(charname)[[[SS3]]]]
が含まれなければなりません [SRC[[[JIS X 0202]]:1998 9.5.2]]。

[16] 
[[C1文字集合]]とは、
Supplementary sets of coded control functions。
符号化制御機能の補助集合 ([[JISX0202]]:1998 6.4.3)。
[[C1]][[制御文字]]集合。

[18] 
8ビット環境では [[CR]] (08/00〜09/15) に[[指示]]・[[呼び出し]]
して使う。または、 [[ESC]] Fe (Fe = 04/00〜05/15) を使う。

ESC Fe を使う時は、 [[CR]] は使用しない。
逆も然り。 ([[ISO/IEC2022]] 1994 8.5.2)

[17] 
[[ESCAPE]] を含めない (shall not)。 [[ISO/IEC6429]]/[[JISX0211]]
の [[C0文字集合]]の[[伝送制御機能]] transmission
control function も含めない (shall not)。 ([[ISO/IEC2022]] 1994 6.4,
[[JISX0202]]:1998 6.4.2)

[19] SS2 と SS3 を含める(shall)。 ([[ISO/IEC2022]] 1994 8.5.2)

[20] 実際には (おそらく ISO.IEC 2022 の規定ができる以前で) [CODE(charname)[SS2]] や [CODE(charname)[SS3]] を持っていない C1 集合もあります。

[21] 仕様書はよく読むと、これら[[シフト機能]]を使う[[符号]]は、
と限定があります。使うなら含める、使わないなら含めなくてよい。
ほとんど何も言っていないのと同じことで、
[CODE(charname)@en[SS2]] や [CODE(charname)@en[SS3]]
がない [[C1集合]]にも何の問題もないわけです。



[11] '''呼出し''':
[[8ビット符号]]の[[符号要素]] [[C1]] に[[符号化制御機能補助集合]]を[[指示]]すると、
同時にその[[集合]]を[[呼出]]すことになります。その場合、
[[CR]] 領域に[[呼出]]すか、または 
[CODE(char)[[CODE(charname)[[[ESC]]]] [VAR[Fe]]]] 
型の[[エスケープ・シーケンス]]
([CODE(char)[[VAR[Fe]]]] は [CODE(char)[04/00]]〜[CODE(char)[05/15]])
で[[呼出]]すかのいずれかになります。
後者の場合は [[CR]] 領域は使用しないことになります。
どちらの方法を採るかは、[[符号の版]]で規定します。
[[7ビット符号]]の場合は、 
[CODE(char)[[CODE(charname)[[[ESC]]]] [VAR[Fe]]]] 
型の[[エスケープ・シーケンス]]で[[呼出]]します。
[SRC[[[JIS X 0202]]:1998 8.5.2]]

[12] [[C0]] と [[CL]] が (歴史的事情も含めて) 混用されているように、 [[C1]] と [[CR]] も混同されぎみです。但し、7ビット・8ビット問題がある関係上、 C0/CL より C1/CR の区別の方がやや理解されているとは思われます。

[13] C1 文字集合は、[[指示]]した後、 [[CR]] 領域の[[符号位置]]に[[呼び出し]]されているものを使うことも出来ますし、 [[ESC]] [VAR[Fe]] 形式で表現することが出来ます。

[14] CR 領域は [CODE[08/00]]〜[CODE[09/15]] ですから8ビット, ESC [VAR[Fe]] 形式は [CODE[01/11]] [CODE[04/00]]〜[CODE[05/15]] ですから7ビットで表現されます。どちらを使うか、あるいはどちらも使えるかは、[[告知]]シーケンス (又は情報交換の当事者間の合意) により決定します。



[15] 
[CITE[ISO-8859-* and the C1 control range]] ([[Henri Sivonen <hsivonen@...>]] 著, [TIME[2007-05-29 10:13:25 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/10846>
([[名無しさん]] [WEAK[2007-06-04 11:57:24 +00:00]])

[29] 
[[JIS X 0211]] [CODE(charname)@en[SS3]] だけの [[C1]] - [[JIS X 0213]]


* Unicode

[9] 理論上は [[Unicode]] ([[ISO/IEC 10646]]) 環境下でも
[[CR]] や[[エスケープシーケンス]]によって [[C1]] を使うことは可能です。

[10] 現実には、従来の[[端末]]の[[エスケープシーケンス]]機能を現在まで引き続き実装しているような例外を除き、
使われることはありません。


[SEE[ [[ISO/IEC 10646におけるエスケープシーケンス]] ]]

* 非制御文字

[23] 
[[ISO/IEC 2022]] の符号構造では、
[[C1制御文字集合]]の[[ビット組合せ]]のすべては[[制御文字]]に割当 (または未割当)
しなければなりません。

[25] 
[[MARC-8]] ([[ANSEL]])
は
[[C1]] に [CODE(charname)@en[JOINER]],
[CODE(charname)@en[NON-JOINER]]
を割り当てています。
これらは [[Unicode]] では 
[CODE(charname)@en[ZWJ]],
[CODE(charname)@en[ZWNJ]]
に対応付けられていて、
[[制御文字]] ([[Cc]]) ではない扱いになっています。

[REFS[
- [24] [CITE@en-us[Character Sets: Extended Latin (ANSEL)]], [TIME[2022-05-09T00:41:07.000Z]] <https://memory.loc.gov/diglib/codetables/45.html>
]REFS]


* 関連

[22] 他に[[C0集合]]があります。

[30] [[[CODE(charname)@en[ESC]] [CODE[eKanji]]]]

[31] [[指示シーケンス]]

* メモ