-
Notifications
You must be signed in to change notification settings - Fork 4
/
773.txt
314 lines (237 loc) · 10.9 KB
/
773.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
[2] [DFN[Unicode [RUBYB[用字系特性値]@en[Script Property Value]]]]は、[[Unicode]] における[[用字系]]を表す[[識別子]]です。
* 仕様書
[REFS[
- [1] [CITE@en-us[UAX #24: Unicode Script Property]] ([TIME[2013-09-27 22:15:13 +09:00]] 版) <http://www.unicode.org/reports/tr24/#Values>
- [26] [CITE@en-us[UAX #24: Unicode Script Property]], [TIME[2022-08-25T17:19:20.000Z]], [TIME[2022-11-12T09:03:25.601Z]] <https://www.unicode.org/reports/tr24/#Classification_by_Script>
- [14] [CITE@en-us[UAX #24: Unicode Script Property]], [TIME[2022-08-25T17:19:20.000Z]], [TIME[2022-11-12T08:44:05.701Z]] <https://www.unicode.org/reports/tr24/#Script>
-- [28]
[CITE@en-us[UAX #24: Unicode Script Property]], [TIME[2022-08-25T17:19:20.000Z]], [TIME[2022-11-12T09:13:04.920Z]] <https://www.unicode.org/reports/tr24/#Relation_To_ISO15924>
-
[48]
[CITE@en-us[UAX #24: Unicode Script Property]], [TIME[2022-08-25T17:19:20.000Z]], [TIME[2022-11-12T14:20:08.401Z]] <https://www.unicode.org/reports/tr24/#Implementation>
]REFS]
* 値
[11]
[CODE[Arabic]]
や
[CODE[Nyiakeng_Puachue_Hmong]]
のような値が各[[用字系]]に割り当てられています。
[[Unicode]]
に新規[[用字系]]が追加されるたびに値も割当られます
[SRC[>>14]]。
[36]
[[点字]]は他の[[用字系]]と同じレベルの[[用字系]]とは言えないものではありますが、
1つの[[用字系]]として扱われています。
[SRC[>>14]]
[13]
[[別名]]として4文字の短縮形等も付与されています。
[SEE[ [[特性 (UCD)]] ]]
[15]
具体的な[[用字系]]を表す値は[DFN[[RUBYB[明示][explicit]]値]]と呼ばれます。
[SRC[>>14]]
[16]
特別な意味を表す[DFN[[RUBYB[暗示][implicit]]値]]が3つあります ([CODE[Inherited]],
[CODE[Common]],
[CODE[Unknown]])。
[SRC[>>14]]
** [CODE[Inherited]]
[17]
[DFN[[CODE[Inherited]]]]
は、
複数の[[用字系]]で使われる[[文字]]で、
前の[[基底文字]]の[[用字系]]を[RUBYB[継承][inherit]]するものです。
[SRC[>>14]]
[18]
例えば
[[nonspacing combining mark]],
[[enclosing combining mark]],
[CODE(charname)@en[ZWNJ]],
[CODE(charname)@en[ZWJ]]
が該当します。
[SRC[>>14]]
;; [35] それらのすべてが [CODE[Inherited]] と決められているわけではないようです。
[SEE[ [[Script (UCD)]] ]]
[38] 「複数」は [VAR[n]] = 1 のこともあるようです。
[21]
[[用字系符号]]では
[CODE[Qaai]],
[CODE[Zinh]]
に相当します。
** [CODE[Common]]
[19]
[DFN[[CODE[Common]]]]
はその他 ([CODE[Inherited]] 以外) の複数の[[用字系]]で用いられる[[文字]]です。
[SRC[>>14]]
[22]
[[用字系符号]]では [CODE[Zyyy]] に相当します。
[24]
[[Unicode]] では[[句読点]]等の[[記号]]の多くが特定の[[用字系]]に属さないで共用とされていて、
[CODE[Script]] が [CODE[Common]] になっています。
[39] 「複数」は [VAR[n]] = 1 のこともあるようです。
[25]
[[Unicode]] では[[用字系]]はフラットで排他的なので、
1つの[[用字系]]に確定できないものは複数に属すると判定されているようです。
[SEE[ [[Script (UCD)]] ]]
例えば「ー」 ([[長音記号]]) は[[平仮名]]でも[[片仮名]]でもあって、
どちらかだけに属させることができないので、
[CODE[Common]]
となっています。
[40]
[[丸付き文字]]なども [CODE[Common]] になっていることがあります。
[SEE[ [[Script (UCD)]] ]]
** [CODE[Unknown]]
[20]
[DFN[[CODE[Unknown]]]]
は[[未割当符号点]],
[[私用符号点]],
[[非文字符号点]],
[[サロゲート符号点]]です。
[SRC[>>14]]
[27]
[[書誌]]に[[用字系]]を記述するとき、
[[用字系]]を判定できないことを表すために使えます。
[SRC[>>26]]
[23]
[[用字系符号]]では [CODE[Zzzz]] に相当します。
* 文脈
[9]
[[UCD]]
の
[CODE[Script][Script (UCD)]]
や
[CODE[Script_Extensions]]
の値で使われます。
[12]
[[UCD]] の special tag [CODE[<script>]] で使われます。
[6] [[XForms]] の [CODE(XMLa)@en[[[inputmode]]]] [[属性]]の値の一部として用いられています。ただし
[CODE(XMLa)@en[[[inputmode]]]] [[属性]]ではいくつか追加の値が用意されています。
[SEE[ [[用字系字句]] ]]
[REFS[
- [7] [CITE@EN[XForms 1.1]] ([TIME[2010-08-12 22:45:33 +09:00]] 版) <http://www.w3.org/TR/xforms/#mode-scripts>
]REFS]
* 処理
[41]
[[Unicode]] ではすべての[[符号点]]に [CODE[Script]] で1つ、
[CODE[Script_Extensions]] で1つ[[以上]]の[[用字系]]が割り当てられており、
[[UCD]] で提供されています。
[[UAX #24]] ではその処理方法は特に規定がありませんが、
[[文字列]]に対する各種処理で活用することが想定されています。
[FIG(short list)[ [42] [[文字]]の[[用字系]]を使った処理
- [[パターンマッチ]]
-- [CODE[\p]]
- [[連なり]]の検出
- [[spoofing]] 防止処置
- [[文字のレンダリング]]の方法決定
]FIG]
** 暗示値の解決
[43]
[[暗示値]]は[[用字系]]の情報が無いに等しいので、
処理によっては類推した[[明示値]]に置き換えることになります。
[44]
[[符号点]]には [CODE[Script][Script (UCD)]] と [CODE[Script_Extensions]]
があります。
[CODE[Script][Script (UCD)]] が [CODE[Common]] や [CODE[Inherited]] でも、
[CODE[Script_Extensions]] は[[明示値]]になっていることがあります。
;; [45] また、 [CODE[Script][Script (UCD)]] が[[明示値]]であっても、
[CODE[Script_Extensions]] には他の複数の値が設定されていることがあります。
[46]
[CODE[Inherited]] は前の文字の[[用字系]]を引き継ぐとされています。
[[UAX #24]] では具体的な解決手順は決められていませんが、
前の[[暗示値]]がある[[文字]]まで戻ってそれを使うことになります。
[EG[
[47] 例えば[[濁点]]は [CODE[Inherited]] なので、
前に[[平仮名]]があれば[[平仮名]]、
[[片仮名]]があれば[[片仮名]]になります。
]EG]
[54]
[[文字列]]中の[[用字系]]の[[境界]]決定時には[[基底文字]]と
[[combining mark]] ([CODE[Mc]], [CODE[Mn]], [CODE[Me]])
の間で分離されるべきではありません。
つまり [[combining mark]] は、その [CODE[Script][Script (UCD)]]
の値が何であれ、[[基底文字]]と同じ値に解決されるべきということになります。
[SRC[>>48]]
[56]
実装は[[結合文字列]]や[[拡張書記素クラスター]]において、
[CODE[Inherited]] でも [CODE[Common]] でも''ない''最初の[[文字]]の
[CODE[Script][Script (UCD)]]
(なければ [CODE[Common]])
をすべての[[文字]]に適用するべきです。
[SRC[>>48]]
;;
[55]
[[spacing combining mark]] は普通は1つの[[用字系]]でしか使われないのでその
[CODE[Script]] を持っています [SRC[>>48]]。
ということは普通の使われ方をしていれば[[基底文字]]と同じになるはずですが、
そうでないときは[[基底文字]]と違う [CODE[Script]] のことも出てきます。
[[nonspacing mark]] は普通は [CODE[Script]] が [CODE[Inherit]]
になっていますが、特定の[[用字系]]でしか使われないものなど例外もあります [SRC[>>48]]。
;; [57]
[CODE[Inherited]] や [CODE[Common]] だけ示されていますが、
この場合は [CODE[Unknown]] も同じに扱ってしまってよさそうです。
-*-*-
[49]
[[連なり]]の境界を探すにあたって [CODE[Common]] 等を解決する必要が生じることがあります。
[SRC[>>48]]
[51]
最も単純な[[発見的方法]]は、
前の[[文字]]の[[用字系]]に依るというものです。
この方法は実際わりとうまくいきます。
が、いつでもうまくいくとは限りません。
[SRC[>>48]]
[EG[
[50]
例えば
「... gamma (γ) is ...」
では前の括弧が[[ラテン文字]]扱いに、
後の括弧が[[ギリシャ文字]]扱いになってしまいます。
[SRC[>>48]]
]EG]
[52]
普通は組になった[[句読点]] ([[括弧]]や[[引用符]]の類) はその周りに属するとみなし、
周りの文字列の[[用字系]]と同じになるべきです。
できれば開き側と閉じ側の[[句読点]]は同じ[[用字系]]になるべきです。
[SRC[>>48]]
;; [53] ところがその[[句読点]]の使い方は[[文字列]]だけから決められるとも限らないのが難しいところです。
[SRC[>>48]]
* 関連
[3] [[ISO 15924]] も同様な[[用字系符号]]を定義しています。ただし [[Unicode]] と [[ISO 15924]]
では[[用字系]]の粒度が異なっているため、必ずしも一対一対応していません。
[5] [[ISO 15924]] の登録簿 (>>4) には、両者の対応関係も記載されています。
[29]
[[Unicode]] は、対応関係にある [[ISO 15924]] 符号を出来るだけ別名に設定している
[SRC[>>28]] と説明しています。
[31]
[[ISO 15924]]
で[[私用]]に当たる [CODE[Q]] から始まる[[符号]]の一部を
[[Unicode]]
側の値でも使っています。
将来変更の際も[[後方互換性]]のため[[別名]]として残すとされています。
[SRC[>>28]]
[32]
実際に [CODE[Inherited]] の旧[[別名]] [CODE[Qaai]] は、
新たな[[別名]] [CODE[Zinh]] が追加されましたが、そのまま残されています。
[SRC[>>28]]
他に [CODE[Qaac]] の例があります。
現在定義されているのはその2例だけです。
[30]
なお
[[ISO 15924]] の [[RA]] は [[Unicode Consortium]] が受託しており、
[[ISO 15924]] の符号の登録と [[Unicode]] の値の追加は協調して行われているようです。
;; [33] 従って今後 [CODE[Q]] から始まる符号を使う必要も生じないのかもしれませんが。
;; [34] なお [CODE[Q]] から始まると[[私用]]とするのは
[[ISO 15924]]
の仕様です。
[[Unicode用字系特性値]]には[[私用]]の規定はありません。
[REFS[
- [4] [CITE@en-gb[[[ISO 15924]] - Code Lists]] ([TIME[2012-08-31 00:42:44 +09:00]] 版) <http://www.unicode.org/iso15924/codelists.html>
]REFS]
-*-*-
[37]
[[文字の名前]]の先頭には[[用字系]]が付されていることが多いです。
[[文字の名前]]と[[用字系]]の長い名前は対応関係が保たれる形で決められています。
[SRC[>>11]]
[8] [[用字系]]の名前は[[ブロック名]]と似ていることが多いですが、両者は異なります。
[[文字]]が割り当てられている[[ブロック]]と[[用字系]]の関係も絶対的なものではありません。
[10]
他の符号体系は[[用字系]]を参照。
* メモ