<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>SVGデータと座標系</title><revhistory><revision><revnumber>3</revnumber><date>2008-08-21 01:48:15</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2008-08-21 01:47:14</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2008-08-21 01:35:10</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>SVGデータと座標系</title><section><title>座標系</title><para>SVGにおける標準の座標系は左上隅を（０，０）とし、ｘが横方向、ｙが縦方向で、向きは図のようになります。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/SVG%E3%83%87%E3%83%BC%E3%82%BF%E3%81%A8%E5%BA%A7%E6%A8%99%E7%B3%BB?action=AttachFile&amp;do=get&amp;target=coord.png"/></imageobject><textobject><phrase>coord.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>単位</title><para>単位としては次のものが使えます。単位を省略するとピクセルになります。 </para><itemizedlist><listitem><para>em フォントのサイズ </para></listitem><listitem><para>ex 英字ｘの高さ </para></listitem><listitem><para>px ピクセル </para></listitem><listitem><para>pt ポイント ７２ポイント＝１インチ </para></listitem><listitem><para>pc パイカ ６パイカ＝１インチ </para></listitem><listitem><para>cm センチメートル </para></listitem><listitem><para>mm ミリメートル </para></listitem><listitem><para>in インチ １インチ＝２．５４ｃｍ </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>SVGデータの例</title><itemizedlist><listitem override="none"><screen><![CDATA[ <?xml version="1.0" standalone="no"?>
 <svg xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  width="200" height="200">
 <title>sample1</title>
 <circle cx="50" cy="100" r="25" style="fill:black; stroke:none;" />
 <rect x="40" y="40" width="150" height="50" style="fill:blue;" />
 <line x1="10" y1="50" x2="100" y2="200" style="stroke:red;" />
 </svg>]]></screen></listitem></itemizedlist><para>全体の構造を見てください。</para><para> SVG 要素の内容に、title要素の他に circle、 rect、 line の３つの要素が加わっています。これらの要素は単独タグで記述されています。それぞれの要素にはいろいろな属性がありますが style という属性はこの３つの要素のいずれにもあります。 </para><para>circle要素 </para><itemizedlist><listitem override="none"><para>円を定義する要素です。大きさや位置は属性で指示します。 </para></listitem><listitem override="none"><para>cx 中心のX座標 </para></listitem><listitem override="none"><para>cy 中心のY座標 </para></listitem><listitem override="none"><para>r 半径 </para></listitem></itemizedlist><para>rect要素 </para><itemizedlist><listitem override="none"><para>長方形です。 </para></listitem><listitem override="none"><para>x 左上隅のX座標 </para></listitem><listitem override="none"><para>y 左上隅のY座標 </para></listitem><listitem override="none"><para>width 幅 </para></listitem><listitem override="none"><para>height 高さ </para></listitem></itemizedlist><para>line要素 </para><itemizedlist><listitem override="none"><para>直線です。 </para></listitem><listitem override="none"><para>x1 始点のX座標 </para></listitem><listitem override="none"><para>y1 始点のY座標 </para></listitem><listitem override="none"><para>x2 終点のX座標 </para></listitem><listitem override="none"><para>y2 終点のY座標 </para></listitem></itemizedlist><para>style属性 </para><itemizedlist><listitem override="none"><para>色などを指定します。 </para></listitem><listitem override="none"><para>stroke 線の色 </para></listitem><listitem override="none"><para>fill 塗りつぶしの色 </para></listitem><listitem override="none"><para>色は色の名前かRGBの値で指定します。noneとすると「なし」になります。 </para></listitem></itemizedlist><para>要素をいくつか記述したときは、前に書いたものが先に、後ろに書いたものが後に表示されます。先に描かれた図形が残ったまま次の図形が描かれます。次々と重なっていきます。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>SVGエレメント</title><para>SVGエレメントはSVGデータに必ず必要です。</para><para> これがルートエレメントであり、１つのデータに１つだけです。</para><para> 他の要素はすべてSVGエレメントの内部に記述します。 </para><itemizedlist><listitem override="none"><screen><![CDATA[ <?xml version="1.0" standalone="no"?>
 <svg xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  width="100" height="100">
 <title>rensyu1</title>
]]><![CDATA[
 </svg>]]></screen></listitem></itemizedlist><para>xmlns および xmlns:xlink の２つの属性は名前空間の定義を行うもので、この通りに書きます。（この記述が無いとブラウザによっては表示されません） </para><para>他に通常記述する属性には width height veiwBox の３つがあります。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>width, height</title><para>width でビューポートの幅を、height で高さを指定します。</para><para> ビューポートは画面上での表示領域を表します。 </para><para>大きさは数値で指定します。</para><para> 単位としては em(文字の高さが１）、px（画面上のドット）のほかにcm（センチメートル）、in（インチ）などが使えます。</para><para> 単位を省略すると px になります。 </para><itemizedlist><listitem override="none"><para>width=&quot;400&quot; </para></listitem><listitem override="none"><para>width=&quot;10cm&quot; </para></listitem><listitem override="none"><para>height=&quot;5in&quot; </para></listitem></itemizedlist><para>のように書きます。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>viewBox</title><para>viewBox はSVGで表示する範囲を指定します。 </para><itemizedlist><listitem override="none"><para>viewBox=&quot;0 0 400 300&quot; </para></listitem></itemizedlist><para>のように指定します。</para><para> 値は順に、左上隅のｘ座標、ｙ座標、横幅(座標値）、縦幅（座標値）です。 </para><para>viewBoxの指定を省略したときは、左上隅を（０，０）とし、width, heightで指定された値と等しい座標範囲が表示されます。 </para><itemizedlist><listitem override="none"><para>width=&quot;200&quot; height=&quot;150&quot; </para></listitem></itemizedlist><para>と指定されviewBoxの指定がないときは </para><itemizedlist><listitem override="none"><para>width=&quot;200&quot; height=&quot;150&quot; viewBox=&quot;0 0 200 150&quot; </para></listitem></itemizedlist><para>の意味になります。 </para><para>左上隅の座標の指定は良く使います。 </para><itemizedlist><listitem override="none"><screen><![CDATA[ width="400" height="300" viewBox="-200 -100 400 300"]]></screen></listitem></itemizedlist><para>この例では画面上の表示領域は幅400、高さ300で、表示範囲も幅400、高さ300と同じになっています。 表示範囲の左上隅の座標を(-200,-100)と指定しています。 表示されるのはｘ座標は-200から200までの幅400、y座標は-100から200までの高さ300の範囲になります。 </para><para>viewBoxで指定する幅や高さがwidth, heightで指定する量と異なるときは、 高さまたは幅をあわせるように拡大縮小されます。 </para><para>viewBoxで指定した範囲を切り取って、widthとheightの大きさに合わせて表示すると考えるとよいでしょう。 </para><para>下図は viewBox=&quot;a b c d&quot; に対応します。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/SVG%E3%83%87%E3%83%BC%E3%82%BF%E3%81%A8%E5%BA%A7%E6%A8%99%E7%B3%BB?action=AttachFile&amp;do=get&amp;target=viewBox1.PNG"/></imageobject><textobject><phrase>viewBox1.PNG</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>アスペクト比</title><para>width、heightの大きさとviewBoxでの幅と高さの比率が異なるときの処理については preserveAspectRatio 属性で指定することができます。 </para><para>preserveAspectRatio=&quot;xMinYMin meet&quot; </para><itemizedlist><listitem override="none"><para>meetを指定すると比率を変えないで、大きさは幅と高さのうち大きい方が入るように調整します。 位置はどちらに合わせるかを次の組み合わせで指定します。合わせた反対側に空白ができます。 </para></listitem><listitem override="none"><para>xMin 左に合わせます </para></listitem><listitem override="none"><para>xMid 左右を中央に合わせます </para></listitem><listitem override="none"><para>xMax 右に合わせます </para></listitem><listitem override="none"><para>YMin 上に合わせます </para></listitem><listitem override="none"><para>YMid 上下を中央に合わせます </para></listitem><listitem override="none"><para>YMax 下に合わせます </para></listitem></itemizedlist><para>preserveAspectRatio=&quot;xMidYMax slice&quot; </para><itemizedlist><listitem override="none"><para>sliceを指定すると比率を変えないで、大きさは幅と高さのうち小さい方がちょうどになるように調整します。 幅と高さのうち大きい方はビューポートからはみ出て表示の一部が切れてしまいます。どちらに合わせるか（どちらが切れるか）は上と同様に xMin などで指定します。 </para></listitem></itemizedlist><para>preserveAspectRatio=&quot;none&quot; </para><itemizedlist><listitem override="none"><para>縦横の比率を無視し、viewBoxで指定した範囲を width と height で指定した大きさに拡大縮小します。 </para></listitem></itemizedlist></section></section></article>