CSS 塗りつぶしとストローク・モジュール レベル 3

W3C 初回公開作業草案、

このバージョン:
https://www.w3.org/TR/2017/WD-fill-stroke-3-20170413/
最新公開バージョン:
https://www.w3.org/TR/fill-stroke-3/
編集者草案:
https://drafts.fxtf.org/fill-stroke/
課題追跡:
仕様内インライン
GitHub 課題
編集者:
Elika J. Etemad / fantasai (招待専門家)
Tab Atkins-Bittner (Google)
以前の編集者:
(Mozilla Corporation)

概要

このモジュールは、テキストおよび SVG 図形の塗りつぶしとストロークに関する CSS の機能を含む。

この文書のステータス

この節は、この文書の公開時点における文書のステータスを 説明する。他の文書がこの文書を置き換えることがある。現在の W3C 公開物の一覧およびこの技術報告書の最新リビジョンは、 https://www.w3.org/TR/ にある W3C 技術報告書 索引で見つけることができる。

この文書は 初回公開作業草案 である。

初回公開作業草案としての公開は、W3C メンバーシップによる承認を 意味しない。これは草案文書であり、いつでも他の文書によって 更新、置換、または廃止されることがある。この文書を作業中のもの 以外として引用することは適切ではない。

この仕様に関する議論には GitHub 課題 が推奨される。 課題を提出する際は、タイトルにテキスト “fill-stroke” を含めてほしい。 できれば次のようにすること: “[fill-stroke] …コメントの要約…”。 すべての課題およびコメントはアーカイブされ、 過去のアーカイブも存在する。

この文書は、CSS ワーキンググループおよび SVG ワーキンググループによって公開された。

この文書は、 2004年2月5日 W3C 特許ポリシー の下で活動するグループによって作成された。 W3C は、各グループの成果物に関連して行われた 特許開示(CSS)の公開一覧および 特許開示(SVG)の公開一覧を維持している。 これらのページには、特許を開示するための手順も含まれている。 個人が、当該個人が必須クレームを含むと 信じる特許について実際の知識を有する場合、その個人は W3C 特許 ポリシーの第 6 節に従って情報を開示しなければならない。

この文書は、2017年3月1日 W3C プロセス文書によって管理される。

1. 導入

形状を定義するテキストおよび SVG グラフィック要素—path 要素や、 rect などの基本図形—は、 塗りつぶされること、 すなわちオブジェクトの内部を描画すること、および ストロークされること、 すなわちオブジェクトの輪郭に沿って描画することによってレンダリングされる。

この仕様は、要素の塗りつぶしおよびストロークの外観と形状を制御する多数のプロパティを 定義することにより、テキストおよび SVG グラフィック要素がどのように塗りつぶされ、 ストロークされるかを説明する。

SVG2 からのペイントの指定を挿入する。

テキスト装飾を扱う。 課題および別の課題を参照。

2. ペイント

ペイントは、抽象的な幾何形状を可視にするものである。 これは色、パターン、画像、グラデーション、およびその他の 2D グラフィックから構成される。 <color> 型は 0 次元ペイントを表す。 これは [CSS3-COLOR] で定義される。 <paint> 型は 2 次元ペイントを表し、 その構文は次のとおりである:

<paint> = none | <image> | <svg-paint>
none

ペイントが適用されないことを示す。

<image>

[CSS3-IMAGES] で定義され、画像参照およびグラデーションを含む。

<svg-paint>

SVG ペイントサーバーを参照し、 §2.1 SVG 固有のペイントで定義される。

2.1. SVG 固有のペイント

<svg-paint> = child | child( <integer> )
child

ペイントされる要素の最後の子ペイントサーバー要素を 参照する。

そのような子が存在しない場合、 none として振る舞う。

child(<integer>)

この関数記法は、 引数として正の整数を受け取り、 ペイントされる要素の n 番目の子ペイントサーバー要素::nth-child() と同様に 1 始まり)を参照する。

そのような子が存在しない場合、 none として振る舞う。

1 未満の引数は無効である。

w3c/csswg-drafts/383[css-images][css-masking][paint] url() の 扱いにおける曖昧さ

context-fill および context-stroke は仕様に組み込む必要があるが、 それらは <paint> 値としてではなく、 個々の stroke および fill サブプロパティのキーワードとして属する。 より多くの WG 議論と、 これが保持される SVG2 機能であることの確認が必要であり、 その後でそれに対する比較的大きな編集を行う。

CSS Images 4 §3.4.1 ペイントソースは、 SVG ペイントサーバーの座標空間の扱い方を定義している。 ここにコピーするか、参照するか、それとも別の何かか。

3. 塗りつぶし

塗りつぶしは、 SVG 図形の輪郭の内側、またはインライン(または SVG テキスト)ボックスのグリフの内側を描画する。 背景 [CSS3BG] と同様に、塗りつぶしは単色(fill-color) および/または画像パターン(fill-image など)にできる。

fill 一括指定を用いて 塗りつぶしを設定することを強く推奨する。 個々のペイント用ロングハンドは、 個別の側面を変更する必要がある場合にのみ用いるべきである。

box-decoration-breakfill-break、および stroke-break の一括指定である box-break プロパティを追加するか?

3.1. 複数の塗りつぶしの重ね合わせ

ボックスの塗りつぶしは、複数のレイヤーを持つことができる。 レイヤーの数は、fill-image プロパティのカンマ区切り値の数によって決定される。 none の値も依然としてレイヤーを作成する。

リスト値を持つプロパティは、背景画像の場合と完全に同じように相互作用する。 これは CSS Backgrounds 3 §3.1 複数の 背景画像の重ね合わせで定義される。

3.2. 塗りつぶしの幾何形状

3.2.1. SVG 図形の巻き規則: fill-rule プロパティ

名前: fill-rule
値: nonzero | evenodd
初期値: nonzero
適用対象: SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 指定どおり
正準順序: 文法に従う
アニメーション可能: 不可

fill-rule プロパティは、 キャンバスのどの部分が形状の内側に含まれるかを決定するために用いられる規則を示す。 単純で交差しないパスについては、 どの領域が「内側」にあるかは直感的に明らかである。 しかし、自身と交差するパスや、 あるサブパスが別のサブパスを囲むような、より複雑なパスでは、 「内側」の解釈はそれほど明白ではない。

fill-rule プロパティは、形状の内側をどのように 決定するかについて 2 つの選択肢を提供する:

nonzero
この規則は、キャンバス上の点の「内側性」を、 その点から任意の方向の無限遠へ光線を引き、 その光線と形状のセグメントが交差する箇所を調べることによって決定する。 ゼロのカウントから開始し、 パスセグメントが光線を左から右へ横切るたびに 1 を加え、 右から左へ横切るたびに 1 を減じる。 交差を数えた後、 結果がゼロであれば、その点はパスの外側にある。 そうでなければ、内側にある。
自己交差および囲まれたサブパスを持つパスに対する nonzero 塗りつぶし規則の効果。
evenodd
この規則は、キャンバス上の点の「内側性」を、 その点から任意の方向の無限遠へ光線を引き、 その光線が指定された形状のパスセグメントを横切る数を数えることによって決定する。 この数が奇数であれば、 その点は内側にあり、 偶数であれば、 その点は外側にある。
自己交差および囲まれたサブパスを持つパスに対する evenodd 塗りつぶし規則の効果。

注: 上記の説明は、 パスセグメントが光線と一致する場合、または光線に接する場合にどうするかを指定していない。 どの光線でもよいため、 そのような問題のある交差を持たない別の光線を単に選択すればよい。

このプロパティはテキスト (SVG であるか CSS であるかを問わない) には適用されない。 テキストグリフの「内側」は本質的に定義されているためである。

これはレイヤー化されるべきか?

3.2.2. 断片化された塗りつぶし: fill-break プロパティ

名前: fill-break
値: bounding-box | slice | clone
初期値: bounding-box
適用対象: すべての要素
継承: する?
パーセンテージ: N/A
メディア: visual
算出値: 指定どおり
正準順序: 文法に従う
アニメーション可能: 不可

このプロパティは、断片化されたボックスの幾何形状を、 塗りつぶしに対してどのように扱うかを指定する。

値の意味は次のとおりである: COPY FROM FRAGMENTATION

3.3. 塗りつぶしペイント

3.3.1. 塗りつぶし色: fill-color プロパティ

名前: fill-color
値: <color>
初期値: currentcolor
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 算出色
正準順序: 文法に従う
アニメーション可能: 色として

このプロパティは、要素の塗りつぶし色を設定する。 この色は、任意の塗りつぶし画像の背後に描画される。

作者は、テキストの色を設定するために、 color プロパティを fill-color ではなく用いることが推奨される。

background-color と異なり、 塗りつぶし色は、fill-image の最終レイヤーが none または無効な画像である場合にのみ描画されなければならない。 それが有効な 画像である場合、 塗りつぶし色は描画されてはならない。

注: これは SVG の fill プロパティの旧来の挙動と一致させるために必要である。 その挙動では、単一レイヤー画像構文に「フォールバック色」が組み込まれていた。 CSS では、これは image() 関数によってよりよく達成され、 フォールバックを明示的にする。

fill-colorstroke-color のようにレイヤー化されるべきであり、 そうすることで 2 つのプロパティ集合の一貫性を最大化できる。

SVG ユーザーエージェントは、 次の規則(またはその同等物)を ユーザーエージェント スタイルシートに含めなければならない:

@namespace svg "http://www.w3.org/2000/svg";
svg:svg:root, *|*:not(svg|*) > svg:svg {
  fill-color: black;
}

3.3.2. 塗りつぶし画像ソース: fill-image プロパティ

名前: fill-image
値: <paint>#
初期値: none
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 指定どおり。ただし URL は絶対化される
正準順序: 文法に従う
アニメーション可能: 画像の反復可能リストとして

このプロパティは、要素の塗りつぶし画像を設定する。 画像は、最初に指定されたものを最前面(ユーザーに最も近い位置)に描画し、 後続の各画像は前の画像の背後に描画される。 値は background-image と同一に解釈される。 必要な変更を加えた上で。

3.3.3. 塗りつぶしの配置領域: fill-origin プロパティ

名前: fill-origin
値: match-parent | fill-box | stroke-box | content-box | padding-box | border-box
初期値: match-parent
適用対象: すべての要素
継承: しない
パーセンテージ: N/A
メディア: visual
算出値: 指定どおり
正準順序: 文法に従う
アニメーション可能: 不可

このプロパティは、塗りつぶしの座標系を指定し、 塗りつぶし 配置領域を設定する。 値の意味は次のとおりである:

match-parent
親と同じ塗りつぶし配置領域を用いる。 親がない場合は、初期包含ブロックを用いる。
content-box
padding-box
border-box
ボックス自身の content-box/padding-box/border-box を塗りつぶし配置領域として用いる。 SVG 図形については、content-box および padding-boxfill-box として扱われ、 一方 border-boxstroke-box として扱われる。
fill-box
SVG 図形または SVG テキストについては、 要素のオブジェクト 境界ボックスを用いる。 CSS ボックスについては、 要素およびすべてのインフローまたは浮動する子孫の テキストグリフ輪郭の境界ボックスを用いる。
stroke-box
SVG 図形または SVG テキストについては、 要素のストローク 境界ボックスを用いる。 CSS ボックスについては、 要素およびすべてのインフローまたは浮動する子孫の テキストグリフのストローク輪郭の境界ボックスを用いる。

SVG UA スタイルシートは、次の規則を含むように修正される:

svg:svg {
  fill-origin: content-box;
}

塗りつぶしペイント領域のサイズは無限である。 ペイント時、 塗りつぶし色/画像は、影響を受けるテキストのグリフ領域、 または影響を受ける SVG 図形の塗りつぶし幾何形状と交差させられる。

SVG ペイントサーバーは *Units 属性内に独自の生成元情報を持ち回るが、 SVGWG は、CSS の生成元に注意を払わせる新しい値を追加できるかもしれない。 あるいは、ここに auto 初期値を追加できる。 これは、ペイントサーバーを参照している場合には ペイントサーバーの情報に委ね、 そうでない場合は match-parent になる。

3.3.4. 塗りつぶし画像の配置: fill-position プロパティ

名前: fill-position
値: <position>#
初期値: 0% 0%
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: n/a
メディア: visual
算出値: リスト。各項目は、左上原点からのオフセット(水平および垂直)の組からなり、 それぞれが絶対長とパーセンテージの組み合わせとして与えられる
正準順序: 文法に従う
アニメーション可能: 長さ、パーセンテージ、または calc の単純リスト反復可能リストとして

塗りつぶし画像が指定されている場合、 このプロパティは、それらの初期位置 (任意のサイズ変更後)を、 対応する塗りつぶし配置領域内で指定する。 値は background-position と同一に解釈される。 必要な変更を加えた上で。

3.3.5. 塗りつぶし画像のサイズ指定: fill-size プロパティ

名前: fill-size
値: <bg-size>#
初期値: auto
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: n/a
メディア: visual
算出値: 指定どおり。ただし長さは絶対化され、省略された auto キーワードは 補完される
正準順序: 文法に従う
アニメーション可能: 長さ、パーセンテージ、または calc の単純リスト反復可能リストとして

塗りつぶし画像のサイズを指定する。 値は background-size と同一に解釈される。 必要な変更を加えた上で。

3.3.6. 塗りつぶし画像のタイル化: fill-repeat プロパティ

名前: fill-repeat
値: <repeat-style>#
初期値: repeat
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: n/a
メディア: visual
算出値: リスト。各項目は、次元ごとに 1 つずつ、2 つのキーワードからなる
正準順序: 文法に従う
アニメーション可能: 不可

サイズ指定および配置の後、塗りつぶし画像をどのようにタイル化するかを指定する。 値は background-repeat と同一に解釈される。 必要な変更を加えた上で。

3.3.7. 塗りつぶし一括指定: fill プロパティ

名前: fill
値: <background> with modifications
初期値: 個別のプロパティを参照
適用対象: 個別のプロパティを参照
継承: 個別のプロパティを参照
パーセンテージ: N/A
メディア: visual
算出値: 個別のプロパティを参照
正準順序: 文法に従う
アニメーション可能: 個別のプロパティを参照

このプロパティは、すべての塗りつぶしペイントプロパティ—fill-color, fill-image, fill-origin, fill-position, fill-size, および fill-repeatを 1 つの宣言で設定する 一括指定である。 省略された値は初期値に設定される。 ただし、省略された fill-colortransparent に設定され、 省略された fill-originfill-box に設定される。

この一括指定によって設定される場合、 fill-origin の既定値は何であるべきか? content-box か fill-box か? fill-box は Zapfino のような装飾的/はみ出すフォントにはよりよく機能するが、 content-box よりも計算コストがはるかに高い。

SVG には特殊な色の フォールバック構文がある—画像の後に続く色は、画像が失敗した場合にのみ描画される。 これは background と一致させたいという要求と衝突する。 なぜなら fill: url(#foo) red; は red で塗りつぶしてから #foo を描画する、ということをしないためである。 妥協案: fill-color はフォールバック色であるが、 none無効な画像の両方がフォールバックを発動する。 そのため fill: url(#foo) red; は、#foo が存在しない場合にのみ red を描画する(SVG と同様)。 しかし fill: url(#foo), red(最後のレイヤーで none red と同等)は、 red および #foo を描画する(background と同様)。

3.4. 塗りつぶしの透明度

3.4.1. 塗りつぶしの不透明度: fill-opacity プロパティ

名前: fill-opacity
値: <‘opacity’>
初期値: 1
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 指定値を <number> に変換し、範囲 [0,1] にクランプしたもの
正準順序: 文法に従う
アニメーション可能: 数値として

fill-opacity プロパティは、要素を塗りつぶすために用いられる ペイント操作の不透明度を指定する。 opacity と同様に、 0 または 0% の値は完全に透明であることを意味し、 1 または 100% の値は完全に不透明であることを意味する。

4. ストローク(輪郭線)

ストロークは、 SVG 図形の輪郭、またはインライン(または SVG テキスト)ボックスのグリフに沿って境界を描画する。 結果として得られる領域は、塗りつぶし領域と同様に塗りつぶすことができる。ストロークは、 単色(stroke-color)および/または画像パターン(stroke-image など)にできる。

stroke 一括指定を用いて ストロークを設定することを強く推奨する。 個々のペイント用ロングハンドは、 個別の側面を変更する必要がある場合にのみ用いるべきである。

既定では、ストローク塗りつぶしの上に描画される。 SVG テキストまたは SVG 図形では、 描画順序は paint-order プロパティによって制御される。

paint-order は SVG ではないテキストにも適用されるべきか?

4.1. 複数のストロークの重ね合わせ

ボックスのストロークは、複数のレイヤーを持つことができる。 レイヤーの数は、 stroke-image プロパティのカンマ区切り値の数と、 stroke-color プロパティのカンマ区切り値の数のうち、 大きい方によって決定される。 none の値も依然としてレイヤーを作成する。

2 つのプロパティの長さが異なる場合、 値は末尾から揃えられ、 stroke-color の欠落した先頭値は transparent を既定値とし、 stroke-image の欠落した先頭値は none を既定値とする。

リスト値を持つプロパティは、背景画像の場合と完全に同じように相互作用する。 これは CSS Backgrounds 3 §3.1 複数の 背景画像の重ね合わせで定義される。

stroke-colortransparent で先頭側を補完しなければならない。 そうしなければ、画像の読み込みに失敗したときに、複数の画像レイヤーがランダムに単色へフォールバックすることになる。 ストロークおよび塗りつぶし全般で初期値による先頭補完を行いたいのか、 それともこれらの残りのプロパティは背景と同様にリストを反復すべきなのか?

4.2. ストロークの幾何形状

現在、SVGWG の決議に従い、 ストロークペイントプロパティおよび stroke-width を レイヤー化している。 他の幾何プロパティもレイヤー化すべきか? それらにも同様のユースケースがあるが、 ややニッチであり、 API の一貫性は重要である。 実装/テストの労力に値するか? 難しい事例: stroke-dasharray。 なぜなら "commas anywhere lol" 構文を持つためである。

4.2.1. ストロークの太さ: stroke-width プロパティ

名前: stroke-width
値: <length-percentage>#
初期値: 1px
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: 拡大縮小済みビューポートサイズに相対
メディア: visual
算出値: 絶対長、またはパーセンテージ
正準順序: 文法に従う
アニメーション可能: <length-percentage> として

このプロパティは、輪郭上のストロークの幅を指定する。 値が 0 の場合、そのレイヤーにはストロークは描画されない。 負の値は無効である。

拡大縮小済みビューポート サイズは、ビューポートの幅と高さの幾何平均である。

4.2.2. ストロークの配置: stroke-align プロパティ

名前: stroke-align
値: center | inset | outset
初期値: center
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 指定どおり
正準順序: 文法に従う
アニメーション可能: 不可

このプロパティは、作者がストロークを輪郭に沿って揃えることを可能にする。

center
各サブパスのストロークは、 輪郭上で中央揃えされる。
inset
各サブパスのストロークは、 輪郭の「内側」 (塗りつぶし領域内)に位置する。

stroke-linejoin プロパティは無視されなければならない。

なぜ stroke-linejoin は無視されるのか? 内側の角には依然として必要である。

outset
各サブパスのストロークは、 輪郭の「外側」 (塗りつぶし領域の外側)に位置する。
テキストは簡単であり、単純で閉じた自己交差しない パスも同様であるが、 他のカテゴリも存在し、適切な定義を必要とする。

これは開いたパスセグメントにどのように適用されるのか? 1 つの提案は、開いたパスについて outsetleft に、insetright に別名化することである。 端点キャップはどのように扱われるのか?

  1. stroke-aligncenter 値によるストローク。

  2. 塗りつぶし領域。

  3. 仕様に従った stroke-aligninset 値によるストローク (? ストロークは塗りつぶし領域内にのみ描画される)。

  4. stroke-alignoutset 値によるストローク (塗りつぶし領域を遮断することで実装)。

  5. stroke-aligninset 値によるストローク、 別の解釈。

  6. 仕様に従った (?) stroke-alignoutset 値によるストローク。

  7. stroke-align の代替 left 値によるストローク。ピンクは丸い線端を示す。

これはループを持つパスにどのように適用されるのか? 下の図の赤い円の内側の領域は、示されているように、ストロークされた領域の一部なのか? 塗りつぶし規則が nonzero の場合、 内部辺はストロークされるのか。されるならどのように? (下ではストロークなしで示している。)

  • 上段: 通常のストローク。左ストローク。右ストローク。

  • 中段: 塗りつぶし規則 nonzero、ストロークなし。外側ストローク。 内側 ストローク。

  • 下段: 塗りつぶし規則 evenodd、ストロークなし。外側ストローク。 内側 ストローク。

破線はどのように扱われるのか? 元のパスに基づくのか?

  1. 通常の破線パターン。

  2. 破線パターンまたは元のパスに基づく破線パターン。 破線部分の内側から来る薄い灰色の領域に注意 (単にクリッピングパスを用いるだけでは適切な結果は得られない)。

  3. オフセットパスの中心に基づく破線パターン。 薄い灰色は、インセットパスの中心に基づく破線パターンを表す。

4.2.3. ストロークの端点形状: stroke-linecap プロパティ

名前: stroke-linecap
値: butt | round | square
初期値: butt
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 指定どおり
正準順序: 文法に従う
アニメーション可能: 不可

stroke-linecap は、 開いたサブパス (破線ストロークのセグメント、 または閉じていない path 要素など) がストロークされるとき、その端に用いられる形状を指定する。 可能な値は次のとおりである:

butt
各サブパスのストロークは、 2 つの端点を越えて延長されない。 (したがって、長さ 0 のサブパスにはストロークが存在しない。)
round
各サブパスの各端において、 ストロークは、ストローク幅の半分に等しい半径を持つ 半円によって延長される。 (長さ 0 のサブパスのストロークは、 サブパスの点を中心とする完全な円である。)
square
各サブパスの端において、 ストロークは、ストローク幅と同じ幅を持ち、長さがストローク幅の半分である 長方形によって延長される。 (長さ 0 のサブパスのストロークは、 辺の長さがストローク幅に等しく、 サブパスの点を中心とし、 その 2 つの辺が、そのサブパスの点における有効接線に平行になるように向けられた正方形である。 長さ 0 のサブパスにおける接線を決定する方法の詳細は、 §4.6 ストロークの形状の算出を参照。)

曲線輪郭上の破線の端に 長方形を追加すると見栄えが悪い。 代わりに、輪郭に沿って stroke-width/2 だけ 破線を延長すべきである。

3 種類の線端。

線端が持つ形状のより正確な説明については、 下記の端点形状の定義を参照。

4.2.4. ストロークの角形状: stroke-linejoin プロパティ

名前: stroke-linejoin
値: [ crop | arcs | miter ] || [ bevel | round | stupid ]
初期値: miter
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 指定どおり
正準順序: 文法に従う
アニメーション可能: 不可

stroke-linejoin は、 パスまたは基本図形がストロークされるとき、その角に用いられる形状を指定する。 これは 2 つの部分を持つ: [ crop | arcs | miter ] は、 ストロークの角を延長するかどうか、およびどのように延長するかを指定する。 [ bevel | round | stupid ] は、 stroke-miterlimit によって 長さが制限されたとき、角の「キャップ」をどのようにレンダリングするかを指定する。

crop
ストロークは、凸な角を形成するために必要な最小量だけ 角を越えて延長される。

これは miter と同一に作用するが、 stroke-miterlimit に、その最小値 1 を持つかのように振る舞わせる。

miter
パスセグメントを結合するために鋭い角が用いられる。 角は、パスセグメントの接線におけるストロークの外側の縁を、 それらが交差するまで延長することによって形成される。
arcs
パスセグメントを結合するために arcs 角が用いられる。 arcs 形状は、結合点におけるストロークの外側の縁を、 結合点における外側の縁と同じ曲率を持つ円弧で延長することによって形成される。
bevel
角は、その対角線に対する垂線によって、 stroke-miterlimit で 切り落とされる。
round
角は bevel と同様に切り落とされ、 切り詰められたストロークの縁に接する塗りつぶされた円弧が追加され、 角を丸める。
fallback
stroke-miterlimit を超えた場合、 これは crop bevel が指定されたかのように振る舞う。

fallback を単に削除できるか? これはばかげた値であり、 SVG1 で miterlimit でのクリップ挙動を持っていなかったためにのみ有用であった。 問題は、人々が現在ほとんど単に*偶然* bevel の挙動を得ていて、 結合が miterlimit まで延び、 余分な角だけがクリップされることを受け入れられるのか、 それとも現在指定されている不連続な挙動を実際に望んでいたのか、である。 境界点は 29 度と 30 度の間にある。

[ crop | arcs | miter ] が省略された場合、 既定値は crop となる。 [ bevel | round | fallback ] が省略された場合、 既定値は fallback となる。

4 種類の線結合
各種類の結合が正確にどのような形状になるかを、より詳しく示したもの。 それぞれについて、白い破線はストロークされるパスであり、 黒い部分は線結合を適用する前のストロークそのものである。 ピンクの領域は、bevel、round、および miter 線結合の角に追加される 追加のストロークである。

4.2.5. ストロークの角の制限: stroke-miterlimit プロパティ

名前: stroke-miterlimit
値: <number>
初期値: 4
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 数値
正準順序: 文法に従う
アニメーション可能: 不可

このプロパティは、2 つのストロークセグメントが角で接する場合における miter または arcs 結合の最大サイズを指定する。 (結合の見かけの「サイズ」—内側の角と外側の角の間の距離—は、角度が小さくなるにつれて無限大に近づく。)

このプロパティは、stroke-aligninset である場合、効果を持たない。

値の意味は次のとおりである:

<number>
結合のサイズに対する制限を、その対角線stroke-width との比率として指定する。 1 未満の値は無効である(そして宣言を無効にする)。

miter 線結合については、 対角線の長さは、 2 つのセグメント間の角度から stroke-width / sin(θ/2) として計算される。 線結合は、 2 つのパスセグメント間の角度を二等分する線に対して垂直にクリップされる。

arcs 線結合については、 対角線の長さは、 2 つのセグメント間の角度を二等分する線に その 2 つのセグメントが交差する点で接し、 結合の端点を通る円弧に沿って計算される。 線結合はこの円弧に対して垂直にクリップされる。

角度を追加すべきか? miterlimit の数値には物理的な根拠があるが、 実験なしには理解しにくい。

4.2.6. 断片化されたストローク: stroke-break プロパティ

名前: stroke-break
値: bounding-box | slice | clone
初期値: bounding-box
適用対象: すべての要素
継承: ?
パーセンテージ: N/A
メディア: visual
算出値: 指定どおり
正準順序: 文法に従う
アニメーション可能: 不可

このプロパティは、断片化されたボックスの幾何形状を、 ストロークに対してどのように扱うかを指定する。

値の意味は次のとおりである: COPY FROM FRAGMENTATION

4.3. ストロークの破線化

4.3.1. ストロークの破線パターン: stroke-dasharray プロパティ

名前: stroke-dasharray
値: none | <length-percentage>+#
初期値: none
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: 拡大縮小済みビューポートサイズに相対
メディア: visual
算出値: 指定どおり
正準順序: 文法に従う
アニメーション可能: 長さ、パーセンテージ、または calc の反復リストとして

このプロパティは、パスをストロークするために用いられる破線と間隔のパターンを制御する。

none
破線化なし: ストロークは連続して描画される。
<length-percentage>+#
使用する破線パターンを指定する。 各 <length-percentage> 値は、 ストロークの次の破線または間隔の長さを表す (最初の破線から始まり、そこから交互に続く)。 パターンはストロークの長さにわたって繰り返される。 (値の数が奇数である場合、 パターンは、偶数個の値を得るために複製されたかのように振る舞う。) 破線パターンは各サブパスの開始時にリセットされ、新たに開始する。

負の値は無効である。 すべての値が 0 である場合、none として扱われる。

SVG はカンマ区切りを許可している。 後方互換性のために CSS でもこれを許可する必要があるか?(いいえと言ってほしい。)

破線の長さを ストロークの幅に相対して指定する方法が必要である。 (例えば、正方形の破線を作るため。)

破線の長さを パスの長さに相対して指定する方法が必要である。 (例えば、スクリプトなしで「自己描画 SVG」を行うため。)

破線ストローク。 破線パターンは 20 10 である。 赤い線は、ストロークされる実際のパスを示す。

4.3.2. ストローク破線の開始位置: stroke-dashoffset プロパティ

名前: stroke-dashoffset
値: <length-percentage>
初期値: 0
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: 拡大縮小済みビューポートサイズに相対
メディア: visual
算出値: 指定どおり
正準順序: 文法に従う
アニメーション可能: 整数の反復リストとして

このプロパティは、パスの開始時に破線化を開始する、反復される破線パターン内での距離を指定する。 値は負にできる。

0 でない破線オフセットを持つ破線ストローク。 破線パターンは 20 10 であり、破線オフセットは 15 である。 赤い線は、ストロークされる実際のパスを示す。

破線が配置されるパス上の位置についてのより正確な説明は、 §4.6.3 破線位置を参照。

4.3.3. 角の制御: stroke-dash-corner および stroke-dash-justify プロパティ

名前: stroke-dash-corner
値: none | <length>
初期値: none
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 指定値。ただし長さは絶対化される
正準順序: 文法に従う
アニメーション可能: <length> の場合は可能

stroke-dash-corner プロパティは、 ストロークされた形状の頂点に常に破線を描画するかどうかを制御する。 角の破線が描画される点には、 形状の等価パス内の各セグメントの 開始点および終了点が含まれる。

none

このプロパティは破線化に特別な効果を持たない: 破線はパスに沿って連続的に配置/サイズ指定される。

<length>

与えられた <length> の破線が、形状の各頂点に描画されなければならない。 開いた形状については、 最初の角破線はパスの開始位置から始まるように配置され、 最後の角破線はパスの終了位置で終わるように配置される。 開いた形状のその他の角破線、 および閉じた形状のすべての角破線は、 その頂点を中心に配置される。

開いた形状の 最初および最後の頂点における角破線は、 他のものの半分の長さにすべきか? これは作者が制御可能であるべきか?

角破線の間の 任意の破線パターンが それらに接触しないように、 パディングを指定する方法があるべきか?

角は、 破線パターンの最初の破線の役割を引き継ぐ必要がある。 そうすることで各セグメントの「内部」は間隔で始まり、間隔で終わる。 各セグメントでパターン内の最初の破線を自動的にスキップするか?

最初の破線の長さを 角として用いるためのキーワード。

stroke-dash-cornernone でない場合、 破線パターン (stroke-dasharray によって指定されるもの)は、 セグメントの角破線の間の空間で、各パスセグメントごとに個別に反復される。

角破線が重なり合う場合に 何が起こるかを定義する必要がある。

このプロパティが有効なとき、 自動的に均等化を発動すべきか? それがないと、既定でかなり間抜けに見える結果になる。

各角に長方形があり、その間に短い破線があることを示す画像。
破線ストロークおよび角破線を持つ長方形。 stroke-dasharray: 0 8px; stroke-dash-corner: 32px; で 設定されている。
名前: stroke-dash-justify
値: none | [ stretch | compress ] || [ dashes || gaps ]
初期値: none
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 指定値。ただし長さは絶対化される
正準順序: 文法に従う
アニメーション可能: 不可

stroke-dash-justify プロパティは、 ストロークの破線パターンが、要素の各サブパスに沿って 整数回反復されるように調整されるかどうか、およびどのように調整されるかを指定する。

none

破線パターンの調整は行われない: サブパスの末端で、その時点まで進んだ分だけでクリップされる。

stretch

破線パターンがサブパス内に整数回収まらない場合に、 破線または間隔(またはその両方)が、それが収まるように長くされることを示す。

compress

破線パターンがサブパス内に整数回収まらない場合に、 破線または間隔(またはその両方)が、それが収まるように短くされることを示す。

dashes

破線パターンが伸長または圧縮される場合に、 破線の長さが調整されることを示す。

gaps

破線パターンが伸長または圧縮される場合に、 間隔の長さが調整されることを示す。

stretchcompress も 指定されない場合、 調整量がより少なくなる方が既定値となる。

dashesgaps も 指定されない場合、 既定値は ??? となる。

既定では、おそらく 間隔のみを調整すべきである。

破線パターンが調整される対象長は、 stroke-dash-corner プロパティの値に依存する:

破線パターンにおける破線および間隔の長さの調整は、長さに係数を掛けることによって行われる。 その係数は、破線パターンが対象長に 整数回収まる結果となる、1 に最も近い数である。 stretch が用いられる場合、 係数は 1 から 2 の間の数であり、 一方 compress が用いられる場合、 係数は 0 から 1 の間の数である。

stretch が指定されているが、 破線パターンが対象長より長い場合、 調整は行われない。

長すぎる場合、 セグメントを中央揃えにすべきか?

compress が指定されているが、 破線パターンの調整可能な部分を 破線パターンが対象長に収まるほど圧縮できない場合、 圧縮可能な部分はゼロに設定されなければならない。

ストロークが 破線で終わるか間隔で終わるかを 制御できるようにしたいか? 閉じたパスについては、 おそらく末端に間隔が必要であり、 開いたパスについては、 末端に破線がある方がおそらくよい。 この制御を省略し、 パスが閉じているかどうかに基づいて自動的に行うべきか?

3 つの異なるパスに用いられ、 それぞれで整数回収まるように調整された、同じ破線ストローク。

4.4. ストロークペイント

4.4.1. ストローク色: stroke-color プロパティ

名前: stroke-color
値: <color>#
初期値: transparent
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 算出色
正準順序: 文法に従う
アニメーション可能: 色として

このプロパティは、要素のストローク色を設定する。 stroke-image と同様に、 ストローク色は最初に指定されたものが最前面 (ユーザーに最も近い位置)に描画され、 後続の各色は前の色の背後に描画される。

ストローク色は、対応するレイヤーの stroke-imagenone または無効な画像である場合にのみ描画される。 (言い換えれば、 各レイヤーは画像または色のいずれかを描画し、 両方が指定されている場合は画像が優先される。)

注: これは SVG の stroke プロパティの旧来の挙動と一致させるために必要である。 その挙動では、単一レイヤー画像構文に「フォールバック色」が組み込まれていた。 CSS では、これは image() 関数によってよりよく達成され、 フォールバックを明示的にする。

4.4.2. ストローク画像ソース: stroke-image プロパティ

名前: stroke-image
値: <paint>#
初期値: none
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 指定どおり。ただし URL は絶対化される
正準順序: 文法に従う
アニメーション可能: 画像の反復可能リストとして

このプロパティは、要素のストローク画像を設定する。 画像は最初に指定されたものが最前面 (ユーザーに最も近い位置)に描画され、 後続の各画像は前の画像の背後に描画される。 値は background-image と同一に解釈される。必要な変更を加えた上で。

4.4.3. ストロークの配置領域: stroke-origin プロパティ

名前: stroke-origin
値: match-parent | fill-box | stroke-box | content-box | padding-box | border-box
初期値: match-parent
適用対象: すべての要素
継承: しない
パーセンテージ: N/A
メディア: visual
算出値: 指定どおり
正準順序: 文法に従う
アニメーション可能: 不可

このプロパティは、ストロークの座標系を指定し、 ストローク 配置領域を設定する。 値の意味は次のとおりである:

match-parent
親と同じストローク配置領域を用いる。 親がない場合は、初期包含ブロックを用いる。
content-box
padding-box
border-box
ボックス自身の content-box/padding-box/border-box をストローク配置領域として用いる。 SVG 図形については、content-box および padding-boxfill-box として扱われ、 一方 border-boxstroke-box として扱われる。
fill-box
SVG 図形または SVG テキストについては、 要素のオブジェクト 境界ボックスを用いる。 CSS ボックスについては、 要素およびすべてのインフローまたは浮動する子孫の テキストグリフ輪郭の境界ボックスを用いる。
stroke-box
SVG 図形または SVG テキストについては、 要素のストローク 境界ボックスを用いる。 CSS ボックスについては、 要素およびすべてのインフローまたは浮動する子孫の テキストグリフのストローク輪郭の境界ボックスを用いる。

SVG UA スタイルシートは、次の規則を含むように修正される:

svg:svg {
  stroke-origin: content-box;
}

ストロークペイント領域のサイズは無限である。 ペイント時、 ストローク色/画像は、影響を受けるテキストのグリフストローク、 または影響を受ける SVG 図形のストローク幾何形状と交差させられる。

SVG ペイントサーバーは *Units 属性内に独自の生成元情報を持ち回るが、 SVGWG は、CSS の生成元に注意を払わせる新しい値を追加できるかもしれない。 あるいは、ここに auto 初期値を追加できる。 これは、ペイントサーバーを参照している場合には ペイントサーバーの情報に委ね、 そうでない場合は match-parent になる。

4.4.4. ストローク画像の配置: stroke-position プロパティ

名前: stroke-position
値: <position>#
初期値: 0% 0%
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: n/a
メディア: visual
算出値: リスト。各項目は、左上原点からのオフセット(水平および垂直)の組からなり、 それぞれが絶対長とパーセンテージの組み合わせとして与えられる
正準順序: 文法に従う
アニメーション可能: 長さ、パーセンテージ、または calc の単純リスト反復可能リストとして

ストローク画像が指定されている場合、 このプロパティは、それらの初期位置 (任意のサイズ変更後)を、 対応するストローク配置領域内で指定する。 値は background-position と同一に解釈される。 必要な変更を加えた上で。

4.4.5. ストローク画像のサイズ指定: stroke-size プロパティ

名前: stroke-size
値: <bg-size>#
初期値: auto
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: n/a
メディア: visual
算出値: 指定どおり。ただし長さは絶対化され、省略された auto キーワードは 補完される
正準順序: 文法に従う
アニメーション可能: 長さ、パーセンテージ、または calc の単純リスト反復可能リストとして

ストローク画像のサイズを指定する。 値は background-size と同一に解釈される。 必要な変更を加えた上で。

4.4.6. ストローク画像のタイル化: stroke-repeat プロパティ

名前: stroke-repeat
値: <repeat-style>#
初期値: repeat
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: n/a
メディア: visual
算出値: リスト。各項目は、次元ごとに 1 つずつ、2 つのキーワードからなる
正準順序: 文法に従う
アニメーション可能: 不可

サイズ指定および配置の後、ストローク塗りつぶし画像をどのようにタイル化するかを指定する。 値は background-repeat と同一に解釈される。 必要な変更を加えた上で。

4.4.7. ストローク一括指定: stroke プロパティ

名前: stroke
値: <background> with modifications
初期値: 個別のプロパティを参照
適用対象: 個別のプロパティを参照
継承: 個別のプロパティを参照
パーセンテージ: N/A
メディア: visual
算出値: 個別のプロパティを参照
正準順序: 文法に従う
アニメーション可能: 個別のプロパティを参照

このプロパティは、すべてのストロークペイントプロパティ—stroke-color, stroke-image, stroke-origin, stroke-position, stroke-size, および stroke-repeatを 1 つの宣言で設定する 一括指定である。 省略された値は初期値に設定される。 ただし、省略された stroke-colortransparent に設定され、 省略された stroke-originstroke-box に設定される。

4.5. ストロークの透明度

4.5.1. ストロークの不透明度: stroke-opacity プロパティ

名前: stroke-opacity
値: <‘opacity’>
初期値: 1
適用対象: インラインボックスおよび SVG 図形
継承: する
パーセンテージ: N/A
メディア: visual
算出値: 指定値を <number> に変換し、範囲 [0,1] にクランプしたもの
正準順序: 文法に従う
アニメーション可能: 数値として

stroke-opacity プロパティは、現在のオブジェクトを ストロークするために用いられるペイント操作の不透明度を指定する。 opacity と同様に、 0 または 0% の値は完全に透明であることを意味し、 1 または 100% の値は完全に不透明であることを意味する。

4.6. ストロークの形状の算出

4.6.1. ストロークパス

すべての場合において、 破線パターンに関係するものなど、方向性の影響を受けるすべてのストロークプロパティは、 ストローク操作がグラフィック要素の開始点と同じ点で始まるように レンダリングされなければならない。 特に、 path 要素については、 パスの開始点は最初の “moveto” コマンドの最初の点である。

破線パターンなど、 計算がグラフィック要素の輪郭に沿った進行に依存するストロークプロパティについては、 距離計算は SVG ユーザーエージェントの標準のパスに沿った距離 アルゴリズムを利用することが要求される。

グラデーションや pattern などの複雑なペイントサーバーを用いてストロークが行われる場合、 ストローク操作は、現在のグラフィック要素の幾何形状と それに関連付けられたストロークプロパティによって定義される幾何形状が、 同等の path 要素に変換され、 その後、指定されたペイントサーバーを用いて塗りつぶされた場合に生じる結果と 同一でなければならない。

単一の “moveto” からなるサブパスはストロークされてはならない。 長さ 0 の任意のサブパスは、 stroke-linecap プロパティの値が butt である場合はストロークされてはならないが、 stroke-linecap プロパティの値が round または square である場合は ストロークされなければならず、 それぞれ、指定された点を中心とする円または正方形を生成する。 長さ 0 のサブパスの例には、'M 10,10 L 10,10''M 20,20 h 0''M 30,30 z'、 および 'M 40,40 c 0,0 0,0 0,0' が含まれる。

これは下記の ストローク形状の算出要件と重複するはずである。 この節では、要件を規範的ではなく説明的に表現すべきである。

4.6.2. ストローク形状

要素のストローク形状は、stroke プロパティによって 塗りつぶされる形状である。 次のアルゴリズムは、上記のストロークプロパティを考慮したうえで、 テキスト、 path、 または基本図形のストローク形状が何であるかを説明する:
  1. shape を空の形状とする。

  2. path を要素の等価パスとする。

  3. path の各 subpath について:

    1. positionssubpath破線位置とする。

    2. positions 内の各組 (start, end) について:

      1. dash を、 subpath に沿った startend の間の すべての距離について、 その距離における subpath への垂線上にあり、 その位置における subpath 上の点から stroke-width の距離内にある すべての点を含む形状とする。

      2. dash を、dash と、 位置 start における subpath の開始端点 形状との和集合に設定する。

      3. dash を、dash と、 位置 end における subpath の終了端点 形状との和集合に設定する。

      4. index および last を、 subpath に沿った距離 start および end における subpath 内のパスセグメントのインデックスとする。

        注: index および last を選ぶ際に、 長さ 0 のセグメントが含まれるかどうかは問題にならない。

      5. index < last である間:

        1. dash を、dash と、 セグメントインデックス index における subpath の線 結合形状との和集合に設定する。

        2. index を index + 1 に設定する。

      6. shape を、shapedash の和集合に設定する。

  4. shape を返す。

4.6.3. 破線位置

この節はまだ stroke-dash-corner および stroke-dash-justify を扱っていない。

path または基本図形の等価パスの 与えられたサブパスに対する 破線位置は、 値の組の列であり、 サブパスのストロークを形成する各破線について、 サブパスに沿った開始距離および終了距離を表す。 これは次のように決定される:
  1. pathlength をサブパスの長さとする。

  2. dashes を、要素上の stroke-dasharray の値のリストとし、 必要であれば要素数が偶数になるように反復する。 プロパティの値が none である場合、 リストは単一の値 0 を持つ。

  3. countdashes 内の値の数とする。

  4. sumdashes 内の値の合計とする。

  5. sum = 0 であれば、単一の組 (0, pathlength) を持つ列を返す。

  6. positions を空の列とする。

  7. offset を、要素上の stroke-dashoffset プロパティの値とする。

  8. offset が負であれば、offsetsum − abs(offset) に設定する。

  9. offsetoffset mod sum に設定する。

  10. index を、 sum(dashesi, 0 ≤ i ≤ index) ≥ offset となる最小の整数とする。

  11. dashlengthmin(sum(dashesi, 0 ≤ i ≤ index) − offset, pathlength) とする。

  12. index mod 2 = 0 であれば、組 (0, dashlength) を positions に追加する。

  13. positiondashlength とする。

  14. position < pathlength である間:

    1. index(index + 1) mod count に設定する。

    2. dashlengthmin(dashesindex, pathlengthposition) とする。

    3. index mod 2 = 0 であれば、組 (position, position + dashlength) を positions に追加する。

    4. positionposition + dashlength に設定する。

  15. positions を返す。

4.6.4. 端点形状

サブパスに沿った与えられた position における、開始および終了の 端点 形状は、次のように決定される:
  1. stroke-linecapbutt である場合、 空の形状を返す。

  2. そうでなく、stroke-linecapround である場合:

    1. これが開始キャップであるなら、 stroke-width を半径とする半円を、 次のように配置して返す:

      • その直線辺は、 サブパスに沿った距離 position における サブパスへの垂線と平行である。

      • その直線辺の中点は、 サブパスに沿った距離 position にある点にある。

      • その弧の中点から直線辺の中点への方向は、 サブパスに沿った距離 position における サブパスの方向と同じである。

    2. そうでなければ、これは終了キャップである。 半径 stroke-width の半円を、 次のように配置して返す:

      • その直線辺は、 サブパスに沿った距離 position における サブパスへの垂線と平行である。

      • その直線辺の中点は、 サブパスに沿った距離 position にある点にある。

      • その直線辺の中点から弧の中点への方向は、 サブパスに沿った距離 position における サブパスの方向と同じである。

  3. そうでなければ、stroke-linecapsquare である:

    1. これが開始キャップであるなら、 辺の長さが stroke-width および stroke-width / 2 である長方形を、 次のように配置して返す:

      • その長い辺 A および B は、 サブパスに沿った距離 position における サブパスへの垂線と平行である。

      • A の中点は start にある。

      • B の中点から A の中点への方向は、 サブパスに沿った距離 position における サブパスの方向と同じである。

    2. そうでなければ、これは終了キャップである。 辺の長さが stroke-width および stroke-width / 2 である長方形を、 次のように配置して返す:

      • その長い辺 A および B は、 サブパスに沿った距離 position における サブパスへの垂線と平行である。

      • A の中点は end にある。

      • A の中点から B の中点への方向は、 サブパスに沿った距離 position における サブパスの方向と同じである。

単一の長さ 0 でないサブパスを持つパスで用いられる、3 つの異なる stroke-linecap 値。 白い線はパスそのものであり、 太い灰色の領域はストロークである。

上段では、緑色の線がパス端点における接線への垂線を示し、 ピンクの領域がキャップである。 下段は、垂線およびキャップの強調表示なしのストロークを示す。

4.6.5. 線結合形状

サブパスの与えられたセグメントに対する 線結合形状は、 次のように決定される:
  1. P をセグメントの終点にある点とする。

  2. A をセグメントの終点における接線に平行な線とする。

  3. B を次のセグメントの始点における接線に平行な線とする。

  4. AB が同じ線である場合、 空の形状を返す。

  5. |Aleft| および |Aright| を、 サブパスの方向に対してそれぞれ A の左側および右側に stroke-width / 2 の距離で A に平行な線とする。

  6. |Bleft| および |Bright| を、 サブパスの方向に対してそれぞれ B の左側および右側に stroke-width / 2 の距離で B に平行な線とする。

  7. |P1|、|P2| および |P3| を、次のように決定される点とする:

    1. AB の間の小さい方の角度が、 サブパスの方向を考慮したときに、 これらの線の右側にある場合、 |P1| および |P2| は、 |Aleft| および |Bleft| 上で P に最も近い点であり、 |P3| は |Aleft| と |Bleft| の交点である。

    2. そうでなければ、|P1| および |P2| は、 |Aright| および |Bright| 上で P に最も近い点であり、 |P3| は |Aright| と |Bright| の交点である。

  8. bevel を、3 つの点 P、|P1|、 および |P2| から形成される三角形とする。

  9. stroke-linejoinround である場合、 bevel と、stroke-width を半径とし、 P を中心とし、 |P1| および |P2| を弧の 2 つの端点とする円形扇形との 和集合を返す。

  10. stroke-linejoinarcs である場合、 |P1| および |P2| においてストロークの縁に接し、 それらの点における縁と同じ曲率を持つ円を求める(下記参照)。 両方の曲率がゼロである場合、miter-clip へフォールスルーする。

    これらの円 (または曲率ゼロの場合は線)を用いてストロークの縁を延長する:

    • 2 つの円(または円と線)が交差しない場合、 miter-clip へフォールスルーする。

    • 2 つの円(または円と線)が交差する場合、 線結合領域は、P と |P1| および |P2| を結ぶ線と、 P に最も近い交点と |P1| および |P2| との間で円(または弧と線)によって定義される弧によって 定義される。

      次に、§4.2.5 ストロークの角の制限: stroke-miterlimit プロパティで定義される miter limit を計算する。 線結合領域のうち miter limit を越えて延びる任意の部分をクリップする。 結果の領域を返す。

      注: 曲率は、任意の変換が適用される前の ユーザー空間で計算されることに注意。

  11. stroke-linejoinmiter または miter-clip である場合、 線結合領域は bevel と、 3 つの点 |P1|、|P2| および |P3| から形成される 三角形との和集合である。

  12. θ を A と B の間の角度とする。 1 / sin(θ / 2) ≤ stroke-miterlimit であれば、 線結合領域を返す。

  13. stroke-linejoinmiter-clip である場合、 線結合領域のうち miter limit を越えて延びる任意の部分をクリップし、 この領域を返す。

  14. bevel を返す。

ピンクで示された round 線結合形状の構築。 白い線は元のパスであり、 点に集まる 2 つのセグメントを持ち、 灰色の領域はストロークである。
ピンクで示された arcs 線結合形状の構築。 白い線は元のパスであり、 点に集まる 2 つのセグメントを持ち、 灰色の領域はストロークである。 破線は、結合部における セグメントに接し、 その曲率を持つ円を示している。 オリーブグリーンの円 (破線の円と同心)は 結合形状を定義する。

4.6.6. arcs 線結合

arcs 線結合では、パスセグメントの端における ストローク外縁に接し、かつそれと同じ曲率を持つ円を 見つける必要がある。 これらの円の 1 つを見つけるには、 まずパスセグメントの端における曲率 κ を計算する(下記参照)。 次に、この曲率に対応する円の半径を求める: r = 1/κ。 ストロークを考慮するために、半径を stroke-width / 2 だけ増減する: rc = r ± stroke-width/2。 円の中心は、パス端の法線上で、端におけるストローク外縁から rc だけ離れた位置にある。
線の場合:
曲率は無限大である。ストローク外縁を線で延長する。
楕円弧の場合:

ここで:

弧セグメントの開始または終了におけるパラメーター θ は、 楕円弧 実装ノート内の式を用いて求めることができる。 (なお、一部のレンダラーはレンダリング前に楕円弧を三次 Bézier に変換するため、 ここでの方程式は不要な場合がある。)

二次 Bézier の場合:

ここで κ(0) および κ(1) は、 それぞれパスセグメントの開始および終了における符号付き曲率であり、 P は二次 Bézier を定義する 3 つの点である。

三次 Bézier の場合:

ここで κ(0) および κ(1) は、 それぞれパスセグメントの開始および終了における符号付き曲率であり、 P は三次 Bézier を定義する 4 つの点である。 なお、P0 と P1、または P2 と P3 が退化している場合、 曲率は無限大となり、 結合の構築には線を用いるべきである。

4.7. 理想世界の構文

SVG から継承された stroke-* プロパティおよび値は、 SVG の いくらか一貫性に欠ける命名体系を継承している。 今日設計されるのであれば、それらには別の名前を付けるだろう。 おそらく別名/一括指定によって、 どの程度これに近づけられるかを検討すべきである。

旧構文 新構文
stroke stroke-paint
stroke 一括指定
stroke-alignment stroke-align: inset | outset | center
stroke-opacity 変更なし
stroke-width 変更なし
stroke-linecap stroke-cap: none | round | square
stroke-linejoin stroke-corner-shape: bevel | round | [ arc | miter ] [ bevel | round ]?
stroke-miterlimit stroke-corner-limit
stroke-dasharray stroke-dash-array
stroke-dashoffset stroke-dash-offset
stroke-dashcorner stroke-dash-corner
stroke-dashadjust stroke-dash-justify: none | [ stretch | compress ] || [ dashes | gaps ]
stroke-dash 一括指定

5. テキスト装飾の塗りつぶしとストローク

テキスト装飾上の塗りつぶしおよびストロークを扱うために、 fill および stroke プロパティの 2 つの集合が定義される: 1 つは線装飾用に text-decoration-* を接頭辞とするもの、 もう 1 つは 圏点用に text-emphasis-* を接頭辞とするものである。 これらのプロパティは、上記の fill および stroke プロパティと 正確に類似しているが、 次の点が異なる:

これらは間違いなく at-risk とすべきであり、 おそらく次のレベルに延期される。

6. プライバシーおよびセキュリティ上の考慮事項

この仕様は、新たなプライバシーまたはセキュリティ上の考慮事項を導入しない。

適合性

文書の慣例

適合要件は、 説明的な表明と RFC 2119 用語の組み合わせによって表現される。この文書の規範的部分における キーワード “MUST”、 “MUST NOT”、 “REQUIRED”、 “SHALL”、 “SHALL NOT”、 “SHOULD”、 “SHOULD NOT”、 “RECOMMENDED”、 “MAY”、および “OPTIONAL” は、RFC 2119 で説明されるように 解釈されるべきである。 ただし、読みやすさのため、これらの語はこの仕様ではすべて大文字では 現れない。

この仕様のすべての本文は、非規範的として明示的に印が付けられた節、 例、および注を除き、規範的である。 [RFC2119]

この仕様における例は、“for example” という語で導入されるか、 または次のように class="example" によって 規範的な本文から分離される:

これは参考例の一例である。

参考注は “Note” という語で始まり、 次のように class="note" によって規範的な本文から分離される:

注: これは参考注である。

助言は、特別な注意を喚起するようにスタイル付けされた規範的な節であり、 次のように <strong class="advisement"> によって他の規範的な本文から 分離される: UA はアクセシブルな代替を提供しなければならない。

適合クラス

この仕様への適合性は、 3 つの適合クラスについて定義される:

スタイルシート
CSS スタイルシート
レンダラー
スタイルシートの意味論を解釈し、 それらを用いる文書をレンダリングする UA
オーサリングツール
スタイルシートを書く UA

スタイルシートは、 このモジュールで定義された構文を用いるそのすべての文が、 汎用 CSS 文法およびこのモジュールで定義された各機能の個別文法に従って 有効である場合、この仕様に適合する。

レンダラーは、 適切な仕様で定義されるとおりにスタイルシートを解釈することに加えて、 この仕様で定義されるすべての機能を、 それらを正しく構文解析し、 それに応じて文書をレンダリングすることによってサポートする場合、 この仕様に適合する。ただし、 デバイスの制限により UA が文書を正しくレンダリングできないことは、 UA を不適合にはしない。(例えば、UA は モノクロモニターで色をレンダリングすることを要求されない。)

オーサリングツールは、 汎用 CSS 文法およびこのモジュール内の各機能の個別文法に従って 構文的に正しいスタイルシートを書き、 このモジュールで説明されるスタイルシートのその他すべての適合要件を満たす場合、 この仕様に適合する。

部分実装

作者が前方互換の構文解析規則を利用して フォールバック値を割り当てられるようにするため、CSS レンダラーは、利用可能なサポートレベルを持たない 任意の at-rule、プロパティ、プロパティ値、キーワード、 およびその他の構文構成要素を無効として扱い(かつ必要に応じて無視) なければならない。特に、ユーザーエージェントは、単一の 複数値プロパティ宣言内で、サポートされていない構成値を選択的に 無視し、サポートされている値を尊重してはならない。いずれかの値が無効とみなされる場合 (サポートされていない値はそう扱われなければならない)、 CSS は宣言全体を無視することを要求する。

不安定および独自機能の実装

将来の安定した CSS 機能との衝突を避けるため、 CSSWG は、CSS の不安定機能および独自拡張の 実装について、ベストプラクティスに従うことを推奨する。

非実験的実装

仕様が Candidate Recommendation 段階に達すると、 非実験的実装が可能になり、実装者は、 仕様に従って正しく実装されていることを実証できる任意の CR レベル機能について、 接頭辞なしの実装をリリースすべきである。

CSS の実装間の相互運用性を確立し維持するため、 CSS ワーキンググループは、非実験的 CSS レンダラーが CSS 機能の接頭辞なし実装をリリースする前に、 実装報告書(および必要に応じて、その実装報告書に用いられた テストケース)を W3C に提出することを求める。W3C に提出されたテストケースは、 CSS ワーキンググループによる審査および修正の対象となる。

テストケースおよび実装報告書の提出に関する詳細情報は、 CSS ワーキンググループのウェブサイト https://www.w3.org/Style/CSS/Test/ から見つけることができる。 質問は public-css-testsuite@w3.org メーリング リストに送るべきである。

索引

この 仕様で定義される用語

参照により 定義される用語

参考文献

規範参照

[CSS-BACKGROUNDS-3]
CSS Backgrounds and Borders Module Level 3 URL: https://www.w3.org/TR/css3-background/
[CSS-BREAK-3]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 3. URL: https://www.w3.org/TR/css-break-3/
[CSS-CASCADE-4]
Elika Etemad; Tab Atkins Jr.. CSS Cascading and Inheritance Level 4. URL: https://www.w3.org/TR/css-cascade-4/
[CSS-COLOR-3]
CSS Color Module Level 3 URL: https://www.w3.org/TR/css3-color/
[CSS-COLOR-4]
Tab Atkins Jr.; Chris Lilley. CSS Color Module Level 4. URL: https://www.w3.org/TR/css-color-4/
[CSS-DISPLAY-3]
Elika Etemad. CSS Display Module Level 3. URL: https://www.w3.org/TR/css-display-3/
[CSS-IMAGES-3]
CSS Image Values and Replaced Content Module Level 3 URL: https://www.w3.org/TR/css3-images/
[CSS-IMAGES-4]
CSS Image Values and Replaced Content Module Level 4 URL: https://www.w3.org/TR/css4-images/
[CSS-SYNTAX-3]
Tab Atkins Jr.; Simon Sapin. CSS Syntax Module Level 3. URL: https://www.w3.org/TR/css-syntax-3/
[CSS-TEXT-DECOR-3]
Elika Etemad; Koji Ishii. CSS Text Decoration Module Level 3. URL: https://www.w3.org/TR/css-text-decor-3/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. URL: https://www.w3.org/TR/css-values-3/
[CSS3-COLOR]
Tantek Çelik; Chris Lilley; David Baron. CSS Color Module Level 3. 2011年6月7日. REC. URL: https://www.w3.org/TR/css3-color
[CSS3-IMAGES]
Elika Etemad; Tab Atkins Jr.. CSS Image Values and Replaced Content Module Level 3. 2012年4月17日. CR. URL: https://www.w3.org/TR/css3-images/
[RFC2119]
S. Bradner. RFC において要件レベルを示すために用いる キーワード. 1997年3月. Best Current Practice. URL: https://tools.ietf.org/html/rfc2119
[SVG2]
Nikos Andronikos; et al. Scalable Vector Graphics (SVG) 2. URL: https://www.w3.org/TR/SVG2/

参考参照

[CSS3BG]
Bert Bos; Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. URL: https://www.w3.org/TR/css3-background/

プロパティ索引

名前 初期値 適用対象 継承 %値 メディア アニメーション可能 正準順序 算出値
fill-rule nonzero | evenodd nonzero SVG 図形 する N/A visual 不可 文法に従う 指定どおり
fill-break bounding-box | slice | clone bounding-box すべての要素 する? N/A visual 不可 文法に従う 指定どおり
fill-color <color> currentcolor インラインボックスおよび SVG 図形 する N/A visual 色として 文法に従う 算出色
fill-image <paint># none インラインボックスおよび SVG 図形 する N/A visual 画像の反復可能リストとして 文法に従う 指定どおり。ただし URL は絶対化される
fill-origin match-parent | fill-box | stroke-box | content-box | padding-box | border-box match-parent すべての要素 しない N/A visual 不可 文法に従う 指定どおり
fill-position <position># 0% 0% インラインボックスおよび SVG 図形 する n/a visual 長さ、パーセンテージ、または calc の単純リストの反復可能リストとして 文法に従う リスト。各項目は、左上原点からのオフセット(水平および垂直)の組からなり、 それぞれが絶対長とパーセンテージの組み合わせとして与えられる
fill-size <bg-size># auto インラインボックスおよび SVG 図形 する n/a visual 長さ、パーセンテージ、または calc の単純リストの反復可能リストとして 文法に従う 指定どおり。ただし長さは絶対化され、省略された auto キーワードは補完される
fill-repeat <repeat-style># repeat インラインボックスおよび SVG 図形 する n/a visual 不可 文法に従う リスト。各項目は、次元ごとに 1 つずつ、2 つのキーワードからなる
fill <background> with modifications 個別のプロパティを参照 個別のプロパティを参照 個別のプロパティを参照 N/A visual 個別のプロパティを参照 文法に従う 個別のプロパティを参照
fill-opacity <‘opacity’> 1 インラインボックスおよび SVG 図形 する N/A visual 数値として 文法に従う 指定値を <number> に変換し、範囲 [0,1] にクランプしたもの
stroke-width <length-percentage># 1px インラインボックスおよび SVG 図形 する 拡大縮小済みビューポートサイズに相対 visual <length-percentage> として 文法に従う 絶対長、またはパーセンテージ
stroke-align center | inset | outset center インラインボックスおよび SVG 図形 する N/A visual 不可 文法に従う 指定どおり
stroke-linecap butt | round | square butt インラインボックスおよび SVG 図形 する N/A visual 不可 文法に従う 指定どおり
stroke-linejoin [ crop | arcs | miter ] || [ bevel | round | stupid ] miter インラインボックスおよび SVG 図形 する N/A visual 不可 文法に従う 指定どおり
stroke-miterlimit <number> 4 インラインボックスおよび SVG 図形 する N/A visual 不可 文法に従う 数値
stroke-break bounding-box | slice | clone bounding-box すべての要素 ? N/A visual 不可 文法に従う 指定どおり
stroke-dasharray none | <length-percentage>+# none インラインボックスおよび SVG 図形 する 拡大縮小済みビューポートサイズに相対 visual 長さ、パーセンテージ、または calc の反復リストとして 文法に従う 指定どおり
stroke-dashoffset <length-percentage> 0 インラインボックスおよび SVG 図形 する 拡大縮小済みビューポートサイズに相対 visual 整数の反復リストとして 文法に従う 指定どおり
stroke-dash-corner none | <length> none インラインボックスおよび SVG 図形 する N/A visual <length> の場合は可能 文法に従う 指定値。ただし長さは絶対化される
stroke-dash-justify none | [ stretch | compress ] || [ dashes || gaps ] none インラインボックスおよび SVG 図形 する N/A visual 不可 文法に従う 指定値。ただし長さは絶対化される
stroke-color <color># transparent インラインボックスおよび SVG 図形 する N/A visual 色として 文法に従う 算出色
stroke-image <paint># none インラインボックスおよび SVG 図形 する N/A visual 画像の反復可能リストとして 文法に従う 指定どおり。ただし URL は絶対化される
stroke-origin match-parent | fill-box | stroke-box | content-box | padding-box | border-box match-parent すべての要素 しない N/A visual 不可 文法に従う 指定どおり
stroke-position <position># 0% 0% インラインボックスおよび SVG 図形 する n/a visual 長さ、パーセンテージ、または calc の単純リストの反復可能リストとして 文法に従う リスト。各項目は、左上原点からのオフセット(水平および垂直)の組からなり、 それぞれが絶対長とパーセンテージの組み合わせとして与えられる
stroke-size <bg-size># auto インラインボックスおよび SVG 図形 する n/a visual 長さ、パーセンテージ、または calc の単純リストの反復可能リストとして 文法に従う 指定どおり。ただし長さは絶対化され、省略された auto キーワードは補完される
stroke-repeat <repeat-style># repeat インラインボックスおよび SVG 図形 する n/a visual 不可 文法に従う リスト。各項目は、次元ごとに 1 つずつ、2 つのキーワードからなる
stroke <background> with modifications 個別のプロパティを参照 個別のプロパティを参照 個別のプロパティを参照 N/A visual 個別のプロパティを参照 文法に従う 個別のプロパティを参照
stroke-opacity <‘opacity’> 1 インラインボックスおよび SVG 図形 する N/A visual 数値として 文法に従う 指定値を <number> に変換し、範囲 [0,1] にクランプしたもの

課題索引

SVG2 からのペイントの指定を挿入する。
テキスト装飾を扱う。課題および別の課題を参照。
w3c/csswg-drafts/383[css-images][css-masking][paint] url() の 扱いにおける曖昧さ
context-fill および context-stroke は仕様に 組み込む必要があるが、 それらは stroke および fill の個々のサブプロパティ上のキーワードとして属するものであり、 <paint> 値としてではない。 より多くの WG 議論と、 これが保持される SVG2 機能であることの確認が必要であり、 その後でそれに対する比較的大きな編集を行う。
CSS Images 4 §3.4.1 ペイント ソースは、SVG ペイントサーバーの座標空間の扱い方を定義している。 ここにコピーするか、参照するか、それとも別の何かか。
box-decoration-breakfill-break、および stroke-break の一括指定である box-break プロパティを追加するか?
これはレイヤー化されるべきか?
fill-colorstroke-color のようにレイヤー化されるべきであり、 そうすることで 2 つのプロパティ集合の一貫性を最大化できる。
SVG ペイントサーバーは *Units 属性内に独自の生成元情報を持ち回るが、 SVGWG は、CSS の生成元に注意を払わせる新しい値を追加できるかもしれない。 あるいは、ここに auto 初期値を追加できる。 これは、ペイントサーバーを参照している場合には ペイントサーバーの情報に委ね、 そうでない場合は match-parent になる。
この一括指定によって設定される場合、fill-origin の既定値は何であるべきか? content-box か fill-box か? fill-box は Zapfino のような装飾的/はみ出すフォントにはよりよく機能するが、 content-box よりも計算コストがはるかに高い。
SVG には特殊な色のフォールバック構文がある—画像の後に続く色は、画像が失敗した場合にのみ描画される。 これは background と一致させたいという要求と衝突する。 なぜなら fill: url(#foo) red; は red で 塗りつぶしてから #foo を描画する、ということをしないためである。 妥協案: fill-color はフォールバック色であるが、 none無効な画像の両方がフォールバックを発動する。 そのため fill: url(#foo) red; は、 #foo が存在しない場合にのみ red を描画する(SVG と同様)。 しかし fill: url(#foo), red(最後のレイヤーで none red と同等)は、 red および #foo を描画する(background と同様)。
paint-order は SVG ではないテキストにも 適用されるべきか?
stroke-colortransparent で先頭側を補完しなければならない。 そうしなければ、画像の読み込みに失敗したときに、複数の画像レイヤーがランダムに単色へフォールバックすることになる。 ストロークおよび塗りつぶし全般で初期値による先頭補完を行いたいのか、 それともこれらの残りのプロパティは背景と同様にリストを反復すべきなのか?
現在、SVGWG の決議に従い、ストロークペイントプロパティおよび stroke-width を レイヤー化している。 他の幾何プロパティもレイヤー化すべきか? それらにも同様のユースケースがあるが、 ややニッチであり、 API の一貫性は重要である。 実装/テストの労力に値するか? 難しい事例: stroke-dasharray。 なぜなら "commas anywhere lol" 構文を持つためである。
なぜ stroke-linejoin は無視されるのか? 内側の角には依然として必要である。
テキストは簡単であり、単純で閉じた自己交差しないパスも同様であるが、 他のカテゴリも存在し、適切な定義を必要とする。

これは開いたパスセグメントにどのように適用されるのか? 1 つの提案は、開いたパスについて outsetleft に、insetright に 別名化することである。 端点キャップはどのように扱われるのか?

  1. stroke-aligncenter 値によるストローク。

  2. 塗りつぶし領域。

  3. 仕様に従った stroke-aligninset 値によるストローク(? ストロークは塗りつぶし 領域内にのみ描画される)。

  4. stroke-alignoutset 値によるストローク(塗りつぶし 領域を遮断することで実装)。

  5. stroke-aligninset 値によるストローク、代替解釈。

  6. 仕様に従った (?) stroke-alignoutset 値によるストローク。

  7. stroke-align の代替 left 値によるストローク。ピンクは丸い線端を示す。

これはループを持つパスにどのように適用されるのか? 下の図の赤い円の内側の領域は、示されているように、ストロークされた領域の一部なのか? 塗りつぶし規則が nonzero の場合、内部辺はストロークされるのか。されるならどのように? (下ではストロークなしで示している。)

  • 上段: 通常のストローク。左ストローク。右ストローク。

  • 中段: 塗りつぶし規則 nonzero、ストロークなし。外側ストローク。内側 ストローク。

  • 下段: 塗りつぶし規則 evenodd、ストロークなし。外側ストローク。内側 ストローク。

破線はどのように扱われるのか? 元のパスに基づくのか?

  1. 通常の破線パターン。

  2. 破線パターンまたは元のパスに基づく破線パターン。 破線部分の内側から来る薄い灰色の領域に注意 (単にクリッピングパスを用いるだけでは適切な結果は得られない)。

  3. オフセットパスの中心に基づく破線パターン。 薄い灰色は、インセットパスの中心に基づく破線パターンを表す。

曲線輪郭上の破線の端に長方形を追加すると見栄えが悪い。 代わりに、輪郭に沿って stroke-width/2 だけ破線を延長すべきである。
fallback を単に削除できるか? これはばかげた値であり、 SVG1 で miterlimit でのクリップ挙動を持っていなかったためにのみ有用であった。 問題は、人々が現在ほとんど単に*偶然* bevel の挙動を得ていて、 結合が miterlimit まで延び、 余分な角だけがクリップされることを受け入れられるのか、 それとも現在指定されている不連続な挙動を実際に望んでいたのか、である。 境界点は 29 度と 30 度の間にある。
角度を追加すべきか? miterlimit の数値には物理的な根拠があるが、 実験なしには理解しにくい。
SVG はカンマ区切りを許可している。 後方互換性のために CSS でもこれを許可する必要があるか?(いいえと言ってほしい。)
破線の長さをストロークの幅に相対して指定する方法が必要である。 (例えば、正方形の破線を作るため。)
破線の長さをパスの長さに相対して指定する方法が必要である。 (例えば、スクリプトなしで「自己描画 SVG」を行うため。)
開いた形状の最初および最後の頂点における角破線は、 他のものの半分の長さにすべきか? これは作者が制御可能であるべきか?
角破線の間の任意の破線パターンが それらに接触しないように、 パディングを指定する方法があるべきか?
角は、破線パターンの最初の破線の役割を引き継ぐ必要がある。 そうすることで各セグメントの「内部」は間隔で始まり、間隔で終わる。 各セグメントでパターン内の最初の破線を自動的にスキップするか?
最初の破線の長さを角として用いるためのキーワード。
角破線が重なり合う場合に何が起こるかを定義する必要がある。
このプロパティが有効なとき、自動的に均等化を発動すべきか? それがないと、既定でかなり間抜けに見える結果になる。
既定では、おそらく間隔のみを調整すべきである。
長すぎる場合、セグメントを中央揃えにすべきか?
ストロークが破線で終わるか間隔で終わるかを 制御できるようにしたいか? 閉じたパスについては、 おそらく末端に間隔が必要であり、 開いたパスについては、 末端に破線がある方がおそらくよい。 この制御を省略し、 パスが閉じているかどうかに基づいて自動的に行うべきか?
SVG ペイントサーバーは *Units 属性内に独自の生成元情報を持ち回るが、 SVGWG は、CSS の生成元に注意を払わせる新しい値を追加できるかもしれない。 あるいは、ここに auto 初期値を追加できる。 これは、ペイントサーバーを参照している場合には ペイントサーバーの情報に委ね、 そうでない場合は match-parent になる。
これは下記のストローク形状の算出要件と重複するはずである。 この節では、要件を規範的ではなく説明的に表現すべきである。
この節はまだ stroke-dash-corner および stroke-dash-justify を扱っていない。
これらは間違いなく at-risk とすべきであり、 おそらく次のレベルに延期される。