SVGファイルの参照

画像(image)を貼り付けるときに、xlink:href 属性を使い、ファイルを参照できる ようになるが、これは他の SVG ファイルを参照させてもよい。
<image xlink:href="0071.svg" x="20" y="20" width="100" height="100" />
<image xlink:href="0071.svg" x="50" y="50" width="80" height="80" />
点線で囲った部分が image タグを使って大きさ(width, height)を指定した部分になる。 SVG 同士の画像を重ねた場合、円以外の背景部分は透けて見えることがわかる。
<!-- left image -->
<image xlink:href="0081.svg" x="20" y="20" width="100" height="100" />
<image xlink:href="0081.svg" x="50" y="50" width="80" height="80" />

<!-- right image -->
<image xlink:href="0082.svg" x="160" y="20" width="100" height="100" 
    opacity="0.5" />
<image xlink:href="0082.svg" x="190" y="50" width="80" height="80" 
    opacity="0.5" />
0081.svg(右側で参照)
<svg xml:space="default" height="100" width="100">
    <circle cx="50" cy="50" r="45" fill="orange" 
        stroke="red" stroke-width="3" opacity="0.5"/>
</svg>
0082.svg(左側で参照)
<svg xml:space="default" height="100" width="100">
    <circle cx="50" cy="50" r="45" fill="orange" 
        stroke="red" stroke-width="3"/>
</svg>
透明度(opacity)を指定してみると、あらかじめ参照先の SVG に透明度を指定したとき(左図)と image タグで透明度を指定したとき(右図)とは、異なる。
意味合い的には、右のように image タグに透明度(opacity)を指定したときに、透明度が 指定されたほうがよいと思うのだが、これは注意点として覚えておくとよいだろう。

まとめ

画像については、フィルタ(filter)を使うことによって自由に画像を加工することができる。
フィルタについては、別に章を設ける。
要素(element) 主な属性(attribute) 属性の値
画像(image) x, y, width, height 座標と大きさ
xlink:href 画像ファイルを参照(JPEG, GIF, PNG, SVG)
opacity 透明度を実数(0〜1)で指定
transform translate(x移動, y移動)で移動量を指定
transform scale(x倍率, y倍率)で拡大縮小を指定
図形(rect, circle など) fill 塗りつぶしに url(#画像ID) で参照させる
stroke 線に url(#画像ID) で参照させる
copyleft by marenijr