/
13.txt
239 lines (192 loc) · 6.94 KB
/
13.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
* 仕様書
[REFS[
- [142] [CITE[The Unicode Standard, Version 13.0 - ch02.pdf]], [TIME[2020-03-09T17:53:32.000Z]], [TIME[2020-12-06T08:54:12.180Z]]
<https://www.unicode.org/versions/latest/ch02.pdf#G1708>
- [1]
[CITE[The Unicode Standard, Version 13.0 - ch03.pdf]], [TIME[2020-03-09T17:53:34.000Z]], [TIME[2020-12-06T03:41:31.993Z]] <https://www.unicode.org/versions/latest/ch03.pdf#G52443
-- [115] [CSECTION[Application of Combining Marks]]
<https://www.unicode.org/versions/latest/ch03.pdf#G50030>
]REFS]
* 書記素基底
[3] [[特性][特性 (UCD)]]
[DFN[[CODE[Grapheme_Base]]]]
の[[文字]]には、
[[基底文字]]が含まれますが、
[CODE[U+FF9E]], [CODE[U+FF9F]]
は含まれません。
ほとんどの
[[spacing mark]]
が含まれます。
[SRC[>>1 D58]]
[2]
[DFN[[RUBYB[書記素基底][grapheme base]]]]は、
[[特性][特性 (UCD)]]
[CODE[Grapheme_Base]]
の[[文字]]か、
[[標準韓音節ブロック]]です。
[SRC[>>1 D58]]
[4]
[[書記素基底]]は[[拡張済基底]]と似ていますが、多少の出入りがあります。
[REFS[
- [9] [CODE[Grapheme_Base]] の一覧:
<https://chars.suikawiki.org/set/%24unicode%3AGrapheme_Base>
- [11]
[[基底文字]]と
[CODE[Grapheme_Base]]
の比較
<https://chars.suikawiki.org/set/compare?expr1=%24unicode%3Abase-character&expr2=%24unicode%3AGrapheme_Base>
]REFS]
* 書記素拡張子
[5]
[DFN[[RUBYB[書記素拡張子][grapheme extender]]]]は、
[[特性][特性 (UCD)]]
[DFN[[CODE[Grapheme_Extend]]]]
の[[文字]]です。
すべての
[[nonspacing mark]]、
[CODE(charname)@en[ZWJ]],
[CODE(charname)@en[ZWNJ]],
[CODE[U+FF9E]],
[CODE[U+FF9F]],
一部の [[spacing mark]]
が含まれます。
[SRC[>>1 D59]]
[6]
[CODE(charname)@en[ZWJ]],
[CODE(charname)@en[ZWNJ]]
は、
前後が他の[[書記素拡張子]]の列のとき、
それを分断しないように[[書記素拡張子]]に含まれています。
[SRC[>>1 D59]]
[7]
[[書記素基底]]と[[書記素拡張子]]は、[[互いに素]]です。
[SRC[>>1 D59]]
[8]
[CODE[Grapheme_Extend]]
は
[CODE[Grapheme_Cluster_Break]] = [CODE[Extend]]
から導出されたものですが、完全には一致しません。
[SRC[>>1 D59]]
[REFS[
- [10] [CODE[Graphme_Extend]] の一覧
<https://chars.suikawiki.org/set/%24unicode%3AGrapheme_Extend>
- [12] [[spacing mark]]
が
[CODE[Grapheme_Base]]
と
[CODE[Grapheme_Extend]]
のどちらに属するか見る
<https://chars.suikawiki.org/set/compare?expr=$unicode:spacing-mark&expr=$unicode:Grapheme_Base%20-%20$unicode:base-character&expr=$unicode:Grapheme_Extend%20-%20$unicode:nonspacing-mark>
]REFS]
* 書記素クラスター
[13]
[DFN[[RUBYB[書記素クラスター][grapheme cluster]]]]は、
[[UAX #29]]
[[書記素クラスター境界]]間の[[テキスト]]です。
[SRC[>>1 D60]]
[14]
[[UAX #29]]
は[[拡張済書記素クラスター]]と[[遺物書記素クラスター]]を定義している上に、
[[tailor]]
可能と定めています。
[SRC[>>1 D60]]
[19]
[DFN[[RUBYB[拡張済書記素クラスター][extended grapheme cluster]]]]は、
[[UAX #29]]
[[拡張済書記素クラスター境界]]の間の[[テキスト]]です。
[SRC[>>1 D61]]
[15]
[[書記素クラスター]]は[[テキスト]]の水平に segment 化可能な単位です。
いくつかの[[書記素基底]]と、
それに適用されるいくつかの
[[nonspacing mark]]
を合わせたものです。
[SRC[>>1 D60]]
[16] [[結合文字列]]と[[書記素クラスター]]は似ていますが、
同じではありません。
[[結合文字列]]は主に[[正規化]]、
[[比較][文字列の比較]]、
[[検索]]のような処理に関係してきます。
[[書記素クラスター]]は主に
[[text rendering]]
や[[カーソル]]配置、
[[テキストの選択]]のような処理に関係してきます。
[[比較][文字列の比較]]や[[検索]]に関係することもあります。
[SRC[>>1 D60]]
[18]
多くの処理においては、
[[書記素クラスター]]は、
[[書記素基底]]と同じ[[特性][特性 (UCD)]]の1つの[[文字]]のような挙動を示します。
[SRC[>>1 D60]]
-*-*-
[20]
[DFN[[RUBYB[関連付けられた書記素基底][associated grapheme base]]]]は、
[[nonspacing mark]]
が属する[[書記素クラスター]]中の[[書記素基底]]です。
[SRC[>>115 D61b]]
[22]
[[nonspacing mark]]
は、
[[関連付けられた書記素基底]]に[DFN[[RUBYB[適用する][apply]]]]といいます
([DFN[[RUBYB[図形的適用][graphical application]]]])。
[SRC[>>115 D61b]]
;;
[21] [[関連付けられた基底文字]]とそれへの[[適用][関連付けられた基底文字]]と似た意味ですが、少しずつ定義が違います。
[23]
[CODE[Vertical_Orientation]]
は[[書記素クラスター]]の最初の[[文字]]によって定義されます。
[SEE[ [CODE[Vertical_Orientation]] ]]
-*-*-
[24]
[[書記素クラスター]]は、
大まかに言って一般の[[利用者]]が
「[RUBYB[[[文字]]][character]]」
と認識するものを表しています。
[[Unicode]]
は[[結合文字]]その他の仕組みを導入し
「文字」
より細かな単位を[[文字][Unicode文字]]と呼んでしまっているため、
齟齬が生じています。
[27]
[CITE[[[CSS Writing Modes]]]]
の一部の[[規定]]では、
[RUBYB[[[文字]]][character]]とは[[書記素クラスター]]を意味すると定義して使っています。
いちいち[[書記素クラスター]]と書いて使うのが厳密なのでしょうが、
煩雑で読みにくくイメージしがたい文章になってしまいます。
[25]
[CITE[The Unicode Standard]]
は、
[[スロバキア語]] [CODE[ch]]、
「k[SUP[w]]」のような[[修飾子]]付きのもの、
[[合字]]その他のような一般の
「文字」
の単位が必ずしも一定しない事例があることから、
[[言語]]や、
[[照合]]、[[一致]]など[[応用]]にも依存して
「文字」
の決め方は変える必要があるとしています。
[SRC[>>142]]
[26]
[[書記素クラスター]]は、一般の
「文字」
に近いものを[[言語]]に依存しない形で定義したものです。
これを基礎に、[[言語]]や用途によって必要なら
[[tailor]]
して使うことが期待されています。
[SRC[>>142]]
* 応用
[17]
[[UTR #50]]
や
[CITE[[[CSS Writing Modes]]]]
は[[書記素クラスター]]を使って[[書字方向]]の処理を定めています。
[30]
[[Unicode用字系特性値]]
* フォント
[28] [CODE[GSUB]], [CODE[cmap]]
[29] [[Uniscribe]] は[[クラスター]]という単位を持っています。
[[書記素クラスター]]に近いものに見えますが、同じかどうかは不明です。
[SEE[ [[連なり]], [[shaping engine]]]]
* 関連
[SEE[ [[組合せて使う文字]] ]]
* メモ