/
419.txt
2315 lines (1883 loc) · 85.5 KB
/
419.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
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
[380]
[[基底文字]]に[DFN[[RUBYB[[RUBY[異][い]][RUBY[体][たい]][RUBY[選][せん]][RUBY[択][たく]][RUBY[子][し]]][variation selector]]]]を組合せた[DFN[[RUBYB[[RUBY[異][い]][RUBY[体][たい]][RUBY[列][れつ]]][variation sequence]]]]は、
[[基底文字]]が表す[[字形]]を限定したものです。
[381]
[DFN[IVS]] は[[漢字]]を対象としたもの、
[DFN[EVS]] は[[絵文字]]を対象としたもの、
[DFN[SVS]] はその他のものです。
* 仕様書
[REFS[
- [105]
[CITE[[[The Unicode Standard]], Version 13.0 - ch13.pdf]], [TIME[2020-03-09T17:53:44.000Z]], [TIME[2020-12-24T07:34:13.381Z]] <https://www.unicode.org/versions/latest/ch13.pdf#G27804>
- [30] [CITE[[[The Unicode Standard]], Version 13.0 - ch23.pdf]], [TIME[2020-03-09T17:53:52.000Z]], [TIME[2020-12-22T08:47:43.938Z]] <https://www.unicode.org/versions/latest/ch23.pdf#G19053>
- [68]
[CITE[[[The Unicode Standard]], Version 13.0 - ch24.pdf]], [TIME[2020-03-09T17:53:54.000Z]], [TIME[2020-12-23T09:22:15.656Z]] <https://www.unicode.org/versions/latest/ch24.pdf#G11576>
- [17]
<https://www.unicode.org/Public/UCD/latest/ucd/StandardizedVariants.txt>
- [18] [CITE@en-us[[[UAX #44]]: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-20T12:10:39.430Z]] <https://www.unicode.org/reports/tr44/#StandardizedVariants>
- [86] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-12-23T12:08:32.375Z]] <http://www.unicode.org/reports/tr44/#EmojiVariants>
- [19] [CITE[UTS #37: Unicode Ideographic Variation Database]]
([TIME[2011-11-08 13:41:57 +09:00]] 版)
<https://www.unicode.org/reports/tr37/>
- [21] [CITE@en-us[Ideographic Variation Database]]
([TIME[2015-05-08 11:34:52 +09:00]] 版)
<https://www.unicode.org/ivd/>
-- [232] [CITE[Index of /ivd/data]], [TIME[2020-12-26T12:41:14.000Z]] <https://www.unicode.org/ivd/data/>
]REFS]
* 意味
[31]
[[Unicode文字]]は、
いろいろな[[グリフ]]によって[RUBYB[表現][represent]]され得ます。
ときにテキスト処理において[[文字]]を表現するのに使う[[グリフ]]の[[集合]]を制限したり、
変更したりする必要が生じることがあります。
[SRC[>>30]]
[32]
通常それは[[リッチテキスト]]文書で[[フォント]]や[[スタイル]]を選ぶことで示します。
しかし特殊な状況 (※ >>382) では、
そうした通常の[RUBYB[見た目][appearance]]の範囲との[RUBYB[違い][variation]]を、
[[平文]]で書式付きテキストを交換するのが不可能か不便であるとしても、
同じ[[文書]]に並べて表現する必要があったりもします。
[SRC[>>30]]
[EG[
[33]
例えば[[モンゴル文字]]を使う[[言語]]では、
特定の[RUBYB[テキスト的な目的][textual purpose]]のため「[RUBYB[汎用][generic]]」の[[グリフ]]群の範囲では不適切と考えられるときに、
特定の[RUBYB[異体][variant]]のグリフ群の範囲が必要となる場合があります。
[SRC[>>30]]
]EG]
[34]
そこで[[異体選択子]]は特定の[[文字]]の表現に使う[[グリフ]]の[[集合]]に対して制限を指定する仕組みを提供するのであります。
[SRC[>>30]]
[35]
加えて、
[[異体選択子]]は、
[[CJK漢字]]や[[モンゴル文字]]におけるような、
[RUBYB[本質的][essentially]]に[RUBYB[同じ][same]][RUBYB[[[意味]]][semantics]]を持ちながら[RUBYB[実質的][substantially]]に違った[[グリフ]]の範囲を持った、
[RUBYB[[[異体]]][variant]]を指定する仕組みを提供するのであります。
[SRC[>>30]]
[36]
つまるところ、
[[異体選択子]]は、
[[Unicode]]
が過剰に[RUBYB[[[統合]]][unify]]して
1つの[[文字][Unicode文字]]として扱っているものを、
より細かく区別して扱うための救済措置的に使えるものとなっています。
[382]
なお [[Unicode]] のいう「特殊な状況」とは、
[[Unicode]] の[[世界観][欧米中心主義]]で「特殊」とされるものです。
それは世界各地の一般の人々の文字生活上「特殊」とは限りません。
[EG[
[383]
例えば少なくない[[日本人]]が、
自分の[[名前][人名]]の'''通常'''の表記のために
[[IVS]] を必要としています。
]EG]
[37]
[[Unicode文字]]が必ずしも一般に認識される
「[[文字]]」
の範囲と一致しない [SEE[ [[Unicode文字]] ]]
のと同じように、
[[異体選択子]]が扱うものは一般にいう「[[異体字]]」
と必ずしも同じではありません。
[125]
ある[[文字]]の[DFN[[RUBYB[グリフ[RUBY[的][てき]][RUBY[部][ぶ]][RUBY[分][ぶん]][RUBY[集][しゅう]][RUBY[合][ごう]]][glyphic subset]]]]とは、
その[[文字]]の[RUBYB[表示][display]]に適切な[[グリフ]]群の[[部分集合]]です。
[SRC[>>19]]
[[符号点]]が[[文字]]を表すように、
[[異体列]]は[[グリフ的部分集合]]を表すものです。
この[[グリフ的部分集合]]という語はなぜか
[CITE[The Unicode Standard]]
ではなく
[[UTS #37]]
で定義され
[[IVS]]
の説明にしか使われていませんが、
その定義された意味は他の[[異体列]]にもそのまま通用するはずです。
[204]
「グリフ」 (単数) ではなく「グリフ群」の[[集合]]と説明されていますが、
[[蒙古文字]]のように文脈で[[グリフ]]が変化する場合はもちろん、
[[漢字]]のような文脈変化がない場合でも、
特定[[フォント]]の特定[[グリフ]]だけを指すような限定的な指定ではなく、
もう少し広い範囲の「同じような[[グリフ]]」を指しています。
ただしその「同じような」の具体的範囲は定められていません。
[205]
[[異体列]]の[[グリフ的部分集合]]だけでなく、
[[文字]]の[[グリフ]]群についても具体的範囲を
[[Unicode]]
は定めていません。
むしろ逆に[[異体列]]が定義されて[[代表グリフ]]が提示されることで、
[[Unicode文字]]の[[代表グリフ]]以外にもこんな字形までその
[[Unicode文字]]の範囲に含まれていたのかと知ることができます。
[137]
ある[[文字]]に関する各[[異体列]]の[[グリフ的部分集合]]は、
[[互いに素]]とは''限りません''。
このことは [[IVS]] について明記されています [SRC[>>19]]
が、
他の[[異体列]]についても同様です。
[[IVS]]
でもそれ以外でも、
[[代表グリフ]]が同じように見えるものすら散見されます。
-*-*-
[87]
[[異体列]]は、
元の
[[Unicode文字]]の意味的範囲に含まれる[[字形]]のうちの一部分を表す、
という立て付けで規定されています。
元の
[[Unicode文字]]と同じ意味の別の[[文字]]を指すものではありません。
従って元の
[[Unicode文字]]の範囲に含まれないと思われるような、
著しく異なるものが[[異体列]]で表されることはありません。
この設計ゆえに、[[異体選択子]]に未対応だとしても、
[[基底文字]]だけを見て処理できるということになっています。
[88]
そのため、
[[異体]]の区別のためには、
元の[[Unicode文字]]と[[異体列]]との区別では意味がなく、
[[異体列]]と[[異体列]]との区別にしなければいけません。
[EG[
[89]
「令」 [VAR[c]]
について
「明朝体の令」と「楷書体の令」が[[異体選択子]] [VAR[v1]], [VAR[v2]]
で区別されるとするとき、
[VAR[c]] と <[VAR[c]], [VAR[v1]]> や
[VAR[c]] と <[VAR[c]], [VAR[v2]]>
の区別では意味がなく、
<[VAR[c]], [VAR[v1]]>
と
<[VAR[c]], [VAR[v2]]>
で区別しなければなりません。
]EG]
[NOTE[
[90] かつては、[[異体字]]のために膨大な[[符号空間]]を占用されるのはけしからんから枝番形式にしろ、
という主張をする人達もいたようです。 [[Unicode]] の[[異体選択子]]は、
微小な違いを枝番形式で「節約」することにはなりますが、
微小でない違いは別の [[Unicode文字]]を追加しないといけないのですから、
「節約」にはなりません。
[91] [[異体字]]を枝番方式で表せば、枝番部分を無視すれば簡単に曖昧検索できて便利だ、
といわれていました。[[異体選択子]]にもそれは当てはまりますが、
既に異なる[[Unicode文字]]として区別されている (または今後追加される)、
違いの大きな[[異体字]]の同一視もしないといけないので、
検索処理の効率化にはあまり貢献しません。
[390]
[[異体列]]として登録された[[グリフ的部分集合]]と同じものを含む別の[[Unicode文字]]が後から追加されるというおかしなこともたまに起こっています。
[EG[
[391]
例えば
[CODE[2022-09-13]]
版の [[IVD]]
[SRC[>>377]]
は
[[Unicode]] 15
によって新しく追加された [[CJK統合漢字]]
[CODE[U+31350]]
用の [[IVS]]
<[CODE[U+31350]], [CODE[U+E0100]]>
を追加しました。
[392]
これは
[[Adobe-Japan1]]
の
[CODE[CID+19130]]
を表すものでしたが、
[CODE[CID+19130]]
には以前から
<[CODE[U+793A]], [CODE[U+E0100]]>
が登録されていました。
[393]
<[CODE[U+31350]], [CODE[U+E0100]]>
と
<[CODE[U+793A]], [CODE[U+E0100]]>
は同じもの
(Duplicate Sequence)
として
[CODE[IVD_Stats.txt]]
に示されています。
]EG]
]NOTE]
[92]
[[Unicode文字]] ⊃ [[異体列]]という構造は
[[Unicode]]
のアーキテクチャ的にはそれでいいのでしょうが、
実際の運用を思うと厄介なことも少なくありません。
例えばある文字 [VAR[c]]
の[[符号点]]がほとんどの場合その一般的な字形 [VAR[v1]]
で表示されていて、
たまに使われる異体 [VAR[v2]]
と区別したいとき、
確実に区別するなら <[VAR[c]], [VAR[v1]]>, <[VAR[c]], [VAR[v2]]>
と書き分けなければなりません。
ですが、現実的にほとんどの場合 [VAR[c]] が <[VAR[c]], [VAR[v1]]>
の意味で使われているのです。普通の人が普通の入力方法で作った文書には
[VAR[c]] と書かれているのに、それが通用しなくなるのは困りものです。
* 異体列
[39]
[DFN[[RUBY[異体列][いたいれつ][variation sequence]]]]は、
1つの[[基底文字]]または
[[spacing mark]] ([CODE[[[General_Category]]=[[Mc]]]])
に、
1つの[[異体選択子文字]]を続けたものです。
これを[[基底文字]]または [[spacing mark]]
の[DFN[[RUBY[異体][いたい][variant]]]]といいます。
[SRC[>>30]]
[FIG(railroad)[ [38] [[異体列]]
= |
== [[基底文字]]
== [CODE[Mc]]
= [[異体選択子]]
]FIG]
[107]
[[異体選択子]]は、適用対象の直後に置きます。 [SRC[>>105]]
[[結合文字]]や
[CODE(charname)@en[ZWJ]]
や
[CODE(charname)@en[ZWNJ]]
を間に挟むことはできません。
[110]
[[自由異体選択子]]の古い実装は、
[CODE(charname)@en[ZWJ]]
を併用する時、
[[基底文字]]、 [CODE(charname)@en[ZWJ]], [[自由異体選択子]]の順としていました。
古い [CITE[The Unicode Standard]] でないドキュメントがこの順としていたためだといいます。
[SRC[>>105]]
;; [111]
[CITE[The Unicode Standard]] はこのことにわざわざ言及しているのですが、
古めの実装がそうしている、
と書いているだけで、新しい実装がどうするべきか明確にしていません。
[[SVS]] でないものは無視するべきとも書いているので、
新しい実装はこの方法を採るべきではないと暗に示しているのでしょうか。
しかし古い実装がこの方法を使っていて、
この方法を使った文書が現に存在しているのだとすると、
[[後方互換性]]のためこの方法も意図通りに解釈できるべきでしょう。
[47]
[[異体列]]には、
[[SVS]],
[[IVS]],
[[EVS]]
の3種類があります。
[SRC[>>30]]
** 被演算子
[196]
適用対象となる[[文字]]が、
[[異体列]]の1文字目となります。
1文字目は[[基底文字]]か、
[[spacing mark]]
です。
;; [40]
[[基底文字]]が使われることが多く、
[[spacing mark]]
があまりありません [SRC[>>30]]。
そこで
[CITE[The Unicode Standard]]
は、
簡潔のため[[基底文字]]のみ記述するが
[[spacing mark]]
も同様である
[SRC[>>30]]、
というやや曖昧な規定の方法を採っています。
[51]
[[異体列]]の最初の[[文字]]が、
[[nonspacing combining mark]]
や[[正準分解可能文字]]になることは、ありません。
これは、
[[正規化]]文における[[異体列]]の解釈の問題を防ぐための制限です。
[SRC[>>30]]
[203]
[[IVS]]
には更に[[互換分解可能文字]]でないこととの制約が付きます
(>>50)。
[197]
[[異体選択子]]は必ず適用対象の直後に来るとされています。
そのため[[基底文字]]に[[結合文字]]が続く列に[[異体選択子]]を適用することはできず、
[[合成済文字]]に[[異体選択子]]を適用することもできません。
[198]
例えば「ざ」の異体を区別したくても、「ざ」 + [[異体選択子]]とすることはできません。
「ざ」は「さ」 + [[結合文字]]の[[濁点]]と[[正準等価]]なので、
「さ」 + [[異体選択子]] + [[結合文字]]の[[濁点]]、
と表現することになります。
;; [199]
[[変体仮名]]は現行[[仮名]] + [[異体選択子]]とすることが検討されたようですが、
[[濁音]]、[[半濁音]]が複雑になることから別の[[文字]]とされたようです。
(字源も字形も違う[[仮名]]まで現行[[仮名]]と同じ[[文字]]の[[異体]]とみなすのは濫用がすぎると思われ、
結果それで良かったのでしょうが。)
** 異体選択子
[93]
[[異体選択子]]の[[符号点]]は3種類あります。
- [8]
[CODE[U+180B]] [CODE(charname)@en[MONGOLIAN FREE VARIATION SELECTOR ONE]]
([CODE(charname)@en[FVS1]]),
[CODE[U+180C]] [CODE(charname)@en[MONGOLIAN FREE VARIATION SELECTOR TWO]]
([CODE(charname)@en[FVS2]]),
[CODE[U+180D]] [CODE(charname)@en[MONGOLIAN FREE VARIATION SELECTOR THREE]]
([CODE(charname)@en[FVS3]]),
[CODE[U+180F]] [CODE(charname)@en[MONGOLIAN FREE VARIATION SELECTOR FOUR]]
([CODE(charname)@en[FVS4]])
-- [95] [[Unicode 3.0]] で追加
-- [362] [CODE(charname)@en[FVS4]] は [[Unicode 14.0]] で追加
-- [96] [[蒙古文字]]専用
-
[26]
[CODE[U+FE00]] [CODE(charname)@en[VS1]] - [CODE[U+FE0F]]
-- [97] [[Unicode 3.2]] で導入
-- [98] [[SVS]], [[EVS]] で使われる
- [94]
[CODE[U+E0100]] - [CODE[U+E01EF]] [CODE(charname)@en[VS256]]
-- [99] [[Unicode 4.0]] で導入
-- [100] [[IVS]] で使われる
[REFS[
- [7] [CODE[Variation_Selector]]
の一覧 <https://chars.suikawiki.org/set/%24unicode%3AVariation_Selector>
-- [218]
[[自由異体選択子]]
<https://chars.suikawiki.org/set/%24unicode%3Afree-variation-selectors>
-- [217]
[[IVS]] に使われる[[異体選択子]]の一覧
<https://chars.suikawiki.org/set/%24uts37%3Avariation-selectors>
]REFS]
[101]
兼用でもいいはずなのに、なぜか [[VS]] の種類ごとに使い分けられています。
既に種類ごとに違う方法で実装されてしまっていて、
今更兼用にもできないみたいです
[SRC[>>363]]。
[102]
[[Unicode 4.0]] 追加分は[[第14面]]にあって、
[[UTF-8]] でも [[UTF-16]] でも4バイトで表されます
(それ以外の文字は、 [[UTF-8]] で3バイト、 [[UTF-16]] で2バイトです)。
[[Unicode 4.0]] 時点では [[BMP]] に押し込められるだけの空き領域があったはずですが...
[[SIP]] の[[漢字]]の [[IVS]] だと
[[UTF-8]] でも [[UTF-16]] でも1つ8バイトにもなってしまいます。
;; [103]
[[Unicode]] で[[欧米]]以外の文字を使うという時点で、
バイト数的な効率が悪いことはわかりきっているので、
いまさら気にするなということかもしれませんが...
;; [104]
それにしたって、いちばん需要が大きそうな[[漢字]]の [[IVS]]
に使う[[異体選択子]]がいちばんバイト長が大きくなる冷遇ぶりw
[138]
違う[[基底文字]]に対して同じ[[異体選択子]]が適用可能だからといって、
それによって表される異体の関係性が同じとは限りません。
このことは [[IVS]] については明記されています [SRC[>>19]]
が、他の[[異体列]]でも同様です。
[EG[
[210]
例えばある[[文字]]に対して [CODE[U+E0100]] が2点しんにょうを表していても、
他の[[文字]]に対して1点しんにょうを表しているかもしれませんし、
さらに他の[[文字]]に対しては[[異体列]]が定義されていないかもしれません。
]EG]
[REFS[
-
[363]
[CITE[Proposal to add MONGOLIAN FREE VARIATION SELECTOR FOUR - 20057-mongolian-fvs4.pdf]], [TIME[2020-01-24T16:50:17.000Z]], [TIME[2022-03-13T01:26:40.964Z]] <https://www.unicode.org/L2/L2020/20057-mongolian-fvs4.pdf>
]REFS]
-*-*-
[139]
[[IVS]]
に使える[[異体選択子]]は
[N[240]]
個あります。
[[Unicode Consortium]]
は、
[N[240]]
[[以上]]の [[IVS]] の登録が必要となった時、
新しい[[異体選択子]]を追加する
[SRC[>>19]]
とされています。
[194]
それがどの程度現実性があるのか不明ですが、
実装は既存の[[異体選択子]]だけと決め打ちにせず、
将来の追加も想定しておく必要があるでしょう。
* SVS
[48]
[DFN[[RUBY[標準化済異体列][ひょうじゅんかずみいたいれつ][standardized variation sequence]]]]
([DFN[SVS]])
は、
[[UCD]]
の
[DFN[[CODE[StandardizedVariants.txt]]]] [SRC[>>17]]
で定義されます。
[SRC[>>30]]
[24]
[CODE[StandardizedVariants.txt]]
にはコメントとして
[[SVS]]
をいくつかの種類に分けています [SRC[>>17]]。
それによると:
- [73] Mathematical
- [74] East Asian punctuation positional variants
- [75] Myanmar
- [76] Phags-pa
- [77] Manichaean
- [78] Mongolian
- [79] CJK compatibility ideographs
... があります。 (今後他の種類が増えることもあるでしょう。)
[80]
Manichaean
と
Mongolian
は、
適用される
[[shaping environment]]
が、
[CODE[isolate]],
[CODE[initial]],
[CODE[medial]],
[CODE[final]]
のうち1つ[[以上]]のみに限定されるとあります。 [SRC[>>17]]
[81]
このうち
[CODE[Mongolian]]
だけは、
専用の[[自由異体選択子]]文字を使います。
[378]
[[書字方向]]との関係は[[縦書き字形]]参照。
** 蒙古文字自由異体選択子
[67]
[[蒙古文字]]の[[異体]]は、
[[SVS]]
に分類されていますが、
特別な扱いを受けています。
[[蒙古文字]]用には特別な[[異体選択子]]が3つ用意されています (>>8)
[SRC[>>105]]。
この[[異体選択子]]は[[蒙古文字]]だけに使われています。
[[蒙古文字]]には他の[[異体選択子]]は使われていません。
(この原則が将来にわたって維持されるのかは不明。)
[106]
この[[蒙古文字]]の[DFN[[RUBY[自由異体選択子][じゆういたいせんたくし][free variation selector]]]]は、
機械的に決定できない[[グリフ]]形が必要な時
(例えば[RUBYB[[[外来語]]][foreign word]]を書く時)
に使います。
[SRC[>>105]]
[109]
[[利用者]]は、
[[レンダリング]]システムが自動的に正しい[[グリフ]]を選択できないときのみ、
[[自由異体選択子]]を使う[RUBYB[べき][should]]です。
[SRC[>>105]]
** 数学記号
[82]
次の2件は、
[[Unicode 3.2]]
で定義されたものの、
誤りとわかり
[[SVS]]
から削除された、
と
[CODE[StandardizedVariants.txt]]
にコメントがあります。
[SRC[>>17]]
- [CODE[#2278 FE00; with vertical stroke; # [[NEITHER LESS-THAN NOR GREATER-THAN]]]]
- [CODE[#2279 FE00; with vertical stroke; # [[NEITHER GREATER-THAN NOR LESS-THAN]]]]
[354]
この削除された列が今後どういう扱いになるのか (再割り当てされるのか) よくわかりません。
-*-*-
[200]
ちなみに
[[Unicode]]
には[[数学]]用と称して太字、
フォント違いなど[[ラテン文字]]のバリエーションが大量に、
[[ASCII文字]]とは別に用意されています。
それらはなぜか[[異体列]]ではなく独立した[[文字]]となっています。
[SEE[ [[ラテン文字]] ]]
;; [201] 「数学用」という制限が守られるはずもなく、
[[フォント]]指定機能がない [[SNS]]
で装飾付きの[[英数字]]の記述のために広く使われるようになっています。
** CJK互換漢字SVS
[56]
各[[CJK互換漢字]]用に1つずつ、計1002個の [[SVS]] が定義されています。
[SRC[>>30]]
[57] これは
[[CJK互換漢字]]の[[正規化]]の問題の対策として定義されました。
[[CJK互換漢字]]を相当する[[CJK統合漢字]]と区別したい時がありますが、
[[CJK互換漢字]]は[[CJK統合漢字]]に[[正準等価]]な[[写像]]を持つ故、
[[正規化]]によってその区別が失われてしまいます。
そこでかわりに
[[SVS]]
を使えるのです。
[SRC[>>30]]
[58]
[[CJK互換漢字]]用 [[SVS]] は、 [[CJK互換漢字]]の[[符号点]]と一対一対応するものです。
[[IVD]] に登録された実装依存[[グリフ]]に対応付けられた [[IVS]] とは違います。
[SRC[>>30]]
[202]
[[SVS]] と [[IVS]]
は独立した判断で別の基準で追加されたため、
同じ[[字形]]のように見える[[漢字]]が
[[SVS]]
と
[[IVS]]
とで2種類以上 (+ 元々の [[CJK互換漢字]]でもう1種類)
存在する事例が多々あります。
混乱させたくてわざとやっているのではないかと思いたくなるほどの[[重複符号化]]祭です。
-*-*-
[59]
[[CJK互換漢字]]用の [[SVS]] は、
[[CJK互換漢字]]に[[異体選択子]]を付けたものではなく、
相当する[[CJK統合漢字]]に[[異体選択子]]を付けたものとなります。
[[CJK互換漢字]]は[[正準写像]]を持つので、
[[異体列]]に使えないのです。
[60]
[[CJK互換漢字]]の[[正準写像]]は[[CJK統合漢字]]単体であって、
[[CJK互換漢字]]用 [[SVS]] では''ありません''。
[[SVS]] に[[正準写像]]が変更されればさほど問題は生じなかったのですが、
[[正規化]]の仕様変更は認められていないのです。
それゆえ、
[[正規化]]をおそれて
[[CJK互換漢字]]を避けるなら、
[[CJK統合漢字]] + [[異体選択子]]を使うことになりますが、
それが正しく表示されるのは適切な[[フォント]]を持っている環境のみ、
正しく処理されるのは対応した環境だけです。
[[CJK互換漢字]]をそのまま使っていれば、
[[正規化]]以外はまったく支障がなかったのが、
[[SVS]] に置き換えるとまったく使い物にならなくなってしまいますw
([[フォント]]の問題は過渡期の今だけだと思いたいですが...)
[61]
それどころか同じ表現が [[CJK互換漢字]]と [[SVS]]
の2通りになって、しかも両者は[[正規化]]で同一視される対象ではありませんから、
検索などで新規に個別対応が必要となってしまいます。
むしろ面倒事は増えています。
[62]
[[正規化]]は破壊的操作なので、オリジナルデータや重要なデータには使うべきではありません。
[SEE[ [[正規化]] ]]
[[正規化]]を使わない日常の用途には [[CJK互換漢字]]の [[SVS]]
は出番がなさそうです。
[358]
[CITE[[[IRG]] N1676 (IRG 34) - 10211-irgn1676-adj1-ivs-upd.pdf]], [TIME[2010-06-16T20:38:33.000Z]], [TIME[2022-10-06T13:55:20.097Z]] <https://unicode.org/L2/L2010/10211-irgn1676-adj1-ivs-upd.pdf#page=13>
[359] >>358 この時点の構想では当時登録済みの [CODE[Adobe-Japan1]] [[IVS]]
と重複するものは共用しようとしていたようです。
* EVS
[49]
[DFN[[RUBY[絵文字異体列][えもじいたいれつ][emoji variation sequence]]]]
([DFN[EVS]])
は、
[[UTS #51]]
[DFN[[CODE[emoji-variation-sequences.txt]]]]
で定義されます
[SRC[>>30]]。
[66]
古い
[[Unicodeの版]]では
[[EVS]]
は
[[SVS]]
に含まれていました。
当時
[CODE[StandardizedVariants.txt]]
に記述されていた
[[EVS]]
は、現在の版では削除されているようです。
[44]
[[数字]],
[CODE[U+0023]] ([CODE[#]]),
[CODE[U+002A]] ([CODE[*]])
を[[基底文字]]とする[[絵文字異体列]]は、
それに対する[[結合文字]]
[CODE[U+20E3]] [CODE(charname)@en[COMBINING ENCLOSING KEYCAP]]
の[[色]]、[[サイズ]]、位置決定に影響することが想定されています。
[SRC[>>30]]
[11] [CITE[Emoji Variation Sequences]]
([TIME[2016-06-15 08:30:11 +09:00]])
<http://www.unicode.org/emoji/charts/emoji-variants.html>
[351] [TIME[2020-07-13T10:28:02.000Z]], [TIME[2021-01-11T03:46:10.790Z]] <https://standards.iso.org/iso-iec/10646/ed-6/en/emoji-variation-sequences.txt>
* IVS
[50]
[DFN[[RUBY[表意文字的異体列][ひょういもじてきいたいれつ][ideographic variation sequence]]]]
([DFN[IVS]])
は、
2つの[[符号化文字]]の列であって、
1つ目が
[CODE[Ideographic]]
であって[[正準的分解可能]]でも[[互換的分解可能]]でも''ない''もの、
2つ目が[[異体選択子文字]]
[ [CODE[U+E0100]], [CODE[U+E01EF]] ]
であるものです。
[SRC[>>19]]
;; [124] [[異体列]]一般よりも、
1文字目が [CODE[Ideographic]]
であることと、
2文字目の範囲に制約が増えています。
[127]
[[IVS]] には、[[異体選択子]]の通常の規則が適用されます。
[[IVS]]
は、
関連付けられた[[グリフ的部分集合]]に[[レンダリング]]を制限したいときのみ、
使うべきです。
[SRC[>>19]]
[REFS[
- [129] [CODE[Ideographic]] な文字の一覧
<https://chars.suikawiki.org/set/%24unicode%3AIdeographic>
]REFS]
** IVD
[123]
[[IVS]]
は、
[DFN[UTS #37]]
の定める
[DFN[Ideographic Variation Database]]
([DFN[IVD]]) [SRC[>>21]]
に登録されています。
[[IVD]]
に登録された
[[IVS]]
を[DFN[[RUBY[登録済][とうろくずみ][registered]]IVS]] といい、
それ以外の
[[IVS]]
を[DFN[[RUBY[未登録済][みとうろくずみ][unregistered]]IVS]]
といいます。
[SRC[>>30]]
[208]
[[SVS]] や [[EVS]] が
[[Unicode Consortium]]
の直轄で規定されるのに対し、
[[IVS]]
は外部で定義されたものを
[[Unicode Consortium]]
に登録するという形をとっています。
[119]
[[UTS #37]]
によると、
[[漢字]]その他の[[表意文字]]にあっては、
[[利用者]]の需要すべてを満足する[[異体列]]の単一の[[集成]]を構築することが不可能である、
すなわち研究者、政府、出版社の要件が異なりすぎて単一の[[集成]]に収容することが困難であるゆえに、
複数の独立した[[集成]]をもって各要件を満たせるようにしたものであります。
[SRC[>>19]]
;; [121] それが不可能だと認めてしまうのなら、
[[CJK統合漢字]]がやらかしたことも間違いだったと認めてしまった方が楽なのではないかと思わんでもないw
;; [122] なぜ[[表意文字]]でだけそれが不可能で、
他の[[文字]]では可能なのか説明されてませんが、不思議ですね。
[120]
[[IVD]]
は、[[異体列]]を使った[[テキスト]]の[[情報交換]]を信頼できるものとするべく、
[[異体列]]に単一の定義を存在せしめるものであります。
[[IVD]]
の目的は、
[[IVS]]
を固有の[[グリフ的部分集合]]に関連付けることです。
[[IVS]] が[[テキスト]]に現れたなら、
[[IVD]]
をチェックすればその意図する所を特定できます。
ゆえに[[登録済IVS]] は、テキスト交換に使うのに[RUBYB[適したもの][suitable]]です。
[SRC[>>19]]
[126] [[未登録済IVS]]は、テキスト交換で使うべきではありません。
[SRC[>>19]]
*** IVD の版
[145]
[[IVD]]
は、
[[Unicode Consortium]]
の
[[Webサイト]]で公表されています [SRC[>>21]]。
[147] [[UCD]] とは別のデータベースになっていて、
[CITE[The Unicode Standard]]
とは同期せずに、
必要があるときに更新されているようです。
過去に公開された版はそのままで、
新しい版を公開されていく形になっています。
各版で完結しているので、
歴史的経緯を気にしないのであれば常に最新版だけを見ていれば済みます。
[236]
[[IVD]]
の版は[[日付]]で命名されています。
[SRC[>>21]]
;; [148] 常に最新版を表す [[URL]] が提供されていないのが、少し使いづらい。
[239]
一度出版された版は変更されないこととされています。
[SRC[>>21]]
しかし実際のものを見るとなぜか[[日付]]よりずっと新しい[[タイムスタンプ]]のものが紛れ込んでいます。
- [238] [DFN[[CODE[2007-12-14]]]]
<https://www.unicode.org/ivd/data/2007-12-14/>
-- [237] [CODE[Adobe-Japan1]] が追加されました。
-- [242] [[テキストファイル]]は[TIME[2012-03-02]], [TIME[2012-03-23]] 付で更新されています。
[TIME[2020-12-27T03:12:21.600Z]]
-- [241] [TIME[2007-12-19]] 付のオリジナル:
[CITE[Index of /ivd/data/2007-12-14]], [TIME[2007-12-26T06:56:45.058Z]],
[TIME[2020-12-27T03:11:27.100Z]]
<https://web.archive.org/web/20071226065605/http://www.unicode.org/ivd/data/2007-12-14/>
-- [243]
<https://www.unicode.org/ivd/data/2007-12-14/IVD_Stats.txt>
に2件の重複の旨のコメントがあります。
- [263] [DFN[[CODE[2010-11-14]]]] <https://www.unicode.org/ivd/data/2010-11-14/>
-- [244] [CODE[Hanyo-Denshi]] が追加されました。
-- [245] [[テキストファイル]]は[TIME[2012-03-02]], [TIME[2012-03-23]] 付で更新されています。
[TIME[2020-12-27T03:12:21.600Z]]
-- [246] [TIME[2010-11-17]] 付のオリジナル:
[CITE[Index of /ivd/data/2010-11-14]], [TIME[2011-02-03T16:29:18.910Z]], [TIME[2020-12-27T03:22:34.000Z]] <https://web.archive.org/web/20110203162133/http://unicode.org/ivd/data/2010-11-14/>
- [264] [DFN[[CODE[2012-03-02]]]] <https://www.unicode.org/ivd/data/2012-03-02/>
-- [255] [CODE[Adobe-Japan1]] に追加がありました。
-- [256] [CODE[Hanyo-Denshi]] に追加がありました。
-- [259] この版から [[IVC]] 単位に分離された[[代表グリフ]]の [[PDF]] が追加されました。
-- [257] ファイルは[TIME[2012-03-02]], [TIME[2012-03-08]], [TIME[2012-03-23]],
[TIME[2012-07-02]]付で更新されています。
--- [261]
7月2日付の更新は、
サーバー上のファイル破損を修復したものとコメントがあります:
[TIME[2012-07-02T15:00:18.000Z]], [TIME[2020-12-27T03:46:37.534Z]] <https://www.unicode.org/ivd/data/2012-03-02/IVD_Sequences.txt>
--- [262]
3月2日付のオリジナル版は [[Internet Archive]] にもなし。
-- [260]
<https://www.unicode.org/ivd/data/2012-03-02/IVD_Stats.txt>
に16件の重複の旨のコメントがあります (14件増)。
- [265] [DFN[[CODE[2014-05-16]]]] <https://www.unicode.org/ivd/data/2014-05-16/>
-- [272] [CODE[Moji_Joho]]
が追加されました。
-- [266] [[テキストファイル]]は[TIME[2014-05-16]]付、
[[代表グリフ]] [[PDF]] は[TIME[2015-05-07]]付で更新されています。
-- [267] この版から全体の[[代表グリフ]]の [[PDF]] が提供されなくなりました。
-- [268] [TIME[2014-05-12]]付のオリジナル:
[CITE[Index of /ivd/data/2014-05-16]], [TIME[2014-07-14T00:57:03.026Z]], [TIME[2020-12-27T04:27:42.000Z]]<https://web.archive.org/web/20140714005622/http://www.unicode.org/ivd/data/2014-05-16/>
--- [269] [[テキストファイル]]は[TIME[2014-05-16]]付。
--- [270] [CODE[Moji_Joho]] の[[代表グリフ]] [[PDF]] ファイルは不存在。
-- [271] [TIME[2015-05-07]]付更新は
[CODE[Moji_Joho]]
の追加によるものとみられます。 [[PDF]]
ファイル内に書かれた日付はいずれも 「May 16, 2014」。
-- [292]
<https://www.unicode.org/ivd/data/2014-05-16/IVD_Stats.txt>
に
[CODE[Hanyo-Denshi]]
と
[CODE[Moji_Joho]]
の [[IVS]] の共有の情報が追加されました。
- [280] [DFN[[CODE[2016-08-15]]]] <https://www.unicode.org/ivd/data/2016-08-15/>
-- [283] [CODE[MSARG]] が追加されました。
-- [281] [[テキストファイル]]は[TIME[2016-08-15]]付。
-- [282] [[代表グリフ]] [[PDF]] ファイルは[TIME[2016-09-11]]付。
--- [146]
[CITE[Index of /ivd/data/2016-08-15]], [TIME[2016-08-16T09:17:58.242Z]], [TIME[2020-12-27T05:00:56.000Z]]<https://web.archive.org/web/20160816091712/http://www.unicode.org/ivd/data/2016-08-15>
によると当時は[TIME[2016-08-13]]付だったようです。
残念ながら
[[Internet Archive]] には現存しません。
- [294] [DFN[[CODE[2017-12-12]]]] <https://www.unicode.org/ivd/data/2017-12-12/>
-- [293] [CODE[Adobe-Japan1]] に追加されました。
-- [295] [CODE[Moji_Joho]] に追加されました。
-- [296] [CODE[KRName]] が追加されました。
-- [297] ファイルは[TIME[2017-12-12]]付。
-- [319] [CODE[IVD_Stats.txt]] に重複情報が6件追加。
- [315] [DFN[[CODE[2020-11-06]]]] <https://www.unicode.org/ivd/data/2020-11-06/>
-- [316] [CODE[MSARG]] に追加されました。
-- [317] ファイルは[TIME[2020-11-06]]付。
-- [318] [CODE[IVD_Stats.txt]] だけ[TIME[2020-12-17]]付。
変更されたものかどうかは
[[Internet Archive]] からは不明。
- [377] [DFN[[CODE[2022-09-13]]]]
-- [388] [CITE[Index of /ivd/data/[[2022-09-13]]]], [TIME[2022-09-20T08:19:34.000Z]] <https://www.unicode.org/ivd/data/2022-09-13/>
-- [389] [CODE[Adobe-Japan1]] に1つ追加されました。
-- [394] [CODE[IVD_Stats.txt]] に重複情報が1件追加。
-- [379] 評価: >>456
*** IVD のファイル
[149]
[[IVD]] の[[ファイル]]
[DFN[[CODE[IVD_Collections.txt]]]],
[DFN[[CODE[IVD_Sequences.txt]]]]
は、
[[IVC]]
と
[[IVS]]
の情報を含んだ[[テキストファイル]]です。
その構造は [[UTS #37]] で説明されています [SRC[>>19]] が、
[[UCD]] 同様の [CODE[;]] 区切りの行指向データファイルです。
[SEE[ [[UCD]] ]]
[150]
[CODE[IVD_Collections.txt]]
には、
[[Ideographic Variation Collection]]
の情報が記述されています。
[[IVC]] を表す識別子、
[[IVC]] 内の識別子の[[正規表現]]、
[[IVC]] の説明の [[Webサイト]]の [[URL]] が書かれています。
[SRC[>>19]]
[152]
[CODE[IVD_Sequences.txt]]
には、
[[IVS]]
の情報が記述されています。
[[IVS]] の各[[文字]]の[[符号点]]、
[[IVC]] を表す識別子、
[[IVC]] 内の識別子の組が並べられています。
[SRC[>>19]]
[231]
他に[[代表グリフ]]の一覧表の [[PDF]]
ファイルがあります。
古い版では [[IVC]] 横断の一覧表だったようですが、
新しい版では [[IVC]] ごとの一覧表になっているようです
(ファイルサイズが大きすぎるからでしょうか)。
改版のたびに変更のない [[IVC]]
の [[PDF]]
まで改訂されているようです (少なくても日付が書き換わっています)。
(意図しない[[代表グリフ]]変更が生じていないか、不安になりますね。)
** IVC
[140]
[[IVD]] では、
[[IVS]] (とそれに関連付けられた[[グリフ的部分集合]]) は、
[RUBYB[集成][collection]]
([DFN[Ideographic Variation Sequence Collection]],
[DFN[Ideographic Variation Collection]],
[DFN[IVC]])
の[RUBYB[エントリー][entry]]という形にグループ化されます。
[SRC[>>19]]
[212]
[[IVC]]
は0個[[以上]]の [[IVS]] と付加情報という形を採ります。
[[IVD]] は [[IVC]] の[[和集合]]という形になります。
[[IVS]] は複数の [[IVC]] に属することがあります。
[211]
[[IVC]]
は特定の[[利用者]]コミュニティーの要件を満たす[[グリフ的部分集合]]を集めたものとなることが期待されます。
しかし
[[IVC]]
の登録は、
特定目的への[RUBYB[適当性][suitability]]を暗示するものではありません。
[[IVS]] の有用性や
[[IVC]]
全体としての有用性は、
その用途に依存します。
登録者は
[[IVC]]
の意図を説明する[RUBYB[べき][encouraged]]で、
[[利用者]]は