-
Notifications
You must be signed in to change notification settings - Fork 4
/
909.txt
194 lines (144 loc) · 8.16 KB
/
909.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
[2]
[[OpenType]]
の[[機能][フォント機能]]では、
[[文字]] ([[グリフ]])
の体系は[DFN[[RUBYB[[RUBY[用][よう]][RUBY[字][じ]][RUBY[系][けい]]][script]]]]と[DFN[[RUBYB[[RUBY[言][げん]][RUBY[語][ご]][RUBY[系][けい]]][language system]]]]の2段階で識別されます。
[SRC[>>1]]
* 仕様書
[REFS[
-
[11]
[CITE@ja-jp[Advanced typographic tables - OpenType Layout (OpenType 1.9) - Typography | [[Microsoft]] Docs]], [[PeterCon]], [TIME[2022-08-28T02:06:41.000Z]] <https://docs.microsoft.com/ja-jp/typography/opentype/spec/ttochap1#scripts>
-
[15]
[CITE@ja-jp[Advanced typographic tables - OpenType Layout (OpenType 1.9) - Typography | [[Microsoft]] Docs]], [[PeterCon]], [TIME[2022-08-28T02:09:49.000Z]] <https://docs.microsoft.com/ja-jp/typography/opentype/spec/ttochap1#language-systems>
-
[18]
[CITE@ja-jp[OpenType layout common table formats (OpenType 1.9) - Typography | [[Microsoft]] Docs]], [[PeterCon]], [TIME[2022-08-29T10:17:57.000Z]] <https://docs.microsoft.com/ja-jp/typography/opentype/spec/chapter2#script-list-table-and-script-record>
-
[28]
[CITE@ja-jp[[[GPOS]] — Glyph Positioning Table (OpenType 1.9) - Typography | Microsoft Docs]], [[PeterCon]], [TIME[2022-09-07T06:10:12.000Z]] <https://docs.microsoft.com/ja-jp/typography/opentype/spec/gpos>
]REFS]
* 用字系
[12]
[DFN[[RUBYB[[RUBY[用][よう]][RUBY[字][じ]][RUBY[系][けい]]][script]]]]は、
関連する[[文字]]を集めたものです。
[[用字系]]は1つかいくつかの[[言語]]で使われるかもしれないものです。
[SRC[>>11]]
[13]
[[フォント]]は1つの[[用字系]]にだけ対応することもできますし、
いくつもの[[用字系]]に対応することもできます。
[SRC[>>11]]
[14]
[[OpenType Layout]] [[フォント]]においては、
[[用字系]]は[[タグ][OpenTypeタグ]]で識別されます。
** 既定用字系
[20]
[CODE[GSUB]] [[表][OpenType表]]や
[CODE[GPOS]] [[表][OpenType表]]では[[用字系タグ]]に
[DFN[[CODE[DFLT]]]]
を指定できます。
[RUBYB[[[用字系]]特有][script-specific]]ではない[[機能][フォント機能]]を定義するために使います。
[SRC[>>18]]
[21]
[[応用]]は、
対象[[テキスト]]の[[用字系]]についての[[用字系]]表が存在していない場合や、
対象[[テキスト]]が特定の[[用字系]]を持たないとき (例えば[[記号]]のみ含む場合)
に、
[CODE[DFLT]] [[用字系]]表を使う[RUBYB[べき][should]]です。
[SRC[>>18]]
;; [22]
[[記号]]等の[[文字]]の [[UCD特性]]の[[用字系]]が [CODE[Common]] であるとしても、
必ずしも [CODE[DFLT]] を適用するべきとは限りません。
前後の[[文字]]の[[用字系]]でまとめて処理するのが効率的なら、
そうしても構いません [SRC[>>18]]。
;; [23]
つまり[[文字]]やその[[連なり]]の[[用字系]]を決定する具体的な方法は
[[Unicode]] も [[OpenType]] も定めておらず、
[[実装依存]]になります。
[[相互運用性]]とは。
[24]
[[OpenType]] は、[[言語]]は[[用字系]]を使って書かれるものだから
[CODE[DFLT]] [[用字系]]には既定以外の[[言語系]]用の指定はある[RUBYB[べきではない][should not]]、
としつつも、そのような指定は認められるもので、
[[応用]]もそれに対応する[RUBYB[べき][should]]だとしています。
[SRC[>>18]]
;; [25]
[[記号]]等が[[用字系]]に属すると判定されるかどうか不定なら、
[CODE[DFLT]] [[用字系]]の指定に従って処理される可能性があるわけですから、
[[フォント]]は[[相互運用性]]のため [CODE[DFLT]] [[用字系]]にも[[言語系]]依存の指定を含めておくべきということになる気がしますが。
** 用字系を使った文字列分割
[SEE[ [[連なり]] ]]
* 言語系
[4]
[DFN[[RUBYB[[RUBY[言][げん]][RUBY[語][ご]][RUBY[系][けい]]][language system]]]]は、
ある[[用字系]]を利用する[[言語]]の体系によって区別するものです。
[[用字系]]は[[言語系]]で細分することができます [SRC[>>15]]。
[5]
[[漢字]]を使う[[日本語]]と[[中文]]のように、
同じ[[文字]]を使っていても異なる慣習で運用されている実態を反映するために使われています。
[27]
[[OpenType Layout]] [[フォント]]においては、
[[言語系]]は[[タグ][OpenTypeタグ]]で識別されます。
[16]
[[言語系]]は[[用字系]]とは違って[RUBYB[文章処理クライアント][text-processing client]]が[[文字]]だけを見て確定させられるとは限りません。
[[利用者]]や [[OS]] が[[言語系]]を指定する必要があります。
[SRC[>>15]]
それがない場合は文章処理クライアントは[[用字系]]ごとの既定の言語系の情報を使うことになります
[SRC[>>15, >>28]]。
[17]
[[フォント]]は、
[[用字系]]や[[言語系]]やその両方に[[仕立て]]た情報を記述できます。
[SRC[>>15]]
** 既定言語系
[6]
[[用字系]]だけが指定され[[言語系]]が指定されない状態は[DFN[[RUBYB[[RUBY[既][き]][RUBY[定][てい]][RUBY[言][げん]][RUBY[語][ご]][RUBY[系][けい]]][default language system]]]]とされます。
[10] これを表すために [DFN[[CODE[dflt]]]]
という[[言語系タグ]]が使われています。
[SRC[>>1]]
[7]
何を[[既定言語系]]にするかは[[フォント]]設計者の裁量に委ねられています。
[SRC[>>1]]
[EG[
[8]
[[中華人民共和国]]市場を対象とした[[フォント]]は[[簡体字中文]]を[[既定言語系]]にすればよく、
[[日本]]市場を対象にした[[フォント]]は[[日本語]] ([[常用漢字]]の体系) を[[既定言語系]]にすればよい、
ということです。
]EG]
[9] ただしどれを[[既定言語系]]に選ぶかによって既定でない[[言語系]]に対応するための
[[lookup]] 等の記述が複雑になってしまうことがあります。
対応したい[[言語系]]のうちで最大公約数的な方法を使っている[[言語系]]を既定とし、
それ以外はそこからの差分で記述するのが賢いのかも知れません。
[SRC[>>1]]
* 文脈
[19]
[CODE[GSUB]] [[表][OpenType表]]や
[CODE[GPOS]] [[表][OpenType表]]は、
[[用字系タグ]]と[[言語系タグ]]の組み合わせに対して適用されるべき[[機能][フォント機能]]を記述します。
[29]
[CODE[JSTF]] [[表][OpenType表]]は、
[[用字系タグ]]と[[言語系タグ]]の組み合わせに対して適用されるべき事項を記述します。
[26]
[CODE[BASE][BASE (OpenType)]] [[表][OpenType表]]は、
[[用字系タグ]]と[[言語系タグ]] (と他の要素) の組み合わせに対して適用されるべき[[基線]]を記述します。
[32]
これらを通して[[言語情報によるグリフ選択]]等が実現されます。
* 処理
[SEE[ [[GPOS]], [[GSUB]], [[BASE]], [[JSTF]], [[文字のレンダリング]] ]]
* 関連
[3]
[[IETF言語タグ]]や[[Unicodeロケール識別子]]は[[言語]]中心の[[識別子]]なので[[言語]]の下位分類に[[用字系]]が入っていますが、
[[OpenType]] では[[用字系]]の下位分類に[[言語]]があります。
[30]
[[[CODE[meta]]表][meta (OpenType)]]では
[[IETF言語タグ]]から派生した
[CODE[ScriptLangTag]] が使われます。
[31]
[[[CODE[name]]表][name (OpenType)]]や
[[[CODE[cmap]]表][cmap (OpenType)]]には[[言語ID]]欄があって、
[[言語]]を数値識別子で指定できます。
[[[CODE[name]]表][name (OpenType)]]では[[IETF言語タグ]]も指定できます。
これらの[[表][OpenType表]]の[[言語指定]]は[[文字コード]]の指定と絡み合っています。
[SEE[ [[OpenTypeにおける文字コード]] ]]
* メモ
[1] [CITE@ja-jp[OpenType glyph processing (part 2) - Typography | [[Microsoft]] Docs]], [[alib-ms]], [TIME[2022-08-27T09:52:50.000Z]] <https://docs.microsoft.com/ja-jp/typography/develop/processing-part2#scripts-and-language-systems>