/
75.txt
263 lines (214 loc) · 12.2 KB
/
75.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
* 0F型エスケープシーケンス
[1] [DFN@en[[CODE[0F]]]] 型[[エスケープ・シーケンス]]は、
[[告知]] ([CODE(charname)@en[[[ANNOUNCE CODE STRUCTURE]]]])
に使われます。
[2]
仕様書:
- [[JIS X 0202]]:1998
--[CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]
[3] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 0F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[0F 型エスケープ・シーケンス]] := ACS / 0F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN@en[ACS]] := 標準 ACS / 私用 ACS [CODE(comment)[;; [CODE(charname)@en[[[ANNOUNCE CODE STRUCTURE]]]]]]]]
- [CODE(ABNF)[[DFN[標準 ACS]] := [CODE(charname)@en[[[ESC]]]] %x20 [[Ft]]]]
- [CODE(ABNF)[[DFN[私用 ACS]] := [CODE(charname)@en[[[ESC]]]] %x20 *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[0F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x20 1*[[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)[;; 標準終端バイト]]]]
* 告知 (ISO/IEC 2022)
[4] [[告知]] = [[符号構造機能の告知]]
:[[名前]]:[CODE(charname)@en[[[ANNOUNCE CODE STRUCTURE]]]]
:[[日本語通用名称]]:[CODE(jcharname)[[[符号構造アナウンス]]]]
:[[略号]]:[CODE(charname)@en[[[ACS]]]]
:[[符号化表現]]:[CODE(char)@en[[CODE(charname)@en[[[ESC]]]] 02/00 [VAR[[[F]]]]]]
[5] ISO/IEC 2022 の announce(r) を、 [[JIS X 0202]]:1998 はそのまま
[Q[アナウンス (アナウンサー)]]としているが、ここでは[Q[告知]]と訳す。
** 仕様書
[REFS[
- [6] [[ISO/IEC 2022]]:1994 15.2
- [8] [CITE[ECMA-35_6th_edition_december_1994.pdf]], [TIME[2021-01-16T09:57:02.000Z]], [TIME[2022-04-29T07:11:12.638Z]] <https://www.ecma-international.org/wp-content/uploads/ECMA-35_6th_edition_december_1994.pdf#page=47>
- [9] [[JIS X 0202]]:1998
-- [10] [CSECTION[15.2 符号構造機能のアナウンス]]
]REFS]
** 構文
[11] 構文 [SRC[>>6]]
- [CODE(ABNF)[[DFN[ACS]] := [CODE(char)[[[ESC]] %x20 [VAR[F]] ;; [[ANNOUNCE CODE STRUCTURE]]]]
- [CODE(ABNF)[[DFN[[VAR[F]]]] := %x41-7E ;; 1 = [CODE(char)[4/1]], ..., 62 = [CODE(char)[7/14]]]]
[13]
'''終端バイト''':
[[終端バイト]] [CODE(char)@en[[VAR[F]]]] は
1〜62 の番号が付けられており、 1 が
[CODE(char)[04/01]] に、 62 が [CODE(char)[07/14]]
によって[[表現]]されます。各番号の意味は [[ISO/IEC 2022]]
で規定されており、将来追加の機能が必要になったときは
[[ISO/IEC 2022]] が改訂されることが示唆されています。
登録制度はありません。
[SRC[>>10 15.2.2]]
** 文脈
[12]
[[符号識別機能]]は、[[情報交換]]の開始時に[[文字符号化情報]]に埋込んで、
後続のデータで使用される[[符号構造機能]]を[RUBY[[[告知]]] @en[[[アナウンス]]]]します。
[SRC[>>10 15.1]]
[17]
現実にはほとんど利用されている例は無いようです。
[18]
通常[[情報交換]]の先頭で使うことが想定されますが、
使わなければならないものでもありません。
いつどう使うかは[[応用]]依存と思われます。
[19]
先頭で使う想定なのに[[情報交換]]の中途で出現したときや、
使う想定がないのに出現したときや、
想定外の[[告知]]シーケンスが出現したときに、
どう扱うべきかは不明です。
[SEE[ [[ISO/IEC 2022]] のエラー処理の項 ]]
[20]
実際の[[情報交換]]ではなく、
[[符号化文字集合]]を規定する[[仕様書]]において符号構造の説明のために使うことがあります。
[EG[
[21]
例えば [[ISO-2022-JP]] を規定する [[RFC 1468]]
の
[CSECTION[Background Information]]
の項に記述されています。
]EG]
** 意味
,構造番号,[VAR[F]],使用する符号要素 ,シフト機能
,1 ,04/01,[[GL]] == [[G0]] ,なし
,2 ,04/02,"GL = G0, [[G1]] ","[CODE(char)[[[SI]]]]/[CODE(char)[[[LS0]]]], [CODE(char)[[[SO]]]]/[CODE(char)[[[LS1]]]]"
,3 ,04/03,"(8ビット) GL == G0, [[GR]] == G1",なし
,4 ,04/04,"(7ビット) 2と同じ / (8ビット) 3と同じ",==
,5 ,04/05,,7ビット・8ビット間変換で完全に保持
,6 ,04/06,[[C1]] == [CODE(char)[[[[[ESC]] [VAR[[[Fe]]]]]]]],[CODE(char)[ESC [VAR[Fe]]]]
,7 ,04/07,(7ビット) C1 == [CODE(char)[ESC Fe]] / (8ビット) C1 == [[CR]],
,8 ,04/08,[[図形文字集合]]は全て[[94集合]],
,9 ,04/09,G1〜[[G3]] は94集合または[[96集合]],
,10 ,04/10,7ビット,
,11 ,04/11,8ビット,
,12 ,04/12,[[ISO/IEC 4873]] [[実装水準]]1
,13 ,04/13,ISO/IEC 4873 実装水準2
,14 ,04/14,ISO/IEC 4873 実装水準3
,16 ,05/00,+G0 ,[CODE(char)[SI]]/[CODE(char)[LS0]]
,18 ,05/02,+G1 ,[CODE(char)[SO]]/[CODE(char)[LS1]]
,19 ,05/03,+G1 ,[CODE(char)[SO]]/[CODE(char)[[[LS1R]]]]
,20 ,05/04,+G2 ,[CODE(char)[[[LS2]]]]
,21 ,05/05,+G2 ,[CODE(char)[LS2]]/[CODE(char)[[[LS2R]]]]
,22 ,05/06,+G3 ,[CODE(char)[[[LS3]]]]
,23 ,05/07,+G3 ,[CODE(char)[LS3]]/[CODE(char)[[[LS3R]]]]
,26 ,05/10,+G2 ,[CODE(char)[[[SS2]]]]
,27 ,05/11,+G3 ,[CODE(char)[[[SS3]]]]
,28 ,05/12,[CODE(char)[[[SS2]]]]/[CODE(char)[[[SS3]]]] の後 [[GR]] を使用,
1,3,4と16,18〜23は併用不能, 12〜14は他と併用不能
[14]
'''複数の組合せ''':
告知機能は複数回続けて使用できます
[SRC[[[JIS X 0202]]:1998 15.1]]。
しかし、幾つかの機能は同時に使用できないと規定されています
[SRC[>>10 15.2.2]]。
[15]
,機能番号,終端バイト,機能 (7ビット),機能 (8ビット),同時使用禁止
,1,[CODE(char)[04/01]],"[[G0]] = [[GL]], ×[[固定シフト]]","[[G0]] = [[GL]], ×[[固定シフト]], ×[[GR]]","12, 13, 14, 16, 18〜23"
,2,[CODE(char)[04/02]],"[[G0]], [[G1]], [CODE(charname)@en[[[SI]]]], [CODE(charname)@en[[[SO]]]] >>8","[[G0]], [[G1]], [CODE(charname)@en[[[LS0]]]], [CODE(charname)@en[[[LS1R]]]] >>7","12, 13, 14"
,3,[CODE(char)[04/03]],"×[[G0]], ×[[G1]], ×[[固定シフト]]","[[G0]] = [[GL]], [[G1]] = [[GR]], ×[[固定シフト]]","12, 13, 14, 16, 18〜23"
,4,[CODE(char)[04/04]],"[[G0]], [[G1]], [CODE(charname)@en[[[SI]]]], [CODE(charname)@en[[[SO]]]] >>8","[[G0]] = [[GL]], [[G1]] = [[GR]], ×[[固定シフト]]","12, 13, 14, 16, 18〜23"
,5,[CODE(char)[04/05]],"7ビット・8ビットデータ変換。すべての[[シフト機能]]を維持。",==,"12, 13, 14"
,6,[CODE(char)[04/06]],"[[C1]] = [CODE(char)@en[[CODE(charname)@en[[[ESC]]]] [[Fe]]]]",==,"12, 13, 14"
,7,[CODE(char)[04/07]],"[[C1]] = [CODE(char)@en[[CODE(charname)@en[[[ESC]]]] [[Fe]]]]","[[C1]] = [[CR]]","12, 13, 14"
,8,[CODE(char)[04/08]],"[[図形文字集合]]は94文字",==,"12, 13, 14"
,9,[CODE(char)[04/09]],"[[図形文字集合]]は94文字[[及び/又は]]96文字",==,"12, 13, 14"
,10,[CODE(char)[04/10]],"[[7ビット符号]]だけを使用",==,"12, 13, 14"
,11,[CODE(char)[04/11]],,"[[8ビット符号]]を使用","12, 13, 14"
,12,[CODE(char)[04/12]],"[[ISO/IEC 4873]] 実装水準1",==,"13, 14"
,13,[CODE(char)[04/13]],"[[ISO/IEC 4873]] 実装水準2",==,"12, 14"
,14,[CODE(char)[04/14]],"[[ISO/IEC 4873]] 実装水準3",==,"12, 13"
,15,[CODE(char)[04/15]],(予約),==,"12, 13, 14"
,16,[CODE(char)[05/00]],"[[G0]], [CODE(charname)@en[[[SI]]]]","[[G0]], [CODE(charname)@en[[[LS0]]]]","1, 3, 4, 12, 13, 14"
,17,[CODE(char)[05/01]],(予約),==,"12, 13, 14"
,18,[CODE(char)[05/02]],"[[G1]], [CODE(charname)@en[[[SO]]]]","[[G1]], [CODE(charname)@en[[[LS1]]]]","1, 3, 4, 12, 13, 14"
,19,[CODE(char)[05/03]],"[[G1]], [CODE(charname)@en[[[SO]]]]","[[G1]], [CODE(charname)@en[[[LS1R]]]]","1, 3, 4, 12, 13, 14"
,20,[CODE(char)[05/04]],"[[G2]], [CODE(charname)@en[[[LS2]]]]","[[G2]], [CODE(charname)@en[[[LS2]]]]","1, 3, 4, 12, 13, 14"
,21,[CODE(char)[05/05]],"[[G2]], [CODE(charname)@en[[[LS2]]]]","[[G2]], [CODE(charname)@en[[[LS2R]]]]","1, 3, 4, 12, 13, 14"
,22,[CODE(char)[05/06]],"[[G3]], [CODE(charname)@en[[[LS3]]]]","[[G3]], [CODE(charname)@en[[[LS3]]]]","1, 3, 4, 12, 13, 14"
,23,[CODE(char)[05/07]],"[[G3]], [CODE(charname)@en[[[LS3]]]]","[[G3]], [CODE(charname)@en[[[LS3R]]]]","1, 3, 4, 12, 13, 14"
,24,[CODE(char)[05/08]],(予約),==,"12, 13, 14"
,25,[CODE(char)[05/09]],(予約),==,"12, 13, 14"
,26,[CODE(char)[05/10]],"[[G2]], [CODE(charname)@en[[[SS2]]]]",==,"12, 13, 14"
,27,[CODE(char)[05/11]],"[[G3]], [CODE(charname)@en[[[SS3]]]]",==,"12, 13, 14"
,28,[CODE(char)[05/11]],,[[単独シフト領域]]は [[GR]],
,29〜62,[CODE(char)[05/12]]〜[CODE(char)[07/14]],(予約),==,"12, 13, 14"
[16]
2番は [[JIS X 0202]]:1998 で
[Q[[CODE(charname)@en[[[LS1]]]] が [[G1]] を [[GR]] に呼び出す]]
と書かれており、図も [CODE(charname)@en[[[LS1]]]]
になっていますが、[[右]]に[[呼出]]す
[WEAK[(図もそうなっています。)]] なら
[CODE(charname)@en[[[LS1R]]]] だと思われます。
[7]
2番と4番は[[7ビット符号]]では同じですが、
変換前の[[8ビット符号]]の構造の情報を保存するために用意されています。
[SRC[>>10 15.2.2]]
** 処理
[22]
告知シーケンスを受信した時、それをどう解釈することが期待されているのかは、
[[ISO/IEC 2022]] 仕様書上不明瞭です。
[23]
[[情報交換]]の先頭で符号構造を明示することで、
[[装置]]が正しく処理できない[[符号化文字データ要素]]の出現が予想されるとき、
そのようなデータの受信を拒絶するような使い方が想定されているのでしょうか。
[SEE[ [[ISO/IEC 2022]] のエラー処理の項 ]]
[25]
[[告知]]シーケンスの後に、それと矛盾する[[符号化文字データ要素]]が出現したとき、
[[装置]]が何をどうするべきなのかも不明です。
例えば [[G2]] を使用しないと定められているにも関わらず、
[[G2]] の[[指示シーケンス]]が出現したり、
[CODE(charname)@en[SS2]] が使われたりするとき、
何がなされるべきかは不明です。
[27]
矛盾する複数の[[告知]]シーケンスを使用することは禁止されていますが、
それが出現したときの処理方法も不明です。
[26]
符号構造を通知するだけで規定するものではないのですから、
矛盾しても通常通りに処理するのが穏当でしょうか。
[31]
いくつかの[[告知]]は、[[固定シフト]]等を使用しない符号構造を決定するものとなっています。
[[ISO/IEC 2022]] を受信する実装が初期状態から[[符号]]の解釈が可能な状態に遷移する必要があると考えると、
次のような処理が必要となります。
- [37] [[GL]] に [[G0]] が[[呼び出し]]されているべきもの
-- [29] [N[1]] ([[4/1]])
-- [44] [N[3]] ([[4/3]])
-- [38] [N[12]] ([[4/12]])
-- [39] [N[13]] ([[4/13]])
-- [40] [N[14]] ([[4/14]])
- [45] [[GR]] に [[G1]] が[[呼び出し]]されているべきもの
-- [46] [N[3]] ([[4/3]])
-- [30] [N[12]] ([[4/12]])
-- [47] [N[13]] ([[4/13]])
-- [48] [N[14]] ([[4/14]])
- [43] [[GR]] は使用しないとされているもの
-- [42] [N[1]] ([[4/1]])
-- [24] [N[2]] ([[4/2]])
- [49] [CODE(charname)@en[SPACE]], [CODE(charname)@en[DELETE]] を使用するとされているもの
-- [50] [N[12]] ([[4/12]])
-- [51] [N[13]] ([[4/13]])
-- [52] [N[14]] ([[4/14]])
-
[28]
[[7ビット符号]]と[[8ビット符号]]の区別は事実上これ以外に記述方法がないので、
[[7ビット符号]]と[[8ビット符号]]の挙動の切り替えのための[[エスケープシーケンス]]として解釈するべきとも思われます。
[SEE[ [[7ビット符号]], [[8ビット符号]] ]]
--
[32]
[N[10]] ([[4/10]]) は[[7ビット符号]]を表します。
--
[33]
[N[11]] ([[4/11]]) は[[8ビット符号]]を表します。
--
[34]
[N[12]] ([[4/12]]) は[[8ビット符号]]を表します。
--
[35]
[N[13]] ([[4/13]]) は[[8ビット符号]]を表します。
--
[36]
[N[14]] ([[4/14]]) は[[8ビット符号]]を表します。
* メモ