/
490.txt
342 lines (265 loc) · 13.8 KB
/
490.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
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
[2] かつては、[[タイプライター]]時代のような[DFN[重ね打ち]]で[[基底文字]]と[[アクセント]]などの組み合わせを表現できると (理論上) されていました。
* 代替
[3] 現在は[[結合文字]]が使われています。
* 仕様書
[REFS[
- [20]
Standard ECMA-48
[CITE[Control Functions for Coded Character Sets]],
Fifth Edition - June 1991,
Reprinted June 1998,
[TIME[2014-10-28T04:43:11.000Z]], [TIME[2020-10-07T08:09:41.942Z]]
-- [21] [CSECTION[6.4.2 Composite graphic characters]]
<http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf#page=32>
-- [24] <http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf#page=92>
- [26]
[[Standard ECMA-43]]
[DFN[[CITE[8-Bit Coded Character Set Structure and Rules]]]],
3[SUP[rd]] Edition – December 1991,
Reprinted in electronic form in January 1999,
[TIME[2014-10-28T04:43:07.000Z]], [TIME[2020-10-07T07:14:26.929Z]] <https://www.ecma-international.org/publications/files/ECMA-ST/Ecma-043.pdf#page=27>
]REFS]
* ISO/IEC 646
[14]
[[制御文字]] [CODE(charname)@en[BACKSPACE]] ([[後退]]) や
[CODE(charname)@en[CR]] ([[復帰]])
を使用することで、2文字以上の[[図形文字]]を同じ[[文字位置]]に
重ねて表示することが出来ます。 ([[重ね打ち]]といいます。
[[タイプライタ]]に由来します。) たとえば "/" (SOLIDUS)
と "=" (EQUALS SIGN) を組み合わせることで、 "≠"
(NOT EQUALS SIGN) を表示出来ます。組み合わせられた合成文字は
一つの[[CCデータ要素]]として扱われます。
[10] [[ISO/IEC 646]]
や
[[JIS X 0201]]
に、
そのような合成が可能であるとの[[規定]]があります。
ただし出来るという事実や用法、
いくつかの例示はありますが、
肝心のどのような[[ビット組合せ]]列によってそれを行うかは規定されていません。
どのような[[文字]]の記述が可能であるかの範囲 ([[文字レパートリー]])
も規定されていません。
これらは[[応用]]が定めることとされています。
[EG[
[18]
例えば「≠」は
[CODE[=]] [CODE(charname)@en[BS]] [CODE(charname)@en[/]]
とも
[CODE[/]] [CODE(charname)@en[BS]] [CODE(charname)@en[=]]
とも表し得ます。
それ以外にも、
[CODE(charname)@en[CR]] や [CODE(charname)@en[SP]]
を自由に使えるなら無限の可能性が現れます。
また
「≠≠」
は
[CODE[=]] [CODE[=]]
[CODE(charname)@en[BS]] [CODE(charname)@en[BS]]
[CODE(charname)@en[/]] [CODE(charname)@en[/]]
とも表し得ます。
]EG]
[1] '''JIS X 0201 における合成文字'''
[SRC@en[[[JIS X 0201]]:1997 7.]]
- [[JIS X 0201]]:1997 で規定するすべての[[図形文字]]は、
[[現在位置の前進動作を伴う文字]] ([[スペーシング文字]])。
- [[JIS X 0211]] の [CODE(charname)@en[[[BACKSPACE]]]]
や [CODE(charname)@en[[[CARRIAGE RETURN]]]]
を使用して2[[文字]]以上の[[図形文字]]を同じ[[文字位置]]に重ねて[[表示]]できる。
-- 例えば [CODE(charname)@en[[[SOLIDUS]]]] と
[CODE(charname)@en[[[EQUAL SIGN]]]] で
[CODE(char)[≠]] を[[表示]]できる。
-- [CODE(charname)@en[[[LOW LINE]]]] や
[CODE(charname)@en[[[OVER LINE]]]] は単独でも使用できるし、
[Q[アンダライン付き]]や[Q[オーバライン付き]]の[[文字]]を[[表示]]させることもできる。
-- [CODE(charname)@en[[[QUOTATION MARK]]]],
[CODE(charname)@en[[[APOSTROPHE]]]],
[CODE(charname)@en[[[COMMA]]]],
[CODE(charname)@en[[[CIRCUMFLEX ACCENT]]]],
[CODE(charname)@en[[[GRAVE ACCENT]]]] はそれぞれ
[Q[アクサンテギュ付き]]、[Q[ウムラウト付き]]、
[Q[セディユ付き]]、[Q[アクサンシルコンフレックス付き]]、
[Q[アクサングラーブ付き]]の[[文字]]を[[合成]]するのに使用できる。
--- そのために最初か最後が[[アクセント]]付けされる[[文字]]、
2番目が [CODE(charname)@en[[[BACKSPACE]]]]、
もう1つがこれらの[[文字]]という3[[文字]]の列が使用できる。
- [[合成文字]]を含む[[データ]]を[[情報交換]]する場合は、
当事者間で[[合成文字]]の種類と[[合成]]の方法についての合意が必要。
- [[開放型環境]]では[[合成文字]]は使用しないほうが良い。
[FIG(quote)[
[FIGCAPTION[
[15]
[[Standard ECMA-6]]
[CITE[7-Bit coded Character Set]],
6[SUP[th]] Edition - December 1991,
Reprinted in electronic form in August 1997,
[TIME[2017-06-15T13:13:29.000Z]], [TIME[2020-12-04T08:36:24.470Z]] <http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-006.pdf#page=16>
]FIGCAPTION]
>
[B[7 Composite Graphic Characters]]
>
Whilst all graphic characters specified in this International Standard are spacing characters, it is possible, by
using BACKSPACE or CARRIAGE RETURN to image two or more graphic characters at the same character
position (see also annex B.2).
>
For example, SOLIDUS and EQUALS SIGN may be combined to image "not equals". The character LOW
LINE, that may be used as a free-standing character, may also be associated with other character(s) to represent
the graphic rendition "underlined".
>
Diacritical marks may be allocated to the bit combinations specified in 6.4.3 and be available for composing
accented letters. For such composition a sequence of three characters, the first or last of which is the letter to be
accented and the second of which is BACKSPACE may be used. Furthermore, QUOTATION MARK,
APOSTROPHE or COMMA can be associated with a letter by means of BACKSPACE for the composition of
an accented letter with a diaeresis, an acute accent or a cedilla, respectively
PDF 23頁
>[B[B.2.3 Composite graphic characters and repertoire]]
>
ECMA-6 permits the construction of composite graphic characters by using the control characters
BACKSPACE and CARRIAGE RETURN to image two or more graphic characters at the same character
position.
>
The total number of graphic characters which can be obtained from any version of the character set, with or
without using this facility, is called the repertoire. ECMA-6 does not define a particular repertoire. However,
as the interpretation and/or the imaging of composite characters may cause difficulties, agreement between
sender and recipient of the data may be required. To minimize the need for such agreements and to facilitate
interchange, national or application-oriented standards may specify a standard repertoire of graphic
characters which permit only a limited number of composite graphic characters. Such limitations are
considered fully compatible with ECMA-6.
]FIG]
;; [16] 6.4.3 の[[ビット組合せ]]とは、
[[ISO/IEC 646の版]]で任意の[[文字]]を割り当てられるものを指しています。
[17]
一般に合成文字を含むデータを情報交換する場合には、
あらかじめ送受信者間で合成文字の種類及び合成方法に関する
合意が必要です。[[開放型環境]]での情報交換を確実にするために、
合成文字は使用しないほうが良いとされています。
[19]
[[ISO/IEC 646 IRV]]
や
[[JIS X 0201]]
は、
[[C0文字集合]]として
[[ISO/IEC 6429]] [[C0]]
を使っています。
従って[[制御機能]]の用法には
[[ISO/IEC 6429]] の規定も適用されます。
** ISO/IEC 6429
[22] [RUBYB[合成図形文字][composite graphic character]]は、
[[formator function]]
のみを使って得られなければなりません。
[[editor function]]
をその目的に使ってはなりません。
[SRC[>>21]]
[6]
[[合成図形文字]]は[[書式機能]]だけを使用して作る。
[[編集機能]]は、この目的に使用してはならない。 ([[JISX0211]]-1994 6.4.2)
* 禁止
[8]
この合成方法はタイプライタの時代からのものです。
しかし、同じ[[図形記号]]の表現に BS や CR を自由自在に
組み合わせた無限の方法が存在し得るのですから、
表示以外の処理には向きません。実際この方法を使っているのは
[[タイプライタ]]と[[端末]]装置くらいでしょう。
[4]
従ってこの合成方法は現在では推奨されず、
代わりに[[結合文字]]を使う方法が採られています。
** ISO/IEC 6429
[31] [[ISO/IEC 6429]]
は、
[[重ね打ち]]による文字合成に使う
[CODE(charname)@en[BS]]
などの[[制御機能]]と、
また別の文字合成法である[[制御機能]]の
[CODE(charname)@en[GCC]]
を定めていました。
[25]
複数の[[図形文字]]を組合せて1つの[[図形記号]]として表示したいときは、
[[重ね打ち]]ではなく
[CODE(charname)@en[GCC]]
を使うべきです。
[SRC[>>24 ([[参考]])]]
** ISO/IEC 4873
[9]
[[ISO/IEC 4873]] 附属書C ([[参考]]) は、
[[ISO/IEC 646]]
の定めるような
[CODE(charname)@en[BS]]
や
[CODE(charname)@en[CR]]
による合成は、
[[図形文字レパートリ]]を未定義とするものであって、
[[送受信者間の合意]]が必要となるところ、
そのような要件はなかなか満たされないものであるとして、
こうした合成を禁止していました。
[SRC[>>26]]
[27] かわりに [CODE(charname)@en[GCC]] の利用が認められていました。
[29]
なおその前の [[ECMA-43]] 第2版は、
[CODE(charname)@en[GCC]] には言及がなく、
かわりに
[CODE(charname)@en[BS]]
などによる[[重ね打ち]]を認めており、
[[送受信者間の合意]]を要件としていました。
第3版の要件云々は、第3版だけ読んでいると理解できませんが、
第2版のこの要件を指していたようです。
[30]
[[ECMA-43]] 第1版は何も言及していませんでした。
** JIS漢字コード
[28]
[[JISX0208]]:1997
は禁止しています。
[FIG(quote)[ [5] [[JIS X 0208:1997]]
>
[B[8. 合成文字の取扱い]] この規格で規定する符号化文字集合中のすべての図形文字は, 現在位置の前進動
作を伴う文字 (スペーシング文字) とする。 [B[JIS X 0211]] の BACKSPACE (後退) 又は CARRIAGE RETURN
(復帰) を使用することによって, 2文字以上の図形文字を同じ文字位置に重ねて表示することができる
が, こうした合成文字を用いてはならない。
>
[BOX(indent)[
[B[備考]] 2区94点の LARGE CIRCLE (大きな丸) “◯” は, これまでの規格との互換性のため削除しな
いが, この図形文字を合成のために用いてはならない。
]BOX]
]FIG]
[FIG(quote)[ [11] [[JIS X 0213:2000]]
>
[B[8. 合成文字の取扱い]] この規格で規定する符号化文字集合中のすべての図形文字は, 別に規定するもの
を除き, 現在位置の前進動作を伴う文字とする。 [B[JIS X 0211]] の BACKSPACE (後退) 又は CARRIAGE RETURN
(復帰) を使用することによって, 2文字以上の図形文字を同じ文字位置に重ねて表示することができる
が, こうした合成文字を用いてはならない。文字合成を実装する場合は, ダイアクリティカルマーク (合
成可能) は, 現在位置の前進を伴わない文字として用いてもよい。
>
[BOX(indent)[
[B[備考]] 1面2区94点の LARGE CIRCLE (大きな丸) “◯” は, 現在位置の前進を伴う文字であり, 文
字合成を実装する場合に, 現在位置の前進を伴わない文字として用いてはならない。
]BOX]
]FIG]
[SEE[ [[LARGE CIRCLE]], [[結合文字]] ]]
[FIG(quote)[
[FIGCAPTION[
[7]
[CITE[[[JIS X 0208]] 改正案説明資料]],
[[芝野耕司]],
[TIME[1995 年 11 月 20 日][1995-11-20]]
]FIGCAPTION]
>
JIS X 0202 (ISO/IEC 2022),すなわち,符号拡張法を含めて,符号化文字集合規格で認めている文字
の合成方法は,次に二つの方法である。一つの方法は,ISOR 646 以来の BACKSPACE 又は CARRIAGE
RETUREN 及び SPACE を組合せ,重ね打ちによって文字を合成する方法であり,もう一つの方法は,ISO
6937 などで規定される文字送りなしのアクセント記号を用いる方法である。これらの符号化文字集合にお
ける文字合成方法は,どちらも基本的には,重ね打ちに基づいている。
>
このような合成方法では,日本国内で広く用いられている丸付き数字,単位記号文字などの文字を実際
に合成することはできない。にもかかわらず,1978 年に制定した第 1 次規格以来,文字合成に関して,こ
うした具体的な技術に立脚した ISO での合成文字を厳密に議論することなく,文字合成の概念のみをあた
かも魔法のように取り扱ってきた。そのため,丸付き数字,片仮名単位字などは,日常的に広く用いられ
ているにも関わらず,合成が可能であるとして,符号化文字集合に入れられていない。このような文字に
関しては,実務上必要であるが,実際には合成できないため,各社の実装ではメーカ提供外字として取り
入れられており,規格の運用面での問題が生じている。
]FIG]
* メモ
[12] [CITE[Character Sets: UCS/Unicode Environment: MARC 21 Specifications for Record Structure, Character Sets, and Exchange Media (Library of Congress)]]
([TIME[2007-12-04T16:23:37.000Z]], [TIME[2020-10-14T04:10:36.695Z]])
<https://www.loc.gov/marc/specifications/speccharucs.html#combining>
[13]
[[JIS X 4153:1998]] 6.3.1.2 b)
「送りのないダイアクリティカルマーク及びe (2文字)」
(= アキュートアクセント付きe)