externalResourcesRequired

Scalable Vector Graphics等,不定期

stroke-opacity

2006-09-29 | 仕様
stroke-opacityプロパティは、図形の輪郭線の不透明度を指定する際に使われます。

stroke-opacityプロパティによって、描かれる図形の輪郭線の色の不透明度が指定されます。
SVG Tiny 1.2では外部のCSSをサポートしていないので、stroke-opacityプロパティの値を指定する場合はstroke-opacity属性を利用します。

stroke-opacity属性の値は不透明度を表す値、もしくは"inherit"です。

不透明度を表す値は、0.0(完全に透過)から1.0(全く透過しない)までの値になります。

例えば、
stroke-opacity="1"
のように書けば、stroke-opacity属性の付いた要素によって描かれる図形の輪郭線はstroke属性によって指定された色で描かれ、背景は全く透過しません。

0.0から1.0の範囲に収まらない値が指定された場合は、0.0(0.0よりも小さな場合)あるいは1.0(1.0よりも大きな場合)として扱われます。

stroke-opacity属性がない場合は"1"として扱われます。すなわち、全く透過しません。


fill-opacity

2006-09-28 | 仕様
fill-opacityプロパティは、図形の内部の不透明度を指定する際に使われます。

fill-opacityプロパティによって、描かれる図形の内部を塗りつぶす色の不透明度が指定されます。
SVG Tiny 1.2では外部のCSSをサポートしていないので、fill-opacityプロパティの値を指定する場合はfill-opacity属性を利用します。

fill-opacity属性の値は不透明度を表す値、もしくは"inherit"です。

不透明度を表す値は、0.0(完全に透過)から1.0(全く透過しない)までの値になります。

例えば、
fill-opacity="1"
のように書けば、fill-opacity属性の付いた要素によって描かれる図形の内部はfill属性によって指定された色で塗りつぶされ、背景は全く透過しません。

0.0から1.0の範囲に収まらない値が指定された場合は、0.0(0.0よりも小さな場合)あるいは1.0(1.0よりも大きな場合)として扱われます。

fill-opacity属性がない場合は"1"として扱われます。すなわち、全く透過しません。

stroke-width

2006-09-27 | 仕様
stroke-widthプロパティによって、描かれる図形の輪郭線の幅が指定されます。
SVG Tiny 1.2では外部のCSSをサポートしていないので、stroke-widthプロパティの値を指定する場合はstroke-width属性を利用します。

stroke-width属性の値は線幅を表す長さ、もしくは"inherit"です。

例えば、
stroke-width="1"
のように書けば、stroke-width属性の付いた要素によって描かれる図形の輪郭線が幅1で描かれます。

輪郭線の幅は輪郭線の両側に半分ずつ広がります。多くの場合、半分は図形の内側に、半分は図形の外側になります。SVGによる描画では、内部の塗りつぶしの後に輪郭線が描かれるので、塗りつぶされた内部の一部が輪郭線によって上書きされます。輪郭線の幅が広くなるにつれ、上書きされる領域が広くなります。

例えば、
stroke-width="2"
のように書けば、線幅1の分だけ外側に、線幅1の分だけ内側に幅を持ちます。したがって、線幅1の分だけ内部を上書きします。

0が指定された場合は、輪郭線は描かれません。また、負の値を指定してはいけません。

stroke-widthがない場合は"1"として扱われます。すなわち、線幅1で描かれます。

<paint>

2006-09-26 | 仕様
<paint>型は、strokeプロパティやfillプロパティで色を指定する値の型です。

<paint>型の値は、none、currentColor、<color>、<FuncXMLRI>、<system paint>のいずれかです。

noneは、塗らないことを表します。
currentColorは、現在のcolorプロパティの値を表します。
<color>は、sRGB色空間の色を表します。
<FuncXMLRI>は、色を指定するIRI(Internationalized Resource Identifier)を表します。
<system paint>は、システムによって決まる色(背景色やハイライトの色等)を表します。

sRGB色空間の色を表現する方法は、いくつかあります。
#とそれに続く3桁の十六進数を利用する方法は、3桁の十六進数が1桁ずつ赤、緑、青の値を表します。赤、緑、青それぞれについて2つの桁が同じ値として2桁に拡張し、それぞれの値を2桁の十六進数で表して1つの色を表します。この方法は、4096色を表現することができます。
例えば、
#6CF
のように書けば、#66CCFFを表し、赤が102緑が204青が255となります。
#とそれに続く6桁の十六進数を利用する方法は、6桁の十六進数が2桁ずつ赤、緑、青の値を表し、1つの色を表します。この方法は、16777216色を表現することができます。
"rgb("と")"にはさまれる3つのカンマ区切りの整数値を利用する方法は、3つの整数値がそれぞれ赤、緑、青の値を表します。それぞれの値は、0から255までの整数値になります。この方法は、16777216色を表現することができます。
"rgb("と")"にはさまれる3つのカンマ区切りの%値を利用する方法は、3つの%値がそれぞれ赤、緑、青の値を表します。それぞれの値は、0.0%から100.0%までの値になります。
16色のカラーキーワードを利用する方法もあります。
カラーキーワードのblackを例にとれば、#000、#000000、rgb(0,0,0)、rgb(0%,0%,0%)、blackの5つの表現方法があります。

stroke

2006-09-25 | 仕様
strokeプロパティは、図形の輪郭線の色を指定する際に使われます。

strokeプロパティによって、描かれる図形の輪郭線の色が指定されます。
SVG Tiny 1.2では外部のCSSをサポートしていないので、strokeプロパティの値を指定する場合はstroke属性を利用します。

stroke属性の値は<paint>型(もしくは"inherit")です。

例えば、
stroke="red"
のように書けば、stroke属性の付いた要素によって描かれる図形の輪郭線が赤になります。
stroke="inherit"
のように書けば、stroke属性の付いた要素によって描かれる図形の輪郭線は親要素の輪郭線と同じ色になります。

stroke属性がない場合は"none"として扱われます。"none"が指定された場合は、その図形の輪郭線は描かれません。

単一のmoveto命令から構成されるパスデータの輪郭線は何も描かれません。moveto命令とまったく同じ座標へのlineto命令あるいはclosepath命令で構成されるパスデータの輪郭線は端点の処理が行われるため、stroke-linecapプロパティの値にしたがった形になります。

例えば、
<path d="M10,10" stroke="#000000" fill="none"/>
のように書けば、何も描かれませんが、
<path d="M10,10Z" stroke="#000000" fill="none"/>
のように書けば、(10,10)において端点の処理が行われます。

fill

2006-09-24 | 仕様
fillプロパティは、図形の内部の色を指定する際に使われます。

fillプロパティによって、描かれる図形の内部を塗りつぶす色が指定されます。
SVG Tiny 1.2では外部のCSSをサポートしていないので、fillプロパティの値を指定する場合はfill属性を利用します。

fill属性の値は<paint>型(もしくは"inherit")です。
(11.2節の記述によれば、inheritも<paint>型に含まれるような、含まれないような。。。)

例えば、
fill="red"
のように書けば、fill属性の付いた要素によって描かれる図形の内部が赤で塗りつぶされます。

"none"が指定された場合は、その図形の内部は塗りつぶされません。

fill属性がない場合は"black"として扱われます。すなわち、黒で塗りつぶされます。

図形の内部は、輪郭線とfill-ruleプロパティの値によって決定されます。
polyline要素やclosepath命令のないパスデータによって描かれる開いた図形の場合は、閉じるものとして内部を決定します。

例えば、
<polyline points="10,10 50,50 90,10" />
によって描かれる図形の内部と
<polygon points="10,10 50,50 90,10" />
によって描かれる図形の内部は同じになります。

d

2006-09-22 | 仕様
path要素のd属性はアニメーションの対象です。

d属性を変化させることにより、図形の形を時間とともに変えることができますが、補間を伴う場合には制限があります。
補間を伴うアニメーションは、アニメーションによって指定されるパスデータの値を正規化したものを構成するコマンドとアニメーションの対象であるpath要素のd属性の値を正規化したものを構成するコマンドが完全に一致している場合だけ動作します。完全に一致していない場合は、そのアニメーションは無視されます。

例えば、
d="M10,10L100,100"

d="M10,10L200,200"
に変化させるアニメーションは、値を構成するコマンドが共にM、Lなので動作しますが、
d="M10,10L100,100"

d="M10,10L100,100L200,200"
に変化させるアニメーションは、無視されます。

パスデータの正規化は、
相対座標をパラメータとするコマンドを絶対座標をパラメータとするコマンドに置き換える
水平線と垂直線を描くコマンドをまっすぐな線を描くコマンドに置き換える
SコマンドをCコマンドで置き換える
TコマンドをCコマンドで置き換える
QコマンドをCコマンドで置き換える
ことにより、行われます。
(TおよびQコマンドをCコマンドで置き換えるのは、2次ベジエ曲線を3次ベジエ曲線で置き換えることになるのですが、どうやるのだろう)

例えば、
d="M10,10h90"
は、正規化をすることによって
d="M10,10L100,10"
になります。
したがって、
d="M10,10h90"

d="M10,10L100,100"
に変化させるアニメーションは動作します。

補間を伴わない場合には制限はありません。

d

2006-09-21 | 仕様
d属性の値は、パスデータです。パスデータはいくつかの「命令の集まり」です。
先頭や末尾に半角スペース等(半角スペース以外にはタブや改行が該当します。文字コードで、#x20、#x9、#xD、#xAの4つ。)があることがあります。
「命令の集まり」と「命令の集まり」の間は半角スペース等で区切ります。
「命令の集まり」は、Mあるいはmから始まり、それ以外のMあるいはmは含まれません。つまり、moveto命令から始まって次のmoveto命令の直前までが「命令の集まり」となります。
「命令の集まり」にはいくつかの命令が含まれます。
命令と命令の間は、何も書かないあるいは、半角スペース等で区切ります。
Z(あるいはz)以外の命令には、パラメータが続きます。パラメータは何らかの数値です。
数値と数値の間は、通常カンマ(",")あるいは、半角スペース等で区切ります。
カンマは2つ以上あってはいけません。"-"や"."を利用して区切ることもあります。

パスデータ

2006-09-19 | 仕様
パスデータ(path data)は、どのような図形を描くのかを指定します。
path要素ではd属性の値になります。

パスデータは、いくつかの命令とパラメータの組み合わせで表現されます。
命令には、
moveto(移動する)
lineto(まっすぐな線を描く)
curveto(2次または3次ベジェ曲線を描く)
closepath(閉じる)
があります。
パラメータは、それぞれの命令の直後に必要な数だけ記述します。
また、パスデータを記述する際に必要なデータ量を減らすために、余分な区切り文字を省略する、同じ命令が繰り返す場合は2つめ以降の命令を省略する、といったことも可能です。


moveto命令は、図形を描くためのペン(のようなもの)の位置を描く図形の始点に移動します。移動した先が現在の点になります。
moveto命令は、Mあるいはmによって表されます。
パスデータは必ずmoveto命令から始まります。つまり、最初の文字はM(あるいはm)ということです。
パラメータとして、移動先の座標を指定します。Mの場合は絶対座標を、mの場合は現在の点からの相対座標を指定します。

例えば、
"M50,50"
のように書けば、(50,50)に移動することを表します。
また、
"m50,50"
のように書けば、現在の点からx方向に50、y方向に50移動した座標に移動することを表します。現在の点が(10,10)なら(60,60)に移動します。パスデータの先頭がmだった場合には、パラメータは絶対座標として扱います。パスデータが、
"m50,50m50,50"
であった場合、1つめの"m50,50"は(50,50)に移動することを表し、2つめの"m50,50"は(100,100)に移動する(現在の点が(50,50))ことを表します。

M(m)の直後に複数の座標が続いた場合は、2つめ以降の座標は、その座標へ移動するのではなく,その座標までまっすぐな線を描くものとして扱われます。

例えば、
"M50,50 100,100"
のように書けば、(50,50)に移動し、その後(100,100)へ移動するのではなく、(50,50)に移動し、そこから(100,100)へまっすぐな線を描くことを表します。


lineto命令は、現在の点を始点として指定した点を終点とするまっすぐな線を描きます。終点が現在の点になります。
lineto命令は、Lあるいはlによって表されます。x軸に平行な線を描く場合はHあるいはhによって、y軸に平行な線を描く場合はVあるいはvによって表すこともできます。
パラメータとして、終点となる座標を指定します。Lあるいはlの場合はx座標とy座標、Hあるいはhの場合はx座標、Vあるいはvの場合はy座標を指定します。L、HおよびVの場合は絶対座標を、l、hおよびvの場合は現在の点からの相対座標を指定します。複数の座標が指定された場合にはそれらを順につなぐ折れ線が描かれます(H、h、Vおよびvの場合は見た目には分からないのですが)。

例えば、
"M50,50L100,50"
のように書けば、(50,50)に移動し、そこから(100,50)へまっすぐな線を描くことを表します。同じ図形を表すには
"M50,50H100"
のように書くこともできます。


closepath命令は、現在の点から図形の始点までをまっすぐな線で結び、始点の位置で結合します。始点の位置が現在の点になります。
closepath命令は、Zあるいはzによって表されます。
パラメータはありません。

例えば、
M10,10L50,50 90,10Z"
のように書けば、(10,10)(50,50)(90,10)(10,10)を順にまっすぐな線で結んだ三角形が描かれます。

closepath命令を利用した場合と、始点までのlineto命令を利用した場合では、始点(および終点)の形が異なります。
例えば、
"M10,10L50,50 90,10Z"
のように書けば、(10,10)は接続点となりstroke-linejoin属性の値に従った形になります。一方、
"M10,10L50,50 90,10 10,10"
のように書けば、(10,10)は端点となりstroke-linecap属性の値に従った形になります。


curveto命令は、現在の点を始点として指定した点を終点とする2次あるいは3次ベジェ曲線を描きます。終点が現在の点になります。
3次ベジェ曲線を描くcurveto命令は、Cあるいはcによって表されます。直前のコマンドから第一制御点を求める場合は、Sあるいはsによって表すこともできます。
パラメータとして、第一制御点の座標、第二制御点の座標、終点の座標を指定します。Sあるいはsの場合は、第二制御点の座標、終点の座標を指定します。CおよびSの場合は絶対座標を、cおよびsの場合は現在の点からの相対座標を指定します。複数のベジェ曲線のパラメータが指定された場合にはそれらのベジェ曲線を順につないだ曲線が描かれます。

例えば、
"M50,100 C100,50 150,50 200,100 250,150 300,150 350,100"
のように書けば、(50,100)を始点、(100,50)を第一制御点、(150,50)を第二制御点、(200,100)を終点とする3次ベジェ曲線と(200,100)を始点、(250,150)を第一制御点、(300,150)を第二制御点、(350,100)を終点とする3次ベジェ曲線をつないだ曲線を描くことを表します。同じ図形を表すには
"M50,100 C100,50 150,50 200,100 S300,150 350,100"
のように書くこともできます。

2次ベジェ曲線を描くcurveto命令は、Qあるいはqによって表されます。直前のコマンドから制御点を求める場合は、Tあるいはtによって表すこともできます。
パラメータとして、制御点の座標、終点の座標を指定します。Tあるいはtの場合は、終点の座標を指定します。QおよびTの場合は絶対座標を、qおよびtの場合は現在の点からの相対座標を指定します。複数のベジェ曲線のパラメータが指定された場合にはそれらのベジェ曲線を順につないだ曲線が描かれます。

points

2006-09-18 | 仕様
points属性は、polyline要素およびpolygon要素の頂点の集合を指定します。

points属性の値は、いくつかの頂点の座標です。
先頭や末尾に半角スペース等(半角スペース以外にはタブや改行が該当します。文字コードで、#x20、#x9、#xD、#xAの4つ。)があることがあります。
ある頂点を表す座標と別の頂点を表す座標の間はカンマ(",")あるいは、半角スペース等で区切ります。
カンマは2つ以上あってはいけません。
頂点を構成するx座標とy座標の間もカンマ(",")あるいは、半角スペース等で区切ります。

例えば、
points="10,10 50,50 90,10"
points="10 10 50 50 90 10"
points="10,10,50,50,90,10"
points=" 10, 10 , 50, 50 90,10 "
のような値は正しい値ですが、
points="10,,10 50,50 90,10"
のような値は正しい値ではありません。