1. 序論
◎非規範的この~moduleは~2D画像を表現するための追加的な仕方を導入する 例えば, `~fallback色を伴う~URL$ / `円錐型~gradient$として / `文書~内の別の要素の描画@#element-notation$として。 ◎ This module introduces additional ways of representing 2D images, for example as a URL with color fallback, as conic gradients, or as the rendering of another element in the document.
1.1. 値~定義
【 この節の内容は `~CSS日本語訳 共通~page@~CSScommon#values$に移譲。 】
2. ~2D画像~値: `image^t 型
`image$t 値~型は、 ~2D画像を表し,[ `~URL参照$ / `~fallback色を伴う~URL$ / `~gradient記法@#gradients$ ]をとり得る。 その構文は、 次で与えられる: ◎ The <image> value type denotes a 2D image. It can be a url reference, image notation, or gradient notation. Its syntax is:
`image@t = `url$t | `image$ft | `image-set$ft | `cross-fade$ft | `element$ft | `gradient$t
【 以下,[ `無効な画像@ / `読込n中の画像@ / `image$t の`算出d値$【! id="computed-image" 】 ]の定義も含め, `~level 3 と同じ@~CSSIMAGE#image-values$ (なので、和訳は省略する)。 】
2.1. 画像~file形式
~propにおいて `image$t 値から参照される妥当な画像に対しては、 ~UAは,最低限,次の~file形式を~supportするモノトスル: ◎ At minimum, the UA must support the following image file formats when referenced from an <image> value, for all the properties in which using <image> is valid:
- `PNG$r により指定される,~PNG ◎ PNG, as specified in [PNG]
- `SVG11$r により指定される,`~secure静的~mode$を利用している~SVG ( `SVG-INTEGRATION$r を見よ) ◎ SVG, as specified in [SVG11], using the secure static mode (See [SVG-INTEGRATION])
- ~UAが~animate化 `image$t を~supportする場合、 `SVG11$r により指定される,`~secure~animate化~mode$を利用している~SVG ( `SVG-INTEGRATION$r を見よ) ◎ If the UA supports animated <image>s, SVG, as specified in [SVG11], using the secure animated mode (See [SVG-INTEGRATION])
~UAは、 他の~file形式を~supportしてもヨイ。 ◎ The UA may support other file formats as well.
2.2. 画像~参照: `url^f 記法
注記: `~level 3 と同じ@~CSSIMAGE#url-notation$。 ◎ Note: No change from [css-images-3].
2.3. 外部~画像の~fetch法
`~stylesheet用に外部の画像を~fetchする@ ときは、 所与の ( `url$t %~URL, `CSSStyleSheet$I %sheet ) に対し:
- %応答の処理n ~LET 所与の ( `応答$ %応答, [ ~NULL/`失敗^i/~byte~stream ] %~stream ) に対し,次を走らす手続き ⇒ ~IF[ %~stream は~byte~streamである ] ⇒ %~stream から画像を読込む
- `~style資源を~fetchする$( %~URL, %sheet, `image^l, `no-cors^l, %応答の処理n )
2.4. 解像度/型の折衝: `image-set^f 記法
利用者の機器に最も適切な解像度の画像を送達することは、 困難な~~仕事にもなり得る。 理想的には、 画像~解像度は,[ 利用者~間で様々な,機器それぞれの解像度 ]と同じになるべきである。 しかしながら、 どの画像を送信するか裁定する要因になるものは,他にもあり得る — 例えば,低速な~mobile接続の下では、 利用者は,[ 解像度は適正でも,巨大になる画像 ]を読込むのを待つより,低-解像度な画像を受信する方を選好するかもしれない。 `image-set@f 関数は、 作者が[ これらの課題のほとんどを無視して、 単純に,ある画像に複数の解像度を供する ]ことにより[ 所与の状況で最も適切なものを~UAに裁定してもらう ]ことを許容する。 ◎ Delivering the most appropriate image resolution for a user’s device can be a difficult task. Ideally, images should be in the same resolution as the device they’re being viewed in, which can vary between users. However, other factors can factor into the decision of which image to send; for example, if the user is on a slow mobile connection, they may prefer to receive lower-res images rather than waiting for a large proper-res image to load. The image-set() function allows an author to ignore most of these issues, simply providing multiple resolutions of an image and letting the UA decide which is most appropriate in a given situation.
この解決策は、 解像度が~filesizeを代理するものと見做しているので,[ 複数の解像度からなる一連の~vector画像/ 一連の画像に~vectorと~rasterが混在しているとき(例:~icon) ]を適切に取扱わない。 例えば、[ 高-解像度 用には~vector画像, 低-解像度 用には画素に最適化された~bitmap, 低-帯域幅 用には同じ~vector画像(高-解像度であってもずっと小さいので) ]を利用する場合など。 ◎ This solution assumes that resolution is a proxy for filesize, and therefore doesn’t appropriately handle multi-resolution sets of vector images, or mixing vector images with raster ones (e.g. for icons). For example, use a vector for high-res, pixel-optimized bitmap for low-res, and same vector again for low-bandwidth (because it’s much smaller, even though it’s higher resolution).
`image-set$f の構文は: ◎ The syntax for image-set() is:
`image-set$ft = image-set( `image-set-option$t# ) `image-set-option@t = [ `image$t | `string$t ] [ `resolution$t || type(`string$t) ]?
~HTMLの `picture$e 要素の機能性に合致する可能性として、[ `w^u, `h^u ]次元を追加するべき。 ◎ We should add "w" and "h" dimensions as a possibility to match the functionality of HTML’s picture.
`image-set$f の内側にある各 `string$t は、 `url$t を表現する。 ◎ Each <string> inside image-set() represents a <url>.
`image-set$f 関数は、 直接的にも(他の `image$t 型の引数として)間接的にも,入子にできない。 ◎ The image-set() function can not be nested inside of itself, either directly or indirectly (as an argument to another <image> type).
各 `image-set-option$t は、 `image-set$f 関数が表現する画像としてアリなものを定義し,次に挙げる各部で構成される: ◎ Each <image-set-option> defines a possible image for the image-set() function to represent, composed of three parts:
- 画像~参照 (要求される) ◎ An image reference (required).\
- 次のいずれかをとり得る ⇒# ~URL/ ~CSSから生成される画像 ( `linear-gradient$f など) ◎ This can be a URL, or a CSS generated image, such as a linear-gradient().
- `resolution$t (省略可能) ◎ A <resolution> (optional).\
- これは、[ ~UAが,どの `image-set-option$t を選ぶか裁定する ]ことを助けるために利用される。 当の画像~参照が~raster画像~用ならば、 画像の`生来な解像度$も指定する — それは、 `生来な解像度$を給する他の~data~sourceがあっても,それを上書きする。 ◎ This is used to help the UA decide which <image-set-option> to choose. If the image reference is for a raster image, it also specifies the image’s natural resolution, overriding any other source of data that might supply a natural resolution.
- 指定されなかった場合、[ どの `image-set-option$t を利用するか選定する目的 ]においては, `1x^v として挙動する。 それはまた,画像の`生来な解像度$も`既定の^em `1x^v にするが、 他の何らかの~data~sourceが`生来な解像度$を給する場合,その解像度を尊守するモノトスル。 ◎ If not specified, it behaves as 1x for the purpose of selecting which <image-set-option> to use. It also defaults the image’s natural resolution to 1x, but if some other source of data supplies a natural resolution, that resolution must be honored instead.
-
type( `string$t )
関数 (省略可能) ◎ A type( <string> ) function (optional),\ - `string$t 内に画像の~MIME型を指定する。 ◎ specifying the image’s MIME type in the <string>.
- `string$t を`妥当な~MIME型$として構文解析した結果が[ 妥当でない/ ~supportされる画像~形式を指定しない ]場合、 `image-set-option$t は妥当な~optionを定義しない。 (これは、 `image-set$f 関数の妥当性には影響しない。) ◎ If the <string>, when parsed as a valid MIME type string, is either not valid, or is valid but doesn’t specify a supported image format, the <image-set-option> does not define a valid option. (This has no effect on the validity of the image-set() function.)
- これには、 画像~自体に対する効果は無い。 `url("picture.png") 1x type("image/jpeg")^v の様な `image-set-option$t は妥当であり、 選ばれた場合 — ~JPEG形式として宣言されていようが — ~link先の~PNG画像を表示することになる。 ◎ It does not have any effect on the image itself; an <image-set-option> like url("picture.png") 1x type("image/jpeg") is valid, and if chosen will display the linked PNG image, even though it was declared to be a JPEG.
- 指定されなかった場合、 `image-set-option$t に対する効果は無い。 ◎ If not specified, it has no effect on the <image-set-option>.
`image-set$f 関数は、 1 個以上の `image-set-option$t からなる~listを包含する。 ~UAは、 それらのうち 1 つだけを以下に従って選定して, どの画像を表現するか決定するモノトスル: ◎ An image-set() function contains a list of one or more <image-set-option>s, and must select only one of them to determine what image it will represent:
- 次に該当する `image-set-option$t を~listから除去する ⇒ その `type$f 値にて[ 未知な/~supportされない ]~MIME型を指定するもの ◎ First, remove any <image-set-option>s from the list that specify an unknown or unsupported MIME type in their type() value.
- 次に該当する `image-set-option$t を~listから除去する ⇒ `resolution$t が~list内で それまでに~~現れた `image-set-option^t のそれと同じであるもの ◎ Second, remove any <image-set-option>s from the list that have the same <resolution> as a previous option in the list.
- ~IF[ ~listは空である ] ⇒ `image-set$f 関数は、 `無効な画像$を表現する。 ◎ If there are no <image-set-option> left at this point, the function represents an invalid image.
- ~ELSE ⇒ ~list内の `image-set-option$t たちから、 何であれ[ 関連するものと判断される,~UAに特有な判定基準 ]に基づいて(例:~displayの解像度, 接続~速度, 等々),読込むものを一つ選ぶ — `image-set$f 関数は、 ここで選んだ `image-set-option^t の `image$t を表現する。 ◎ Finally, among the remaining <image-set-option>s, make a UA-specific choice of which to load, based on whatever criteria deemed relevant (such as the resolution of the display, connection speed, etc). ◎ The image-set() function then represents the <image> of the chosen <image-set-option>.
~UAは、 ~pageの存続期間において[ 所与の `image-set$f 用に利用する `image-set-option$t ]を変更してもヨイ — どの `image-set-option^t を選ぶか決定するために利用した判定基準が, ~UAの見積もりにおいて変更に価する程に十分~変化したならば。 ◎ UAs may change which <image-set-option> they wish to use for a given image-set() over the lifetime of the page, if the criteria used to determine which option to choose change significantly enough to make it worthwhile in the UA’s estimation.
次の例に、 `image-set$f を利用して 3 種の画像 — “通常”, “高-解像度”, “極高-解像度” (高-品質な印刷~用 — 印刷機には解像度が `極めて^em高いものもあるので) — を供する方法を示す: ◎ This example shows how to use image-set() to provide an image in three versions: a "normal" version, a "high-res" version, and an extra-high resolution version for use in high-quality printing (as printers can have extremely high resolution):
background-image: image-set( "foo.png" 1x, "foo-2x.png" 2x, "foo-print.png" 600dpi );
`type$f 関数を利用して,同じ画像を成す複数の~version — 新しい, より高-品質な形式,および より旧い, より広く~supportされる形式 — を~serveする例を次に示す: ◎ This example shows use of the type() function to serve multiple versions of the same image in both new, higher-quality formats, and older, more widely-supported formats:
background-image: image-set( "foo.avif" type("image/avif"), "foo.jpg" type("image/jpeg") );
~AVIF画像を最初に与えていることに注意。 両~画像とも解像度は同じなので (未指定なので,既定の `1x^v になる)、 後に与えた~JPEG画像は,~AVIF画像を~supportする~UAにおいては自動的に落とされる。 ◎ Note that the AVIF image is given first; since both images have the same resolution (defaulting to 1x since it’s unspecified), the JPEG image, coming second, is automatically dropped in UAs that support AVIF images.
しかしながら,より旧い~UAにおいては、 ~AVIF画像は無視され (~UAは、 `image/avif^l から~fileを~supportしないと知るので), 代わりに~JPEGが選ばれる。 ◎ In older UAs, however, the AVIF image is ignored (because the UA knows it doesn’t support "image/avif" files), and so the JPEG is chosen instead.
~raster画像は、 ~vector画像, あるいは~CSSから生成された画像とも混在できる。 ◎ Raster images can be mixed with vector images, or even CSS generated images.
例えば,次の~code片では、[ ~~十分表現可能な~screen上では,微妙な詳細を伴う高-解像度な画像が利用される ]一方で[ 低-解像度な状況~用には,普通の~CSS `linear-gradient$f が利用される ]: ◎ For example, in this code snippet a high-resolution image with subtle details is used on screens that can do it justice, while an ordinary CSS linear-gradient() is used instead for low-resolution situations:
background-image: image-set( linear-gradient(cornflowerblue, white) 1x, url("detailed-gradient.png") 3x );
2.5. 画像~fallbackと注釈: `image^f 記法
`image$f 関数により、 作者は次が可能になる: ◎ The image() function allows an author to:
- `媒体~素片$を利用して、 画像の一部分を切抜く。 ◎ use media fragments to clip out a portion of an image
- 単色を画像として利用する。 ◎ use a solid color as an image
- 指定された URL にある画像が[ ~downloadできない, または復号できない ]ときの,単色~画像への~fallbackを指定する。 ◎ fallback to a solid-color image, when the image at the specified url can’t be downloaded or decoded
- 画像の~metadataに指定されている画像の方位に,自動的に従うようにする。 ◎ automatically respect the image orientation specified in the image’s metadata
`image$f 記法は,次で定義される: ◎ The image() notation is defined as:
`image@f = image( `image-tags$t? [ `image-src$t? , `color$t? ]! ) `image-tags@t = ltr | rtl `image-src@t = `url$t | `string$t
`image$f 内で利用される `string$t は、 `url$t を表現する。 CSS における通例の~URLと同じく、 `image$f 値に指定された相対~URLは,算出d値を得るときに ( “値と単位” 仕様 `CSS-VALUES-3$r に従って) 絶対~URLに解決される。 ◎ A <string> used in image() represents a <url>. As usual for URLs in CSS, relative URLs are resolved to an absolute URL (as described in Values & Units [CSS-VALUES-3]) when a specified image() value is computed.
EXIF などの画像の~metadata内に,方位が指定されている場合、 ~UAは,その~metadataの指定に従って[ 画像を回転させたり裏返して,正しく方位させる ]モノトスル。 ◎ If the image has an orientation specified in its metadata, such as EXIF, the UA must rotate or flip the image to correctly orient it as the metadata specifies.
2.5.1. 画像の~fallback
`image$f 関数に~URLが指定されていて,~URLが[ `無効な画像$/`読込n中の画像$ ]を表現するときは、 その関数は: ◎ ↓
- `color$t も指定されていた場合、 ~URLが元々指定されていなかったかのように `単色~画像@#color-images$を描画する。 ◎ If both a URL and a <color> are specified in image(), then whenever the URL represents an invalid image or loading image, the image() function renders as if the URL were not specified at all; it generates a solid-color image as specified in § 2.5.3 Solid-color Images.
- 他の場合、 同じ[ `無効な画像$/`読込n中の画像$ ]を表現する。 ◎ If just a URL is specified (no <color>) and it represents an invalid image or loading image, the image() function represents the same.
~fallback色を利用すれば、 画像の読込nに失敗したときでも,少なくとも~textは読めるようになる。 例えば次の旧来~codeは、 画像が透明度を持たない矩形であれば,~~問題なく働く。 ◎ The fallback color can be used to ensure that text is still readable even when the image fails to load. For example, the following legacy code works fine if the image is rectangular and has no transparency:
body { color: black; background: white; } p.special { color: white; background: url("dark.png") black; }
画像が読込めなくても、 背景~色により,依然として白な~textは読める。 しかしながら,画像に透明度がある場合、 背後の黒が可視になり,おそらく欲されない結果になる。 `image$f 関数は、 これに取組む: ◎ When the image doesn’t load, the background color is still there to ensure that the white text is readable. However, if the image has some transparency, the black will be visible behind it, which is probably not desired. The image() function addresses this:
body { color: black; background: white; } p.special { color: white; background: image("dark.png", black); }
今度は、 画像を読込めたときには黒はまったく現れなくなる一方、 何らかの理由で画像の読込nに失敗した場合には黒がそれに代わり, 白な背景に白な~textが設定されるのを防げる。 ◎ Now, the black won’t show at all if the image loads, but if for whatever reason the image fails, it’ll pop in and prevent the white text from being set against a white background.
2.5.2. 画像~断片
`image$f に指定された~URLが, (例:`媒体~素片~識別子$の利用により) 資源の一部分を表現するとき、 その一部分は,その文脈から切抜かれた上で,自立的な画像として利用されるようになる。 ◎ When a URL specified in image() represents a portion of a resource (e.g. by the use of media fragment identifiers) that portion is clipped out of its context and used as a standalone image.
例えば,次の画像と~CSSが与えられたとする: ◎ For example, given the following image and CSS:
background-image: image('sprites.svg#xywh=80,0,40,40')
要素の背景は、 この画像の, ( 80px, 0px ) の所から,右下へ高さ幅ともに 40px の部分 (画像の中では黒な四分円) で埋尽くされることになる。 ◎ ...the background of the element will be the portion of the image that starts at (40px,0px) and is 20px wide and tall, which is just the circle with a quarter filled in.
作者が[ ~CSSの前方-互換な構文解析~規則の利点を活かして,画像~slice用の~fallbackを供せる ]ようにするため、 `image$f 記法を~supportする実装は,[ `image$f を介して指定された画像 ]用には[ `xywh=#,#,#,#^c 形による`媒体~素片~識別子$ `MEDIA-FRAGS$r ]を~supportする`モノトスル^em。 ◎ So that authors can take advantage of CSS’s forwards-compatible parsing rules to provide a fallback for image slices, implementations that support the image() notation must support the xywh=#,#,#,# form of media fragment identifiers for images specified via image(). [MEDIA-FRAGS]
画像~断片は `url$f 記法でも利用し得ることに注意。 しかしながら、 `媒体~素片$ 記法を解せない旧来の~UA は,[ 素片を無視して,単純に画像~全体を表示する ]ことになる。 ◎ Note that image fragments can also be used with the url() notation. However, a legacy UA that doesn’t understand the media fragments notation will ignore the fragment and simply display the entirety of the image.
`image$f 記法は,~UAによる`媒体~素片$の~supportを要するので、 作者は,画像~素片~URLを利用するときに[ ~fallbackを供する~CSSの前方-互換な構文解析~規則 ]の利点を活かせる: ◎ Since the image() notation requires UAs to support media fragments, authors can take advantage of CSS’s forward-compatible parsing rules to provide a fallback when using an image fragment URL:
background-image: url('swirl.png'); /* 旧~UA */ background-image: image('sprites.png#xywh=10,30,60,20'); /* 新~UA */
~URLに利用されている素片~識別子の構文が[ 実装が解せない/当の画像~型において妥当でない ]場合、 その~URLは,`無効な画像$を表現しているものと扱うモノトスル。 ◎ If a URL uses a fragment identifier syntax that the implementation does not understand, or does not consider valid for that type of image, the URL must be treated as representing an invalid image.
注記: 旧来との互換性の理由から、 この~errorの取扱いは, ~URL【そのもの】の定義ではなく, `image$f 【の中の~URL】に限られる。 ◎ Note: This error-handling is limited to image(), and not in the definition of URL, for legacy compat reasons.
2.5.3. 単色~画像
`image$f 関数の引数に(~URLなしで) `color$t のみが指定された場合、 `生来な寸法$を伴わない,指定された色による単色~画像を表現する。 ◎ If the image() function is specified with only a <color> argument (no URL), it represents a solid-color image of the specified color with no natural dimensions.
例えば,これを、 他の画像の上層に半透明な色を重ねて背景~画像を “淡く染める” 単純な仕方として利用できる: ◎ For example, one can use this as a simple way to "tint" a background image, by overlaying a partially-transparent color over the top of the other image:
background-image: image(rgba(0,0,255,.5)), url("bg-image.png");
`background-color$p は、 これに対しては働かない。 それが生成する単色は、 常に,すべての背景~画像の`~~背後に回る^emので。 ◎ background-color does not work for this, as the solid color it generates always lies beneath all the background images.
2.5.4. 双向性に応じる画像
作者は、 `image$f 内の `image-src$t の前に、画像~用の方向性( `image-tags$t )を指定してもヨイ — これは、 ~HTML要素に `dir$a 属性を追加するのに類似する。 [ 要素に対し/要素~内で ]逆~方向の `direction$p を伴う画像が利用された場合、 その画像は,行内~方向に裏返されるモノトスル (行内~方向が X 軸なら、 例えば `scaleX(-1)^v で変形されたかのように)。 ◎ Before listing any <image-src>s, the author may specify a directionality for the image, similar to adding a dir attribute to an element in HTML. If a directional image is used on or in an element with opposite direction, the image must be flipped in the inline direction (as if it was transformed by, e.g., scaleX(-1), if the inline direction is the X axis).
注記: この宣言が無い場合の既定では、 画像の方向性はまったくないので,周囲の要素の方向性にも応じない。 ◎ Note: Absent this declaration, images default to no directionality at all, and thus don’t care about the directionality of the surrounding element.
~listが~bulletとして[ 内容の中を指す矢印 ]を利用していて,[ 左横書きの~textを包含する~list~item, 右横書きのそれ ]が混在している場合、 ~bulletは,左端にも右端にも生じる。 その結果、 一方の側では~textの中を指すよう設計された画像は,他方の側では~textの外を指すことになる。 これは、 次の様な~codeで修正できる: ◎ A list may use an arrow for a bullet that points into the content. If the list can contain both LTR and RTL text, though, the bullet may be on the left or the right, and an image designed to point into the text on one side will point out of the text on the other side. This can be fixed with code like:
<ul style="list-style-image: image(ltr 'arrow.png');"> <li dir='ltr'>左に~bulletがあります。</li> <li dir='rtl'>~bulletは右にあります。</li> </ul>
これは次の様に描画されるべきである: ◎ This should render something like:
☞ 左に~bulletがあります。 。すまりあに右は~tellub ☜
【 便宜上,日本語で記しているが、 実際には,右横書きの言語でなければ、 このように左方へ流れる表示にはならない。 】
左横書き~list~itemにおいては,画像はそのまま利用され、 右横書き~list~itemにおいても内容を指すように,画像は行内~方向に裏返されることになる。 ◎ In LTR list items, the image will be used as-is. In the RTL list items, however, it will be flipped in the inline direction, so it still points into the content.
2.6. 画像を組合せる: `cross-fade^f 記法
~CSSにより 2 個の画像~間の遷移を与えるためには、[ 開始-, 終止- ]画像を組合せた中間的な画像を明示的に指す仕方を要する。 `cross-fade$f 関数が、 これを達成する。 それは、 組合される 2 個の画像, および 組合nの遷移の進行度合いを指示する。 ◎ When transitioning between images, CSS requires a way to explicitly refer to the intermediate image that is a combination of the start and end images. This is accomplished with the cross-fade() function, which indicates the two images to be combined and how far along in the transition the combination is.
注記: 作者は、 `cross-fade$f 関数を,多くの単純な画像~操作にも利用できる — 画像を単色で淡く染めたり、 `放射型~gradient$と組合せて,~page内の特定0の区画を強調するなど。 ◎ Note: Authors can also use the cross-fade() function for many simple image manipulations, such as tinting an image with a solid color or highlighting a particular area of the page by combining an image with a radial gradient.
`cross-fade^f の構文は、 次で定義される: ◎ The syntax for cross-fade() is defined as:
`cross-fade@f = cross-fade( `cf-image$t# ) `cf-image@t = [ `image$t | `color$t ] && `percentage [0,100]$t?
この関数は、 1 個~以上の画像を組合せて生成される画像を表現する。 ◎ The function represents an image generated by combining one or more images.
各~画像の `percentage$t は、 その画像が他の画像と混色されたときの含有率を表現する。 `percentage$t 値は、 `0%^v 以上 `100%^v 以下でなければナラナイ — 他の値は無効とする。 ◎ The <percentage> represents how much of each image is retained when it is blended with the other images. The <percentage> must be between 0% and 100% inclusive; any other value is invalid.
百分率が省略された画像がある場合、 `100%^v から[ 他の画像に指定されたすべての百分率の総和 ]を減算してから `0%^v 以上に切り上げた結果が,算出d値の時点で[ 省略された百分率を伴うすべての画像 ]に等分にあてがわれる。 【`実際の~algo@#cross-fade-painting$/下の注記と食い違う?】 ◎ If any percentages are omitted, all the specified percentages are summed together and subtracted from 100%, the result is floored at 0%, then divided equally between all images with omitted percentages at computed-value time.
注記: これは,算出d値には反映されないが、 すべての引数の百分率の総和が `100%^v を超えるときは — [ ~sizing/塗ng ]の詳細~にて — 実質的に,総和が正確に `100%^v になるよう各 引数は拡縮し直される。 ◎ While this is not reflected in the computed value, when all the arguments’ percentages sum to greater than 100%, the sizing/painting details effectively rescale them so that they sum to exactly 100%.
他方,総和が `100%^v 以下のときは — [ ~sizing/塗ng ]の詳細~にて — 実質的に,[ 百分率が[ 総和が `100%^v に等しくなるために必要yな残りの値 ]に設定され,`透明な黒$にされた `cf-image$t【! `transparent$v 引数】 ]が追加されたかの様に動作する。 ◎ On the other hand, when the sum is less than 100%, the sizing/painting details effectively act like there’s an additional transparent argument, with its percentage set to the remaining value necessary to make the sum equal 100%.
`color$t が供された場合、 それは “自動的”な寸法を伴う単色~画像を表現する (それは、 結果の画像の~sizingにはまったく関与しない — 詳細は下の~sizingを見よ)。 ◎ If a <color> is provided, it represents a solid-color image with “automatic” dimensions (it doesn’t participate in the sizing of the result image at all; see details in the sizing details below).
2.6.1. `cross-fade^f の~sizing
`cross-fade$f が表現する画像の寸法は、 関数の各 `image$t 引数の寸法の加重d平均になる — `color$t 引数には効果は無い。 それは、 以下に従って計算される。 ◎ The dimensions of the image represented by a cross-fade() are a weighted average of dimensions of the <image> arguments to the function; the <color> arguments have no effect. They are calculated as follows:
【 以下に現れる百分率は, `cf-image$t を成す `percentage^t としか解釈しようがないが、 それは,混色-用の重みであり、 寸法の計算に利用されるのは不可解。 】
`cross-fade$f の `生来な寸法$を決定する ときは: ◎ To determine the natural dimensions of a cross-fade():
- %画像~list ~LET 新たな`~list$ ◎ Let images be an empty list.
-
`cross-fade$f 関数の ~EACH( `image$t 値を伴う引数 %引数 ) に対し: ◎ For each argument of the cross-fade() function with an <image> value:
- %~item ~LET ( `横幅^i, `縦幅^i, `百分率^i ) からなる`~tuple$ ◎ Let item be a tuple consisting of a width, a height, and a percentage.
- %~item の ( `横幅^i, `縦幅^i ) ~SET [ %引数 の `image$t に対し, `cross-fade$f が現れる文脈に適切に`~obj~size折衝$ ~algoを走らせた結果 ]の`具象-~obj~size$の ( 横幅, 縦幅 ) ◎ Run the object size negotiation algorithm for the <image>, as appropriate for the context in which the cross-fade() appears, and set item’s width and height to the width and height of the resulting concrete object size.
- %~item の`百分率^i ~SET %引数 の百分率 ◎ Set item’s percentage to the argument’s percentage.
- 【 %画像~list に %~item を`付加する$ 】
- ~IF[ %画像~list は`空$である ] ⇒ ~RET ε (`生来な寸法$は無い) ◎ If images is empty, return no natural dimensions.
- %百分率の総和 ~LET %画像~list 内のすべての`~item$の`百分率^iの総和 ◎ Let percentage sum be the sum of all the percentages of the items in images.
- %画像~list を成す ~EACH( %~item ) に対し ⇒ %~item の百分率 ~SET %~item の`百分率^i ~DIV %百分率の総和 ◎ For each item in images, divide item’s percentage by percentage sum, and set item’s percentage to the result.
- ~Assert: %画像~list 内の`百分率^iの総和 ~EQ `100%^v ◎ Assert: The percentages in images now sum to 100%.
- ( %最終-横幅, %最終-縦幅 ) ~LET ( `0px^v, `0px^v ) ◎ Let final width and final height be 0px.
- %画像~list を成す ~EACH( %~item ) に対し ⇒# %最終-横幅 ~INCBY %~item の`横幅^i ~MUL %~item の`百分率^i; %最終-縦幅 ~INCBY %~item の`縦幅^i ~MUL %~item の`百分率^i ◎ For each item in images, multiply item’s width by item’s percentage and add the result to final width, and multiply item’s height by item’s percentage and add the result to final height.
- ~RET `生来な寸法$( `生来な横幅$ %最終-横幅, `生来な縦幅$ %最終-縦幅 ) ◎ Return a natural width of final width and a natural height of final height.
2.6.2. `cross-fade^f の塗ng
`cross-fade$f が表現する画像は、 関数に与えられた引数たちの加重d平均であり,以下に従って計算される: ◎ The image represented by a cross-fade() is a weighted average of the input arguments to the function, calculated as follows:
`cross-fade^f の `外観を決定する@ ときは: ◎ To determine the appearance of a cross-fade():
- %画像~list ~LET 新たな`~list$ ◎ Let images be an empty list.
-
%~size ~LET `生来な寸法を決定する$手続きを利用して `cross-fade$f 関数の`具象-~obj~size$を見出した結果
【 `cross-fade^f 関数のどの引数も `image$t を伴わない場合、 手続きは ε を返すことになる。 その場合にどうなるかは、 ここには述べられていない (`既定の~obj~size$と見做される?)。 】
◎ Let size be a tuple of width and height, initialized to the result of finding the concrete object size of the cross-fade() function (using the natural dimensions of a cross-fade()). -
`cross-fade$f 関数の ~EACH( %引数 ) に対し: ◎ For each argument of the cross-fade() function:
- %~item ~LET ( `画像^i, `百分率^i ) からなる`~tuple$ ◎ Let item be a tuple consisting of an image and a percentage.
- ~IF[ %引数 は `image$t 値を伴う ] ⇒ %~item の`画像^i ~SET その `image^t 画像を %~size に拡縮し直した結果 ◎ If argument has an <image>, rescale it to size’s width and height and set item’s image to the result.\
- ~ELSE ( %引数 は `color$t 値を伴う) ⇒ %~item の`画像^i ~SET 寸法 %~size の,その `color^t の単色~画像 ◎ Otherwise, argument has a <color>; set item’s image to a solid-color image of the <color>, with size’s dimensions.
- %~item の`百分率^i ~SET %引数 の百分率 【無い場合は?】 ◎ Set item’s percentage to the argument’s percentage.
- 【 %画像~list に %~item を`付加する$ 】
- %百分率の総和 ~LET %画像~list を成すすべての`~item$の`百分率^iの総和 ◎ Let percentage sum be the sum of all the percentages of the items in images.
- ~IF[ %百分率の総和 ~LT 100% ] ⇒ %画像~list に次のようにされた`~tuple$を付加する ⇒# `画像^i ~SET 寸法 %~size の`透明な黒$にされた単色~画像, `百分率^i ~SET 100% ~MINUS %百分率の総和 ◎ If percentage sum is less than 100%, append a tuple to images consisting of a solid-color transparent-black image with size’s dimensions, and a percentage equal to 100% minus percentage sum.
- ~ELIF[ %百分率の総和 ~GT 100% ] ⇒ %画像~list を成す ~EACH( %~item ) に対し ⇒ %~item の`百分率^i ~SET %~item の百分率 ~DIV %百分率の総和 ◎ Otherwise, if percentage sum is greater than 100%, then for each item in images, divide item’s percentage by percentage sum, and set item’s percentage to the result.
-
~RET 次のようにされた画像:
- 寸法 %~size
- 各 画素は[ %画像~list 内の各 %~item の`画像^iの,対応する画素 ]たちに対し, %~item の百分率を重みに用いて線型~加重d平均をとった結果 (色~channel, ~alpha~channelとも平均をとる)
この段の目的においては、 各~画素の色は乗算済み~sRGB空間で計算するモノトスル。 ◎ For the purpose of this calculation, each pixel’s color must be in pre-multiplied sRGB.
上の演算の詳細 ◎ Details on the above operation
これは、 ~source画像たちに `N-way Porter-Duff dissolve^en 演算を適用することに等しい。 Wikipedia によれば、 これは,確率的な演算【`参考@https://en.wikipedia.org/wiki/Stochastic_computing$】として定義される — すなわち,結果の画素は、 ~source画像たちの対応する画素から, 画素ごとに独立に, ~source画像の重みに則って, ~randomに選ばれる。 これは、 画素を無限に小さく縮める伴い, 乗算済み色~空間~内で色の平均をとることに収束する。 ◎ This is applying an N-way Porter-Duff dissolve operation to the source images. Wikipedia defines dissolve as a stochastic operation, with the result pixels independently randomly chosen from the source images’ corresponding pixels according to their source images’ weights, but as pixels shrink to infinitely small, this converges to doing color-averaging in pre-multiplied color space.
特に,このことは、 `cross-fade(white 50%, transparent 50%)^v は,半透明な白による単色~画像を生産することを意味する。 (半透明な灰色ではなく — それは、 不透明な白と透明な黒な画素を乗算済みでない空間で平均した場合に取得されるものである。) ◎ In particular, this means that `cross-fade(white 50%, transparent 50%)` will produce a partially-transparent solid white image. (Rather than a partially-transparent gray, which is what you’d get if you averaged the opaque white and transparent black pixels in non-premultiplied space.)
乗算済みに変換すると精度がいくぶん失われることに加え、 ~graphics~libraryは,この演算を~nativeに~supportするとは限らない。 通例どおり、 指定された効果が達成される限り,どの~methodでも利用できる。 ◎ As converting to pre-multiplied does entail some loss of precision, and graphics libraries may or may not support this operation natively, as per usual any method can be used so long as it achieves the specified effect.
例えば,代わりに、 百分率を各~画素の~alphaに則って~~配分し直してから, 色~channelを乗算済みでない空間~内で平均できる。 例: `cross-fade(rgb(255 0 0 / 1) 40%, rgb(0 255 0 / .5) 20%, rgb(0 0 255 / 0) 40%)^v を描画するためには、 百分率を~alpha[ `1^v / `.5^v / `0^v ]に則って~~配分し直す — これは[ `40%^v / `10%^v / `0%^v ]を生産することになる【なぜそうなる?】 (これは[ `80%^v / `20%^v / `0%^v ]に正規化し直される)。 この時点で,生の色~channel値を平均でき、 その結果は `rgb(204 51 0 / .5)^v を伴う画像になる。 (それでも、 ~alpha~channelは,[ ~~配分し直された百分率ではなく,元の百分率 ]を利用して平均されることに注意。) ◎ For example, one can instead rebalance the percentages according to the alphas of each pixel, then do the color-channel averages in non-premultiplied space. E.g., to render cross-fade(rgb(255 0 0 / 1) 40%, rgb(0 255 0 / .5) 20%, rgb(0 0 255 / 0) 40%), rebalancing the percentages according to the 1 / .5 / 0 alphas would produce 40% / 10% / 0% (which renormalizes to 80% / 20% / 0%), at which point you can average the raw color channel values and end up with an rgb(204 51 0 / .5) image. (Note that the alpha channel is still averaged using the original percentages, not the rebalanced ones.) ◎ ↑↑Return final image.
2.6.3. 複階的な `cross-fade^f の単純~化
~WGによる解決にしたがって、 画像~用に “同等性” の観念を定義し, “同じ” 画像たちは算出d値の時点で百分率の総和をとって結合する。 ◎ Per WG resolution, define a notion of "equality" for images, and combine "same" images at computed-value time, summing their percentages.
~WGによる解決にしたがって、 直に入子にされた `cross-fade$f は[ 算出d値の時点で,単に百分率を分配して平坦~化する ]よう単純~化する — `cross-fade(A 10%, cross-fade(B 30%, C 70%) 90%)^v は `cross-fade(A 10%, B 27%, C 63%)^v になるように。 ◎ Per WG resolution, simplify directly-nested cross-fade() at computed-value time by just distributing the percentage and flattening; cross-fade(A 10%, cross-fade(B 30%, C 70%) 90%) becomes cross-fade(A 10%, B 27%, C 63%).
2.7. 要素を画像として利用する: `element^f 記法
`element$f 関数により、 作者は,文書~内の要素を画像として利用することが可能になる。 参照先の要素の外観が変化するに伴い,画像も変化するようになる。 これを利用すれば,例えば、 ~slideshowにおける[ 次/前 ]の~slideの~live~previewを作成したり, ~fancyな~gradientを生成するために `canvas$e 要素を参照したり, 背景を~animate化することさえ可能になる。 ◎ The element() function allows an author to use an element in the document as an image. As the referenced element changes appearance, the image changes as well. This can be used, for example, to create live previews of the next/previous slide in a slideshow, or to reference a canvas element for a fancy generated gradient or even an animated background.
注記: `element$f 関数が再生産するのは、 参照先の要素の`外観^emに限られ,実際の内容やその構造を再生産することはない。 作者は、 装飾的な目的に限り,これを利用するべきである。 `element$f を,~pageにまたがる有意な内容を伴う要素を再生産するために利用してはナラナイ — 代わりに、 単に文書の中に要素の複数の複製を挿入すること。 ◎ Note: The element() function only reproduces the appearance of the referenced element, not the actual content and its structure. Authors should only use this for decorative purposes, and must not use element() to reproduce an element with significant content across the page. Instead, just insert multiple copies of the element into the document.
`element$f の構文は、 次で与えられる: ◎ The syntax for element() is:
`element@f = element( `id-selector$t )
ここで `id-selector$t は`~ID選択子$である。 `SELECT$r ◎ where <id-selector> is an ID selector [SELECT].
外部~文書~内の要素(~SVGの`塗り~server$など)を参照rできるようにする必要はあるか? あるいは、 この用途には `url^f を利用するだけで十分か? ◎ Do we need to be able to refer to elements in external documents (such as SVG paint servers)? Or is it enough to just use url() for this?
この名前は、 GCPM† のいくぶん類似な関数と競合する。 これはどうにかして解決される必要がある。 【† `CSS Generated Content for Paged Media Module^en(~page媒体~用の生成d内容)】 ◎ This name conflicts with a somewhat similar function in GCPM. This needs to be resolved somehow.
要素の “反映” を行う能が求まれる — 要素~上の背景~画像として, または疑似要素~内で。 循環の検出を誘発するのを避けるため、 これは特別に取扱われる必要がある。 ◎ Want the ability to do "reflections" of an element, either as a background-image on the element or in a pseudo-element. This needs to be specially-handled to avoid triggering the cycle-detection.
`overflow^p が `paged^v にされている~view内の単独の~pageにはどう取組むか? ◎ When we have overflow:paged, how can we address a single page in the view?
`element$f 関数は、 その引数に与えた~IDに合致する要素を参照する。 ~IDは、 先ず `elementSources$m ~map内で検索される。 見出されなかった場合、 文書【内の要素】に対し照合される — 合致した要素が複数ある場合、 関数は,それらのうち最初の要素を参照する。 ◎ The element() function references the element matched by its argument. The ID is first looked up in the elementSources map, as described in that section. If it’s not found, it’s then matched against the document. If multiple elements are matched, the function references the first such element.
`element$f 関数により表現される画像は、 要素が文書~内で可視かどうかに基づいて変わり得る: ◎ The image represented by the element() function can vary based on whether the element is visible in the document:
- 要素は`描画され$ていて,`置換d要素$の子孫ではない, かつ`積層~文脈$を生成する場合: ◎ an element that is rendered, is not a descendant of a replaced element, and generates a stacking context
-
関数は、 `生来な~size$が参照先の要素の `装飾d限界~box@ に等しい画像を表現する: ◎ The function represents an image with its natural size equal to the decorated bounding box of the referenced element:
- ~CSS描画~modelを利用して描画される要素に対しては、 `装飾d限界~box$は,[ `首要~box$のすべての断片の`~border画像~区画$を包含する, かつ軸に~~平行 ]な最も小さい矩形になる。 ◎ for an element rendered using a CSS rendering model, the decorated bounding box is the smallest axis-aligned rectangle that contains the border image areas of all the fragments of the principal box
- ~SVG描画~modelを利用して描画される要素に対しては、 `装飾d限界~box$は, `~SVGにより定義されるそれ@~SVGcoords#TermDecoratedBoundingBox$になる。 【!~TR/SVGTiny12/intro.html#TermDecoratedBoundingBox】 【大雑把に言えば,外形線の太さも含め,図形~全体を囲う最~小な矩形】 ◎ for an element rendered using the SVG rendering model, the decorated bounding box is defined by SVG
注記: 画像の限界域の外側にあるものは既定で切取られるので、 ~box影の様な`装飾d限界~box$の外側へ拡張する装飾は, 切取られることになる。 ◎ Note: Because images clip anything outside their bounds by default, this means that decorations that extend outside the decorated bounding box, like box shadows, may be clipped.
- 画像は、[ 広さ無限で`透明な黒$にされた~canvas ]上に[ 参照先の要素とその子孫 ]を描画して構築され (文書~内にあるときの~sizeと同じになる),[ `装飾d限界~box$の各~辺が画像の各~辺に接合される ]ように位置される。 ◎ The image is constructed by rendering the referenced element and its descendants (at the same size that they would be in the document) over an infinite transparent canvas, positioned so that the edges of the decorated bounding box are flush with the edges of the image.
- 実装を効率的にするためには、 要素には積層~文脈またはそれに準じるものが要求されるよう見受けられる。 全部的な積層~文脈は必要か? あるいは疑似的な積層~文脈で済むか? それは通常の積層~文脈になる必要はあるか? あるいは `element^f に描画するときに積層~文脈として描画するだけで済むか? ◎ Requiring some degree of stacking context on the element appears to be required for an efficient implementation. Do we need a full stacking context, or just a pseudo-stacking context? Should it need to be a stacking context normally, or can we just render it as a stacking context when rendering it to element()?
- 参照先の要素またはその先祖に変形-が適用されている場合、 要素を画像として描画するときには,変形-は無視するモノトスル。 `CSS3-TRANSFORMS$r ◎ If the referenced element has a transform applied to it or an ancestor, the transform must be ignored when rendering the element as an image. [CSS3-TRANSFORMS]
- 参照先の要素が何~pageかに分断されている場合、 要素は,~pageの内容~区画が~page割り方向に接合されていたかのように表示される — ~pageの各~辺は初期~包含塊の対応する始端~辺に整列された上で。 何~行lか/何~柱か に分断されている要素は、 単に`装飾d限界~box$と伴に描画される ◎ If the referenced element is broken across pages, the element is displayed as if the page content areas were joined flush in the pagination direction, with pages' edges corresponding to the initial containing block’s start edge aligned. Elements broken across lines or columns are just rendered with their decorated bounding box.
- 実装は、 参照先の要素~用に生成した既存の~bitmap~dataを再利用してもヨイ。 あるいは,要素の表示-を生成し直して、 当の~sizeにおける画像の品質を最大化してもヨイ (例えば、参照先の要素は~SVG素片であると検出された場合)。 生成し直す場合でも、 結果の画像における~layoutは参照先の要素から変化させないモノトスル。 すなわち,画像の見かけは、 ~raster化の品質の違いを除き,参照先の要素と一致させるモノトスル。 ◎ Implementations may either re-use existing bitmap data generated for the referenced element or regenerate the display of the element to maximize quality at the image’s size (for example, if the implementation detects that the referenced element is an SVG fragment); in the latter case, the layout of the referenced element in the image must not be changed by the regeneration process. That is, the image must look identical to the referenced element, modulo rasterization quality.
-
`p$e 要素を文書~内の他所で背景として再利用する例: ◎ As a somewhat silly example, a p element can be reused as a background elsewhere in the document:
`efunc1^dgm - 要素は`描画され$ないが、 `塗り~source$を供する場合: ◎ an element that is not rendered, but which provides a paint source
- 関数は、 `塗り~source$の[ `生来な寸法$, 【内在的な】外観 ]を伴う画像を表現する — ~sizeと外観は、 ~host言語により定義される。 ◎ The function represents an image with the natural dimensions and appearance of the paint source. The host language defines the size and appearance of paint sources.
-
例えば, `element$f 関数は、 ~HTML文書~内の ~SVG `pattern$e 要素を参照できる: ◎ For example, the element() function can reference an SVG <pattern> element in an HTML document:
<!DOCTYPE html> <svg> <defs> <pattern id='pattern1'> <path d='...'> </pattern> </defs> </svg> <p style="background: element(#pattern1)"> ここでは~patternを背景に利用しています。 ~patternが変化したり~animateされた場合、 背景も更新されることになります。 ◎ I’m using the pattern as a background! If the pattern is changed or animated, my background will be updated too! </p>
~HTMLは、 塗り~sourceを供する数種の要素 — [ `canvas$e, `img$e, `video$e ]など — を定義する。 ~page内には表示されてないが、 中に何か描かれている `canvas$e を,~CSSから参照できることを意味する: ◎ HTML also defines that a handful of elements, such as canvas, img, and video, provide a paint source. This means that CSS can, for example, reference a canvas that’s being drawn into, but not displayed in the page:
<!DOCTYPE html> <script> var %canvas = document.querySelector('#animated-bullet'); %canvas.width = 20; canvas.height = 20; drawAnimation(%canvas); </script> <canvas id='animated-bullet' style='display:none'></canvas> <ul style="list-style-image: element(#animated-bullet);"> <li> ここでは `canvas$e を~bulletに利用しています。 ◎ I’m using the canvas as a bullet! </li> <li> ここでも。 ◎ So am I! </li> <li> `canvas$e が~JSで変更される度に,すべての~bullet画像も更新されます。 ◎ As the canvas is changed over time with Javascript, we’ll all update our bullet image with it! </li> </ul>
- その他の場合: ◎ anything else
- 関数は`無効な画像$を表現する。 ◎ The function represents an invalid image.
-
例えば,次に挙げる `element$f の利用は、 どれも透明な背景になる: ◎ For example, all of the following element() uses will result in a transparent background:
<!DOCTYPE html> <p id='one' style="display:none; position: relative;">one</p> <iframe src="http://example.com"> <p id='two' style="position: relative;"> ~fallback内容 ◎ I’m fallback content! </p> </iframe> <ul> <li style="background: element(#one);"> 要素 `p id='one'^e は、 `display^p が `none^v にされていて`描画され$ないので,塗り~sourceを供さない。 ◎ A display:none element isn’t rendered, and a P element doesn’t provide a paint source. </li> <li style="background: element(#two);"> `element^f には `iframe$e の様な`置換d要素$の子孫は利用できない。 ◎ The descendants of a replaced element like an IFRAME can’t be used in element() either. </li> <li style="background: element(#three);"> `id^a "`three^v" の要素はないので、 この背景も透明になる。 ◎ There’s no element with an id of "three", so this also gets rendered as a transparent image. </li> </ul>
結付けられた~boxがない要素は、 `描画され@ ないとされる。 これは、例えば[ 要素またはその ある先祖にて, `display^p が `none^v にされている場合 ]などに起こり得る。 ~host言語は、 要素が描画されないと見なされ得る追加的な仕方を定義してもヨイ — 例えば,~SVGにおいては、 `defs$e 要素のどの子孫も,描画されないものと見なされる。 ◎ An element is not rendered if it does not have an associated box. This can happen, for example, if the element or an ancestor is display:none. Host languages may define additional ways in which an element can be considered not rendered; for example, in SVG, any descendant of a <defs> element is considered to be not rendered.
`element$f 関数には、 多くの用途がある。 例えば、 ~slideshowにおける[ 次/前 ]の~slideの~previewを示すために利用できる: ◎ The element() function can be put to many uses. For example, it can be used to show a preview of the previous or next slide in a slideshow:
<!DOCTYPE html>
<script>
function navigateSlides() {
var %currentSlide = ...;
document.querySelector('#prev-slide').id = '';
document.querySelector('#next-slide').id = '';
%currentSlide.previousElementSibling.id = 'prev-slide';
%currentSlide.nextElementSibling.id = 'next-slide';
}
</script>
<style>
.slide {
/*
`element^f 可能になるためには、
積層~文脈にする必要がある。
◎
Need to be a stacking context to be element()-able.
*/
position: relative;
}
#prev-preview, #next-preview {
position: fixed;
...
}
#prev-preview { background: element(#prev-slide); }
#next-preview { background: element(#next-slide); }
</style>
<a id='prev-preview'>前の~slide</a>
<a id='next-preview'>次の~slide</a>
<section class='slide'>...</section>
<section class='slide current-slide'>...</section>
...
この例の `navigateSlides()^c 関数は、[ 次/前 ]の~slideの `id^a を更新する — それは、 ~slideの傍に浮動している小さい~box内に表示される。 【利用者は,】 `element$f 関数による~slideとはヤリトリできないので (それは単なる画像である)、 ~preview~boxに対し `click^et ~handlerを利用して, ~pageを~navigateし易くすることもできる。 ◎ In this example, the navigateSlides function updates the ids of the next and previous slides, which are then displayed in small floating boxes alongside the slides. Since you can’t interact with the slides through the element() function (it’s just an image), you could even use click handlers on the preview boxes to help navigate through the page.
2.7.1. 塗り~source
~host言語は、 何らかの要素を `塗り~source@ を供するものとを定義してもヨイ。 塗り~sourceは、[ 内在的な外観があり,[ ~layoutする/描画- ]する必要なく`具象-~obj~size$を得せる ]ので,`描画され$ていなくとも画像として利用できる。 ◎ Host languages may define that some elements provide a paint source. Paint sources have an intrinsic appearance and can obtain a concrete object size without having to do layout or rendering, and so may be used as images even when they’re not rendered.
~HTMLにおいては、[ `img$e / `video$e / `canvas$e ]要素が塗り~sourceを供する。 ◎ In HTML, the img, video, and canvas elements provide paint sources.
~SVGにおいては、 `塗り~server$を供する要素が,塗り~sourceを供する。 注記: SVG1.1 においては,[ `linearGradient@~SVG11/pservers.html#LinearGradientElement$e, `radialGradient@~SVG11/pservers.html#RadialGradientElement$e, `pattern@~SVG11/pservers.html#PatternElement$e ]要素が塗り~sourceを供する。 それらは,その仕様にて述べるように描かれる — 次に定義される座標系の下で: ◎ In SVG, any element that provides a paint server provides a paint source. Note: In SVG1.1, the <linearGradient>, <radialGradient>, and <pattern> elements provide paint sources. They are drawn as described in the spec, with the coordinate systems defined as follows:
- `objectBoundingBox^v
- 原点は,描かれている`具象-~obj~size$により定義される矩形の左上隅。 寸法は,`具象-~obj~size$と同じ。 `利用元~単位$は,`具象-~obj~size$の横幅, 縦幅。 ◎ The coordinate system has its origin at the top left corner of the rectangle defined by the concrete object size that it’s being drawn into, and the same width and height as the concrete object size. A single user coordinate is the width and height of the concrete object size.
- `userSpaceOnUse^v
- 原点は,描かれている`具象-~obj~size$により定義される矩形の左上隅。 寸法は,`具象-~obj~size$と同じ。 `利用元~単位$は, `px$u 単位に等価。 ◎ The coordinate system has its origin at the top left corner of the rectangle defined by the concrete object size that it’s being drawn into, and the same width and height as the concrete object size. User coordinates are sized equivalently to the CSS px unit.
注記: この~moduleの将来の~versionでは、 次を参照rする仕方も定義するものと期待されている ⇒# 外部~文書~内の塗り~source/ もっぱら~scriptにより作成され,文書~内にまったく挿入されない塗り~source ◎ Note: It is expected that a future version of this module will define ways to refer to paint sources in external documents, or ones that are created solely by script and never inserted into a document at all.
2.7.2. 文書~外~sourceの利用-法: `ElementSources^I ~interface
`element$f 関数は,通常は文書の中の要素を選択するが、 `塗り~source$を供する要素は,必ずしも文書~内にある必要はない。 例えば、 ~scriptにより[ 作成され, 保守され, 描かれ ],文書に直に挿入されてはいない~HTML `canvas$e 要素など。 ◎ The element() function normally selects elements within a document, but elements that provide a paint source don’t necessarily need to be in-document. For example, an HTML canvas element can be created, maintained, and drawn into entirely in script, with no need for it to be inserted into the document directly.
`~ID選択子$は,文書の外側にある要素を選択できないので、 要素を参照rする仕方が必要になる。 `elementSources$m ~map~objがこれを供する。 ◎ All that’s needed is a way to refer to the element, as an ID selector cannot select elements outside of the document. The elementSources Map object provides this.
partial namespace `CSS$I { [`SameObject$] readonly attribute `any$ `elementSources@m; };
`elementSources$m ~mapを成す各~entryのうち,次を満たすものが、 `element$f 関数にて可用になる ⇒ [ ~keyは文字列である ]~AND[ 値は`塗り~source$を供している~objである ] ◎ Any entries in the elementSources map with a string key and a value that is an object providing a paint source are made available to the element() function.
`element$f に与えた `id-selector$t に対しては、 先ず `elementSources$m ~map内で,~ID(先頭の文字 `#^c は含めない)が検索される: ◎ Whenever element() uses an <id-selector>, the ID’s value (without the leading # character) is first looked up in the elementSources map:
- ~IDを~keyとする~entryが見出された場合、 `element$f 関数は,~entryの値で与えられる~objが`塗り~source$を供して[ いるならば その塗り~source / いないならば`無効な画像$ ]を表現する。 ◎ If it’s found, and the object associated with it provides a paint source, the element() function represents that paint source. ◎ If it’s found, but the object associated with it doesn’t provide a paint source, the element() function represent an invalid image.
- 見出されなかった場合、 通常通り,文書~内を探す。 ◎ If the ID isn’t found in the map at all, it’s then looked for in the document as normal.
この`~ID選択子$の再利用は、 Mozilla の挙動に合致する。 編集者は、 文法の先頭を `custom-ident$t で塞ぐのは避けたいと~~考えている — それは構文~空間を食い過ぎるので。 別の可能性として、 値を言語により定義される~keywordから開始させ, `custom-ident$t を後続させる~~案もあるが — `element(external fancy)^v か何かの様に。 何か命名の示唆があれば歓迎する。 ◎ This reuse of the ID selector matches Moz behavior. I’m trying to avoid slapping a <custom-ident> right in the beginning of the grammar, as that eats too much syntax-space. Another possibility, though, is to start the value with a language-defined keyword followed by a <custom-ident>, like element(external fancy) or something. Naming suggestions welcome.
外部~canvasで~fancyな背景を~animateする例: ◎ For example, fancy animating backgrounds can be done with an external canvas:
<script> var %bg = document.createElement('canvas'); %bg.height = 200; %bg.width = 1000; drawFancyBackground(%bg); CSS.elementSources.set('fancy', %bg); </script> <style> h1 { background-image: element(#fancy); } </style>
“~fancyな” ~canvasの中に何かが描かれ,~animateされるに伴い,すべての `h1^e 要素の背景も自動的かつ一斉に更新されることになる。 ◎ As the "fancy" canvas is drawn into and animated, the backgrounds of all the H1 elements will automatically update in tandem.
`elementSources$m ~mapは,文書に対し`~ID選択子$を照合する前に諮られるので、 文書~内に `#fancy^v に合致する要素があっても,背景は依然として `elementSources$m 値から来ることに注意。 ◎ Note that the elementSources map is consulted before the document to match the ID selector, so even if there’s an element in the document that would match #fancy, the backgrounds will still predictably come from the elementSources value instead.
2.7.3. 循環の検出
`element$f 関数は、 無為な循環関係を生産し得る — 自身を自前の背景に利用する要素など。 これらの関係性は,依存関係~graphを保ち続けるので、 共通的な循環~検出~algoを利用すれば,容易かつ依拠-可能に検出して解決できる。 ◎ The element() function can produce nonsensical circular relationships, such as an element using itself as its own background. These relationships can be easily and reliably detected and resolved, however, by keeping track of a dependency graph and using common cycle-detection algorithms.
依存関係~graphは、 次に挙げる辺からなる: ◎ The dependency graph consists of edges such that:
- どの要素も、 その子たちに依存する。 ◎ every element depends on its children
- 要素 A 上のある~propが `element$f 関数を利用していて,要素 B を指しているならば、 A は B に依存する ◎ for any element A with a property using the element() function pointing to an element B, A depends on B
- ~host言語が,要素が他の要素の描画を参照rする仕方を定義しているならば、 参照元の要素は参照先の要素に依存する。 例えば,~SVGにおいては、 `use$e 要素は参照先の要素に依存する。 ◎ if a host language defines a way for elements to refer to the rendering of other elements, the referencing element depends on the referenced element. For example, in SVG, a <use> element depends on the element it referenced.
この~graphが循環を包含する場合、 その循環に関与しているどの `element$f 関数も,`無効な画像$になる。 ◎ If the graph contains a cycle, any element() functions participating in the cycle are invalid images.
3. ~gradient
~gradientとは、 ある色から別の色へ滑らかに~fadeする画像である。 これらは、[ 背景~画像, ~button, その他多くのもの ]に淡い陰影を施すために,共通的に利用される。 この節に述べる `~gradient関数@ は、 そのような画像を簡素な構文で指定することを作者に許容する — ~UAが~pageを描画するときに自動的に生成できるような。 `~gradient関数$の構文は: ◎ A gradient is an image that smoothly fades from one color to another. These are commonly used for subtle shading in background images, buttons, and many other things. The gradient functions described in this section allow an author to specify such an image in a terse syntax, so that the UA can generate the image automatically when rendering the page. The syntax of a <gradient> is:
`gradient@t = `linear-gradient$ft | `repeating-linear-gradient$ft | `radial-gradient$ft | `repeating-radial-gradient$ft | `conic-gradient$ft | `repeating-conic-gradient$ft
他の `image$t 型と同じく、 この仕様にて定義される~gradientは,画像を受容するどの~propにも利用できる。 例えば: ◎ As with the other <image> types defined in this specification, gradients can be used in any property that accepts images. For example:
`background^p: `linear-gradient(white, gray)^v; `list-style-image^p: `radial-gradient(circle, #006, #00a 90%, #0000af 100%, white 100%)^v;
~gradientは、 `~gradient~box@ と呼ばれる,`具象-~obj~size$の寸法による~boxの中に描かれる。 しかしながら、 ~gradient自身は`生来な寸法$を持たない。 ◎ A gradient is drawn into a box with the dimensions of the concrete object size, referred to as the gradient box. However, the gradient itself has no natural dimensions.
例えば,~gradientを背景として利用する場合、 既定では,~gradientは[ 要素の~padding~boxに~sizeされた`~gradient~box$ ]の中に描かれることになる。 `background-size$p が, `100px 200px^v のような数値的な値にされている場合、 `~gradient~box$は,幅 100px, 高さ 200px になる。 同様に, `list-style-image$p として利用される~gradientに対しては、 ~boxは,その~propの`既定の~obj~size$である 1em の正方形になる。 ◎ For example, if you use a gradient as a background, by default the gradient will draw into a gradient box the size of the element’s padding box. If background-size is explicitly set to a value such as 100px 200px, then the gradient box will be 100px wide and 200px tall. Similarly, for a gradient used as a list-style-image, the box would be a 1em square, which is the default object size for that property.
~gradientは、 `~gradient線@ (その形状は、 ~gradientの型に依存し,~~幾何的には[ 直線/射線/渦巻き線 ]になり得る) の `始点@ と `終点@ を定義した上で,この線~上のいくつかの点に色を指定することにより指定される。 これらの色は、 まず,線~上の他の部分を埋めるように滑らかに混色される。 `~gradient線$の色を利用して~gradient 全体の色を実際に生産する方法は、 ~gradientの各~型ごとに定義される。 ◎ Gradients are specified by defining the starting point and ending point of a gradient line (which, depending on the type of gradient, may be technically a line, or a ray, or a spiral), and then specifying colors at points along this line. The colors are smoothly blended to fill in the rest of the line, and then each type of gradient defines how to use the color of the gradient line to produce the actual gradient.
3.1. 線型~gradient: `linear-gradient^f 記法
この~level 4 は、[ `linear-gradient$f, `repeating-linear-gradient$f ]に `color-interpolation-method$t 引数を追加する。 それは、 `~gradient線$上の色を補間するときに利用する色~空間と~path†を指示する — `CSS-COLOR-4$r `§ 色~補間@~CSSCOLOR#interpolation$ を見よ。 ◎ This level adds a <color-interpolation-method> argument to linear-gradient() and repeating-linear-gradient(), indicating the color space and path to use when interpolating colors on the gradient line. See CSS Color 4 § 12. Color Interpolation.
【† 言い換えれば、 空間を[ `極-座標@~CSSCOLOR#cylindrical-polar-color$, `直交-座標@~CSSCOLOR#rectangular-orthogonal-color$ ]どちらにするか。 極-座標の場合(色相を補間する場合)、 ~pathは曲線になる(曲線に沿って補間することになる)。 】
`linear-gradient-syntax@t = [ [ `angle$t | `to^v `side-or-corner$t || `color-interpolation-method$t ]?, `color-stop-list$t【!`side-or-corner@t = [left | right] || [top | bottom]】
3.1.1. 補間に対する色~空間の効果の例
◎非規範的色~空間は、 補間に対し有意な効果を伴い得る。 ◎ The effect of colorspace on interpolation can be significant.
この例では、 3 種の色~空間~内で,同じ色~pair[ `#f01^v, `#081^v ]の合間に線型~gradientが描かれる。 2 個目(図中段)の~gradientは、 ~gamma符号化された~sRGBを利用する (~level 3 では、これしか選べなかった) — 結果は、 中点で明瞭に暗になり過ぎる。 1 個目(図上段)の~gradientは、 ~CIE~Labを利用する — それは、 より知覚的に一様な結果を与える。 3 個目(図下段)の~gradientは、 ~Oklabを利用する — それは、 ここでは~CIE~Labとほぼ同じ結果を与える。 ◎ In this example, a linear gradient between the same pair of colors #f01 and #081 is drawn in three different colorspaces. The middle gradient uses gamma-encoded sRGB, which was the only choice in CSS Images 3; the result is clearly too dark at the midpoint. The upper gradient uses CIE Lab, giving a more perceptually uniform result; while the lower gradient uses Oklab, which here gives almost the same result as CIE Lab.
- `linear-gradient(in lab to right, #F01, #081)^v
- `linear-gradient(in srgb to right, #F01, #081)^v
- `linear-gradient(in oklab to right, #F01, #081)^v
3 種の色~空間における~redから~greenへの~gradient ◎ red to green gradient in three colorspaces
この例では、 3 種の色~空間~内で,同じ色~pair[ `white^v, `#01E^v ]の合間に線型~gradientが描かれる。 2 個目(図中段)の~gradientは、 ~gamma符号化された~sRGBを利用する — この結果もまた、 中点で暗になり過ぎる上に,彩度がやや低下し,少し~purpleっぽくなる。 1 個目(図上段)の~gradientは、 ~CIE~Labを利用する — それは、 中点で暗になり過ぎるのを避けるが,有意な~purpleっぽさがある。 3 個目(図下段)の~gradientは、 ~Oklabを利用する — それは、 より知覚的に一様な結果を与えることに加え,~purpleっぽさはまったく無い。 ◎ In this example, a linear gradient between the same pair of colors white and #01E is drawn in three different colorspaces. The middle gradient uses gamma-encoded sRGB, the result is again too dark at the midpoint, is a little desaturated, and has a slight purplish cast. The upper gradient uses CIE Lab, which avoids the too-dark midpoint but has a significant purple cast; while the lower gradient uses Oklab, giving a more perceptually uniform result with no purple cast at all.
- `linear-gradient(in lab to right, white, #01E)^v
- `linear-gradient(in srgb to right, white, #01E)^v
- `linear-gradient(in oklab to right, white, #01E)^v
3 種の色~空間における白から~blueへの~gradient ◎ white to blue gradient in three colorspaces
この例では、 3 種の色~空間~内で,同じ色~pair[ `#44C^v, `#795^v ]の合間に線型~gradientが描かれる。 これは、[ ~CIE~Labにおける色相の非-線形性が,~blueがかった色~すべてに影響する ]ことをデモる — 有彩度な原色~blueから白への~gradientのみならず。 2 個目(図中段)の~gradientは、 ~gamma符号化された~sRGBを利用する — その結果もまた、 中点で暗になり過ぎ,少し~purpleっぽくなる。 1 個目(図上段)の~gradientは、 ~CIE~Labを利用する — それは、 中点で暗になり過ぎるのを避けるが,有意な~purpleっぽさがある。 3 個目(図下段)の~gradientは、 ~Oklabを利用する — これもまた、 より知覚的に一様な結果を与える上に,~purpleっぽさはまったく無い。 ◎ In this example, a linear gradient between the same pair of colors #44C and #795 is drawn in three different colorspaces. This demonstrates that the hue non-linearity of CIE Lab affects all bulueish colors, not just the gradient from saturated primary blue to white. The middle gradient uses gamma-encoded sRGB, the result is again too dark at the midpoint, and has a slight purplish cast. The upper gradient uses CIE Lab, which avoids the too-dark midpoint but has a significant purple cast; while the lower gradient uses Oklab, again giving a more perceptually uniform result with no purple cast at all.
- `linear-gradient(in lab to right, #44C, #795)^v
- `linear-gradient(in srgb to right, #44C, #795)^v
- `linear-gradient(in oklab to right, #44C, #795)^v
3 種の色~空間における~blueから~greenへの~gradient ◎ blue to green gradient in three colorspaces
~gradient補間~用に, 矩形な色~空間に代えて極座標な色~空間を選べば、 色停どうしの色相が遠く離れていても,彩度の低下を避けれる。 極座標な色~空間~内での補間は、 内来的に色度を保全する — 中間~色は,色域から外れ易くなるが、 そうなった場合,色域~内に戻すよう色域~対応付けが施される。 ◎ Choosing a polar, rather than rectangular, colorspace for gradient interpolation avoids desaturation if the hues of the color stops are far apart. Interpolating in a polar colorspaces is inherently chroma-preserving, although it is easy for the intermediate colors to fall out of gamut; they will then be gamut mapped to bring them back into gamut.
この例では、 5 種の色~空間~内で,同じ色~pair[ `#A37^v, `#595^v ]の合間に線型~gradientが描かれる。 1 個目から(図の上から)順に,[ ~CIE~LCH, ~CIE~Lab, ~sRGB, ~Oklab, ~Oklch ] — うち 2 つ【最初と最後】は極座標である。 ◎ In this example, a linear gradient between the same pair of colors #A37 and #595 is drawn in five different colorspaces, two of them polar. From top to bottom: CIE LCH, CIE Lab, sRGB, Oklab, Oklch.
矩形な空間においては,中点は灰色がかる一方で、 極座標な空間~内の中間~色は,色度を保全するように曲がった~pathをなぞる。 ◎ The rectangular spaces have a greyish midpoint, while the intermediate colors in the polar spaces follow a curved, chroma-preserving path.
- `linear-gradient(in lch to right, #A37, #595)^v
- `linear-gradient(in lab to right, #A37, #595)^v
- `linear-gradient(in srgb to right, #A37, #595)^v
- `linear-gradient(in oklab to right, #A37, #595)^v
- `linear-gradient(in oklch to right, #A37, #595)^v
5 種の色~空間における~blueから~greenへの~gradient ◎ blue to green gradient in three colorspaces
3.2. 放射型~gradient: `radial-gradient^f 記法
3.2.1. `color-interpolation-method^t の追加-法
この~level 4 は、[ `radial-gradient$f, `repeating-radial-gradient$f ]に `color-interpolation-method$t 引数を追加する。 それは、 `~gradient線$上の色を補間するときに利用する色~空間と~pathを指示する — `CSS-COLOR-4$r `§ 色~補間@~CSSCOLOR#interpolation$ を見よ。 ◎ This level adds a <color-interpolation-method> argument to radial-gradient() and repeating-radial-gradient(), indicating the color space and path to use when interpolating colors on the gradient line. See CSS Color 4 § 12 Color Interpolation.
`radial-gradient-syntax@t = [ [ [ `radial-shape$t || `radial-size$t ]? [ at `position$t ]? ] || `color-interpolation-method$t]? , `color-stop-list$t
この例では、 3 種の色~空間~内で,同じ色~pair[ `color(display-p3 0.918 0.2 0.161)^v, `#081^v ]の合間に放射型~gradientが描かれる。 ここに記したように、 すべての色停を同じ色~空間に入れる必要はない。 2 個目(図中段)の~gradientは、 ~gamma符号化された~sRGBを利用する — その結果は、 明瞭に中点にて暗になり過ぎる。 1 個目(図上段)の~gradientは、 ~CIE~Labを利用する — それは、 より知覚的に一様な結果を与える。 3 個目(図下段)の~gradientは、 ~Oklabを利用する — それは、 ここでは~CIE~Labとほぼ同じ結果を与える。 ◎ In this example, a radial gradient between the same pair of colors color(display-p3 0.918 0.2 0.161) and #081 is drawn in three different colorspaces. Notice that the color stops do not all need to be in the same colorspace. The middle gradient uses gamma-encoded sRGB, the result is clearly too dark at the midpoint. The upper gradient uses CIE Lab, giving a more perceptually uniform result; while the lower gradient uses Oklab, which here gives almost the same result as CIE Lab.
- `radial-gradient(in lab farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)^v
- `radial-gradient(in srgb farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)^v
- `radial-gradient(in oklab farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)^v
3 種の色~空間における~redから~greenへの~gradient ◎ red to green gradient in three colorspaces
3.2.2. `radial-size^t の拡張p-法
この~level 4 は、 `basic-shape$t に対する値[ `circle$f, `ellipse$f ]の追加を含めるよう, `radial-size$t を拡張する: ◎ This level extends the <radial-size> options to include the additions from the circle() and ellipse() <basic-shape> values:
`radial-size$t = `radial-extent$t{1,2} | `length-percentage[0,∞]$t{1,2}
`radial-size$t は:
-
【 `radial-gradient-syntax$t を成す】 `radial-shape$t として, `circle$v が指定された下では:
- 成分~値が 2 個ある場合、 【それを利用している~gradient関数は】 無効になる。
-
`percentage$t 値は、 当の`~gradient~box$の[ 横幅, 縦幅 ]の “平均化対角線長さ” — 次の式で与えられる長さ — を~~基準に解決される ⇒ √( ( 横幅 ~MUL 横幅 ) ~PLUS ( 縦幅 ~MUL 縦幅 ) ) ~DIV √2
【 これは、 ~SVGに定義される`正規化-済み対角線長さ@~SVGcoords#_normalized-diagonal$と同じになる。 】
-
他の場合 ⇒ 楕円【`終形$】を成す[ 横~半径, 縦~半径 ]を順に指示する。
【 成分~値が 1 個しかない場合、それが 2 個目の値も与えるであろう。 】
3.3. 円錐型~gradient: `conic-gradient^f 記法
円錐型~gradientは、 放射型~gradientと類似に 真円の中心を指定するが、 その色停は,[ 中心から湧出る線ではなく,`真円の周^em ]に沿って配置される — 色は、 中心から外方へは進捗せず,中心の周りを回るに伴い滑らかに遷移する。 ◎ A conic gradient starts by specifying the center of a circle, similar to radial gradients, except that conic gradient color-stops are placed around the circumference of the circle, rather than on a line emerging from the center, causing the color to smoothly transition as you spin around the center, rather than as you progress outward from the center.
円錐型~gradientを指定するためには、[ 回転~角度, ~gradientの中心 ]を指示した上で,色停たちが成す~listを指定する。 円錐型~gradientの各~色停は `angle$t で指定される — `length$t 指定して配置する[ 線型/放射型 ]~gradientと違って。 射線は,中心からすべての方向へ湧出るように描かれ、 各~射線の色は,それが~gradient線に交差する所の色に等しくなる。 ◎ A conic gradient is specified by indicating a rotation angle, the center of the gradient, and then specifying a list of color-stops. Unlike linear and radial gradients, whose color-stops are placed by specifying a <length>, the color-stops of a conic gradient are specified with an <angle>. Rays are then drawn emerging from the center and pointing in all directions, with the color of each ray equal to the color of the gradient-line where they intersect it.
注記: これらの~gradientが “円錐型” ( “`conic^en” あるいは “`conical^en” )と呼ばれるわけは、 それが生産する~patternが — 一方の色停を他方のそれより有意に明るくしたときには — 円錐を上から眺めた様な見かけになるからである。 それは,射線の回転~角度を変えることで生産されるので、 一部の文脈においては “角度” ~gradientとも称されている。 ◎ Note: These gradients are called "conic" or "conical" because, if the color stops are chosen to be significantly lighter on one side than the other, it produces a pattern that looks like a cone observed from above. They are also known as "angle" gradients in some contexts, since they are produced by varying the rotation angle of a ray.
この例は、 `conic-gradient(at 25% 30%, white, black 60%)^v がどう描かれるかを視覚的に示す。 各~色停の位置は,常に角度に解決されるので、 `25% 30%^v の効果は、 ~gradientの~2D並進~しかないことに注意 — すなわちそれは、 ~gradientがどう描かれるかには影響しない。 ◎ This example visually illustrates how conic-gradient(at 25% 30%, white, black 60%) would be drawn. Note that since color stop positions always resolve to angles, the only effect of the at 25% 30% is a 2D translation of the gradient, i.e. it does not affect how the gradient is drawn.
3.3.1. `conic-gradient^f の構文
円錐型~gradientの構文は: ◎ The syntax for a conic gradient is:
`conic-gradient@f = conic-gradient( [ `conic-gradient-syntax$t ] ) `conic-gradient-syntax@t = [ [ [ from `angle$t ]? [ at `position$t ]? ] || `color-interpolation-method$t ]?, `angular-color-stop-list$t
各 引数は、 次に従って定義される: ◎ The arguments are defined as follows:
- `angle$t
- ~gradient全体がこの角度で回転される。 省略-時の既定は、 `0deg^v になる。 角度 0 の場合、 `angle$t の単位~識別子は省略してもヨイ。 ◎ The entire gradient is rotated by this angle. If omitted, defaults to 0deg. The unit identifier may be omitted if the <angle> is zero.
- `position$t
- ~gradientの `~gradient中心@ を決定する。 値は `radial-gradient$f に対するときと同じに解決される。 この引数が省略された場合の既定は `center$v とする。 ◎ Determines the gradient center of the gradient. The <position> value type (which is also used for background-position) is defined in [CSS-VALUES-3], and is resolved using the center-point as the object area and the gradient box as the positioning area. If this argument is omitted, it defaults to center.
円錐型~gradientにおいては、 `0deg^v 地点での急激な遷移は 通例的に望ましくないので,最初と最後の色停は概して同じ色にされる。 たぶん、 これを自動的に達成する~keywordがあれば,有用になる。 ◎ Usually in conic gradients the sharp transition at 0deg is undesirable, which is typically avoided by making sure the first and last color stops are the same color. Perhaps it would be useful to have a keyword for automatically achieving this.
~gradientを切取る(内縁や外縁の)半径は有用になるか? もしそうなら、 特定の半径があるので,長さ値による色停~位置も~supportできる。 ◎ Would a radius (inner & outer) for clipping the gradient be useful? If so, we could also support lengths in color stop positions, since we now have a specific radius.
楕円な円錐型~gradientは有用になるか? ~graphics-libraryはそれを~supportするか? ◎ Are elliptical conic gradients useful? Do graphics libraries support them?
3.3.2. 色停の配置-法
`色停$は、 ある真円~内で,[ `~gradient中心$の周りに沿って曲がる`~gradient線$ ]上に配置される。 `0%^v, `100%^v は,両者とも `0deg^v の所在に一致し、 ~pageの上端を指す。 角度の増加は、 時計回りの動きに対応する。 ◎ Color stops are placed on a gradient line that curves around the gradient center in a circle, with both the 0% and 100% locations at 0deg. Just like linear gradients, 0deg points to the top of the page, and increasing angles correspond to clockwise movement around the circle.
注記: ~gradient線は、[ `0deg^v から `360deg^v までの~~区間のみが描画されるような,渦巻き ]を形成していると捉えれば,助けになるかもしれない。 これは、 角度が描画される領域の外側にあるときの “重合n” についての混同を避ける。 ◎ Note: It may be more helpful to think of the gradient line as forming a spiral, where only the segment from 0deg to 360deg is rendered. This avoids any confusion about "overlap" when you have angles outside of the rendered region.
色停は[ `0%^v より前 / `100%^v より後 ]の所在にも配置できる。 これらの領域は,描画-時に直に諮られることは決してないが、 そこに配置される色停は — 補間や繰返nを通して — 描画される領域の中にある色停の色に影響し得る ( `§ ~gradientの繰返ng@#repeating-gradients$ を見よ)。 例えば, `conic-gradient(red -50%, yellow 150%)^v が生産する円錐型~gradientは、 `0deg^v の所では~redがかった~orange ( `#f50^v )に, `360deg^v の所では~orangeがかった~yellow ( `#fa0^v )になり, 前者から後者へ遷移する。 ◎ A color-stop can be placed at a location before 0% or after 100%; though these regions are never directly consulted for rendering, color stops placed there can affect the color of color-stops within the rendered region through interpolation or repetition (see repeating gradients). For example, conic-gradient(red -50%, yellow 150%) produces a conic gradient that starts with a reddish-orange color at 0deg (specifically, #f50), and transitions to an orangish-yellow color at 360deg (specifically, #fa0).
~canvas上の所与の点 %P における~gradientの色を決定するためには、 まず,~gradientの中心から %P を通る一意な射線を見出す。 %P の色は、 この射線が`~gradient線$に交わる点の色で与えられる。 ◎ The color of the gradient at any point is determined by first finding the unique ray anchored at the center of the gradient that passes through the given point. The point’s color is then the color of the gradient line at the location where this ray intersects it.
3.3.3. 円錐型~gradientの例
以下に挙げるどの `conic-gradient$f 例も,幅 `300px^v, 高さ `200px^v の~boxに適用される。 ◎ All of the following conic-gradient() examples are presumed to be applied to a box that is 300px wide and 200px tall, unless otherwise specified.
同じ基本的な円錐型~gradientを指定する種々の仕方を下に示す: ◎ Below are various ways of specifying the same basic conic gradient:
background: conic-gradient(#f06, gold); background: conic-gradient(at 50% 50%, #f06, gold); background: conic-gradient(from 0deg, #f06, gold); background: conic-gradient(from 0deg at center, #f06, gold); background: conic-gradient(#f06 0%, gold 100%); background: conic-gradient(#f06 0deg, gold 1turn);
同じ基本的な円錐型~gradientを指定する種々の仕方を下に示す。 これは、 色停の角度が [`0deg^v, `360deg^v) の外側にあって直に塗られない場合でも, 色停は依然として~gradientの塗られる部分を成す色には影響し得る様子をデモる。 ◎ Below are various ways of specifying the same basic conic gradient. This demonstrates how even though color stops with angles outside [0deg, 360deg) are not directly painted, they can still affect the color of the painted part of the gradient.
background: conic-gradient(white -50%, black 150%); background: conic-gradient(white -180deg, black 540deg); background: conic-gradient(hsl(0,0%,75%), hsl(0,0%,25%));
同じ回転された円錐型~gradientを指定する, 2 つ仕方を下に示す — 一方は回転~角度を伴い,他方は伴わない: ◎ Below are two different ways of specifying the same rotated conic gradient, one with a rotation angle and one without:
background: conic-gradient(from 45deg, white, black, white); background: conic-gradient(hsl(0,0%,75%), white 45deg, black 225deg, hsl(0,0%,75%));
すべての色停を回転~角度だけ~offsetしても,同じにはならず、 まるで異なる~gradientを生産することに注意: ◎ Note that offsetting every color stop by the rotation angle instead would not work and produces an entirely different gradient:
background: conic-gradient(white 45deg, black 225deg, white 405deg);
円錐型~gradientの上層に放射型~gradientを重ねて,色相と彩度を伴う色環を描く例: ◎ A conic gradient with a radial gradient overlaid on it, to draw a hue & saturation wheel:
background: radial-gradient(closest-side, gray, transparent), conic-gradient(red, magenta, blue, aqua, lime, yellow, red); border-radius: 50%; width: 200px; height: 200px;
単純な~pie-chartを描くために利用される円錐型~gradient。 色停の位置 `0deg^v は、 それより前にある色停の位置に等しくなるよう,修繕されることになる。 これは、 異なる色の 2 個の色停の合間に,無限小な(不可視な)遷移を生産することになる — 実質的に単色の~~区間を生産するような。 ◎ A conic gradient used to draw a simple pie chart. The 0deg color stop positions will be fixed up to be equal to the position of the color stop before them. This will produce infinitesimal (invisible) transitions between the color stops with different colors, effectively producing solid color segments.
background: conic-gradient(yellowgreen 40%, gold 0deg 75%, #f06 0deg); border-radius: 50%; width: 200px; height: 200px;
3.4. ~gradientの繰返ng: `repeating-linear-gradient^f, `repeating-radial-gradient^f, `repeating-conic-gradient^f 記法
[ `linear-gradient$f / `radial-gradient$f / `conic-gradient$f ]に加えて,この仕様は[ `repeating-linear-gradient@f / `repeating-radial-gradient@f / `repeating-conic-gradient@f ]値を定義する。 これらの記法が引数にとり得る値は、 これまでに定義した各自に対応する繰返ngなしの記法と同じであり,同じに解釈される。 【が、その効果は繰返される — ~level 3 の`繰返ng~gradient$を見よ。】 ◎ In addition to linear-gradient(), radial-gradient(), and conic-gradient(), this specification defines repeating-linear-gradient(), repeating-radial-gradient(), and repeating-conic-gradient() values. These notations take the same values and are interpreted the same as their respective non-repeating siblings defined previously.
`repeating-conic-gradient()$t = repeating-conic-gradient( [ `conic-gradient-syntax$t ] ) `repeating-linear-gradient()$t = repeating-linear-gradient( [ `linear-gradient-syntax$t ] ) `repeating-radial-gradient()$t = repeating-radial-gradient( [ `radial-gradient-syntax$t ] )
基本的な繰返ng円錐型~gradient: ◎ Basic repeating conic gradient:
background: repeating-conic-gradient(gold, #f06 20deg);
一足飛びに遷移する色停たちが繰返されるときは、 旭光状の背景を作成する: ◎ Repeating color stops with abrupt transitions creates a starburst-type background:
background: repeating-conic-gradient( hsla(0,0%,100%,.2) 0deg 15deg, hsla(0,0%,100%,0) 0deg 30deg ) #0ac;
ここでは、 市松模様を作成するために,一足飛びに遷移する繰返ng色停が利用されている: ◎ Here repeating color stops with abrupt transitions are used to create a checkerboard:
background: repeating-conic-gradient(black 0deg 25%, white 0deg 50%); background-size: 60px 60px;
同じ市松模様は、 繰返ngなしの円錐型~gradientを介しても作成できる: ◎ The same checkerboard can be created via non-repeating conic gradients:
background: conic-gradient(black 25%, white 0deg 50%, black 0deg 75%, white 0deg); background-size: 60px 60px;
3.5. ~gradient色の定義-法
【 この節の内容の和訳は、 `~level 3 の内容@~CSSIMAGE#gradient-colors$からの差分のみを与える (この節に定義される[ `色停@ / `遷移~hint@ / `色停~list@ ]は、 ~level 3 による定義に一致する)。 】
3.5.1. 色停~list
`色停~list$の構文は、 ~level 3 から,次のように拡張される: ◎ Color stops and transition hints are specified in a color stop list, which is a list of one or more color stops interleaved with optional transition hints:
`color-stop-list@t = `linear-color-stop$t , [ `linear-color-hint$t? , `linear-color-stop$t ]#? `linear-color-stop@t = `color$t `color-stop-length$t? `linear-color-hint@t = `length-percentage$t `color-stop-length@t = `length-percentage$t{1,2} `angular-color-stop-list@t = `angular-color-stop$t , [ `angular-color-hint$t? , ]? `angular-color-stop$t ]#? `angular-color-stop@t = `color$t `color-stop-angle$t? `angular-color-hint@t = `angle-percentage$t `color-stop-angle@t = `angle-percentage$t{1,2} `color-stop@t = `color-stop-length$t | `color-stop-angle$t
注記: `color-stop-list$t と `angular-color-stop-list$t の構造は正確に一致することに注意 — [ 色停/遷移~hint ]の位置を指定するときに[ `length$t, `angle$t ]どちらを受容するかが相違するだけである。 ◎ Note that <color-stop-list> and <angular-color-stop-list> are exactly identical in structure, they just differ on whether they accept <length>s or <angle>s for specifying the position of the stops and hints.
線路図式で視覚-化すれば、 これら両者とも次の~patternに従う: ◎ Visualized with a railroad diagram, both of them follow this pattern: ◎ alt="<color-stop> , <color-hint> , <color-stop> ,"
2 個の位置を伴う`色停$は、[ 各~位置ごとに同じ色を伴う, 2 個の`色停$ ]を指定することに,等価になる。 2 個の位置を指定すれば、 色を 2 回~繰返すことなく,~gradient内で単色の “縞” を容易に作成できる。 ◎ A color stop with two positions is equivalent to specifying two color stops with the same color, one for each position. Specifying two locations makes it easier to create solid-color "stripes" in a gradient, without having to repeat the color twice.
【 以下、 `~level 3 と同じ@~CSSIMAGE#color-stop-syntax$。 】
3.5.2. 色~付けと~gradient線
各 `色停$の位置における~gradient線の色は、 その`色停$の色になる。 ~gradient線の[ 最初の`色停$より前 / 最後の`色停$より後 ]を成す部分は[ 最初/最後 ]の`色停$の色になる。 隣接する 2 個の`色停$の合間における線の色は、 それらの`色停$の色を補間した結果になる — この補間は、 次に従うとする: ◎ At each color stop position, the gradient line is the color of the color stop. Before the first color stop, the gradient line is the color of the first color stop, and after the last color stop, the gradient line is the color of the last color stop. Between each pair of color stops, the gradient line’s color is interpolated between the colors of the two color stops, with the interpolation\
- 当の~gradient関数に `color-interpolation-method$t が指定されているならば、 その色~空間~内で行う。 指定されていない場合、 `CSS-COLOR-4$r にて定義される既定の補間~色~空間 ~Oklabを利用する。 ◎ taking place in the specified color space,\ ◎ ↓
- 欠落~成分は、 `CSS-COLOR-4$r `§ 欠落~成分との補間-法@~CSSCOLOR#interpolation-missing$ にて定義されるとおりに取扱う。 ◎ with missing components handled as defined in CSS Color 4 § 12.2 Interpolating with Missing Components,\
- 色相の補間は、 `CSS-COLOR-4$r `§ 色相の補間@~CSSCOLOR#hue-interpolation$ にて定義されるとおりに行う。 ◎ hue interpolation as defined in CSS Color 4 § 12.4 Hue Interpolation,\
- 乗算済み色~値【!乗算済み~alpha】を `CSS-COLOR-4$r `§ ~alphaを伴う色の補間-法@~CSSCOLOR#interpolation-alpha$ にて定義されるとおりに利用する。 ◎ and using premultiplied alpha, as defined in CSS Color 4 § 12.3 Interpolating with Alpha.\ ↑↑ If no <color-interpolation-method> is specified in the gradient function, the color space used for gradient interpolation is the default interpolation color space, Oklab, as defined in [css-color-4].
例えば,所与の~gradient定義 `linear-gradient(in oklch, red, #888, green)^v に対しては、 中立な `#888^v から~Oklchへ変換した結果は `oklch(0.6268 0 none)^v になり,欠落な色相~成分を与える。 ◎ For example, given the following gradient definition: • linear-gradient(in oklch, red, #888, green) ◎ the conversion of the neutral #888 to oklch gives a missing hue component: oklch(0.6268 0 none)
したがって、[ 1 個目/ 2 個目 ]の~gradient~~区間における色相は、[ `red^v / `green^v ]からとられ,[ `oklch(0.628 0.2577 29.234)^v / `oklch(0.5198 0.1769 142.5)^v ]になる。 ◎ and thus, in the first gradient segment, the hue is taken from red, which is oklch(0.628 0.2577 29.234); while in the second segment it is taken from green, which is oklch(0.5198 0.1769 142.5)
【 以下, この節を成す(下の例以外の)内容は、 `~level 3 と同じ@~CSSIMAGE#coloring-gradient-line$なので,和訳は省略する。 】
線型~gradientが`遷移~hint$を伴わないとき(図~上段)と,[ ~red, ~blue ]`色停$の合間に遷移~hintを伴うとき(図~下段)とを比較する例。 ◎ Here an example of a linear gradient without transition hint (top) compared to one with a transition hint between the red and blue color stops (bottom).
図~上段は、 `遷移~hint$を伴わないとき (既定の中間点~遷移~hintに~fall-backする): ◎ Top - Without transition hint (falling back to the default halfway transition hint):
background: linear-gradient(to right, red 0%, blue 100%);
図~下段は、 遷移~hintを伴うとき: ◎ Bottom - With transition hint:
background: linear-gradient(to right, red 0%, 25%, blue 100%);
3.5.3. 色停の “修繕”
【 `~level 3 と同じ@~CSSIMAGE#color-stop-fixup$。 】
4. ~1D画像~値: `image-1D^t 型と `stripes^f 記法
`image$t 値は 2-次元な画像を表現し, `color$t は 0-次元な画像【!(unvarying in either axis)】として捉えることもできるが、 一部の文脈は, `1-次元な画像@ を要求する — それは、 ある抽象的な, 無方向な, 単-軸な `塗り線@ に沿って色を指定する。 `image-1D$t 型は、 そのような `1-次元な画像$を表現し, `stripes$f `関数-記法$を含む: ◎ While <image> values represent a 2-dimensional (2D) image, and <color> can be thought of as a 0-dimensional (0D) image (unvarying in either axis), some contexts require a 1-dimensional (1D) image, which specifies colors along an abstract, directionless, single-axis paint line. The <image-1D> type represents such 1D images, including the stripes() functional notation:
【 ~SVGの `stroke-dasharray@~SVGpainting#StrokeDasharrayProperty$p に似た(色に関しては,より強力な)効果が想定されている — 例: `outline-color@~CSSUI#propdef-outline-color$p 。 】【 “無方向” と記されているが、 `塗り線$上に色(縞)を配置する順序は方向を含意する。 】
`image-1D@t = `stripes$ft `stripes$ft = stripes( `color-stripe$t# ) `color-stripe@t = `color$t && [ `length-percentage$t | `flex$t ]?
`stripes@f 関数は、 ~commaで分離された[ 色を伴う縞( `stripe^en ) ]( `color-stripe$t )たちが成す~listとして, `1-次元な画像$を定義する — それらの縞は、 所与の順序で`塗り線$上の端から端まで†に配置される。 ◎ The stripes() function defines a 1D image as a comma-separated list of colored stripes, each placed end-to-end on the paint line in the order given.
【† したがって、 `塗り線$には,始点と終点が定義される必要がある (`~gradient線$と同様に)。 】
各 `color-stripe$t は、 指定された色と太さ( `thickness^en )†を伴う単色な縞を定義する。 太さが省略された場合、 `1fr^v が既定になる。 太さ値は、 次に従って解釈される: ◎ Each <color-stripe> entry defines a solid-color stripe with the specified <color> and thickness. If the thickness is omitted, it defaults to 1fr. Thickness values are interpreted as follows:
【† `塗り線$上を占める長さ。 “幅” とも称される。 】
- `percentage [0,100]$t
- 百分率による太さは、 %総幅 【下を見よ】に相対的になる。 妥当な値は、 `0%^v 以上 `100%^v 以下に限られる。 ◎ Percentage thicknesses are relative to the total width. Only values between 0% and 100% (inclusive) are valid.
- `length [0,∞]$t
- 負な長さ値は、 無効になる。 ◎ Negative length values are invalid.
- `flex$t
- 各 `flex$t は、[ %総幅 から `flex^t を伴わない各~縞の太さを減算した結果 ( 0 以上に切り上げる) ]に対する[[ 関数~内の `flex^t を伴う縞の太さの総和 ]に相対的な割合分 ]として評価される。 `flex^t 値の総和が `1fr^v 未満になる場合、 減算した結果は,分配される前に総和の値で乗算される。 ◎ A <flex> is evaluated as a fraction of the total width relative to the total sum of <flex> entries in the function, after subtracting the thickness of any non-<flex> entries (flooring the subtraction result at zero). If the sum of <flex> values is less than 1fr, the result of the subtraction is multiplied by the sum’s value before being distributed.
%総幅 は、 `stripes$f 関数が利用される文脈により定義される。 縞たちの太さの総和が %総幅 より小さい場合、 `塗り線$における残りの長さを占める部位は,`透明な黒$になる — 最後の引数として `transparent$v を伴うものが追加され【!与えられ】たかのように。 総和が %総幅 より大きい場合、 `塗り線$の %総幅 を超える[ 縞/部位 ]は切落とされる。 ◎ The total width is defined by the context in which the stripes() function is used. If the sum of the stripes is smaller than the total width, the paint line is transparent black for its remaining length, as if a final transparent argument were given. If the sum is larger, any stripes or portions beyond the total width are truncated.
例えば, %総幅 `400px^v が与えられた下では: ◎ ↓
-
`stripes(red 1fr, green 2fr, blue 100px)^v は、 順に ⇒# 幅 `100px^v の~redな縞, 幅 `200px^v の~greenな縞, 幅 `100px^v の~blueな縞 ◎終 を与えることになる。 総和 `400px^v から `blue^v が占める `100px^v を減算した残り `300px^v のうち[ ~red は 1/(1+2), ~greenは 2/(1+2) ]を占めるようになる。 ◎ For example, stripes(red 1fr, green 2fr, blue 100px) with a total width of 400px will result in a 100px red stripe and 200px green stripe, giving red 1 share and green 2 shares of the 300px remaining after subtracting blue’s 100px from the 400px total.
-
他方, `stripes(red .1fr, green .2fr, blue 100px)^v は、 順に ⇒# 幅 `30px^v の~redな縞, 幅 `60px^v の~greenな縞, 幅 `100px^v の~blueな縞, 幅 `210px^v の透明な縞 ◎終 を与えることになる。 `flex$t 用に残された幅 `300px^v の空間は、 `flex^t 値の総和 0.3 で乗算した結果 `90px^v に限り, 各 `flex^t 値により規定される 1:2 の比率で分配される。 ◎ On the other hand, stripes(red .1fr, green .2fr, blue 100px) with a total width of 400px will instead give a 30px red stripe and 60px green stripe, followed by 100px of blue and then 210px of transparent. The 300px of leftover space is multiplied by .3, the value of the sum of the <flex> values, to obtain only 90px, which is then distributed in the 1:2 ratio dictated by the <flex> values.
(これは、 `~flex~layout$において, ~flex行l上の `flex$t の総和が小さいときに対し処する方法に類似する — `flex^t 値が 0 に近づくに伴い,滑らかで連続的になる挙動を確保する。) ◎ (This is similar to how flex layout deals with small <flex> sums on a line, and ensures smoothly continuous behavior as the <flex> values approach zero.)
この関数の`算出d値$は、 縞たちが成す有順序~listであり, 各縞は ( `算出d色$, 次のいずれかとして表現される太さ ) が成す組になる ⇒ `flex$t 値/ 算出された `length-percentage$t 値 ◎ The computed value of this function is an ordered list of stripes, each given as a computed color and a thickness represented either a <flex> value or a computed <length-percentage> value.
5. ~CSSにおける画像/~objの~sizing
5.1. ~objの~sizing: `object-fit^p ~prop
◎名 `object-fit@p ◎値 `fill$v | `none$v | [`contain$v | `cover$v] || `scale-down$v ◎初 `fill$v ◎適 `置換d要素$ ◎継 されない ◎百 受容しない ◎算 指定された~keyword(たち) ◎順 文法に従う ◎ア 離散的 ◎表終`object-fit$p ~propは、 置換d要素の内容が,その使用[ 横幅, 縦幅 ]により確立される~boxに,どう収めるべきかを指定する。 ◎ The object-fit property specifies how the contents of a replaced element should be fitted to the box established by its used height and width.
【 以下、 `~level 3 の内容@~CSSIMAGE#the-object-fit$ と同じ部分 — “L3” と記されている箇所 — の和訳は省略する。 】
- `fill@v
- L3 ◎ The replaced content is sized to fill the element’s content box: the object’s concrete object size is the element’s used width and height.
- `none@v
- L3 ◎ The replaced content is not resized to fit inside the element’s content box: determine the object’s concrete object size using the default sizing algorithm with no specified size, and a default object size equal to the replaced element’s used width and height.
- `contain@v
- L3 ◎ The replaced content is sized to maintain its aspect ratio while fitting within the element’s content box: its concrete object size is resolved as a contain constraint against the element’s used width and height.
- `scale-down$v も併用された場合、 内容は[ `none$v, `contain$v ]のうち,`具象-~obj~size$が小さくなる方が指定されたかのように~sizeされる。 ◎ If the scale-down flag is used, size the content as if none or contain were specified, whichever would result in a smaller concrete object size.
- 注記: `none$v も `contain$v も内容の`生来な縦横比$を保つので、 大きさは比較可能になる。 ◎ Note: Both none and contain respect the content’s natural aspect ratio, so the concept of "smaller" is well-defined.
- `cover@v
- L3 ◎ The replaced content is sized to maintain its aspect ratio while filling the element’s entire content box: its concrete object size is resolved as a cover constraint against the element’s used width and height.
- `scale-down$v も併用された場合、 内容は[ `none$v, `cover$v ]のうち,`具象-~obj~size$が小さくなる方が指定されたかのように~sizeされる。 ◎ If the scale-down flag is used, size the content as if none or cover were specified, whichever would result in a smaller concrete object size.
- 注記: `none$v も `cover$v も内容の`生来な縦横比$を保つので、 大きさは比較可能になる。 ◎ Note: Both none and cover respect the content’s natural aspect ratio, so the concept of "smaller" is well-defined.
- `scale-down@v
- `contain scale-down^v と等価。 ◎ Equivalent to contain scale-down.
L3 ◎ If the content does not completely fill the replaced element’s content box, the unfilled space shows the replaced element’s background. Since replaced elements always clip their contents to the content box, the content will never overflow. See the object-position property for positioning the object with respect to the content box.
注記: L3 ◎ Note: The object-fit property has similar semantics to the fit attribute in [SMIL10] and the <meetOrSlice> parameter on the preserveAspectRatio attribute in [SVG11].
注記: L3 ◎ Note: Per the object size negotiation algorithm, the concrete object size (or, in this case, the size of the content) does not directly scale the object itself - it is merely passed to the object as information about the size of the visible canvas. How to then draw into that size is up to the image format. In particular, raster images always scale to the given size, while SVG uses the given size as the size of the "SVG Viewport" (a term defined by SVG) and then uses the values of several attributes on the root <svg> element to determine how to draw itself.
6. 画像~処理
6.1. 画像~解像度の上書き法: `image-resolution^p ~prop
`画像~解像度@ は、 単位~長さあたりの画像~画素~数として定義される (例:~inchあたりの画素~数)。 画像~形式には、 画像の解像度についての情報を記録するものもある。 この情報は、 整形~処理nにあたって画像の実際の~sizeを決定する補助になり得る — しかしながら、 誤ったものにもなり得るので,その場合には無視されるべきである。 ~CSSの既定では,[ 解像度は、 ~CSS `px$u 単位が 1 画像~画素に等しい ]ものと見做されるが、 `image-resolution$p ~propは,他の何らかの解像度を利用することを許容する。 ◎ The image resolution is defined as the number of image pixels per unit length, e.g., pixels per inch. Some image formats can record information about the resolution of images. This information can be helpful when determining the actual size of the image in the formatting process. However, the information can also be wrong, in which case it should be ignored. By default, CSS assumes a resolution of one image pixel per CSS px unit; however, the image-resolution property allows using some other resolution.
◎名 `image-resolution@p ◎値 [ `from-image$v || `resolution$t ] && `snap$v? ◎初 `1dppx^v ◎適 すべての要素 ◎継 される ◎百 受容しない ◎算 指定された~keyword(たち) / 指定された `resolution$t / これらが成す組 — ただし, `resolution$t は `snap$v 用に調整され得る(下記を見よ)。 ◎ specified keyword(s) and/or <resolution> (possibly adjusted for snap, see below) ◎順 文法に従う ◎ア 離散的 ◎表終`image-set$f 記法は、 画像の`生来な解像度$を改め得る — それは、 この~propを設定しなくても,自動的に尊守されるのが理想的だが【?】。 これをどう~~解決すべきか? 初期~値を、 “~CSSが他を~~指示しない限り `1dppx^v とする” を意味する `auto^v に変えるか? `image-resolution^p は、 解像度が~CSSにおける他の何かで設定された画像には効果がないようにするか? あるいは、 `image-set$f を,それが常に何らかの方法で `1dppx^v 画像を生産するように,どうにか `wordsmith^en するか? ◎ The image-set() notation can alter the natural resolution of an image, which ideally would be automatically honored without having to set this property. How should we best address this? Change the initial value to auto, meaning "1dppx, unless CSS says otherwise"? Say that image-resolution has no effect on images whose resolution was set by something else in CSS? Or somehow wordsmithing image-set() in some way such that it always produces 1dppx images somehow?
`image-resolution$p ~propは、[[ 要素~内/要素~上 ]で利用されるすべての~raster画像 ]の`選好d解像度$を指定する。 それは、 内容~画像(例: `置換d要素$や`生成d内容$)にも, 装飾的な画像( `background-image$p など)にも影響する。 画像の `選好d解像度@ は、 画像の`生来な寸法$を決定するために利用される。 natural resolution 各種 値の意味は: ◎ The image-resolution property specifies the preferred resolution of all raster images used in or on the element. It affects both content images (e.g. replaced elements and generated content) and decorative images (such as background-image). The preferred resolution of an image is used to determine the image’s natural dimensions. Values have the following meanings:
- `resolution$t
- `選好d解像度$を数値的に指定する。 この場合の 1 “~dot” は, 1 画像~画素に対応する。 ◎ Specifies the preferred resolution explicitly. A "dot" in this case corresponds to a single image pixel.
- 【 すなわち、[ `CSS-VALUES-3$r による `resolution@~CSSVAL#resolution$t の定義 ]に記されている “~dot” は 1 画像~画素と解釈される。 】
- `from-image@v
- 画像の`選好d解像度$は、 画像~形式から指定される( `生来な解像度@ )。 画像が自前の解像度を指定していない場合、 `resolution$t が明示的に指定されていれば,それが利用され、 他の場合は既定の `1dppx^v になる。 ◎ The image’s preferred resolution is taken as that specified by the image format (the natural resolution). If the image does not specify its own resolution, the explicitly specified resolution is used (if given), else it defaults to 1dppx.
- 注記: どの~metadataを利用できるかに対しては、 ある制約が課される — ~level 3 の `§ 画像~metadata@~CSSIMAGE#url-metadata$を見よ。 ◎ Note: CSS Images 3 § 2.1.2 Image Metadata imposes some restrictions on what metadata can be used.
- `snap@v
- この~keywordが伴われている `resolution$t は、 1 画像~画素が機器~画素の整数~倍に対応するような,最も近い値に丸めた結果に算出される。 解像度が画像からとられる【 `from-image$v が供されている】場合、 `生来な解像度$の使用~値は,画像の~nativeな解像度を同様に調整した結果になる。 ◎ If the "snap" keyword is provided, the computed <resolution> (if any) is the specified resolution rounded to the nearest value that would map one image pixel to an integer number of device pixels. If the resolution is taken from the image, then the used natural resolution is the image’s native resolution similarly adjusted.
SVG などの~vector形式には、 `生来な解像度$は無い。 この~propは、 ~vector画像には効果がない。 ◎ As vector formats such as SVG do not have a natural resolution, this property has no effect on vector images.
印刷機の解像度は、 ~computer~monitorより,かなり高いのが常なので、 ~screen上ではきれいな画像でも,印刷~時には画素が目立つ。 `image-resolution$p ~propを利用すれば、 文書~内に高-解像度な画像を埋込んで 適切な~sizeを保守しつつ,~screen上でも紙~上でも美麗に表示できるようになる: ◎ Printers tend to have substantially higher resolution than computer monitors; due to this, an image that looks fine on the screen may look pixelated when printed out. The image-resolution property can be used to embed a high-resolution image into the document and maintain an appropriate size, ensuring attractive display both on screen and on paper:
img.high-res { image-resolution: 300dpi; }
この規則の下では、 300dpi で 5 ~inch幅になるようにされた画像は,実際に 5 ~inch幅で表示されることになる。 この規則が無い下では、 ~CSSの既定による 1 ~inchあたり 96 画像~画素の表示になるので,画像は[ 300 ~MUL 5 ~DIV 96 ~EQ 約 15.6 ]~inch幅で表示されることになる。 ◎ With this set, an image meant to be 5 inches wide at 300dpi will actually display as 5in wide; without this set, the image would display as approximately 15.6in wide since the image is 15000 image pixels across, and by default CSS displays 96 image pixels per inch.
画像~形式には、 自身の~data内に解像度を符号化するものもある。 次の規則は、 ~UAが,解像度を画像~自身から見出すように指定する — 見出されない場合、 ~CSS `px$u 単位あたり 1 画像~画素に~fallbackする。 ◎ Some image formats can encode the image resolution into the image data. This rule specifies that the UA should use the image resolution found in the image itself, falling back to 1 image pixel per CSS px unit.
img { image-resolution: from-image }
次の規則は、 ~UAが,解像度を画像~自身から見出すように指定しつつ、 見出せないときは,解像度を既定の `1dppx^v でなく `300dpi^v に設定する。 ◎ These rules both specify that the UA should use the image resolution found in the image itself, but if the image has no resolution, the resolution is set to 300dpi instead of the default 1dppx.
img { image-resolution: from-image 300dpi } img { image-resolution: 300dpi from-image }
次の規則は、 画像~解像度を 300dpi に設定する (画像~自身の解像度は,無視される)。 ◎ Using this rule, the image resolution is set to 300dpi. (The resolution in the image, if any, is ignored.)
img { image-resolution: 300dpi }
一方で,次の規則では、 ~screen解像度が 96dpi の下であれば,画像を解像度 288dpi で描画することになる ( 3 画像~画素が 1 機器~画素に対応する): ◎ This rule, on the other hand, if used when the screen’s resolution is 96dpi, would instead render the image at 288dpi (so that 3 image pixels map to 1 device pixel):
img { image-resolution: 300dpi snap; }
`snap$v ~keywordは、 解像度が画像からとれるときにも利用できる: ◎ The snap keyword can also be used when the resolution is taken from the image:
img { image-resolution: snap from-image; }
画像~自身に備わる解像度が 300dpi のときには 288dpi で描画する ( 3 画像~画素が 1 機器~画素に対応する)一方で、 72dpi のときには 96dpi で描画することになる ( 1 画像~画素が 1 機器~画素に対応する)。 ◎ An image declaring itself as 300dpi will, in the situation above, display at 288dpi (3 image pixels per device pixel) whereas an image declaring 72dpi will render at 96dpi (1 image pixel per device pixel).
7. 補間
この節では、 ~CSSによる遷移や~animation( CSS Transitions / CSS Animations )における利用のために,[ この仕様にて定義される,新たな値~型 ]の補間-法を述べる。 ◎ This section describes how to interpolate between new value types defined in this specification, for use with modules such as CSS Transitions and CSS Animations.
以下の~algoにおいて,単に[ 2 個の値が “補間される”, あるいは “遷移する” ]と記される所では、 それ以上の詳細を言明することなく, `CSS Transitions 仕様に従って補間される@~TRANSITION#animatable-types$ べきであることを意味する 【~link先は廃された — 補間-法は、現在は `CSS-VALUES-4$r にて`定義される@~CSSVAL#combining-values$】 。 他の場合、 ~algoは,その補間の詳細な記述において,変数 %t を参照rする。 これは、 0% から 100% へ進捗する数値であり,遷移の[ 所要時間, 経過した時間, 利用-中にある`~easing関数$ ]に基づく遷移の進捗を表現する値に設定される。 例えば、 `線型~easing関数$と所要時間 1 秒の下では, 0.3 秒後の %t は 30% になる。 ◎ If an algorithm below simply states that two values should be "interpolated" or "transitioned" without further details, then the value should be interpolated as described by the Transitions spec. Otherwise, the algorithm may reference a variable t in its detailed description of the interpolation. This is a number which starts at 0% and goes to 100%, and is set to a value that represents the progress through the transition, based on the duration of the transition, the elapsed time, and the timing function in use. For example, with a linear timing function and a 1s duration, after .3s t is equal to 30%.
7.1. `image$t の補間-法
すべての画像は補間できる — 一部の特殊な型の画像(~gradientなど)は、 特別な補間~規則を備えるが。 一般~語で述べるなら、 画像は、[ %開始-画像 の~sizeに拡縮した所から始まり, %終止-画像 の~sizeへ遷移する間に 2 つを~cross-fadeする ]ことにより,補間される。 ◎ All images can be interpolated, though some special types of images (like some gradients) have their own special interpolation rules. In general terms, images are interpolated by scaling them to the size of the start image and cross-fading the two while they transition to the size of the end image.
より詳しく述べるなら、
補間における各~時点にて,画像は
cross-fade( ( 100% ~MINUS %t ) %開始-画像, %終止-画像 )
に等しくされる。
◎
In specific terms, at each point in the interpolation the image is equal to cross-fade( (100% - t) start image, end image).
画像~無しから, あるいは画像~無しへ遷移するような,特殊な事例の補間-法
—
`background-image^p: `url(foo)^v;
から
`background-image^p: `none^v;
へ のような。
◎
Special-case interpolating to/from no image, like "background-image: url(foo);" to "background-image: none;".
7.2. `cross-fade$f の補間-法
`cross-fade$f を成す 3 成分は独立に補間される。 これは、 入子な `cross-fade$f 記法にもなり得ることに注意。 ◎ The three components of cross-fade() are interpolated independently. Note this may result in nested cross-fade() notations.
7.3. `gradient$t の補間-法
この節は考査と改善を要する。 特に、 `linear-gradient^f の取扱いは不完全であろう — ~gradient線が[ 開始する位置から終止する位置までの “長さ” ( 0% から 100% までの距離) ]が同じ~animationを通じて増減しないように, 数値的に特に補間すべきと見られる。 ◎ This section needs review and improvement. In particular, I believe the handling of linear-gradient() is incomplete - I think we want to specifically interpolate the "length" of the gradient line (the distance between 0% and 100%) between the starting and ending positions explicitly, so it doesn’t grow and then shrink over a single animation.
~gradient画像は、 ~gradientから別の~gradientへ滑らかに~animateするよう[ ~CSS遷移/~CSS~animation ]において直に補間し得る。 ただし、 ~gradientの補間が許容されるためには,次に挙げる制約がある: ◎ Gradient images can be interpolated directly in CSS transitions and animations, smoothly animating from one gradient to another. There are only a few restrictions on what gradients are allowed to be interpolated:
- [ 開始ng, 終止ng ]~gradientを与える関数の型は,同じでなければナラナイ。 (例えば、 `linear-gradient$f からは、 `linear-gradient$f へは遷移できるが,[ `radial-gradient$f / `repeating-linear-gradient$f ]へは遷移できない) ◎ Both the starting and ending gradient must be expressed with the same function. (For example, you can transition from a linear-gradient() to a linear-gradient(), but not from a linear-gradient() to a radial-gradient() or a repeating-linear-gradient().)
- [ 開始ng, 終止ng ]~gradientの `color-stop$t は同数でなければナラナイ。 この目的においては、 すべての繰返ng~gradientには 無限~個の`色停$があり,互いに同数あると見なされる。 ◎ Both the starting and ending gradient must have the same number of <color-stop>s. For this purpose, all repeating gradients are considered to have infinite color stops, and thus all repeating gradients match in this respect.
- 両~gradientとも, `length$t, `percentage$t による`色停$を組合せて利用していない。 ◎ Neither gradient uses a combination of <length> and <percentage> color stops.
2 個の~gradientが,上述の 3 つの拘束すべてを満たすならば、 以下に述べるように補間するモノトスル。 3 つ目の拘束だけ満たさない場合、 50% の所で一足飛びに遷移するモノトスル (将来の仕様により他が指定されない限り)。 他の場合、 汎用 `image$t に対するときと同じく, `cross-fade$f を利用して補間するモノトスル。 ◎ If the two gradients satisfy all of those constraints, they must be interpolated as described below. If they fail the third one only, they must be abruptly transitioned at 50% (unless otherwise specified by a future specification). If they fail either of the first two constraints, they must be interpolated using cross-fade() as for generic images.
注記: 50% の所で一足飛びに遷移させるのは、 内容が~cross-fadeに依拠しないようにして,将来に[ この事例~用に,もっと賢い補間~規則を追加できるようにする ]ためである。 ◎ Note: The abrupt transition at 50% is so that content will not rely on cross-fading, and smarter interpolation rules can be added for this case in the future.
-
[ 開始ng, 終止ng ]~gradientを成す各~成分を数値的な形に変換する: ◎ Convert both the start and end gradients to their explicit forms:
- `線型~gradient$に対しては 【成分は方向のみ】: ◎ For linear gradients:
- `angle$t として指定されている場合 ⇒ すでに数値的な形である。 ◎ If the direction is specified as an <angle>, it is already in its explicit form.
-
他の場合【すなわち,~keyword】: ◎ Otherwise,\
- 等価な描画を生産する[ 0 度 以上, 360 度 未満 ]の `angle$t に変換する。 ◎ change its direction to an <angle> in [0deg,360deg) that would produce an equivalent rendering.
-
[[ 開始ng, 終止ng ]~gradientの いずれの方向も~keywordで指定されていて ]かつ[ 前~段で数値化した 2 個の角度の差の絶対値 ~GT 180 度 ]の場合、 小さい方の角度に 360 度を加算する。 ◎ If both the start and end gradients had their direction specified with keywords, and the absolute difference between the angles their directions mapped to is greater than 180deg, add 360deg to the direction of the gradient with the smaller angle.\
注記: これにより、 例えば,[ `to left^v ( 270 度)から `to top^v ( 0 度)への遷移 ]は、 期待されるとおり, ~gradientを(反~時計回りに 3/4 回転ではなく,)時計回りに 1/4 回転させる。 ◎ This ensures that a transition from, for example, "to left" (270deg) to "to top" (0deg) rotates the gradient a quarter-turn clockwise, as expected, rather than rotating three-quarters of a turn counter-clockwise.
- `放射型~gradient$に対しては: ◎ For radial gradients:
- 【`終形$の】~sizeが[ 2 個の `length$t または 2 個の `percentage$t ]として指定されている場合 ⇒ すでに数値的であり,変換は必要ない。 ◎ If the size is specified as two <length>s or <percentage>s, it is already in its explicit form.
-
他の場合、 次に従うモノトスル: ◎ Otherwise,\
- 2 個の~sizeを[ 等価な`終形$を生産するような 2 個の `length$t が成す~pair ]に~~変換する。 ◎ the size must be changed to a pair of <length>s that would produce an equivalent ending-shape.\
- `radial-shape$t に `circle$v が指定された場合、 それを `ellipse$v に変更する。 ◎ If the <radial-shape> was specified as circle, change it to ellipse.
【 ~gradientの`中心$( `position$t )も~keywordにより指定され得るが、 言及されていない — それらも同様に数値化すると思われる。 】
-
~gradientを成す各[ 成分, 色停 ]を独立に補間する: ◎ Interpolate each component and color-stop of the gradients independently.\
- `線型~gradient$に対しては、 成分は角度のみになる。 ◎ For linear gradients, the only component is the angle.\
- `放射型~gradient$に対しては、 成分は[ 中心の[ 横, 縦 ]位置 ], および[ 【終形の】 [ 横, 縦 ]方向の長さ ]からなる。 ◎ For radial gradients, the components are the horizontal and vertical position of the center and the horizontal and vertical axis lengths.
-
`色停$を補間する: ◎ To interpolate a color-stop,\
-
[ 開始ng, 終止ng ]~gradientの,各 色停を互いに対応~付ける:
- 各~色停に,指定された順により ~indexを付与する。
- 繰返ng~gradientに対しては、[ 後続する/先行する ]他のすべての色停には,色停~listを繰返しながら,適切にズラした~indexを付与する。
- 各~gradientの同じ~indexの色停が互いに対応する。
- 各 対応する色停~pairに対し,その[ 位置, 色 ]を独立に補間する。 ◎ Then, for each pair of color-stops, interpolate the position and color independently.
-
7.4. `stripes$f の補間-法
2 個の `stripes$f は、 ~gradientと類似に補間でき, 一方の画像から他方へ滑らかな~animationを許容する。 ただし、 `stripes$f どうしの補間が許容されるためには,次に挙げる少数の制約がある: ◎ Similar to gradients, two stripes() can be interpolated, allowing for smooth animations from one image to another. There are only a few restrictions on what stripes() are allowed to be interpolated:
- 引数【!Both the starting and ending image】を成す `color-stripe$t の個数は互いに同じでなければナラナイ。 ◎ Both the starting and ending image must have the same number of <color-stripe>s.
- 対応する `color-stripe$t を成す太さの型は互いに同じ — すなわち,[ どちらも `length-percentage$t / どちらも `flex$t ] — でなければナラナイ。 ◎ Each pair of interpolated thicknesses must be of the same type, i.e. both must either be of type <length-percentage>, or <flex>.
両~画像が: ◎ ↓
- 上の拘束をいずれも満たす場合、 以下に述べるとおりに補間するモノトスル。 ◎ If the two images satisfy both constraints, they must be interpolated as described below.\
- 1 個目の拘束しか満たさない場合、 50% の所で一足飛びに遷移するモノトスル (将来の仕様により他が指定されない限り)。 ◎ If they fail the second one only, they must be abruptly transitioned at 50% (unless otherwise specified by a future specification).\
- 他の場合、 汎用な画像~用の `cross-fade$f を利用して補間するモノトスル ◎ If they fail the first constraint, they must be interpolated using cross-fade() as for generic images.
注記: 50% の所で一足飛びに遷移させるのは、 内容が~cross-fadeに依拠しないようにして,将来に[ この事例~用に,もっと賢い補間~規則を追加できるようにする ]ためである。 ◎ Note: The abrupt transition at 50% is so that content will not rely on cross-fading, and smarter interpolation rules can be added for this case in the future.
- 画像を成す各~縞( `color-stripe$t )【!component and stripe】は、 独立に補間する。 ◎ Interpolate each component and stripe of the images independently.
-
縞を補間するときは、[ 開始~画像, 終了~画像 ]内の同じ~indexにある各~縞~pairに対し,その[ 太さ, 色 ]を独立に補間する。
【 太さは `length^t 値の`補間-法@~CSSVAL#combine-dimensions$, 色は`色の補間-法@~CSSCOLOR#interpolation$ に従うことになろう。 】
◎ To interpolate a stripe, first match each stripe in the start image to the corresponding stripe at the same index in the end image. Then, for each pair of stripes, interpolate the thickness and color independently.
8. 直列化
【 この節の他の内容は、 次も適用されることを除き, `~level 3 と同じ@~CSSIMAGE#serialization$ (なので、和訳は省略する)。 (しかしながら、 下の例における結果は,~level 3 と一致していない【!`7728$issue】。) 】
`cross-fade$f に対しては、 常に `percentage$t も直列化する。 ◎ For cross-fade(), always serialize the <percentage>.
例えば,次のように指定された~gradientは: ◎ For example, a gradient specified as:
Linear-Gradient( to bottom, red 0%,yellow,black 100px)
次のように直列化するモノトスル: ◎ must serialize as:
linear-gradient(rgb(255, 0, 0), rgb(255, 255, 0), rgb(0, 0, 0) 100px)
付録 A. 非推奨にされた特能と別名
実装は、 構文解析-時における `image-set$f の別名として, `-webkit-image-set@f を受容するモノトスル (それは、 引数も `image-set^f と一致する妥当な値であり, 構文解析の間に `image-set^f に転換される。) ◎ Implementations must accept -webkit-image-set() as a parse-time alias of image-set(). (It’s a valid value, with identical arguments to image-set(), and is turned into image-set() during parsing.)
~privacyの考慮点
注記: `~level 3 と同じ@~CSSIMAGE#priv-sec$。 ◎ Note: No change from [css-images-3].
~securityの考慮点
注記: `~level 3 と同じ@~CSSIMAGE#priv-sec$。 ◎ Note: No change from [css-images-3].
変更点
- `2023年 2月 17日 作業草案@~TR/2023/WD-css-images-4-20230217/$ からの変更点 ◎ Changes Since the 17 February 2023 Working Draft
- [ `radial-gradient(circle …)^v / `radial-gradient(ellipse …)^v ]用に[ `percentage$t 値/ 2 個の `radial-extent$t が成す値 ]を追加した — `radial-gradient$f が `basic-shape$t 用の値[ `circle$f / `ellipse$f ]と整合するよう。 ( `824$issue ) ◎ Added <percentage> values to radial-gradient(circle), and dual <radial-extent> values to radial-gradient(ellipse) to make radial-gradient() consistent with the circle() and ellipse() <basic-shape>s. (Issue 824)
- `2017年 4月 13日 作業草案@~TR/2017/WD-css-images-4-20170413/$ からの変更点 ◎ Changes Since the 13 April 2017 Working Draft
- `§ ~gradient色の定義-法@#gradient-colors$に対する編集上の大幅な書き直し。 ◎ Major editorial rewrite of § 3.5 Defining Gradient Color.
- `image-1D$t ~data型, `stripes$f 関数を追加した。 ( `2532$issue ) ◎ Added new <image-1D> data type and stripes() function. (Issue 2532)
- すべての~gradient関数に `color-interpolation-method$t を追加した。 ( `6094$issue, `6667$issue ) ◎ Added <color-interpolation-method> to all gradient functions. (Issues 6094, 6667)
- 新たに `object-view-box$p ~propを追加した【が、~level 5 へ先送りされた】。 ( `7058$issue ) ◎ Added new object-view-box property. (Issue 7058)
-
`image-set$f の定義を `css-images-3$r から取り込んだ。 ◎ Pulled definition of image-set() from [css-images-3] and:
- `image-set$f に `type$f を追加した。 ( `656$issue ) ◎ Added type() to image-set(). (Issue 656)
- 互換性を得るための別名として, `-webkit-image-set$f 追加した。 ( `6285$issue ) ◎ Added the -webkit-image-set() compatibility alias. (Issue 6285)
-
`cross-fade$f の定義を `css-images-3$r から取り込んだ。 ◎ Pulled definition of cross-fade() from [css-images-3] and:
- `cross-fade$f は 1 個以上の引数をとることを明確化した。 ◎ Clarified that cross-fade() takes 1+ arguments.
- 画像に加えて,色の混合も許容するよう更新した。 ◎ Updated to allow mixing colors as well as images.
- 新たな関数~引数の~sizingと塗ngを詳細に定義した。 ◎ Defined sizing and painting of the new function arguments in detail.
- `cross-fade$f 画像の混色-法の不正な定義を修正した。 ◎ Fixed incorrect definition of cross-fade() image blending.
- 算出において計画-中にある[ 単純~化と比較 ]についての課題を追加した。 ( `2852$issue ) ◎ Add issue about computation planned simplification and comparison. (Issue 2852)
( `Minutes@https://lists.w3.org/Archives/Public/www-style/2018Jul/0024.html$, `Changeset@https://github.com/w3c/csswg-drafts/commit/ab20b4cbccf41db8e61850f58b2f1c1afc6ec66a$ ) ◎ (Minutes, Changeset)
- 画像の[ `§ 補間@#interpolation$, `§ 直列化@#serialization$ ]を `css-images-3$r から取り込んだ。 ◎ Pulled interpolation and serialization of images from [css-images-3].
- 画像~dataより後に配置された画像~metadataは、 無視されるベキであるものと定義した — ~level 3 の `§ 画像~metadata@~CSSIMAGE#url-metadata$を見よ。 ( `4929$issue ) ◎ Defined that image metadata placed after the image data should be ignored, see CSS Images 3 § 2.1.2 Image Metadata. (Issue 4929)
-
画像の読込n法を定義した ( `1984$issue ): ◎ Defined image loading. (Issue 1984)
- `読込n中の画像$の定義を `css-images-3$r から複製した。 ◎ Copied definition of loading image from [css-images-3].
- 読込n法と~errorの取扱いを `image$f 挙動の中へ統合した。 ◎ Integrated loading and error handling into image() behavior.
- 別の画像を置換する新たな画像を読込む間は,古い画像を描画することを明示的に~UAに許容した。 ◎ Explicitly allow UA to render the old image while a new image loads in to replace another.
- `§ 外部~画像の~fetch法@#fetching-images$を適正に定義した。 ( `562$issue, `6715$pull ) ◎ Properly defined § 2.3 Fetching External Images. (Issue 562, Pull Request 6715)
- `CSS$I ~interfaceを名前空間に更新した。 ( `437$pull ) ◎ Updated CSS interface to a namespace. (Issue 437)
- 単位なしの 0 を[ `conic-gradient$f における `angle$t 値を表現する値 ]として許容した。 ( `1162$issue, `変更点@https://github.com/w3c/csswg-drafts/commit/edb0b3090bdd73abb765023475e58afe52c701b9$ ) ◎ Allowed unitless zero to represent <angle> values in conic-gradient(). (Issue 1162, Changes)
- `object-fit$p において, `scale-down$v を他の値と組合せることを許容した。 ( `1578$issue ) ◎ Allowed scale-down to be combined with other values in object-fit. (Issue 1578)
- `image$t ~data型に欠落った `element()$t を追加した。 ( `5170$issue ) ◎ Added missing <element()> to <image> data type. (issue 5170)
- `elementSources$m の~IDL定義を修正した。 ◎ Fixed elementSources IDL definition.
- 文法における誤り — `色停$の位置を義務的にしていた誤り — を修正した。 ( `1334$issue ) ◎ Fixed grammar error requiring color stop positions to be mandatory. (Issue 1334)
-
~prop定義~表tを更新した: ◎ Updated property definition tables to:
- [ “算出d値”, “~animation型” ]~~欄を他の~moduleと揃えた。 言い回しを整備した。 誤りを正した。 ◎ Align “Computed Value” and “Animation Type” lines across modules, tighten wording, and correct errors.
- 適切な所では、 新たな`角括弧付き範囲~記法$を利用した。 ◎ Use the new CSS bracketed range notation where appropriate.
- “媒体” ~~欄を落とした。 ◎ Drop “Media” lines.
- “内在的~寸法” を`生来な寸法$に改称した — `内在的~size$との混同を避けるため。 ( `4961$issue ) ◎ Renamed “intrinsic dimensions” to natural dimensions to avoid confusion with intrinsic sizes. (Issue 4961)
- `image$t の算出d値の定義を `css-images-3$r から複製した。 ( `4042$issue ) ◎ Copied over definition of computed <image> from [css-images-3]. (Issue 4042)
- ~gradientにおける~dither法を明示的に許容した。 ( `4793$issue ) ◎ Explicitly allowed dithering in gradients. (Issue 4793)
- 各種~markupを修正した。 ~prop構文を正した。 課題を~inline化した。 綴りを正した。 例を修正して改善した。 軽微な編集上の精緻化。 ◎ Assorted markup fixes, corrections to property syntaxes, inline issues, spelling corrections, example fixes and improvements, and minor editorial refinements.
- ~moduleの~titleを短縮した。 ◎ Shortened module title.
- `2012年 9月 11日 作業草案@~TR/2012/WD-css4-images-20120911/$ からの変更点 ◎ Changes Since the 11 September 2012 Working Draft
- `遷移~hint$を追加した。 ◎ Added color interpolation hints
- ~gradientの色停に `2 個の所在による構文@#color-stop-syntax$を追加した。 ◎ Added the two location syntax for gradient color stops
- `円錐型~gradient$に開始-角度を追加した。 ◎ Added start angles to conic gradients
- 色停の位置(たち)を,色より前にも来れるようにした。 ◎ The position(s) of a color stop can now come before the color
- ~level 3 に一致する~textは、 ~level 3 への参照に置換した。 ◎ Text that is identical to [css-images-3] has been replaced with a reference to [css-images-3].
- `image-set$f の別名として, `-webkit-image-set$f を追加した。 ◎ Added the -webkit-image-set() alias.
- ~level 3 からの変更点 ◎ Changes Since Level 3
- (~level 3 から先送りされた) `image$f 記法を追加した。 ◎ Added the image() notation (deferred from Level 3)
- (~level 3 から先送りされた) `image-resolution$p ~propを追加した。 ◎ Added the image-resolution property (deferred from Level 3)
- (~level 3 から先送りされた) `element$f 記法を追加した。 ◎ Added the element() notation (deferred from Level 3)
- `円錐型~gradient$を追加した。 ◎ Added conic gradients
- すべての~gradient関数に `color-interpolation-method$t を追加した ◎ Added <color-interpolation-method> to all gradient functions