/
948.txt
265 lines (204 loc) · 10.3 KB
/
948.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
* 仕様書
[REFS[
- [3]
[CITE@en-us[[[OpenType specification]] - Typography | Microsoft Docs]], [[PeterCon]], [TIME[2020-10-03 18:41:14 +09:00]] <https://docs.microsoft.com/en-us/typography/opentype/spec/>
- [42]
[CITE@en[Fonts - TrueType Reference Manual - Apple Developer]], [[Apple Inc.]], [TIME[2022-07-12T17:06:25.000Z]], [TIME[2022-08-26T11:53:35.216Z]] <https://developer.apple.com/fonts/TrueType-Reference-Manual/>
]REFS]
[20]
当初 [[Apple]] が [[TrueType]] を開発し [[Microsoft]] も採用しましたが、
後に [[Microsoft]] と [[Adobe]] がそれを拡張する形で [[OpenType]] を開発しました。
[21]
現在 [[Apple]] は自社ウェブサイトで [[TrueType]] の[[仕様書]]を公開しています
[SRC[>>42]]。
[[Microsoft]] は自社ウェブサイトで [[OpenType]] の[[仕様書]]を公開しています
[SRC[>>3]]。
[22]
従って [[TrueType]] よりも [[OpenType]]
の方が新しいバージョンで機能が豊富ということになるのですが、
[[仕様書]]としては別物で、技術的に共通でも仕様書は同内容ではありません。
そして両者それぞれに改訂されているので、
[[OpenType]] 仕様書になく [[TrueType]] 仕様書にはある機能もいくつかあります。
この機能は [[Apple]] の仕様書を見よ、
この機能は [[Microsoft]] の仕様書を見よ、
と相互に参照しあっています。
[23]
両仕様書には、 [[Microsoft]] はこう実装している、
[[Apple]] はこう実装している、
名前を挙げずにこういう実装もある、
というような記述も含まれています。
公的な[[工業標準]]というよりは企業の技術公開文書という性質の強い、
私的な規格ですが、[[事実上の標準]]の地位を得ています。
;; [24]
曖昧な記述が多く[[行間を読む]]ことや実装状況を自分で調べることが必要で、
技術ドキュメントとしては良くても[[工業標準]]としてみると品質には不満がありますが、、、
[[仕様書]]だけを読んで[[相互運用可能]]に実装できるとはとても思えません。
[28]
[[Apple]] も [[Microsoft]] も自社の技術文書の公開サイトの1項目として仕様書を提供しているので、
仕様書として独立した形になっていないのが困ったところです。
[29] 本段落執筆時点では
[[Microsoft]] 版の変更履歴に
「Version 1.9
Released December 2021」
と書かれているのですが、
ページの日付 (おそらく [[Microsoft]] のドキュメント管理システムがつけているもの)
は
「2022/06/16」
となっていて、半年新しいことになってます。でもそれが何を意味しているのかわかりません。
[30]
[[Webサイト]]で最新版(だけ)が公開されているのに、バージョンがついていて、
でもそのバージョンと無関係に更新されていて、今見てるのがバージョン何なのかわからない、
引用して数年後に記述が食い違っていたらどう理解したらいいのかわからない、
という困った状況です。
-*-*-
[25]
[[ISO/IEC]]
で
[DFN[ISO/IEC 14496-22]]
として[[国際標準]]になっています。
[[規格票]]は
[[ISO]] の
[[Webサイト]]で無償公開されています [SRC[>>41]]。
その内容は [[Microsoft]] の [[OpenType]] 仕様書をアレンジしたもののようです。
(そんな品質でも[[国際標準]]になれるのですね。)
[27]
[TIME[令和4(2022)年][2022]]時点の最新版は[TIME[西暦2020年版][2020]]です。
一方 [[Microsoft]] 版の最新版は[TIME[西暦2021年][2021]]のものです。
こうしたものは一度[[国際標準]]の判子を押されたら後は放置されがちですが、
比較的きちんとメンテナンスされているみたいですね。
[26]
一般には [[ISO/IEC]] よりも [[Microsoft]] の仕様書が参照されているようです。
両者の内容は完全に一致しているわけではないのですが、
差分ははっきりしないので、
[[ISO/IEC]] 版を参照するのはリスキーといえます。
[31]
[[Microsoft]] の仕様書には
>
OpenType 1.9 incorporates revisions in Draft Amendment 2 of the 4th edition of the ISO/IEC 14496-22 “Open Font Format” standard.
と書かれています。ということは(少なくてもこの版では)
まず [[ISO/IEC]] 版の改訂を作って、それを
[[Microsoft]] 版に適用する、という順番で開発してるようです。
[[DAM]] 段階で先走ってるのは、投票で覆ることはないという前提で進んでるのでしょうか。
[REFS[
-
[41]
[CITE[Publicly Available Standards]], [[ISO (International Organization for Standardization)]], [TIME[2022-08-17T07:16:29.000Z]], [TIME[2022-08-26T11:50:13.545Z]] <https://standards.iso.org/ittf/PubliclyAvailableStandards/#:~:text=14496>
]REFS]
* データ構造
[FIG(short list)[ [7] [[OpenType]]
- [[大エンディアン]]
- [CODE[LONGDATETIME]]
- [[UTF-16BE]]
- [[IETF言語タグ]]
- [CODE[cmap]]
- [CODE[GDEF]]
- [CODE[GSUB]]
- [CODE[GPOS]]
- [[feature][feature (OpenType)]]
- [CODE[post][post (OpenType)]]
]FIG]
* 入門
[4] [TIME[2011-04-18T15:00:00.000Z]], [TIME[2020-12-27T10:05:42.313Z]] <https://www.iwatafont.co.jp/news/img/about_font.pdf>
[8] [CITE@ja[OpenType フォント・フォーマット]], [TIME[2020-12-28T08:42:37.000Z]] <https://aznote.jakou.com/prog/opentype/index.html>
* タグ
[32]
[[表]]や[[用字系]]や[[機能][フォント機能]]などの識別には[[タグ]]が使われています。
[[タグ]]は4文字の[[ASCII文字]]です。
[37]
こういう[[プロトコル要素]]では[[記号]]類は敬遠されがちですが、
[[TrueType]] / [[OpenType]] ではそういう[[忌避]]はないみたいで、
[CODE[OS/2]] [[表]]のように [CODE[/]] が入っていたり、
[CODE[CFF ]] [[表]]のように [CODE[ ][SP]] が入っていたりします。
[39]
[[大文字・小文字を区別する]]上に、[[大文字]]・[[小文字]]のどちらも使われています。
パッと見た感じ[[大文字]]と[[小文字]]の区別だけで使い分けられているものはまだ無いみたいですが。
;; [38] お陰で[[変数名]]にしたいときに困ります。
-*-*-
[33]
[[表]]以外の[[タグ]]は [[Microsoft]] の仕様書に[[登録簿]] (Registry)
があって、そこに登録できることになっています。
[[Microsoft]] を含む[[フォント]]関係事業者各社が登録しているようです。
[34]
なぜか登録制度になっていますが、[[仕様書]]に組み込まれていて、
他の[[規格]]のように[[仕様書]]の改版と独立して登録できる制度とは違うようです。
[35]
[[ISO/IEC]] 版の [[ISO/IEC 14496-22]] も登録簿部分も規格本文に含めています。
[36]
要求を即時に反映できるとか、
通常の[[標準化手続き]]より手軽に登録できるとかのメリットはなさそうで、
名前だけ登録して[[処理モデル]]を明確に定義しないで済む[[相互運用性]]の抜け穴になっているような。
* MIME 型
[FIG(short list)[ [10] [[TrueType]] と [[OpenType]] の[[MIME型]]
- [CODE[font/opentype]]
- [CODE[font/otf]]
- [CODE[application/x-truetype-font]]
- [CODE[x-font/ttf]]
- [CODE[font/ttf]]
]FIG]
[FIG(data short list)[ [12] [[MIME型]]
:[[MIME型]]: [DFN[[CODE[font/opentype]]]]
:説明:[[OpenType]] [[フォント]]
:[[拡張子]]:[CODE[.otf]]
]FIG]
[FIG(data short list)[ [13] [[MIME型]]
:[[MIME型]]: [DFN[[CODE[font/otf]]]]
:説明:[[OpenType]] [[フォント]]
:[[拡張子]]:[CODE[.otf]]
]FIG]
[FIG(data short list)[ [14] [[MIME型]]
:[[MIME型]]: [DFN[[CODE[application/x-truetype-font]]]]
:説明:[[TrueType]] [[フォント]]
:[[拡張子]]:[CODE[.ttf]]
]FIG]
[FIG(data short list)[ [15] [[MIME型]]
:[[MIME型]]: [DFN[[CODE[x-font/ttf]]]]
:説明:[[TrueType]] [[フォント]]
:[[拡張子]]:[CODE[.ttf]]
]FIG]
[FIG(data short list)[ [16] [[MIME型]]
:[[MIME型]]: [DFN[[CODE[font/ttf]]]]
:説明:[[TrueType]] [[フォント]]
:[[拡張子]]:[CODE[.ttf]]
]FIG]
[2] [CITE@en[[[RFC 8081]] - The "font" Top-Level Media Type]] ([TIME[2017-03-01 12:40:02 +09:00]]) <https://tools.ietf.org/html/rfc8081#section-4.4.3>
[FIG(quote)[
[FIGCAPTION[
[5] [CITE@en[ffmpeg Documentation]]
([TIME[2020-09-30T16:23:40.000Z]], [TIME[2020-10-01T08:03:14.025Z]])
<https://ffmpeg.org/ffmpeg.html#stdin-option>
]FIGCAPTION]
> Note that for Matroska you also have to set the mimetype metadata tag:
> ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv
> (assuming that the attachment stream will be third in the output file).
]FIG]
* 拡張子
[11]
[DFN[[CODE[.otf]]]] ([[OpenType]]),
[DFN[[CODE[.ttf]]]] ([[TrueType]])
がよく使われています。
[40]
[[TrueType]] 形式で[[グリフ]]が格納された [[OpenType]] [[フォント]]を
[CODE[.ttf]] ファイルとするなど、両者はあまり厳密に使い分けられていません
(し[[拡張子]]で区別しても意味はありません)。
* 実装
[1]
[CODE[ttfdump]],
[[opentype.js]],
[[Typr]]
[6] [CITE[fonts - What is the status of TTF support in Internet Explorer? - Stack Overflow]]
([TIME[2015-02-16 17:58:22 +09:00]] 版)
<http://stackoverflow.com/questions/17694143/what-is-the-status-of-ttf-support-in-internet-explorer>
* メモ
[9] [CITE[OpenTypeフォント: vanillaの日記]]
([TIME[2021-06-09T05:11:37.000Z]])
<http://vanillasky-room.cocolog-nifty.com/blog/2008/02/opentype-e54f.html>
[17] [CITE@en-US[OpenType Feature File Specification | afdko]], [TIME[2022-07-01T23:34:25.000Z]], [TIME[2022-08-18T02:28:48.894Z]] <http://adobe-type-tools.github.io/afdko/OpenTypeFeatureFileSpecification.html>
[18]
[[全字庫フォント]]:
[CODE[name]] [[表]]に[[Unicode]]名の他に
[[MacChineseTrad]] 名も入っている (ものもある)。
[19]
[CITE[Nosutaru-dot M+H 10 Regular]]:
[CODE[name]] [[表]]に[[Unicode]]名の他に
[[MacJapanese]] 名も入っている。
[[MacRoman]] 名はほぼ全項目に入っている。