/
621.txt
293 lines (239 loc) · 11.6 KB
/
621.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
* 仕様書
[REFS[
- [5] [[ISO-IR]], [TIME[2014-06-23T06:27:15.000Z]], [TIME[2020-12-05T05:40:34.990Z]] <https://www.itscj.ipsj.or.jp/itscj_english/iso-ir/ISO-IR.pdf#page=29>
- [7] [CITE[Character Sets: [[MARC-8]] Encoding Environment: MARC 21 Specifications for Record Structure, Character Sets, and Exchange Media (Library of Congress)]], [TIME[2007-12-05T16:31:01.000Z]], [TIME[2020-12-05T05:57:48.466Z]] <https://www.loc.gov/marc/specifications/speccharmarc8.html#technique1>
]REFS]
* 符号化単独追加制御機能
[9] [DFN[符号化単独追加制御機能]]の種類 [SRC[[[JIS X 0202]]:1998 6.5]]:
- [[標準単独制御機能]]
- [[登録単独制御機能]]
- [[私用制御機能]]
[10] >>9 は標準化の程度に拠る分類ですが、
それに合わせて[[符号化表現]] (いずれも[[エスケープ・シーケンス]])
に違いがあります。
[11]
[[単独制御機能]]は
[[ISO/IEC2022]]:1994 6.5, [[ISO/IEC6429]]:1991 5.5 で規定されています。
=additional-control-functions = ESC-Fs / ESC-3Ft / private-control-functions
=ESC-Fs = ESC %x60-7E ;; Standardized single control function
=ESC-3Ft = ESC %x23 [I] Ft ;; Registered single control function
=I = %x21-23
=Ft = %x40-7E
=private-control-functions = ESC-Fp / ESC-3Fp
=ESC-Fp = ESC Fp
=ESC-3Fp = ESC %23 [I] Fp
=Fp = %x30-3F
[12] 標準化された単独制御機能 (Fs) は、 [[ISO/IEC]] JTC1/SC2
の承認が必要です。 Fs と 3Ft は [[ISO-IR]] に登録が必要です。
,* ,*2 ,*3 ,*4 ,*5 ,*6 ,*7
,*0 ,ACS [[告知]] ,私用,[[C1]],[[C1]],[[DMI]],"[[PCD]] † ☆"
,*1 ,CZD [[指示]] ,私用,[[C1]],[[C1]],[[INT]],
,*2 ,C1D [[指示]] ,私用,[[C1]],[[C1]],[[EMI]] ☆,† ☆
,*3 ,単独制御機能 ,私用,[[C1]],[[C1]],[[RIS]] ☆,†
,*4 ,多バイト[[指示]] ,私用,[[C1]],[[C1]],[[CMD]] ※ ☆,
,*5 ,[[DOCS]] ,私用,[[C1]],[[C1]],☆,
,*6 ,[[IRR]] ,私用,[[C1]],[[C1]],☆,
,*7 , ,私用,[[C1]],[[C1]],†,☆
,*8 ,GZD4 [[指示]] ,私用,[[C1]],[[C1]],,☆
,*9 ,G1D4 [[指示]] ,私用,[[C1]],[[C1]],,
,*10,G2D4 [[指示]] ,私用,[[C1]],[[C1]],☆,
,*11,G3D4 [[指示]] ,私用,[[C1]],[[C1]],[[LS1R]] ※ ☆,※
,*12,(GZD6 [[指示]]) ,私用,[[C1]],[[C1]],[[LS2R]] ※ ☆,[[LS3R]]
,*13,G1D6 [[指示]] ,私用,[[C1]],[[C1]],[[LS3R]],[[LS2R]]
,*14,G2D6 [[指示]] ,私用,[[C1]],[[C1]],[[LS2]],[[LS1R]]
,*15,G3D6 [[指示]] ,私用,[[C1]],[[C1]],[[LS3]] ☆,----
[31]
※ は [[VT][VT100]] で他の意味で使われる。
☆ は [[VT52][VT100]] で他の意味で使われる。
[32]
† は [[MARC-8]] で[[指示][指示シーケンス]]に使われる。
[29] [DFN[Fe]] = 4/[VAR[*]], 5/[VAR[*]] は [[C1]] に使われます。
* 標準単独制御機能
[1] [DFN[標準単独制御機能]]は[[符号化単独追加制御機能]]の一種です。
** 構文
[2]
[CODE(char)[[[Fs]]]] 型の[[エスケープ・シーケンス]]、すなわち
[CODE(char)[[CODE(charname)[[[ESC]]]] [VAR[Fs]]]]
で[[表現]]します [SRC[[[JIS X 0202]]:1998 6.5.1]]。
ここで、 [CODE(char)[[VAR[Fs]]]] は [[ISOREG]]
に登録された[[終端バイト]]
([CODE(char)[06/00]]〜[CODE(char)[07/14]]) です。
[6] [[ISO-IR]] の[[終端バイト]] [VAR[Fs]] には次のものがあります。 [SRC[>>5]]
なお [[MARC-8]] は非標準の独自の[[エスケープシーケンス]]を使っており、
一部が衝突しています。 [SRC[>>7]]
- [CODE[6/0]]:
[CODE(charname)@en[DISABLE MANUAL INPUT]] ([CODE(charname)@en[DMI]]),
[[ISO/IEC 6429]],
[[ISO-IR]] 32
- [CODE[6/1]]:
[CODE(charname)@en[INTERRUPT]] ([CODE(charname)@en[INT]]),
[[ISO/IEC 6429]],
[[ISO-IR]] 33
- [CODE[6/2]]:
[CODE(charname)@en[ENABLE MANUAL INPUT]] ([CODE(charname)@en[EMI]]),
[[ISO/IEC 6429]],
[[ISO-IR]] 34
-- [[MARC-8]]: Subscript set に固定
- [CODE[6/3]]:
[CODE(charname)@en[RESET TO INITIAL STATE]] ([CODE(charname)@en[RIS]]),
[[ISO/IEC 6429]],
[[ISO-IR]] 35
- [CODE[6/4]]:
[CODE(charname)@en[CODING METHOD DELIMITER]] ([CODE(charname)@en[CMD]]),
[[ISO/IEC 6429]],
[[ISO-IR]] 189
- [CODE[6/5]]: [[ISO-IR]] 未割当
- [CODE[6/6]]: [[ISO-IR]] 未割当
- [CODE[6/7]]: [[ISO-IR]] 未割当
-- [[MARC-8]]: Greek Symbol set に固定
- [CODE[6/8]] - [CODE[6/10]]: [[ISO-IR]] 未割当
- [CODE[6/11]]: [[ISO-IR]] 未割当
-- [[NAPLPS]]: 旧 [CODE(charname)@en[LS1R]]
- [CODE[6/12]]: [[ISO-IR]] 未割当
-- [[NAPLPS]]: 旧 [CODE(charname)@en[LS2R]]
- [CODE[6/13]]: [[ISO-IR]] 未割当
-- [[NAPLPS]]: 旧 [CODE(charname)@en[LS3R]]
- [CODE[6/14]]:
[CODE(charname)@en[LOCKING-SHIFT TWO]] ([CODE(charname)@en[LS2]]),
[[ISO/IEC 2022]],
[[ISO-IR]] 62
- [CODE[6/15]]:
[CODE(charname)@en[LOCKING-SHIFT THREE]] ([CODE(charname)@en[LS3]]),
[[ISO/IEC 2022]],
[[ISO-IR]] 63
- [CODE[7/0]]: [[ISO-IR]] 未割当、予約
[SEE[ [[終端バイト]], [[PCD]] ]]
-- [[ISO-IR]] 予約
-- [[ISO 9281-1]]: [CODE(charname)@en[PCD]]
-- [[MARC-8]]: Superscript set に固定
- [CODE[7/1]]: [[ISO-IR]] 未割当
- [CODE[7/2]]: [[ISO-IR]] 未割当
- [CODE[7/3]]: [[ISO-IR]] 未割当
-- [[MARC-8]]: [[ASCII]] default character set に固定
- [CODE[7/4]] - [CODE[7/11]]: [[ISO-IR]] 未割当
- [CODE[7/12]]:
[CODE(charname)@en[LOCKING-SHIFT THREE RIGHT]] ([CODE(charname)@en[LS3R]]),
[[ISO/IEC 2022]],
[[ISO-IR]] 64
- [CODE[7/13]]:
[CODE(charname)@en[LOCKING-SHIFT TWO RIGHT]] ([CODE(charname)@en[LS2R]]),
[[ISO/IEC 2022]],
[[ISO-IR]] 65
- [CODE[7/14]]:
[CODE(charname)@en[LOCKING-SHIFT ONE RIGHT]] ([CODE(charname)@en[LS1R]]),
[[ISO/IEC 2022]],
[[ISO-IR]] 66
** 標準化手続き
[3]
[[標準単独制御機能]]は、 [[ISO/IEC]] [[JTC 1/SC 2]]
で承認された後、 [[ISO 2375]] に従って [[ISOREG]]
に登録されます。通常はその後、 [[ISO]] または [[ISO]]
[[承認団体]]の[[規格]]として出版されます。
[SRC[[[JIS X 0202]]:1998 6.5.1]]
[4] >>2, >>3 のように、
[[制御機能]]の中では[[制御文字]]に次いで短い[[表現]]を与えられる分、
[[JTC 1/SC 2]] の承認という比較的高いハードルが設けられています。
実際には [[ISO/IEC 2022]] を構成する [CODE(charname)[[[LS1R]]]]
などの重要な[[制御機能]]が[[割当]]てられています。
* 登録単独制御機能
[15] [DFN[登録単独制御機能]]は、[[符号化単独追加制御機能]]の一種です。
[17] '''符号化表現''':
登録単独制御機能は [CODE(char)[[[3Ft]]]] 型[[エスケープ・シーケンス]]、
すなわち
[CODE(char)[[CODE(charname)[[[ESC]]]] [CODE(char)[02/03]] [VAR[I]]* [VAR[Ft]]]]
で[[表現]]されます [SRC[[[JIS X 0202]]:1998 6.5.2]]。
ここで、 [CODE(char)[[VAR[Ft]]]]
は[[終端バイト]]で [CODE(char)[04/00]]〜[CODE(char)[07/15]] です。
[CODE(char)[[VAR[I]]]] は[[中間バイト]]ですが、
今のところ使われていませんし、今後も使われそうにありません。
[18] '''標準化''':
登録単独制御機能は [[ISOREG]] に登録して使います
[SRC[[[JIS X 0202]]:1998 6.5.2]]。
[24]
この方式で [[ISO-IR]] に登録されている[[制御機能]]はありません。
今後も登録されることはないと思われます。
[33]
[[Videotex]] は
- ESC 2/3 2/0 Fe
- ESC 2/3 2/1 Fe
... を使っていました。 [[Fe]] は [ [N[4/0]], [N[5/15]] ]。
* 私用制御機能
[8] [DFN[私用制御機能]]は[[符号化単独追加制御機能]]の一種で、
標準化された意味を持たないものです。
[[情報交換]]の当事者間の合意で[[私用]]できます
[SRC[[[JIS X 0202]]:1998 6.5.3]]。
[13] '''符号化表現''':
[CODE(char)[[[Fp]]]] 型または [CODE(char)[[[3Fp]]]] 型の[[エスケープ・シーケンス]]、
すなわち [CODE(char)[[CODE(charname)[[[ESC]]]] [VAR[Fp]]]]
または [CODE(char)[[CODE(charname)[[[ESC]]]] [CODE(char)[02/03]] [VAR[I]]* [VAR[Fp]]]]
によって[[表現]]します [SRC[[[JIS X 0202]]:1998 6.5.3]]。
ここで、 [CODE(char)[[VAR[Fp]]]] は[[私用終端バイト]]で
[CODE(char)[03/00]]〜[CODE(char)[03/15]] です。
[CODE(char)[[VAR[I]]]] は[[中間バイト]]です。
[14] すなわち、[[標準単独制御機能]]や[[登録単独制御機能]]の[[エスケープ・シーケンス]]で[[終端バイト]]に
[CODE(char)[03/00]]〜[CODE(char)[03/15]]
は自由に使っても良いということです。
[26]
[[ctext]] は[[仕様の版に対する要件の記述][版付け]]に使っていました。
[SEE[ [[ctext]] ]]
- [VAR[[DFN[can-ignore]]]] := [CODE(charname)@en[ESC]] 2/3 [VAR[V]] 3/0
- [VAR[[DFN[cannot-ignore]]]] := [CODE(charname)@en[ESC]] 2/3 [VAR[V]] 3/1
[27] ここで [VAR[V]] は 2/[VAR[m]] で、
仕様の第[VAR[n]]版のとき [VAR[m]] = [VAR[n]] - 1 とします。
[[終端バイト]]が 3/0 なら第[VAR[n]]版の拡張を無視しても良いことを、
3/1 なら第[VAR[n]]版の拡張を無視してはいけないことを表します。
;; [28] これまで、拡張された版が規定されたことはありません。
これらの[[エスケープシーケンス]]も利用例はないと思われます。
[42]
[[VT][VT100]]
では
[[3F]] 型の[[私用制御機能]]
[N[3/3]] - [N[3/9]]
が使われています。
[SEE[ [[VT][VT100]] ]]
[30]
[[VT][VT100]]
では
[N[3/1]] - [N[3/9]], [N[3/12]] - [N[3/15]]
が使われています
([N[3/1]], [N[3/2]] は2種類)。
[SEE[ [[VT][VT100]] ]]
[54]
Tektronix 4014
では
[CODE(charname)@en[ESC]] [N[3/8]] - [N[3/11]]
が使われていました。
[SEE[ [[VT][VT100]] ]]
[16]
[[Mule]] は[[文字]]の[[合成]]の情報を保持するために
[CODE(char)[[CODE(charname)[[[ESC]]]] 03/00]] -
[CODE(char)[[CODE(charname)[[[ESC]]]] 03/04]] を使っていました。
[SRC[>>25]]
[REFS[
- [25]
[CITE@en[src/coding.c · master · emacs / emacs · GitLab]], [TIME[2022-04-30T05:49:15.000Z]] <https://emba.gnu.org/emacs/emacs/-/blob/master/src/coding.c#L2811>
]REFS]
* 3F型エスケープシーケンス
[19] [DFN@en[[CODE[3F]]]] 型[[エスケープ・シーケンス]]は、
[[符号化単独追加制御機能]]のうち、
[[登録単独制御機能]]と[[私用制御機能]]に使われます。
[20]
仕様書:
- [[JIS X 0202]]:1998
-- [CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]
[21] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 3F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[3F 型エスケープ・シーケンス]] := 登録単独制御機能 / 私用単独制御機能 / 3F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[登録単独制御機能]] := [CODE(charname)@en[[[ESC]]]] %x23 [%x21-23 *[[I]]__&&]&&__ [[Ft]]]]
- [CODE(ABNF)[[DFN[私用単独制御機能]] := [CODE(charname)@en[[[ESC]]]] %x21 *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[3F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x21 (%x20 / %x24-2F) *[[I]] [[Ft]]]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]
[22] '''標準単独制御機能''':
[[標準単独制御機能]]は [CODE@en[[[Fs]]]]
型[[エスケープ・シーケンス]]で[[表現]]します。
[23]
'''私用制御機能の別の表現''': [[私用制御機能]]には
[CODE@en[[[Fp]]]] 型[[エスケープ・シーケンス]]を使うこともできます。
* メモ