/
188.txt
108 lines (80 loc) · 5.62 KB
/
188.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
[2] [[媒体素片]]の[[次元]] [DFN[[CODE(URI)@en[[[xywh]]]]]] は、
表示上の範囲を表します。
* 仕様書
[REFS[
- [1] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#fragment-dimensions>
- [4] '''[CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#naming-space>'''
- [15] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#media-fragment-semantics>
- [21] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#media-fragment-browser>
]REFS]
* 意味
[3] この[[次元]]は、元の[[媒体]]の特定の[[画素]]の領域を表します [SRC[>>1, >>4]]。
[5] 領域の形状としては、[[長方形]]にのみ対応しています [SRC[>>4]]。
* 構文
[6] 値は、省略可能な単位と [CODE(URI)[[[:]]]] の後に、
[CODE(URI)[[[,]]]] で区切った4つの[[ASCII数字]]列を続けたものです。
[[ASCII数字]]列は、それぞれ [VAR[x]] 座標、[VAR[y]] 座標、
幅、高さを表し、最低1文字必要です。 [SRC[>>4]] [[先導0]]も禁止されていません。
[[小数部]]は認められていません。
[FIG(railroad)[
= ?
== [[単位]]
== [CODE(URI)[[[:]]]]
= +
== [[ASCII数字]]
= [CODE(URI)[[[,]]]]
= +
== [[ASCII数字]]
= [CODE(URI)[[[,]]]]
= +
== [[ASCII数字]]
= [CODE(URI)[[[,]]]]
= +
== [[ASCII数字]]
]FIG]
[7] [[単位]]としては [DFN[[CODE(URI)[[[pixel]]]]]] と [DFN[[CODE(URI)[[[percent]]]]]]
があり、それぞれ[RUBY[[[画素]]][[[ピクセル]]]]単位の座標と[RUBY[[[百分率]]][[[パーセント]]]]を表します
[SRC[>>4]]。省略された場合の既定値は、[[画素]]です [SRC[>>4]]。
[9] いずれの[[単位]]でも [VAR[x]] と [VAR[y]] がどちらも 0 の時、
[[画像]]の左上隅を表します。 [SRC[>>4]]
[10] [[百分率]]の場合、 [VAR[x]] と幅は元の[[媒体]]の幅に対して、
[VAR[y]] と高さは元の[[媒体]]の高さに対しての割合と解釈します [SRC[>>4]]。
[8] [[画素]]座標は、[[資源]]の[[次元]]、[[アスペクト比]]、[[clean aperture]]、
[[解像度]]その他を当該[[資源]]の形式の定義に基づき考慮した後に解釈されるものです。
動画データの[[次元]]から「正しい」[[次元]]に変換するに当たりどう[[アスペクト比]]を適用するか定義していない形式の場合には、
一方の[[次元]]は増加させ、他方は変化させない比率を適用しなければなりません。 [SRC[>>4]]
[11] 単一のよく定義された[[画素]][[解像度]] ([[幅]]と[[高さ]]) を持たない[[画像]]について、
[[画素]]単位で範囲を指定するべきではありません。 [SRC[>>4]]
* 処理
[12] [[画素]]単位で範囲が指定されている場合で、 [[ICO]] ファイルなど複数の[[解像度]]を持つ[[画像]]である時は、
[[媒体素片]]を無視しなければ[['''なりません''']] [SRC[>>4]]。
;; [13] [[SVG]] のように [[scalable]] な時も無視するべきなのでしょうか?
;; [14] [[ICO]] が1つの[[解像度]]のデータだけを含んでいる時も無視するべきなのでしょうか?
[16] 値が構文的に正しくない時は、[[誤り]]であり、本[[次元]]の指定は無視する[['''べきです''']]
[SRC[>>15]]。
[17] [[媒体]]の[[解像度]]が分かれば、値の[[妥当性]]を判断できます。
[VAR[x]] の指定が[[媒体]]の[[幅]][[以上]]であるか、
[VAR[y]] の指定が[[媒体]]の[[高さ]][[以上]]である (すなわち、
指定された範囲の[[左上隅]]が[[媒体]]の外側を指している) なら、
[[誤り]]であり、本[[次元]]の指定は無視する[['''べきです''']] [SRC[>>15]]。
[18] [VAR[x]] の指定が[[媒体]]の[[幅]]より小さく、
[VAR[y]] の指定が[[媒体]]の高さより小さいなら、
指定された範囲を[[表示]]します。ただし、
[VAR[x]] と [VAR[w]] の指定の[[和]]が[[幅]]を超えるなら超えない範囲、
[VAR[y]] と [VAR[h]] の指定の[[和]]が[[高さ]]を超えるなら超えない範囲とします。 [SRC[>>15]]
[19] [[百分率]]によって指定された場合は、 [VAR[x]] と [VAR[y]]
はそれぞれ[[媒体]]の[[幅]]と[[高さ]]で割って100をかけた値の [[floor]]、
[VAR[w]] と [VAR[h]] はそれぞれ[[媒体]]の[[幅]]と[[高さ]]で割って100をかけた値の
[[ceil]] によって[[画素]]単位の値に変換し、適用します [SRC[>>15]]。
[20] 複数の[[動画トラック]]が含まれる場合には、すべての[[動画トラック]]に対して適用します
[SRC[>>15]]。
* レンダリング
[22] 指定した範囲を[RUBYB[くりぬいて]@en[crop]]表示することもできますし、
指定した範囲がどこであるかわかる形で全体を表示することもできます。 [SRC[>>15]]
[23] [[Webブラウザー]]の既定の表示はくりぬいた表示であることが期待されています。 [SRC[>>15]]
[24] [CITE@en-US[mozilla-central: netwerk/base/src/nsMediaFragmentURIParser.cpp@206bf1a98cd7]]
( ([TIME[2015-01-16 00:52:28 +09:00]] 版))
<https://hg.mozilla.org/mozilla-central/file/tip/netwerk/base/src/nsMediaFragmentURIParser.cpp>
[25] [CITE@en[790640 – add Media Fragments for images (spatial dimensions)]]
( ([TIME[2015-01-16 00:59:55 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=790640>