/
313.txt
582 lines (459 loc) · 24.8 KB
/
313.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
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
[20] [DFN[[RUBYB[結合文字]@en[combining character]]]]は、直前の[[基底文字]]と合成されて表示される[[文字]]です。
* 仕様書
[REFS[
- [9] [CITE[[[The Unicode Standard]], Version 12.0 - ch03.pdf]] ([TIME[2019-03-02 07:15:30 +09:00]]) <http://www.unicode.org/versions/latest/ch03.pdf#G30602>
-- [30] D53
-- [38] D54
-- [39] D55
-- [45] D56
-- [47] D56a
-- [49] D57
- [18] [CITE@en-us[Glossary]] ([TIME[2014-12-06 10:49:08 +09:00]] 版) <https://unicode.org/glossary/#combining_mark>
- [53] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-21T06:24:49.510Z]] <https://www.unicode.org/reports/tr44/#Default_Values_Table>
- [103] [CITE@en-us[[[UAX #44]]: Unicode Character Database]] ([TIME[2016-06-21 02:42:04 +09:00]]) <https://www.unicode.org/reports/tr44/#General_Category_Values>
- [54] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-21T08:24:32.981Z]] <https://www.unicode.org/reports/tr44/#Derived_Extracted>
-[55] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-21T08:37:23.285Z]] <https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values>
- [56] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-21T08:49:23.551Z]] <https://www.unicode.org/reports/tr44/#Property_Invariants>
- [101] [CITE@en-us[[[UTS #46]]: Unicode IDNA Compatibility Processing]] ([TIME[2016-06-02 03:53:22 +09:00]]) <https://www.unicode.org/reports/tr46/#Validity_Criteria>
- [57] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-21T08:53:55.034Z]] <https://www.unicode.org/reports/tr44/#Invariants_in_Implementations>
]REFS]
* 結合文字とその分類
[10] [DFN[[RUBYB[結合文字]@en[combining character]]]] =
[DFN[[RUBYB[結合マーク]@en[combining mark]]]]は、
[CODE[General_Category]] が
[DFN[Combining Mark]] ([DFN[[CODE[Mark]]]], [DFN[[CODE[M]]]]) の[[文字]]
([[符号位置]])
です。
[SRC[>>9, >>101, >>18]]
[26]
[CODE[General_Category]] の値
[CODE[Mark]] = [CODE[M]]
は、
[[Spacing Combining Mark]] ([CODE[[[Mc]]]]),
[[Nonspacing Mark]] ([CODE[[[Mn]]]]),
[[Enclosing Mark]] ([CODE[[[Me]]]])
のいずれかであることを表します。
[SRC[>>9, >>103]]
- [24] [DFN[[RUBYB[非前進マーク][nonspacing mark]]]]は、
[[General Category]]
が
[[Nonspacing Mark]] ([DFN[[CODE[Mn][Nonspacing Mark]]]])
か
[[Enclosing Mark]] ([DFN[[CODE[Me][Enclosing Mark]]]])
の[[結合文字]]です。
[SRC[>>30]]
--
[29]
[DFN[[RUBYB[囲みマーク][enclosing mark]]]]は、
[[非前進マーク]]であって
[[General Category]]
が
[[Enclosing Mark]] ([DFN[[CODE[Me][Enclosing Mark]]]])
であるものです。
[[囲みマーク]]は、
[[非前進マーク]]の[[部分クラス]]であって、
[[基底文字]]の上中下に配置するのではなく、囲むものです。
[SRC[>>38]]
-
[40]
[DFN[[RUBYB[前進マーク][spacing mark]]]]は、
[[結合文字]]であって[[非前進マーク]]ではないものです。
[SRC[>>39]]
[12] [[私用文字]] ([CODE[[[Co]]]]) を[[結合文字]]と解釈するか否かは、
[[実装]]によります [SRC[>>9]]。
原則は[[基底文字]]扱いとされています。
[SEE[ [[基底文字]] ]]
* 結合文字列
[13] [[結合文字]]は、通常は単独では用いません。 [SRC[>>9]]
[14] [[結合文字]]の[[図形]]の位置付けは、直前の[[基底文字]]であって非[[結合文字]]で
[[zero width joiner]] でも [[zero width nonjoiner]] でもないものに依存します。
この時[[結合文字]]は[[基底文字]]に[RUBYB[適用]@en[apply]]されるといいます。 [SRC[>>9]]
[46]
[DFN[[RUBYB[結合文字列][combining character sequence]]]] ([DFN[CCS]]) は、
[[基底文字]]が0個または1個の後に、
1つ[[以上]]の[[結合文字]]、
[CODE(charname)@en[ZERO WIDTH JOINER]]、
[CODE(charname)@en[ZERO WIDTH NON-JOINER]]
のいずれかが続くような列であって最長のものです。
[SRC[>>45]]
[FIG(railroad)[
= ?
== [[基底文字]]
= +
== |
=== [[結合文字]]
=== [CODE(charname)@en[ZERO WIDTH JOINER]]
=== [CODE(charname)@en[ZERO WIDTH NON-JOINER]]
]FIG]
[48]
[DFN[[RUBYB[拡張済み結合文字列][extended combining character sequence]]]] ([DFN[ECCS]]) は、
[[拡張済み基底]]が0個または1個の後に、
1つ[[以上]]の[[結合文字]]、
[CODE(charname)@en[ZERO WIDTH JOINER]]、
[CODE(charname)@en[ZERO WIDTH NON-JOINER]]
のいずれかが続くような列であって最長のものです。
[SRC[>>47]]
[FIG(railroad)[
= ?
== [[拡張済み基底]]
= +
== |
=== [[結合文字]]
=== [CODE(charname)@en[ZERO WIDTH JOINER]]
=== [CODE(charname)@en[ZERO WIDTH NON-JOINER]]
]FIG]
;; [80] ただの[[結合文字列]]とは、
[[標準韓音節ブロック]]が含まれるかどうかが違います。
[SEE[ [[拡張済み基底]] ]]
[82]
「結合文字」の列というと0文字以上の[[結合文字]]の列のように聞こえますが、
実はそうではなく[[基底文字]]も (あれば) 含まれますし、
[[結合文字]]のかわりに
[CODE(charname)@en[ZWJ]] / [CODE(charname)@en[ZWNJ]]
が含まれる列のこともあります。
[83]
[[Unicode]]
の[[結合文字]]は後置です。
[[Unicode]] 以前の[[文字コード]]規格には前置式を採用したものもありましたが、
[[Unicode]]
との変換では順序を入れ替える必要があります。
[SEE[ [[非spacing文字]] ]]
-*-*-
[15] [[結合文字]]が適用されるべき[[基底文字]]がない場合 ([[結合文字]]が先頭の場合や、
[[制御文字]]や[[書式文字]]が前にある場合) には、[RUBYB[[[孤立結合文字]]]@en[isolated combining character]]といいます。 [SRC[>>9]]
[81]
[[結合文字列]]のうち[[基底文字]]がないものを[DFN[[RUBYB[欠陥結合文字列][defective combining character sequence]]]]といいます。
[SRC[>>49]]
[19]
[[完全正規化済み]]など孤立した[[結合文字]]が出現しないことを要求する[[応用]]もあります。
* 結合文字の一覧
[REFS[
- [23] [[結合文字]]:
[CITE@en[[[Character set]] "$unicode:Mn | $unicode:Mc | $unicode:Me"]] ([TIME[2015-03-22 23:53:21 +09:00]] 版) <https://chars.suikawiki.org/set?expr=%24unicode%3AMn+%7C+%24unicode%3AMc+%7C+%24unicode%3AMe>
- [31]
[[非前進マーク]]:
[CITE@en[[[Character set]] "$unicode:Mn | $unicode:Me"]] ([TIME[2019-07-01 16:00:57 +09:00]]) <https://chars.suikawiki.org/set?expr=%24unicode%3AMn+%7C+%24unicode%3AMe>
- [44]
[[囲みマーク]]:
[CITE@en[[[Character set]] "Me"]] ([TIME[2019-07-01 16:19:06 +09:00]]) <https://chars.suikawiki.org/set?expr=%24unicode%3AMe>
- [43]
[[前進マーク]]:
[CITE@en[[[Character set]] "Mc"]] ([TIME[2019-07-01 16:18:17 +09:00]]) <https://chars.suikawiki.org/set?expr=%24unicode%3AMc>
]REFS]
* 性質
[11] [[正準結合クラス]]が 0 でない[[文字]]は、[[結合文字]]です。
しかし[[逆]]は真ではありません。[[正準結合クラス]]が 0 の[[結合文字]]もあります。 [SRC[>>9]]
;; [22] >>21 は、[[正準結合クラス]]が 0 の[[結合文字]]の一覧です。
[REFS[
- [21] [CITE@en[Character set "$unicode:Mn | $unicode:Mc | $unicode:Me - $unicode:Canonical_Combining_Class:non-0"]] ([TIME[2015-03-22 23:52:41 +09:00]] 版) <https://chars.suikawiki.org/set?expr=%24unicode%3AMn+%7C+%24unicode%3AMc+%7C+%24unicode%3AMe+-+%24unicode%3ACanonical_Combining_Class%3Anon-0>
]REFS]
* レンダリング
[16] [[結合文字]]が[[孤立結合文字]]である場合や、[RUBYB[図形的結合]@en[graphical combination]]を行えない場合には、
図形的結合なしに、[[基底文字]]であるかのように表示して構いません。 [SRC[>>9]]
[17] [[Unicode]] [[符号表]]の[[代表画像]]には点線の円が示されています。
直前の[[基底文字]]と図形的結合して表示する場合には、[[基底文字]]を点線円部分に示すことが想定されています。 [SRC[>>9]]
[SEE[ IDS との関係は [[IDC]] ]]
** 非前進マーク
[32]
[[非前進マーク]]の[RUBYB[[[表現]]][presentation]]上の位置は[[基底文字]]に依存します。
通常はそれ自体に関して [[visual baseline]] に対して間隔を消費しません。
[SRC[>>30]]
[33]
ただし、[[非前進マーク]]の大きさによって[[基底文字]]の表示位置が影響されることはあります。
[SRC[>>30]]
[EG[
[34] 例えば [CODE[U+20DD]] [CODE(charname)@en[COMBINING ENCLOSING CIRCLE]]
を使うと (それ自体が独立して表示幅を取ることはありませんが)
その前の[[基底文字]]の周りに円を描画して、かつ前後の[[文字]]と表示が重ならないよう、
[[基底文字]]の表示位置が通常と変化することになります。
]EG]
** 前進マーク
[41]
[[前進マーク]]は一般に[[基底文字]]とそう違わない挙動を示します。
[SRC[>>39]]
[42]
しかし [CODE[U+0BCA]] [CODE(charname)@en[TAMIL VOWEL SIGN O]]
のように、
([[囲みマーク]]でないにも関わらず)
[[基底文字]]の両側に[[レンダリング]]されるものもあります。
[SRC[>>39]]
* 関連
[68] [[結合文字]]とは異なりますが、[[異体字セレクター]]も[[基底文字]]の後に続くというスタイルを踏襲しています。
* 歴史
[35]
現在の
[[Unicode]]
式の[[結合文字]]以前には、
[[文字コード]]レベルで文字合成を行う手法として、
次のものがありました。
- [36] [CODE(charname)@en[BS]] や [CODE(charname)@en[CR]] をつかった[[重ね打ち]]
[SEE[ [[重ね打ち式文字合成]] ]]
- [37] 前置型の[[非spacing文字]]をつかった合成
[SEE[ [[非spacing文字]] ]]
- [69] [CODE(charname)@en[GCC]]
[84]
どうして
[[Unicode]]
は後置型を採用したのでしょう。
文字列を前から走査して
[[grapheme cluster]]
を見つけていくには前置型の方が都合がいい気もしますが。
** ISO/IEC 10646
[4]
>
'''6.3.3 図形文字の結合''' 特に指定されない限り、[[図形文字]]は、
[[結合文字]]としてはならない。すなわち、
隣接する[[図形文字]]と組み合わせようとしてはならない。
> [[図形文字集合]]によっては、複数の[[図形文字]]を一つの[[図形記号]]として[[可視化]]することによって、
追加の[[図形記号]] (例えば、[[アクセント付き文字]])
を[[図形表現]]することを許しているものもある。この[[規格]]では、
二つの結合方法があることを認識している。
> a) [[基底文字]]の[[図形文字]]は、[[制御文字]]の
[CODE(charname)[[[BACKSPACE]]]] ([CODE(jcharname)[[[後退]]]]) 又は
[CODE(charname)[[[CARRIAGE RETURN]]]] ([CODE(jcharname)[[[復帰]]]])
を使用して、組み合わせてよい。
> b) [[結合文字]]として[[指定]]されている[[図形文字]]は、
[[基底文字]]の[[図形文字]]と組み合わせてもよい。
> [[ISO 2375]] に従って、[[図形文字集合]]の登録を行おうとする申請者は、
[[集合]]中の[[結合文字]]を明らかにしておくことが期待される。
> 参考1. 登録では、これらの要件の詳細を求められないので、
[[文字集合]]を規定する[[規格]]は、[[結合文字]]がある場合、
それ自身で、これを指定しその用法を示しておくのがよい。
> 2. [[ISO/IEC 646]] の[[図形文字]]では、
[[アクセント付き文字]]を[[表現]]するのに、 a)
の方法が認められている。
> 3. [[JIS X 0211]] では、第3の方法として、[[文字]]自身の仕様に関係なく、
[CODE(charname)[[[GRAPHIC CHARACTER COMBINATION]]]]
([CODE(charname)[[[GCC]]]]) の[[制御機能]]を使った[[図形文字]]の[[結合]]を規定している。
[SRC[[[JIS X 0202]]:1998]]
[8]
>
:結合文字 (combining character):
[[符号化文字集合]]の識別された部分集合の構成単位であって、先行する非結合文字
(以下、[[基底文字]]という。)
と組み合わせることを意図したもの、又は基底文字の後に結合文字の列が続いた形のものと組み合わせることを意図したもの。
([[JIS X 0202]]:1998 4.8)
[1] 2002-11-03 (日) 15:52 ''[[名無しさん]]'': ''非''結合文字は''被''結合文字の [[typo]] じゃないかと一瞬思いますが、[[規格]]を良く読むとこれで正しいことが分かります。
[2]
>
:結合文字 (combining character):
この規格群で規定する符号化文字集合の識別された部分集合の構成単位であって、先行する非結合文字 (以下、基底文字という。)
と組み合わせることを意図したもの、又は基底文字の後に結合文字の列が続いた形のものと組み合わせることを意図したもの (4.14 参照)。
([[JIS X 0221]]‐1:2001 4.12)
[28]
>
:合成列 (composite sequence):
[[基底文字]]とそれに続く一つ以上の[[結合文字]]からなる[[図形文字]]の列 (4.11 参照)。
> 備考 1. 合成列からなる[[図形記号]]は、通常、
その合成列を構成する各[[文字]]の図形記号の組合せからなる。
> 2. 合成列は、文字とはみなさない。したがって、
この規格群の[[レパートリ]]の構成単位ではない。
([[JIS X 0221]]‐1:2001 4.14)
[3] 10646 での結合文字の使い方は、 24.
に規定があります。結合文字の一覧は附属書 B
にあります。結合文字が使えるかどうかは[[実装水準]]と関係します。
- 結合文字は、[[基底文字]]の後でなければなりません。
(24.1)
- 結合文字自体を一つの[[結合列]]としたい時は、
[[間隔]]を基底文字とします。 (24.1)
-- インド系用字系の [[matra]] (母音記号)
は特殊で、周囲の複数の文字に依存するので、
間隔と結合させるのは望ましくありません。 (24.1 備考)
- 一つの基底文字に結合できる結合文字の数は 10646
では規定しません。 (24.3)
- 結合文字同士が表示に影響する場合
(例えば [CODE(char)[[[COMBINING MACRON]]]]
と [CODE(char)[[[COMBINING DIAERESIS]]]])
は、だんだん外側に
(MACRON より DIAERESIS を上に) 配置していきます。
- 縦方向ではなく横方向に並べたり、
隣接する結合文字と合字を作る結合文字もある。
横方向に進むときは、[[書字方向]]に従う。
- 結合文字同士が影響を与えない場合
(例えば上につくものと下につくもの) は、
逆の順序の場合と同じに見えてもよい。
** JIS X 0208 と [CODE(charname)@en[LARGE CIRCLE]]
[SEE[ [CODE(charname)@en[LARGE CIRCLE]] ]]
** JIS X 0213
[70]
[[JIS X 0213:2000]] は、
[[重ね打ち式文字合成]]を禁止する
[[JIS X 0208:1997]]
の規定を引き継ぎました。
かわりに新方式の文字合成の規定を持っていました。
[FIG(quote)[ [51] [[JIS X 0213:2000]] 6.5.2
>
[B[4) ダイアクリティカルマーク (合成可能)]] ダイアクリティカルマーク (合成可能) 32文字の名前及
びビット組合せは, [B[附属書4表4]]による。
>
[BOX(indent)[
[B[備考]] 文字合成を実装する場合には, 合成を行う際に, ダイアクリティカルマーク (合成可能) を,
現在位置の前進を伴わない文字として用いることができる。なお, ダイアクリティカルマーク
を用いた文字の合成を想定する場合は, 文字合成の実装の有無にかかわらず, ダイアクリティ
カルマーク (合成可能) を使用することを推奨する。
]BOX]
]FIG]
[71] 文字の合成を想定する場合であって、
文字合成の実装が無い場合とは、
どういう場合なのでしょうか? よくわかりません。
文字合成の実装が無いのにダイアクリティカルマーク (合成可能)
を適切に使用することができるものでしょうか。
[27]
文字合成を実装しない場合には、これらの文字は使えるのでしょうか。
使った場合どう扱われるのでしょうか。
[FIG(quote)[ [52] [[JIS X 0213:2000]]
>
[B[8. 合成文字の取扱い]] この規格で規定する符号化文字集合中のすべての図形文字は, 別に規定するもの
を除き, 現在位置の前進動作を伴う文字とする。 [SNIP[]] 文字合成を実装する場合は, ダイアクリティカルマーク (合
成可能) は, 現在位置の前進を伴わない文字として用いてもよい。
]FIG]
[72]
[[現在位置の前進を伴わない文字]]がどのようなもので、
どう利用するものかは、
[[JIS X 0213]]
には書いてありません。
これは規格として成り立っているのでしょうか?
[73]
既存の
[[ISO文字コード]]には[[現在位置の前進を伴わない文字]]
([[非spacing文字]])
を定めたものがいくつかありますが、
それらは前置アクセント方式を採用しています。
[SEE[ [[現在位置の前進を伴わない文字]] ]]
ところが
[[JIS X 0213]]
が定めるダイアクリティカルマーク (合成可能)
の[[文字の名前]]と一致する
[[ISO/IEC 10646]]
の[[文字]]は、
後置アクセント方式で使う[[結合文字]]です。
[[基底文字]]を先に書くか後に書くか、
どちらの解釈もあり得ます。
[FIG(quote)[ [74] [[JIS X 0213:2000]] 附属書7
>
[B[1.3.3 ダイアクリティカルマーク (合成可能)]] この規格は, 実用的な見地から, 音声記号を広く採録することとした。
音声記号では, 基本となる図形文字を合成することにより, 対象となる音声を図形文字として表現することが行わ
れている。[B[JIS X 0208]]は, 図形文字の合成を禁止しているが, この規格では, 音声記号に必要な図形文字について
は, 合成の許容についての規定を設けた ([B[本体8.]]参照)。
>
合成が許容される音声記号の採録に当たっては, IPAの音声記号チャートから, 音声記号としての図形文字の合
成の際に必要となる基本的なダイアクリティカルマークを選定し, それらの32の図形文字を, 現在位置の前進を伴
わない文字として利用することができるダイアクリティカルマーク (合成可能) として追加することとした。ダイ
アクリティカルマーク (合成可能) の中には, [B[JIS X 0208]]で規定しているダイアクリティカルマーク, 又は, 今回
新たに追加したダイアクリティカルマークと類似するものがあるので, そのような図形文字については, それぞれ
の図形文字の区別に注意する必要がある。なお, ダイアクリティカルマーク (合成可能) の例示字体は, [ASIS[ ̤][点線円、囲み四角形]]
(1-11-82, COMBINING DIAERESIS BELOW, 下ダイエレシス (合成可能), かすれ音) のように, 合成対象となる図
形文字の位置を破線の丸で示しているので, これらの文字の同定の際には, 注意する必要がある。
]FIG]
[75]
「音声記号に必要な図形文字については」
と限定しているかのように聞こえますが、
本体8.は合成の一方を
「ダイアクリティカルマーク (合成可能)」
と指定しているだけです。
[[基底文字]]側は何も制約がありませんが、
任意の[[図形文字]]を使えると理解していいのでしょうか?
それとも
「音声記号に必要」と何らかの基準で限定されるべきものなのでしょうか。
この説明で意図はわかりましたが、
使い方は全然わかりません。
-*-*-
[76]
こうした疑問点は、
[[JIS X 4051:2004]]
を読めば一応解決します (>>59)。
想定される利用法は
[[Unicode]]
の[[結合文字]]と同じであるようです。
[77]
[[JIS X 0213:2000]] には ([[JIS X 0213:2004]] にも)
[[JIS X 4051]]
を読めとは一言も書いてありませんし、
[[JIS X 4051]]
以外の
[[JIS X 0213]]
の[[応用]]には適用されない規定なので、
この解釈でいいのか疑問は残りますが...
[78]
[[JIS X 0213]]
は誰もつかっていないようなので、
今後の改正でこうした謎が明かされる可能性も低そうです。
** JIS X 4051
[REFS[
- [66] [[JIS X 4051:2004]] 3.
- [58] [[JIS X 4051:2004]] 4.10
]REFS]
[59]
[[結合文字]]の処理は、
1つの[[基底文字]]と、
それに続くすべての連続する[[結合文字]]で構成される、
[[合成列]]を処理するものです。
[SRC[>>58]]
[[基底文字]]は、
[[結合文字]]に先行する非結合文字です
[SRC[>>66 22)]]。
[DFN[結合文字]]は、
[[基底文字]]の直後に続き、[[基底文字]]または既に合成した[[合成列]]と組み合わせることを意図した[[図形文字]]です
[SRC[>>66 45)]]。
[[合成列]]は、
[[基底文字]]とそれに続く1つ[[以上]]の[[結合文字]]とからなる[[図形文字]]の列です
[SRC[>>66 47)]]。
[61]
[[合成列]]に対応する[[字形]]が用意されているばあい、
それを使います。
そうでない場合、
[[合成]]します。
[SRC[>>58]]
[62]
[[合成]]は、
記述された[[結合文字]]の順に、
[[JIS X 0221]]
に従い、
[[結合文字]]の位置属性に従い、[[基底文字]]または既に[[合成]]した[[合成列]]の上、
下、
右上、
左下などに配置します。
[SRC[>>58]]
(従って同じ位置に複数の[[結合文字]]があれば、
だんだん外側へと付け足されていきます。)
[63] [[結合文字]]は、[[基底文字]]の大きさに合わせて配置するべきです。
[SRC[>>58]]
(例えば上に配置するとき、 [CODE[e]] よりも [CODE[E]] のときの方が高く配置します。)
[65] [CODE[i]]
や
[CODE[j]]
の上に[[結合文字]]を配置するときは、
[[基底文字]]の[[点]]を削除するべきです。
[SRC[>>58]]
[64]
[[基底文字]]が[[斜体]]のとき、
斜めになった[[基底文字]]の縦軸に合わせて[[結合文字]]の位置をずらすべきです。
[SRC[>>58]]
[67]
[[結合文字]]の[[文字クラス]]は[[欧文間隔以外の欧文用文字]]とされます。
[SRC[>>58]]
[[結合文字]]に[[文字クラス]]をこのように定めて正しく処理できるのかどうか不明です。
[[合成列]]の[[文字クラス]]ではないのでしょうか。
[[基底文字]]が[[欧文間隔以外の欧文用文字]]のときはいいですが、
そうでないときもこの扱いでいいのでしょうか。
(おそらく想定外なのでしょうが、そのように書かれてはいません。)
;; [60] [[結合文字]]とは別に、[[囲み文字]]の規定もあります。
[79]
([[Unicode]] ではなく)
この
[[JIS X 4051]]
の規定に基づく実装があるのかどうかは不明です。
**
[5] [CITE@en[I'm not a Klingon (<span style="font-family:pIqaD,code2000"> </span>) : Most combining characters in a Unicode glyph/character/whatever]]
([TIME[2010-03-27 10:31:57 +09:00]] 版)
<http://blogs.msdn.com/shawnste/archive/2010/01/25/most-combining-characters-in-a-unicode-glyph-character-whatever.aspx>
[6] [CITE@en[Web Applications 1.0 r6611 Allow combining characters wherever, per Mark Davis.]]
( ([TIME[2011-10-02 16:17:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6610&to=6611>
[7] [CITE@en[Bug 13502 – Text run starting with composing character should be valid]]
( ([TIME[2013-11-25 16:50:57 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=13502>
[25] 合成用の「☆」や「★」がほしい。[[合成用丸]]があるんだしw
[50] [CITE@ja[た͜͜͏̘̣͔͙͎͎̘̜̫̗͍͚͓͜͜͏̘̣͔͙͎͎す͜͜͏̘̣͔͙͎͎ơ̟̤̖̗͖͇̍͋̀͆̓́͞͡け̜ͪ̅̍̅͂͊てとは (タスケテとは) '''['''単語記事''']''' - ニコニコ大百科]]
([TIME[2020-04-24 07:05:18 +09:00]])
<https://dic.nicovideo.jp/a/%E3%81%9F%CD%9C%CD%9C%CD%8F%CC%98%CC%A3%CD%94%CD%99%CD%8E%CD%8E%CC%98%CC%9C%CC%AB%CC%97%CD%8D%CD%9A%CD%93%CD%9C%CD%9C%CD%8F%CC%98%CC%A3%CD%94%CD%99%CD%8E%CD%8E%E3%81%99%CD%9C%CD%9C%CD%8F%CC%98%CC%A3%CD%94%CD%99%CD%8E%CD%8E%C6%A1%CC%9F%CC%A4%CC%96%CC%97%CD%96%CD%87%CC%8D%CD%8B%CC%80%CD%86%CC%93%CC%81%CD%9E%CD%A1%E3%81%91%CC%9C%CD%AA%CC%85%CC%8D%CC%85%CD%82%CD%8A%E3%81%A6>