14 January 2003, �|��X�V�F 2010/04/30

7 ���W�n, �ϊ�, �P��


�ڎ�


 

7.1 �T�v

���f�B�A���킸�A SVG �L�����o�X �Ƃ́u SVG ���e���`�悳����ԁv���Ӗ�����B�L�����o�X�Ƃ́A�ǂ̕����ɂ������̍L��������‹�Ԃł������A�`��ɂ‚��Ă͂��̗L�E�ȋ�`�̈�ɑ΂����ΓI�ɂȂ������̂ł���B���̗L�E�ȋ�`�̈�� SVG �r���[�|�[�g �ƌĂԁB���o���f�B�A [CSS2-VISUAL] �ɂ����ẮA SVG �r���[�|�[�g�Ƃ͗��p�҂��猩���� SVG ���e�̕\���̈�̂��Ƃł���B

For all media, the SVG canvas describes "the space where the SVG content is rendered." The canvas is infinite for each dimension of the space, but rendering occurs relative to a finite rectangular region of the canvas. This finite rectangular region is called the SVG viewport . For visual media [ CSS2-VISUAL] , the SVG viewport is the viewing area where the user sees the SVG content.

SVG �r���[�|�[�g�̑傫���i�������ƍ����j�� SVG �����ЂƂ��́i���݂̂܂��͈Öق́j�e�Ƃ̌��‚̉ߒ����猈�肳���i �����r���[�|�[�g�̊m�� ������j�B���̂��Ƃ肪��������Ǝ��ɋ������� SVG-�t�`�ɒ񋟂����F

The size of the SVG viewport (i.e., its width and height) is determined by a negotiation process (see Establishing the size of the initial viewport ) between the SVG ���� fragment and its parent (real or implicit). Once that negotiation process is completed, the SVG user agent is provided the following information:

��L���Ɋ�Â��A SVG-�t�`�� �r���[�|�[�g �A���Ȃ킿������ �r���[�|�[�g���W�n ����я����� ���p���W�n �����肷��B���̎��_�ł͓�‚̍��W�n�͓��l�ɂ����B�o���̍��W�n�́A���_���r���[�|�[�g�̌��_�Ɂi���[�g�E�r���[�|�[�g�ɂ����Ă͌��_�͍�����ɂȂ�j�A�P�P�ʂ��r���[�|�[�g�̂P�u��f�v�ɓ������Ȃ�悤�Ɋm�������i �������W�n ������j�B�r���[�|�[�g���W�n�͕ʖ� �r���[�|�[�g��� �Ƃ��Ă΂�A���p���W�n�͕ʖ� ���p��� �Ƃ��Ă΂��B �i�󒍁F�u���[�g�E�r���[�|�[�g�v�̌�`���L�q����Ă��Ȃ����A�����炭�ł��O���� svg �v�f�ɂ���Ċm���������̂��w�����̂Ǝv����B�j

Using the above information, the SVG user agent determines the viewport , an initial viewport coordinate system and an initial user coordinate system such that the two coordinates systems are identical. Both coordinates systems are established such that the origin matches the origin of the viewport (for the root viewport, the viewport origin is at the top/left corner), and one unit in the initial coordinate system equals one "pixel" in the viewport. (See Initial coordinate system .) The viewport coordinate system is also called viewport space and the user coordinate system is also called user space .

SVG �ɂ����钷���͎��Ŏw�肳���F

Lengths in SVG can be specified as:

�����P�ʎ��ʎq�ɂ́F em, ex, px, pt, pc, cm, mm, in, ����сA�p�[�Z���g�𗘗p�ł���B

The supported length unit identifiers are: em, ex, px, pt, pc, cm, mm, in, and percentages.

SVG �����В��̔C�ӂ̏ꏊ�ɂ����āA �ϊ��s�� ���邢�́A��]�i rotation �j, �ΌX�i skewing �j, �L�k�i scaling �j, ���i�i translation �j�Ȃǂ̒P���ϊ��̌`���ɂ�� �ϊ� ���w�肵�āA�V�������p��ԁi�����V�������݂̍��W�n�j���m����������B ���W�n�ϊ� ��ʂ��ĐV�������p��Ԃ��m�����邱�Ƃ͓񎟌��O���t�B�b�N�X�ɂ����Ċ�b�ƂȂ鏈���ł���A�O���t�B�b�N�X�I�u�W�F�N�g�̑傫��, �ʒu, ��], �ΌX�𐧌䂷��ʗ�I���@��񋟂���B

A new user space (i.e., a new current coordinate system) can be established at any place within an SVG document fragment by specifying transformations in the form of transformation matrices or simple transformation operations such as rotation, skewing, scaling and translation. Establishing new user spaces via coordinate system transformations are fundamental operations to 2D graphics and represent the usual method of controlling the size, position, rotation and skew of graphic objects.

�V�����r���[�|�[�g���m�����邱�Ƃ��ł���B �V�����r���[�|�[�g�̊m�� �ɂ��A�p�[�Z���g�̒P�ʂŕ\���ꂽ�l�̈Ӗ����Ē�`���A�O���t�B�b�N�����̋�`�̈�Ɂu�҂�����v�͂ߍ��ނ��߂̋K�͂ƂȂ��`��V�K�ɗ^������悤�ɂȂ�B�i�����Łu�҂�����v�Ƃ́A�^����ꂽ�O���t�B�b�N�̗��p��Ԃɂ������܃{�b�N�X���r���[�|�[�g�̉��ɂ҂����葵����悤�ɕϊ������邱�Ƃ��Ӗ�����B�j

New viewports also can be established. By establishing a new viewport , you can redefine the meaning of percentages units and provide a new reference rectangle for "fitting" a graphic into a particular rectangular area. ("Fit" means that a given graphic is transformed in such a way that its bounding box in user space aligns exactly with the edges of a given viewport.)

7.2 �����r���[�|�[�g

SVG-�t�`�͂��̐e�ƂȂ�t�`�ƌ��‚��ĕ�����`�悷�邽�߂̃r���[�|�[�g�����肷��B�ꍇ�ɂ���ẮA SVG ���e�͂�����܂��镶���Ɂi �Q�Ƃ܂��̓C�����C�� �ɂ��j���߂��܂�Ă��邱�Ƃ�����B��܂��镶���́A SVG ���e�ɂ��Ă����r���[�|�[�g�̐��@���w�肷�邩����Ɋւ��鎦����^����悤�ȑ�����v���p�e�B�A���̑��́i�����I�܂��͈Öق́j�p�����^���܂ݓ���B SVG ���e���g�ɂ����Ă��A �ł��O���� svg �v�f �� XML ���� width, height ��ʂ��āA���e��`�悷�邽�߂̓K�؂ȃr���[�|�[�g�̈�̏��𐏈ӂɒ񋟂�������B���‚̉ߒ��ł͕�܂��镶���� SVG ���e���g����񋟂��ꂽ��񂪌�������A�����Ɋ�Â��ăr���[�|�[�g�̈ʒu�Ƒ傫�������肳���B

The SVG user agent negotiates with its parent user agent to determine the viewport into which the SVG user agent can render the document. In some circumstances, SVG content will be embedded ( by reference or inline ) within a containing document. This containing document might include attributes, properties and/or other parameters (explicit or implicit) which specify or provide hints about the dimensions of the viewport for the SVG content. SVG content itself optionally can provide information about the appropriate viewport region for the content via the width and height XML attributes on the outermost 'svg' element. The negotiation process uses any information provided by the containing document and the SVG content itself to choose the viewport location and size.

�ł��O���� svg �v�f �� width �����͎��̂R���������������ꍇ�������A�r���[�|�[�g�̕����m������F

The width attribute on the outermost 'svg' element establishes the viewport's width, unless the following conditions are met:

�����̏�������������Ă���΁A�ʒu���߃v���p�e�B���r���[�|�[�g�̕����m��������B

Under these conditions, the positioning properties establish the viewport's width.

���l�ɂ��āA�r���[�|�[�g�̍��������߂�̂ɏ\���ȏ������ˆʒu���߃v���p�e�B [CSS2-POSN] ���A�Q�Ƃ��Ă���v�f�܂��� �ł��O���� svg �v�f �ɑ΂��Ďw�肳��Ă���Ȃ�΁A����炪�r���[�|�[�g�̍������m������B�����łȂ��ꍇ�A �ł��O���� svg �v�f ���r���[�|�[�g�̍������m������B

Similarly, if there are positioning properties [ CSS2-POSN] specified on the referencing element or on the outermost 'svg' that are sufficient to establish the height of the viewport, then these positioning properties establish the viewport's height; otherwise, the height attribute on the outermost 'svg' element establishes the viewport's height.

�ł��O���� svg �v�f �� width �������� height ������ ���p�P�� �i�����A�P�ʎ��ʎq���^�����Ă��Ȃ��j�Ŏw�肳��Ă���ꍇ�A���̒l�̒P�ʂ� "px" �ł�����̂ƌ��Ȃ����i �P�� ������j�B

If the width or height attributes on the outermost 'svg' element are in user units (i.e., no unit identifier has been provided), then the value is assumed to be equivalent to the same number of "px" units (see Units ).

���̗�� CSS ���C�A�E�g�K���ɂ��t�H�[�}�b�g���ꂽ�e�� XML �����ɃC�����C���ɖ��߂��܂ꂽ SVG �O���t�B�b�N�������B CSS �ʒu���߃v���p�e�B�� �ł��O���� svg �v�f �Ɏw�肳��ĂȂ��̂ŁA�����l width="100px" �� height="200px" �������r���[�|�[�g�̑傫�������肷��F

In the following example, an SVG graphic is embedded inline within a parent XML document which is formatted using CSS layout rules. Since CSS positioning properties are not provided on the outermost 'svg' element, the width="100px" and height="200px" attributes determine the size of the initial viewport:

<?xml version="1.0" standalone="yes"?>
<parent xmlns="http://some.url">

   <!-- SVG �O���t�B�b�N -->
   <svg xmlns='http://www.w3.org/2000/svg'
      width="100px" height="200px" version="1.1">
      <path d="M100,100 Q200,400,300,100"/>
      <!-- SVG �O���t�B�b�N�̎c��̕����������� -->
   </svg>

</parent>

SVG �����Ђɑ΂��鏉���N���b�s���O�p�X�� �����N���b�s���O�p�X �ɏq�ׂ���K���ɏ]���Ċm�������B

The initial clipping path for the SVG document fragment is established according to the rules described in The initial clipping path .


7.3 �������W�n

�ł��O���� svg �v�f �ɑ΂��A SVG-�t�`�͏����� �r���[�|�[�g���W�n �Ə����� ���p���W�n ���‚̍��W�n�����l�ɂȂ�悤�ɒ�߂�B�o���̍��W�n�̌��_�̓r���[�|�[�g�̌��_�ɍ��킹���A�������W�n�̂P�P�ʂ̓r���[�|�[�g�ɂ�����P�u��f�v�i���� [CSS2 lengths] �Œ�`�����P�� px �ŕ\���� 1 px�j�ɓ������Ȃ�悤�ɂ����B �قƂ�ǂ̏ꍇ�i�Ɨ����� SVG �����ł��邩�A�e�ƂȂ� XML ������ �Q�Ƃ܂��̓C�����C�� �ɂ�� SVG �����Ђ����߂��܂�Ă��āA�e�̃��C�A�E�g�� CSS [CSS2] �܂��� XSL [XSL] �Ō��肳��Ă���悤�ȏꍇ�j�A�����r���[�|�[�g���W�n�́i���������ď������p���W�n���j�A���̌��_���r���[�|�[�g�̍������, �w�����������E������, �x������������������, �e�L�X�g�̕`��́u�����v������ԂɂȂ�悤�ɂ����i�u�����v�Ƃ́A���[�}����A�W�A�n�X�N���v�g�̑S�p�\�ӕ����͑Ή�����O���t�̏�[���㑤��, �E�[���E���Ɉʒu�����邱�Ƃ��Ӗ�����j�B

For the outermost 'svg' element, the SVG user agent determines an initial viewport coordinate system and an initial user coordinate system such that the two coordinates systems are identical. The origin of both coordinate systems is at the origin of the viewport, and one unit in the initial coordinate system equals one "pixel" (i.e., a px unit as defined in [CSS2 lengths] ) in the viewport. In most cases, such as stand-alone SVG documents or SVG document fragments embedded ( by reference or inline ) within XML parent documents where the parent's layout is determined by CSS [CSS2] or XSL [XSL] , the initial viewport coordinate system (and therefore the initial user coordinate system) has its origin at the top/left of the viewport, with the positive x-axis pointing towards the right, the positive y-axis pointing down, and text rendered with an "upright" orientation, which means glyphs are oriented such that Roman characters and full-size ideographic characters for Asian scripts have the top edge of the corresponding glyphs oriented upwards and the right edge of the corresponding glyphs oriented to the right.

���� SVG �̎����� CSS2 �݊��P�� px �𗘗p���� XML �����̃X�^�C���t�����T�|�[�g����t�`�̈ꕔ�ł���Ȃ�΁A SVG-�t�`�͑��� XML �̃X�^�C���t�������ŗ��p����Ă���l�ɍ��킹�邽�߂ɁA���̒P�� px �̑傫�����������E�̒P�ʂŕ\�������̂������l�Ƃ��ē���ׂ��ł���B���ꂪ���Ȃ�Ȃ��Ȃ�΁A�����t�`���P�� px �̑傫�������̊‹����瓾����Ȃ�΁A����𗘗p���ׂ��ł���B��������Ȃ�Ȃ��Ȃ�΁A�P�� px �ɓK�؂ȑ傫�������Ă����ׂ��ł���B������ɂ���A 1px �̑傫���� [CSS2 lengths] �ŏq�ׂ��Ă���K���ɓK�����Ă��Ȃ���΂Ȃ�Ȃ��B

If the SVG implementation is part of a user agent which supports styling XML documents using CSS2-compatible px units, then the SVG user agent should get its initial value for the size of a px unit in real world units to match the value used for other XML styling operations; otherwise, if the user agent can determine the size of a px unit from its environment, it should use that value; otherwise, it should choose an appropriate size for one px unit. In all cases, the size of a px must be in conformance with the rules described in [CSS2 lengths] .

���� Example InitialCoords �͌��_�������, �w�����E������, �x�����������ɂƂ����������W�n�������Ă���B�������p���W�n�̂P���p�P�ʂ͐e�t�`�� �i�Öق܂��͖����I�ȁj�P�u��f�v�ɓ������B

Example InitialCoords below shows that the initial coordinate system has the origin at the top/left with the x-axis pointing to the right and the y-axis pointing down. The initial user coordinate system has one user unit equal to the parent (implicit or explicit) user agent's "pixel".

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="300px" height="100px" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
  <desc>Example InitialCoords - SVG �̏������W�n</desc>
  <g fill="none" stroke="black" stroke-width="3" >
    <line x1="0" y1="1.5" x2="300" y2="1.5" />
    <line x1="1.5" y1="0" x2="1.5" y2="100" />
  </g>
  <g fill="red" stroke="none" >
    <rect x="0" y="0" width="3" height="3" />
    <rect x="297" y="0" width="3" height="3" />
    <rect x="0" y="97" width="3" height="3" />
  </g>
  <g font-size="14" font-family="Verdana" >
    <text x="10" y="20">(0,0)</text>
    <text x="240" y="20">(300,0)</text>
    <text x="10" y="90">(0,100)</text>
  </g>
</svg>
Example InitialCoords
Example InitialCoords - SVG's initial coordinate system

���̗�� SVG �Ō���i SVG �Ή��u���E�U�̂݁j
 


7.4 ���W�n�ϊ�

�V�������p��ԁi�����V�������݂̍��W�n�j���A�R���e�i�v�f�܂��̓O���t�B�b�N�X�v�f�� transform ����, ���邢�� 'svg', 'symbol', 'marker', 'pattern', 'view' �v�f�� viewBox �����̌`�� �ϊ� ���w�肷�邱�Ƃɂ��m����������B transform ������ viewBox �����͗^����ꂽ�v�f�̗אڑ��� �i�󒍁F sibling attributes - �����v�f�ɂ����鑼�̑������w�����̂Ǝv����j �Ɨv�f�̑S�Ă̎q���̗��p��Ԃɂ�������W�ƒ�����ϊ�����i �אڑ����ɑ΂��� transform �����̌��� �� �אڑ����ɑ΂��� viewBox �����̌��� ������j�B�ϊ��͓���q�ɂ��邱�Ƃ��”\�ł���A���̏ꍇ�A�ϊ��ɂ����ʂ͗ݐς����B

A new user space (i.e., a new current coordinate system) can be established by specifying transformations in the form of a transform attribute on a container element or graphics element or a viewBox attribute on an 'svg', 'symbol', 'marker', 'pattern' and the 'view' element. The transform and viewBox attributes transform user space coordinates and lengths on sibling attributes on the given element (see effect of the transform attribute on sibling attributes and effect of the viewBox attribute on sibling attributes ) and all of its descendants. Transformations can be nested, in which case the effect of the transformations are cumulative.

���� Example OrigCoordSys �ɕϊ����������Ȃ������������B�e�L�X�g�`��� �������W�n �Ŏw�肳���B

Example OrigCoordSys below shows a document without transformations. The text string is specified in the initial coordinate system .

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="400px" height="150px" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
  <desc>Example OrigCoordSys - �P���ϊ��F�ŏ��̐}</desc>
  <g fill="none" stroke="black" stroke-width="3" >
    <!-- �������W�n�̍��W����`�� -->
    <line x1="0" y1="1.5" x2="400" y2="1.5" />
    <line x1="1.5" y1="0" x2="1.5" y2="150" />
  </g>
  <g>
    <text x="30" y="30" font-size="20" font-family="Verdana" >
      ABC (orig coord system)
    </text>
  </g>
</svg>
Example OrigCoordSys
Example OrigCoordSys - SVG's initial coordinate system

���̗�� SVG �Ō���i SVG �Ή��u���E�U�̂݁j
 

���� Example NewCoordSys �ł͎O�‚߂� 'g' �v�f�� transform="translate(50,50)" �Ǝw�肷�邱�Ƃɂ��A�V�������p���W�n���m�������B�V�������p���W�n�ł͌��_�����̍��W�n�� (50,50) �ɂƂ���B���̕ϊ��̌��ʁA�V�������p���W�n�̍��W (30,30) �͌��̍��W�n�̍��W (80,80) �Ɏʑ������i�������W���w�������� 50 �P��, �x�������� 50 �P�ʈړ�����j�B

Example NewCoordSys establishes a new user coordinate system by specifying transform="translate(50,50)" on the third 'g' element below. The new user coordinate system has its origin at location (50,50) in the original coordinate system. The result of this transformation is that the coordinate (30,30) in the new user coordinate system gets mapped to coordinate (80,80) in the original coordinate system (i.e., the coordinates have been translated by 50 units in X and 50 units in Y).

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="400px" height="150px" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
  <desc>Example NewCoordSys - �V�������p���W�n</desc>
  <g fill="none" stroke="black" stroke-width="3" >
    <!-- �������W�n�̍��W����`�� -->
    <line x1="0" y1="1.5" x2="400" y2="1.5" />
    <line x1="1.5" y1="0" x2="1.5" y2="150" />
  </g>
  <g>
    <text x="30" y="30" font-size="20" font-family="Verdana" >
      ABC (orig coord system)
    </text>
  </g>
  <!-- �������W�n�� 50 ���p�P�ʂ���
       ���ꂼ��̎��ɉ����Ă��炵�āi����
       ���i�����āj�V�������W�n���m������B -->
  <g transform="translate(50,50)">
    <g fill="none" stroke="red" stroke-width="3" >
      <!-- �V�������W�n�̂��ꂼ��̍��W���ɉ����� 
           ���� 50 ���p�P�ʂ̐�����`�� -->
      <line x1="0" y1="0" x2="50" y2="0" />
      <line x1="0" y1="0" x2="0" y2="50" />
    </g>
    <text x="30" y="30" font-size="20" font-family="Verdana" >
      ABC (translated coord system)
    </text>
  </g>
</svg>
Example NewCoordSys
Example NewCoordSys - New user coordinate system

���̗�� SVG �Ō���i SVG �Ή��u���E�U�̂݁j

���� Example RotateScale �ɒP���� ��]�i rotate �j���L�k�i scale �j�ɂ��ϊ��������B���̗�ł͂Q�‚̐V�������W�n����`�����F

Example RotateScale illustrates simple rotate and scale transformations. The example defines two new coordinate systems:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="400px" height="120px" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
  <desc>Example RotateScale - ��]�ƐL�k�ϊ�</desc>
  <g fill="none" stroke="black" stroke-width="3" >
    <!-- �������W�n�̍��W����`�� -->
    <line x1="0" y1="1.5" x2="400" y2="1.5" />
    <line x1="1.5" y1="0" x2="1.5" y2="120" />
  </g>
  <!-- ���_���������W�n�� (50,30) �ɂƂ�A
       30 �x��]���ꂽ�V�������W�n���m������B-->
  <g transform="translate(50,30)">
    <g transform="rotate(30)">
      <g fill="none" stroke="red" stroke-width="3" >
        <line x1="0" y1="0" x2="50" y2="0" />
        <line x1="0" y1="0" x2="0" y2="50" />
      </g>
      <text x="0" y="0" font-size="20" font-family="Verdana" fill="blue" >
        ABC (rotate)
      </text>
    </g>
  </g>
  <!-- ���_���������W�n�� (200,40) �ɂƂ�A
        1.5 �{�g�傳�ꂽ�V�������W�n���m������B-->
  <g transform="translate(200,40)">
    <g transform="scale(1.5)">
      <g fill="none" stroke="red" stroke-width="3" >
        <line x1="0" y1="0" x2="50" y2="0" />
        <line x1="0" y1="0" x2="0" y2="50" />
      </g>
      <text x="0" y="0" font-size="20" font-family="Verdana" fill="blue" >
        ABC (scale)
      </text>
    </g>
  </g>
</svg>
Example RotateScale
Example RotateScale - Rotate and scale transforms

���̗�� SVG �Ō���i SVG �Ή��u���E�U�̂݁j
 

���� Example Skew �Ɍ��̍��W�n���ΌX �i skew - �X�L���[�j�ɂ��ϊ������Q�‚̍��W�n�������B

Example Skew defines two coordinate systems which are skewed relative to the origin coordinate system.

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="400px" height="120px" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
  <desc>Example Skew - skewX �� skewY �ɂ����ʂ�����</desc>
  <g fill="none" stroke="black" stroke-width="3" >
    <!-- �������W�n�̍��W����`�� -->
    <line x1="0" y1="1.5" x2="400" y2="1.5" />
    <line x1="1.5" y1="0" x2="1.5" y2="120" />
  </g>
  <!-- ���_���������W�n�� (30,30) �ɂƂ�A
        �w���W�� 30 �x�ΌX���ꂽ�V�������W�n���m������B-->
  <g transform="translate(30,30)">
    <g transform="skewX(30)">
      <g fill="none" stroke="red" stroke-width="3" >
        <line x1="0" y1="0" x2="50" y2="0" />
        <line x1="0" y1="0" x2="0" y2="50" />
      </g>
      <text x="0" y="0" font-size="20" font-family="Verdana" fill="blue" >
        ABC (skewX)
      </text>
    </g>
  </g>
  <!-- ���_���������W�n�� (200,30) �ɂƂ�A
        �x���W�� 30 �x�ΌX���ꂽ�V�������W�n���m������B-->
  <g transform="translate(200,30)">
    <g transform="skewY(30)">
      <g fill="none" stroke="red" stroke-width="3" >
        <line x1="0" y1="0" x2="50" y2="0" />
        <line x1="0" y1="0" x2="0" y2="50" />
      </g>
      <text x="0" y="0" font-size="20" font-family="Verdana" fill="blue" >
        ABC (skewY)
      </text>
    </g>
  </g>
</svg>
Example Skew
Example Skew - Show effects of skewX and skewY

���̗�� SVG �Ō���i SVG �Ή��u���E�U�̂݁j
 

���w�I�ɂ͂��ׂĂ̕ϊ��͎��̌`���� 3x3 �� �ϊ��s�� �ŕ\�������F
       3-by-3 transformation matrix

Mathematically, all transformations can be represented as 3x3 transformation matrices of the following form:



��� 3x3 �s��ł͂U�‚̒l���������p�����̂ŁA �ϊ��s�� �̓x�N�g���F [a b c d e f] �̌`���ł��\�L�����B

Since only six values are used in the above 3x3 matrix, a transformation matrix is also expressed as a vector: [a b c d e f].

�ϊ��͐V�������W�n����O�̍��W�n�֍��W�ƒ������ʑ�����F
       3-by-3 transformation matrix

Transformations map coordinates and lengths from a new coordinate system into a previous coordinate system:



�P���ϊ��͎��ɋ�����`���̍s��ŕ\�������F

Simple transformations are represented in matrix form as follows:


7.5 ����q�ɂ��ꂽ�ϊ�

�ϊ��͂�����ł�����q�ɂ��邱�Ƃ��ł���B����q�ɂ��ꂽ�ϊ��ɂ����ʂ͑O�ɒ�`���ꂽ�ϊ��ɑ΂��ϊ��s��ɂ���u�ς��Ƃ�i�������ɂ‚Ȃ���j���Ƃł���F
       3-by-3 matrix concatenation

Transformations can be nested to any level. The effect of nested transformations is to post-multiply (i.e., concatenate) the subsequent transformation matrices onto previously defined transformations:



�^����ꂽ�v�f�ɑ΂��A���݂̃r���[�|�[�g���m�������c��̗v�f�i�ʏ�͗^����ꂽ�v�f�̍ł������ȑc��ł��� 'svg' �v�f�j�܂ł̂��ׂĂ̗v�f�i�^����ꂽ�v�f�ƃr���[�|�[�g���m�������c��̗v�f���܂߂�j�Œ�`���ꂽ�ϊ��S�Ă�ݐς������̂� ���݂̕ϊ��s�� ���邢�� CTM �i current transformation matrix �j�ƌĂԁB���Ȃ킿�A CTM �͌��݂̗��p���W����r���[�|�[�g���W�ւ̎ʑ���\������F
current transformation matrix: CTM

For each given element, the accumulation of all transformations that have been defined on the given element and all of its ancestors up to and including the element that established the current viewport (usually, the 'svg' element which is the most immediate ancestor to the given element) is called the current transformation matrix or CTM . The CTM thus represents the mapping of current user coordinates to viewport coordinates:



���� Example Nested �ɓ���q�ɂ��ꂽ�ϊ��������F

Example Nested illustrates nested transformations.

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="400px" height="150px" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
  <desc>Example Nested - ����q�ɂ��ꂽ�ϊ�</desc>
  <g fill="none" stroke="black" stroke-width="3" >
    <!-- �������W�n�̍��W����`�� -->
    <line x1="0" y1="1.5" x2="400" y2="1.5" />
    <line x1="1.5" y1="0" x2="1.5" y2="150" />
  </g>
  <!-- �ŏ��͕��i -->
  <g transform="translate(50,90)">
    <g fill="none" stroke="red" stroke-width="3" >
      <line x1="0" y1="0" x2="50" y2="0" />
      <line x1="0" y1="0" x2="0" y2="50" />
    </g>
    <text x="0" y="0" font-size="16" font-family="Verdana" >
      ....Translate(1)
    </text>
    <!-- ���͉�] -->
    <g transform="rotate(-45)">
      <g fill="none" stroke="green" stroke-width="3" >
        <line x1="0" y1="0" x2="50" y2="0" />
        <line x1="0" y1="0" x2="0" y2="50" />
      </g>
      <text x="0" y="0" font-size="16" font-family="Verdana" >
        ....Rotate(2)
      </text>
      <!-- �Ō�ɂ�����x���i -->
      <g transform="translate(130,160)">
        <g fill="none" stroke="blue" stroke-width="3" >
          <line x1="0" y1="0" x2="50" y2="0" />
          <line x1="0" y1="0" x2="0" y2="50" />
        </g>
        <text x="0" y="0" font-size="16" font-family="Verdana" >
          ....Translate(3)
        </text>
      </g>
    </g>
  </g>
</svg>
Example Nested
Example Nested - Nested transformations

���̗�� SVG �Ō���i SVG �Ή��u���E�U�̂݁j
 

��̗�ł́A�O�Ԗڂ̓���q�ɂȂ����ϊ��� CTM �i���� transform="translate(130,160)" �j�͎��̂R�‚̕ϊ�����Ȃ�F
Matrix concatenation

In the example above, the CTM within the third nested transformation (i.e., the transform="translate(130,160)" ) consists of the concatenation of the three transformations, as follows:




7.6 transform ����

transform �����̒l�͕ϊ���`�̃��X�g�Ƃ��Ē�`����� <transform-list> �Ŏw�肳��A�e�ϊ��̓��X�g�Ɍ���鏇�ԂœK�p�����B�X�̕ϊ���`�͋󔒂܂��̓R���}�ŋ�؂���B�ϊ���`�̎�ނɂ͎��ɋ�������̂��܂܂��F

The value of the transform attribute is a <transform-list>, which is defined as a list of transform definitions, which are applied in the order provided. The individual transform definitions are separated by whitespace and/or a comma. The available types of transform definitions include:

�S�Ă̐��l�� <number> �i�����j�ł���B

All numeric values are real <number> s.

�����ϊ��̃��X�g���^����ꂽ�ꍇ�A�S�̂Ƃ��Ă̌��ʂ͊e�ϊ����^����ꂽ���ԂɕʁX�Ɏw�肳�ꂽ�Ƃ��Ɠ����ɂȂ�B�Ⴆ�΁F

If a list of transforms is provided, then the net effect is as if each transform had been specified separately in the order provided. For example,

<g transform="translate(-10,-20) scale(2) rotate(45) translate(5,10)">
  <!-- �O���t�B�b�N�X�v�f�͂����� -->
</g>

�͋@�\�I�ɂ͎��Ɠ����ɂȂ�F

is functionally equivalent to:

<g transform="translate(-10,-20)">
  <g transform="scale(2)">
    <g transform="rotate(45)">
      <g transform="translate(5,10)">
        <!-- �O���t�B�b�N�X�v�f�͂����� -->
      </g>
    </g>
  </g>
</g>

transform �����͗v�f�ɗ^����ꂽ���̍��W�܂��͒����̒l����������O�ɓK�p�����B�Ⴆ�Ηv�f

The transform attribute is applied to an element before processing any other coordinate or length values supplied for that element. In the element

<rect x="10" y="10" width="20" height="20" transform="scale(2)"/>

�ɂ����āA x, y, width, height �̒l�� transform �����ŗ^����ꂽ�{���ɂ�茻�݂̍��W�n����l�ɂQ�{���ꂽ��A���������B���� x, y, width, height �i�����đ��̔C�ӂ̑������邢�̓v���p�e�B���j�͑O�̗��p���W�n�ł͂Ȃ��A�V�������p���W�n�ɂ�����l�Ƃ��Ĉ�����B���������ď�L 'rect' �v�f�͋@�\�I�ɂ͎��Ɠ����ɂȂ�F

the x, y, width and height values are processed after the current coordinate system has been scaled uniformly by a factor of 2 by the transform attribute. Attributes x, y, width and height (and any other attributes or properties) are treated as values in the new user coordinate system, not the previous user coordinate system. Thus, the above 'rect' element is functionally equivalent to:

<g transform="scale(2)">
  <rect x="10" y="10" width="20" height="20"/>
</g>

�ȉ��� transform �����̒l��^���� BNF �`���i Backus-Naur Form �j�ɂ��L�q�d�l�ł���B���̕\�L��p����F

The following is the Backus-Naur Form (BNF) for values for the transform attribute. The following notation is used:

transform-list:
    wsp* transforms? wsp*
transforms:
    transform
    | transform comma-wsp+ transforms
transform:
    matrix
    | translate
    | scale
    | rotate
    | skewX
    | skewY
matrix:
    "matrix" wsp* "(" wsp*
       number comma-wsp
       number comma-wsp
       number comma-wsp
       number comma-wsp
       number comma-wsp
       number wsp* ")"
translate:
    "translate" wsp* "(" wsp* number ( comma-wsp number )? wsp* ")"
scale:
    "scale" wsp* "(" wsp* number ( comma-wsp number )? wsp* ")"
rotate:
    "rotate" wsp* "(" wsp* number ( comma-wsp number comma-wsp number )? wsp* ")"
skewX:
    "skewX" wsp* "(" wsp* number wsp* ")"
skewY:
    "skewY" wsp* "(" wsp* number wsp* ")"
number:
    sign? integer-constant
    | sign? floating-point-constant
comma-wsp:
    (wsp+ comma? wsp*) | (comma wsp*)
comma:
    ","
integer-constant:
    digit-sequence
floating-point-constant:
    fractional-constant exponent?
    | digit-sequence exponent
fractional-constant:
    digit-sequence? "." digit-sequence
    | digit-sequence "."
exponent:
    ( "e" | "E" ) sign? digit-sequence
sign:
    "+" | "-"
digit-sequence:
    digit
    | digit digit-sequence
digit:
    "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
wsp:
    (#x20 | #x9 | #xD | #xA)

transform �����ɑ΂��ẮF

     �A�j���[�V�����F��

�ϊ��̃A�j���[�V�����ɂ‚��Ă� 'animateTransform' �v�f������B

See the 'animateTransform' element for information on animating transformations.

7.7 viewBox ����

��A�̃O���t�B�b�N�����̃R���e�i�v�f�ɂ҂�������܂�悤�ɐL�k����������ʂ͑��X����B viewBox �����͂��̂悤�ȋ@�\��񋟂���B

It is often desirable to specify that a given set of graphics stretch to fit a particular container element. The viewBox attribute provides this capability.

�V�����r���[�|�[�g���m������v�f�̑S�āi �r���[�|�[�g���m������v�f ������j�A������ 'marker', 'pattern', 'view' �v�f�� viewBox ���������B viewBox �����̒l�͋󔒂܂��̓R���}��؂�̂S�‚̐��l�̃��X�g <min-x>, <min-y>, <width>, <height> �ŋL�q����A�v�f�ɂ��m�������r���[�|�[�g�̋��E�Ɏʑ������ׂ����p��Ԃɂ������`���w�肷��B�ʑ��� preserveAspectRatio �������l���ɓ���Č��肳���B viewBox �������v�f�Ɏw�肳�ꂽ�ꍇ�A�lj��̕ϊ��͗v�f�̑S�Ă̎q���ɂ��K�p�����B

All elements that establish a new viewport (see elements that establish viewports ), plus the 'marker', 'pattern' and 'view' elements have attribute viewBox . The value of the viewBox attribute is a list of four numbers <min-x>, <min-y>, <width> and <height> , separated by whitespace and/or a comma, which specify a rectangle in user space which should be mapped to the bounds of the viewport established by the given element, taking into account attribute preserveAspectRatio . If specified, an additional transformation is applied to all descendants of the given element to achieve the specified effect.

���l�� <width> ���邢�� <height> �̓G���[�i �G���[���� ������j�B�l���O�ɂ���Ɨv�f�̕`�悳��Ȃ��Ȃ�B

A negative value for <width> or <height> is an error (see Error processing ). A value of zero disables rendering of the element.

���� Example ViewBox �ł́A SVG ���e���r���[�|�[�g�̋��E�ɂ҂�������߂�悤�ɂ��邽�߂ɁA �ł��O���� svg �v�f �ɂ����� viewBox �����𗘗p���Ă���B

Example ViewBox illustrates the use of the viewBox attribute on the outermost 'svg' element to specify that the SVG content should stretch to fit bounds of the viewport.

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="300px" height="200px" version="1.1"
     viewBox="0 0 1500 1000" preserveAspectRatio="none"
     xmlns="http://www.w3.org/2000/svg">
  <desc>Example ViewBox - �r���[�|�[�g��
   �傫���Ɋ֌W�Ȃ��r���[�|�[�g���ɂ҂�������܂�悤��
   �O���t�B�b�N���L�k�����悤�ȏ������W�n�������I��
   ���邽�߂� viewBox �����𗘗p����B</desc>
  <!-- ���̋�`�͗��p��Ԃɂ�����
       (0,0) ���� (1500,1000) �܂ł̗̈���߂�B
       ��� viewBox �����ɂ��A��`�� SVG ���e��
       �p�ӂ��ꂽ�̈�S�̂𕢂����ƂɂȂ�B-->
  <rect x="0" y="0" width="1500" height="1000" 
        fill="yellow" stroke="blue" stroke-width="12"  />
  <!-- �傫�ȐԐF�̎O�p�` -->
  <path fill="red"  d="M 750,100 L 250,900 L 1250,900 z"/>
  <!-- �r���[�|�[�g�̕��قƂ�ǂɂ܂�����e�L�X�g -->
  <text x="100" y="600" font-size="200" font-family="Verdana" >
    Stretch to fit
  </text>
</svg>
Example ViewBox
��=300px, ����=200px
�̃r���[�|�[�g�ւ̕`��
      ��=150px, ����=200px
�̃r���[�|�[�g�ւ̕`��
Example ViewBox - stretch to fit 300 by 200       Example ViewBox - stretch to fit 150 by 200

���̗�� SVG �Ō���i SVG �Ή��u���E�U�̂݁j
 

viewBox �����ɂ��A�w�肳�ꂽ���p��Ԃɂ������`���Ӑ}�����̈�i���̓r���[�|�[�g�j�̋��E�Ɏʑ�����悤�ȓK�؂ȕϊ��s�񂪂t�`�ɂ�莩���I�ɂ��Ă�����B��̗�̍����̂悤�Ȍ��ʂ𓾂邽�߂ɁA�傫�� 300 x 200 ��f�̃r���[�|�[�g�ɑ΂��A�t�`�͂w�Ƃx���� 0.2 �{����ϊ��������I�ɑ}������B���̌��ʂ͓����傫���̃r���[�|�[�g�ɑ΂����̂悤�ɒlj��I�ϊ���^���邱�Ƃɓ������F

The effect of the viewBox attribute is that the user agent automatically supplies the appropriate transformation matrix to map the specified rectangle in user space to the bounds of a designated region (often, the viewport). To achieve the effect of the example on the left, with viewport dimensions of 300 by 200 pixels, the user agent needs to automatically insert a transformation which scales both X and Y by 0.2. The effect is equivalent to having a viewport of size 300px by 200px and the following supplemental transformation in the document, as follows:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="300px" height="200px" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
  <g transform="scale(0.2)">
    <!-- �����̎c��̕����͂����� -->
  </g>
</svg>

��̗�̉E���̂悤�Ȍ��ʂ𓾂邽�߂ɁA�傫�� 150 x 200 ��f�̃r���[�|�[�g�ɑ΂��A�t�`�͂w�� 0.1 �{, �x�� 0.2 �{����ϊ��������I�ɑ}������B���̌��ʂ͓����傫���̃r���[�|�[�g�ɑ΂����̂悤�ɒlj��I�ϊ���^���邱�Ƃɓ������F

To achieve the effect of the example on the right, with viewport dimensions of 150 by 200 pixels, the user agent needs to automatically insert a transformation which scales X by 0.1 and Y by 0.2. The effect is equivalent to having a viewport of size 150px by 200px and the following supplemental transformation in the document, as follows:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="150px" height="200px" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
  <g transform="scale(0.1 0.2)">
    <!-- �����̎c��̕����͂����� -->
  </g>
</svg>

�i���ӁF�ꍇ�ɂ���ẮA�t�`���L�k�ϊ��ɉ��������i�ϊ����^���Ă��˂΂Ȃ�Ȃ��B�Ⴆ�� �ł��O���� svg �v�f �� viewBox ������ <min-x> �܂��� <min-y> �� 0 �ȊO�̒l���w�肵���ꍇ�A���i�ϊ����K�v�ɂȂ�B�j

(Note: in some cases the user agent will need to supply a translate transformation in addition to a scale transformation. For example, on an outermost 'svg' , a translate transformation will be needed if the viewBox attributes specifies values other than zero for <min-x> or <min-y> .)

transform �����Ƃ͈قȂ�i �אڑ����ɑ΂��� transform �����̌��� ������j�A�v�f�� viewBox �����ɂ���Ď����I�ɐ��������ϊ��͂��̗v�f�� x, y, width, height �����i 'marker' �v�f�̏ꍇ�� markerWidth, markerHeight �����j�ɉe�����Ȃ��B���������āA��̗�Ɏ����ꂽ���� width, height ����� viewBox ������ 'svg' �v�f�ł́A width �� height ������ viewBox �ɂ��ϊ����K�p������O�̍��W�n�ɂ�����l��\���B���̈���� transform �����Ɠ��l�ɐV�������W�n�͊m������A���̂��ׂĂ̑����Ǝq���v�f�ɂ͓K�p�����B

Unlike the transform attribute (see effect of the transform on sibling attributes ), the automatic transformation that is created due to a viewBox does not affect the x, y, width and height attributes (or in the case of the 'marker' element, the markerWidth and markerHeight attributes) on the element with the viewBox attribute. Thus, in the example above which shows an 'svg' element which has attributes width, height and viewBox , the width and height attributes represent values in the coordinate system that exists before the viewBox transformation is applied. On the other hand, like the transform attribute, it does establish a new coordinate system for all other attributes and for descendant elements.

viewBox �����ɑ΂��Ă�

     �A�j���[�V�����F��

7.8 preserveAspectRatio ����

�O���t�B�b�N��s�ϓ��ɐL�k�����ăr���[�|�[�g�S�̂𕢂��悤�ɂ�����̂��]�܂����iviewBox ������p����Ƃ��͊T���Ă��������j�ꍇ���������A�O���t�B�b�N�̏c�����ۂ‚��߂ɋϓ��ɐL�k�����������]�܂����ꍇ������B

In some cases, typically when using the viewBox attribute, it is desirable that the graphics stretch to fit non-uniformly to take up the entire viewport. In other cases, it is desirable that uniform scaling be used for the purposes of preserving the aspect ratio of the graphics.

�ϓ��ȐL�k���������邩�ǂ������w�����鑮���F
preserveAspectRatio = "[defer] <align> [<meetOrSlice>]"
�́A �V�����r���[�|�[�g���m������v�f �A������ 'image', 'marker', 'pattern', 'view' �v�f�ŗ��p�ł���B

Attribute preserveAspectRatio="[defer] <align> [<meetOrSlice>]" , which is available for all elements that establish a new viewport (see elements that establish viewports ), plus the 'image', 'marker', 'pattern' and 'view' elements, indicates whether or not to force uniform scaling.

'image' �v�f��������L�v�f�ɂ����� preserveAspectRatio �����͓����v�f�� viewBox �������^�����Ă���Ƃ��̂ݗL���ł���A�����łȂ��ꍇ�͖��������B

For elements that establish a new viewport (see elements that establish viewports ), plus the 'marker', 'pattern' and 'view' elements, preserveAspectRatio only applies when a value has been provided for viewBox on the same element. For these elements, if attribute viewBox is not provided, then preserveAspectRatio is ignored.

'image' �v�f�ɂ����� preserveAspectRatio �����́A��ƂȂ��`�ɑ΂��ĎQ�Ƃ��ꂽ�摜���ǂ̂悤�ɂ͂ߍ��ނ��A����щ摜�̏c��������݂̗��p���W�n�ɂ����Ă��ێ����邩�ǂ������w������B

For 'image' elements, preserveAspectRatio indicates how referenced images should be fitted with respect to the reference rectangle and whether the aspect ratio of the referenced image should be preserved with respect to the current user coordinate system.

'image' �v�f�ɂ����� preserveAspectRatio �̒l�� defer �Ŏn�܂��Ă���ꍇ�A�Q�Ɛ�̓��e�� preserveAspectRatio ����������΂��ꂪ�p������ׂ��ł���B�Q�Ɛ�̓��e�� preserveAspectRatio �̒l���^�����Ă��Ȃ��ꍇ�� preserveAspectRatio �����͒ʏ�Ɠ��l�ɏ��������i defer �͖��������j�B���̑S�Ă̗v�f�ɂ‚��Ă� preserveAspectRatio ������ defer �͖��������B

If the value of preserveAspectRatio on an 'image' element starts with 'defer' then the value of the preserveAspectRatio attribute on the referenced content if present should be used.  If the referenced content lacks a value for preserveAspectRatio then the preserveAspectRatio attribute should be processed as normal (ignoring 'defer').  For preserveAspectRatio on all other elements the 'defer' portion of the attribute is ignored.

<align> �p�����^�͋ϓ��ȐL�k���������邩�ǂ����A����сA��������ꍇ�͏c���䂪 viewBox �ƃr���[�|�[�g�ň�v���Ă��Ȃ��ꍇ�ɂ�����z�u�̎d�����w������B <align> �p�����^�͎��ɋ����镶����̂����ꂩ�łȂ���΂Ȃ�Ȃ��F

The <align> parameter indicates whether to force uniform scaling and, if so, the alignment method to use in case the aspect ratio of the viewBox doesn't match the aspect ratio of the viewport. The <align> parameter must be one of the following strings:

<meetOrSlice> �p�����^�͏ȗ��”\�ł��邪�A�w�肷��ꍇ�͈�ˆȏ�̋󔒂� <align> �p�����^�Ƌ�؂�˂΂Ȃ�Ȃ��B�l�͎��ɋ����镶����̂����ꂩ�łȂ���΂Ȃ�Ȃ��F

The <meetOrSlice> parameter is optional and, if provided, is separated from the <align> value by one or more spaces and then must be one of the following strings:

���� Example PreserveAspectRatio �� preserveAspectRatio �ɑ΂���l�X�ȃI�v�V�����̌��ʂ������B�X�y�[�X�ߖ�̂��߁A�J��Ԃ��p������R�‚̃I�u�W�F�N�g�i�X�}�C�������ɂ����`�A����тQ�‚̃r���[�|�[�g�ɗp�������`�j���ꂼ��� XML ���̂���`����Ă���B���̗�ł� �ł��O���� svg �v�f �̒��� 'svg' �v�f�𖄂߂ނ��Ƃɂ��A�����‚��̐V�����r���[�|�[�g�������i �V�����r���[�|�[�g�̊m�� ������j�B

Example PreserveAspectRatio illustrates the various options on preserveAspectRatio . To save space, XML entities have been defined for the three repeated graphic objects, the rectangle with the smile inside and the outlines of the two rectangles which have the same dimensions as the target viewports. The example creates several new viewports by including 'svg' sub-elements embedded inside the outermost 'svg' elements (see Establishing a new viewport ).

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"
[ <!ENTITY Smile "
<rect x='.5' y='.5' width='29' height='39' fill='black' stroke='red'/>
<g transform='translate(0, 5)'>
<circle cx='15' cy='15' r='10' fill='yellow'/>
<circle cx='12' cy='12' r='1.5' fill='black'/>
<circle cx='17' cy='12' r='1.5' fill='black'/>
<path d='M 10 19 A 8 8 0 0 0 20 19' stroke='black' stroke-width='2'/>
</g>
">
<!ENTITY Viewport1 "<rect x='.5' y='.5' width='49' height='29'
fill='none' stroke='blue'/>">
<!ENTITY Viewport2 "<rect x='.5' y='.5' width='29' height='59'
fill='none' stroke='blue'/>">
]>
<svg width="450px" height="300px" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
  <desc>Example PreserveAspectRatio - preserveAspectRatio �����̐}��</desc>
  <rect x="1" y="1" width="448" height="298"
        fill="none" stroke="blue"/>
  <g font-size="9">
    <text x="10" y="30">SVG to fit</text>
    <g transform="translate(20,40)">&Smile;</g>
    <text x="10" y="110">Viewport 1</text>
    <g transform="translate(10,120)">&Viewport1;</g>
    <text x="10" y="180">Viewport 2</text>
    <g transform="translate(20,190)">&Viewport2;</g>
    <g id="meet-group-1" transform="translate(100, 60)">
      <text x="0" y="-30">--------------- meet ---------------</text>
      <g><text y="-10">xMin*</text>&Viewport1;
        <svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 30 40"
             width="50" height="30">&Smile;</svg></g>
      <g transform="translate(70,0)"><text y="-10">xMid*</text>&Viewport1;
        <svg preserveAspectRatio="xMidYMid meet" viewBox="0 0 30 40"
             width="50" height="30">&Smile;</svg></g>
      <g transform="translate(0,70)"><text y="-10">xMax*</text>&Viewport1;
        <svg preserveAspectRatio="xMaxYMax meet" viewBox="0 0 30 40"
             width="50" height="30">&Smile;</svg></g>
    </g>
    <g id="meet-group-2" transform="translate(250, 60)">
      <text x="0" y="-30">---------- meet ----------</text>
      <g><text y="-10">*YMin</text>&Viewport2;
        <svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 30 40"
             width="30" height="60">&Smile;</svg></g>
      <g transform="translate(50, 0)"><text y="-10">*YMid</text>&Viewport2;
        <svg preserveAspectRatio="xMidYMid meet" viewBox="0 0 30 40"
             width="30" height="60">&Smile;</svg></g>
      <g transform="translate(100, 0)"><text y="-10">*YMax</text>&Viewport2;
        <svg preserveAspectRatio="xMaxYMax meet" viewBox="0 0 30 40"
             width="30" height="60">&Smile;</svg></g>
    </g>
    <g id="slice-group-1" transform="translate(100, 220)">
      <text x="0" y="-30">---------- slice ----------</text>
      <g><text y="-10">xMin*</text>&Viewport2;
        <svg preserveAspectRatio="xMinYMin slice" viewBox="0 0 30 40"
             width="30" height="60">&Smile;</svg></g>
      <g transform="translate(50,0)"><text y="-10">xMid*</text>&Viewport2;
        <svg preserveAspectRatio="xMidYMid slice" viewBox="0 0 30 40"
             width="30" height="60">&Smile;</svg></g>
      <g transform="translate(100,0)"><text y="-10">xMax*</text>&Viewport2;
        <svg preserveAspectRatio="xMaxYMax slice" viewBox="0 0 30 40"
             width="30" height="60">&Smile;</svg></g>
    </g>
    <g id="slice-group-2" transform="translate(250, 220)">
      <text x="0" y="-30">--------------- slice ---------------</text>
      <g><text y="-10">*YMin</text>&Viewport1;
        <svg preserveAspectRatio="xMinYMin slice" viewBox="0 0 30 40"
             width="50" height="30">&Smile;</svg></g>
      <g transform="translate(70,0)"><text y="-10">*YMid</text>&Viewport1;
        <svg preserveAspectRatio="xMidYMid slice" viewBox="0 0 30 40"
             width="50" height="30">&Smile;</svg></g>
      <g transform="translate(140,0)"><text y="-10">*YMax</text>&Viewport1;
        <svg preserveAspectRatio="xMaxYMax slice" viewBox="0 0 30 40"
             width="50" height="30">&Smile;</svg></g>
    </g>   
  </g>
</svg>
Example PreserveAspectRatio
Example PreserveAspectRatio - demonstrate available options

���̗�� SVG �Ō���i SVG �Ή��u���E�U�̂݁j
 

preserveAspectRatio �����ɑ΂��ẮA

     �A�j���[�V�����F��

7.9 �V�����r���[�|�[�g�̊m��

SVG ���e�� 'svg' �v�f��u�����Ƃɂ��ASVG �`��̔C�ӂ̒n�_�ɂ��̗v�f�̑S���e��`�����߂̐V�����r���[�|�[�g���m����������B�V�����r���[�|�[�g�̊m���ɂ��A�V�����r���[�|�[�g���W�n�ƐV�������p���W�n���Öق̂����Ɋm������A�����ĐV�����N���b�s���O�p�X�i 'overflow' �v���p�e�B�̒�`������j���m�����꓾��B�X�ɁA�V�����r���[�|�[�g���m������邱�Ƃɂ��p�[�Z���g�͂��̃r���[�|�[�g�ɑ΂��đ��ΓI�Ȃ��̂ƂȂ�i �P�� ������j�B

At any point in an SVG drawing, you can establish a new viewport into which all contained graphics is drawn by including an 'svg' element inside SVG content. By establishing a new viewport, you also implicitly establish a new viewport coordinate system, a new user coordinate system, and, potentially, a new clipping path (see the definition of the 'overflow' property). Additionally, there is a new meaning for percentage units defined to be relative to the current viewport since a new viewport has been established (see Units )

�V�����r���[�|�[�g�̋��E�ƂȂ��`�́A 'svg' �v�f�Ȃǂ��̃r���[�|�[�g���m�������v�f�� x, y, width, height �����Œ�`�����B x �� y �����̃r���[�|�[�g���m�������v�f�̑Ή����鑮���̒l�Ƃ���Ƃ��A�V�����r���[�|�[�g���W�n�ƐV�������p���W�n�̑o���Ƃ����_�� (x, y) �ɂƂ���B�V�����r���[�|�[�g���W�n�ƐV�������p���W�n�̌����ƒP�ʂ̓r���[�|�[�g���m�������v�f�̌��݂̗��p���W�n�ƈ�v����悤�ɂƂ���B

The bounds of the new viewport are defined by the x, y, width and height attributes on the element establishing the new viewport, such as an 'svg' element. Both the new viewport coordinate system and the new user coordinate system have their origins at ( x, y ), where x and y represent the value of the corresponding attributes on the element establishing the viewport. The orientation of the new viewport coordinate system and the new user coordinate system correspond to the orientation of the current user coordinate system for the element establishing the viewport. A single unit in the new viewport coordinate system and the new user coordinate system are the same size as a single unit in the current user coordinate system for the element establishing the viewport.

��F

Here is an example:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="4in" height="3in" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
  <desc>���� SVG �G�}�͕ʂ� SVG �G�}��
    ���ߍ��ނ̂ŐV�����r���[�|�[�g���m������B
  </desc>
  <!-- ���̕��ŐV�����r���[�|�[�g���m������A
       SVG �G�} B �͂��̃r���[�|�[�g�ɕ`�悳��� -->
  <svg x="25%" y="25%" width="50%" height="50%">
     <!-- �G�} B �͂����� -->
  </svg>
</svg>

�V�����r���[�|�[�g�̊m���̑���ɂ킽���� Example PreserveAspectRatio �Ō�����B

For an extensive example of creating new viewports, see Example PreserveAspectRatio .

���ɋ�����v�f���V�����r���[�|�[�g���m������F

The following elements establish new viewports:

�V���Ɋm�����ꂽ�r���[�|�[�g���lj��I�ȐV�����N���b�s���O�p�X���m�����邩�ǂ����́A���̃r���[�|�[�g���m�������v�f�� 'overflow' �v���p�e�B�̒l�ɂ���Č��܂�B�N���b�s���O�p�X�����������ꍇ�A���̊􉽂� 'clip' �v���p�e�B�̒l�ɂ�茈�肳���B �N���b�s���O�p�X���r���[�|�[�g�� viewBox �̂ǂ���ɍ��킹�邩 ������B

Whether a new viewport also establishes a new additional clipping path is determined by the value of the 'overflow' property on the element that establishes the new viewport. If a clipping path is created to correspond to the new viewport, the clipping path's geometry is determined by the value of the 'clip' property. Also, see Clip to viewport vs. clip to viewBox .

7.10 �P��

SVG �ɂ����ẮA�ǂ̍��W����ђ������w�肷��ɂ��Ă� �P�ʎ��ʎq �͕t���Ă��t���Ȃ��Ƃ��ǂ��B

All coordinates and lengths in SVG can be specified with or without a unit identifier .

���W�܂��͒������P�ʎ��ʎq�̖������l�i�Ⴆ�� "25"�j�Ŏw�肳�ꂽ�ꍇ�A���̒l�̒P�ʂ͗��p�P�ʁi�������݂̗��p���W�n�ɂ�����l�j�Ƃ݂Ȃ����B�Ⴆ�΁F

When a coordinate or length value is a number without a unit identifier (e.g., "25"), then the given coordinate or length is assumed to be in user units (i.e., a value in the current user coordinate system). For example:

<text style="font-size: 50">�e�L�X�g�̃T�C�Y�� 50 ���p�P��</text>

����ŁA���W�ƒ����͒P�ʎ��ʎq��t���Ďw�肵�Ă��悢�i�Ⴆ�� "25cm" �� "15em"�j�B SVG �ɂ�����P�ʎ��ʎq�� CSS �̒P�ʎ��ʎq�ŗ^������F em, ex, px, pt, pc, cm, mm, in ����� �p�[�Z���g�B�ȉ��ɂ����̒P�ʎ��ʎq���ǂ̂悤�ɏ�������邩���q�ׂ�F

Alternatively, a coordinate or length value can be expressed as a number following by a unit identifier (e.g., "25cm" or "15em"). The list of unit identifiers in SVG matches the list of unit identifiers in CSS: em, ex, px, pt, pc, cm, mm, in and percentages. The following describes how the various unit identifiers are processed:

�V�X�e�����قȂ�� "1px" �̑傫�����قȂ闘�p�P�ʂɂ��l�Ɏʑ����꓾��̂ŁA�P�� px �⑼�̐�ΒP�ʎ��ʎq�̎g�p�͗l�X�ȕ\���‹��ɂ����Ĉ�т��Ȃ��\�����ʂ������炷�”\��������B���������āA��ΒP�ʎ��ʎq�� �ł��O���� svg �v�f �� width �� height �����ɑ΂��Ă̂݁A���� 'svg' �v�f�̓��e���ϊ����܂�ł��炸�A���‘��u�̉�f�i�q�ɑ��ΓI�Ȓl���邢�͌����̐��E�ɂ��������̒P�ʂɍ��킹���l���w�肷�邱�Ƃ��]�܂��Ƃ��ɂ̂݁A�g�p���邱�Ƃ����������B

Note that use of px units or any other absolute unit identifiers can cause inconsistent visual results on different viewing environments since the size of "1px" may map to a different number of user units on different systems; thus, absolute units identifiers are only recommended for the width and the height on outermost 'svg' elements and situations where the content contains no transformations and it is desirable to specify values relative to the device pixel grid or to a particular real world unit size.

�p�[�Z���g�l�̓r���[�|�[�g�̑傫���ɑ΂����ΓI�Ȃ��̂Ƃ��Ē�`����邪�F

For percentage values that are defined to be relative to the size of viewport:

���� Example Units �ɈقȂ��ނ̒P�ʂɑ΂��鏈���K���̂����̂����‚���}�ƂƂ��Ɏ����B

Example Units below illustrates some of the processing rules for different types of units.

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="400px" height="200px" viewBox="0 0 4000 2000"
     xmlns="http://www.w3.org/2000/svg" version="1.1">
  <title>Example Units</title>
  <desc>��X�̒P�ʃI�v�V������}������</desc>
  <!-- �}�ɘg��t���� -->
  <rect x="5" y="5" width="3990" height="1990" 
        fill="none" stroke="blue" stroke-width="10"/>
  <g fill="blue" stroke="red" font-family="Verdana" font-size="150">
    <!-- ��ΒP�ʎw�� -->
    <g transform="translate(400,0)">
      <text x="-50" y="300" fill="black" stroke="none">Abs. units:</text>
      <rect x="0" y="400" width="4in" height="2in" stroke-width=".4in"/>
      <rect x="0" y="750" width="384" height="192" stroke-width="38.4"/>
      <g transform="scale(2)">
        <rect x="0" y="600" width="4in" height="2in" stroke-width=".4in"/>
      </g>
    </g>
    <!-- ���ΒP�ʎw�� -->
    <g transform="translate(1600,0)">
      <text x="-50" y="300" fill="black" stroke="none">Rel. units:</text>
      <rect x="0" y="400" width="2.5em" height="1.25em" stroke-width=".25em"/>
      <rect x="0" y="750" width="375" height="187.5" stroke-width="37.5"/>
      <g transform="scale(2)">
        <rect x="0" y="600" width="2.5em" height="1.25em" stroke-width=".25em"/>
      </g>
    </g>
    <!-- �p�[�Z���g -->
    <g transform="translate(2800,0)">
      <text x="-50" y="300" fill="black" stroke="none">Percentages:</text>
      <rect x="0" y="400" width="10%" height="10%" stroke-width="1%"/>
      <rect x="0" y="750" width="400" height="200" stroke-width="31.62"/>
      <g transform="scale(2)">
        <rect x="0" y="600" width="10%" height="10%" stroke-width="1%"/>
      </g>
    </g>
  </g>
</svg>
Example Units
Example Units - demonstrate available options

���̗�� SVG �Ō���i SVG �Ή��u���E�U�̂݁j
 

���̗�̂R�‚̋�`�͐�ΒP�ʎ��ʎq�̈�� "in"�i�C���`�j�̗��p�������Ă���B��̎Q�Ɖ摜�� 96dpi �̃V�X�e���i���� 1 �C���` = 96 ��f�j�Ő������ꂽ���̂Ȃ̂ŁA�C���`�Ŏw�肳�ꂽ��i�̋�`�́A�P�C���`�� 96 ���p�P�ʂł�����̂Ƃ��ė��p�P�ʂɊ��Z���Ďw�肵�����i�̋�`�Ɛ��m�ɓ����傫���ɂȂ��Ă���B�i���ӁF�X�N���[���𑜓x���قȂ�V�X�e���ł͏�i�ƒ��i�̋�`�͈قȂ�傫���ɕ`�悳���ł��낤�j�B���i�̋�`�̓C���`�Ŏw�肳�ꂽ�l���g�傳�ꂽ�Ƃ��ɂǂ��Ȃ邩�������Ă���B

The three rectangles on the left demonstrate the use of one of the absolute unit identifiers, the "in" unit (inch). The reference image above was generated on a 96dpi system (i.e., 1 inch = 96 pixels). Therefore, the topmost rectangle, which is specified in inches, is exactly the same size as the middle rectangle, which is specified in user units such that there are 96 user units for each corresponding inch in the topmost rectangle. (Note: on systems with different screen resolutions, the top and middle rectangles will likely be rendered at different sizes.) The bottom rectangle of the group illustrates what happens when values specified in inches are scaled.

�����̗�̂R�‚̋�`�͑��ΒP�ʎ��ʎq�̈�� "em" �̗��p�������Ă���B�ł��O���� 'g' �v�f�� 'font-size' �v���p�e�B�� 150 �ɐݒ肳��Ă���̂ŁA"1em" �� 150 ���p�P�ʂɓ������B���������āA�P�� "em" �Ŏw�肳�ꂽ��i�̋�`�́A "1em" �� 150 ���p�P�ʂł�����̂Ƃ��ė��p�P�ʂɊ��Z���Ďw�肵�����i�̋�`�Ɛ��m�ɓ����傫���ɂȂ��Ă���B���i�̋�`�� "em" �Ŏw�肳�ꂽ�l���g�傳�ꂽ�Ƃ��ɂǂ��Ȃ邩�������Ă���B

The three rectangles in the middle demonstrate the use of one of the relative unit identifiers, the "em" unit. Because the 'font-size' property has been set to 150 on the outermost 'g' element, each "em" unit is equal to 150 user units. The topmost rectangle, which is specified in "em" units, is exactly the same size as the middle rectangle, which is specified in user units such that there are 150 user units for each corresponding "em" unit in the topmost rectangle. The bottom rectangle of the group illustrates what happens when values specified in "em" units are scaled.

�E�̗�̂R�‚̋�`�̓p�[�Z���g�̗��p�������Ă���B viewBox �����̏����ɂ�藘�p���W�n���ϊ������̂ŁA�r���[�|�[�g�v�f�i���̏ꍇ �ł��O���� svg �v�f �j�ɑ΂���r���[�|�[�g�̑傫���͗��p���W�n�Ɋ��Z���ĕ� 4000, ���� 2000 �ł��邱�Ƃɒ��ӁB�p�[�Z���g�P�ʂŎw�肳�ꂽ��i�̋�`�́A���p�P�ʂɊ��Z���Ďw�肳�ꂽ���i�̋�`�Ɛ��m�ɓ����傫���ɂȂ��Ă���B���ɁA���i�̋�`�� 'stroke-width' �v���p�e�B�� sqrt((���ۂ̕�)**2 + (���ۂ̍���)**2)) / sqrt(2), �� 1% �A���̏ꍇ�� 0.01*sqrt(4000*4000+2000*2000)/sqrt(2) = 31.62 �ɂ���Ă��邱�Ƃɒ��ӁB ���i�̋�`�̓p�[�Z���g�P�ʂŎw�肳�ꂽ�l���g�傳�ꂽ�Ƃ��ɂǂ��Ȃ邩�������Ă���B

The three rectangles on the right demonstrate the use of percentages. Note that the width and height of the viewport in the user coordinate system for the viewport element (in this case, the outermost 'svg' element) are 4000 and 2000, respectively, because processing the viewBox attribute results in a transformed user coordinate system. The topmost rectangle, which is specified in percentage units, is exactly the same size as the middle rectangle, which is specified in equivalent user units. In particular, note that the 'stroke-width' property in the middle rectangle is set to 1% of the sqrt((actual-width)**2 + (actual-height)**2)) / sqrt(2), which in this case is .01*sqrt(4000*4000+2000*2000)/sqrt(2), or 31.62. The bottom rectangle of the group illustrates what happens when values specified in percentage units are scaled.


7.11 �I�u�W�F�N�g�̕�܃{�b�N�X�ɑ΂��đ��ΓI�ȒP��

���̕\�ɋ�����v�f�́A���̌��ʂ̓K�p�ΏۂƂȂ�v�f�� ��܃{�b�N�X �ɑ΂���䗦�Łi���邢�͈ꕔ�̏ꍇ�̓p�[�Z���g�ł��j���W�ƒ�����\���I�v�V�������i�L�[���[�h objectBoundingBox �ɂ���āj�񋟂���F

The following elements offer the option of expressing coordinate values and lengths as fractions (and, in some cases, percentages) of the bounding box (via keyword objectBoundingBox ) on a given element:

�v�f ���� ����
Element Attribute Effect
'linearGradient' gradientUnits="objectBoundingBox" �O���f�[�V�����x�N�g�����w�肷�鑮���i x1, y1, x2, y2 �j���O���f�[�V�������K�p�����v�f�̕�܃{�b�N�X�ɑ΂���䗦���邢�̓p�[�Z���g�ŕ\����Ă��邱�Ƃ��w������B
'linearGradient' gradientUnits="objectBoundingBox" Indicates that the attributes which specify the gradient vector (x1, y1, x2, y2) represent fractions or percentages of the bounding box of the element to which the gradient is applied.
'radialGradient' gradientUnits="objectBoundingBox" ���S���w�肷�鑮���i cx, cy �j�Ɣ��a���w�肷�鑮���i r �j�Əœ_���w�肷�鑮���i fx, fy �j���O���f�[�V�������K�p�����v�f�̕�܃{�b�N�X�ɑ΂���䗦���邢�̓p�[�Z���g�ŕ\����Ă��邱�Ƃ��w������B
'radialGradient' gradientUnits="objectBoundingBox" Indicates that the attributes which specify the center (cx, cy), the radius (r) and focus (fx, fy) represent fractions or percentages of the bounding box of the element to which the gradient is applied.
'pattern' patternUnits="objectBoundingBox" �p�^�[�����ǂ̂悤�ɕ~���l�߂邩���`���鑮���i x, y, width, height �j���p�^�[�����K�p�����v�f�̕�܃{�b�N�X�ɂ���Ċm������邱�Ƃ��w������B
'pattern' patternUnits="objectBoundingBox" Indicates that the attributes which define how to tile the pattern (x, y, width, height) are established using the bounding box of the element to which the pattern is applied.
'pattern' patternContentUnits="objectBoundingBox" �p�^�[���̓��e�ɑ΂��闘�p���W�n���p�^�[�����K�p�����v�f�̕�܃{�b�N�X�ɂ���Ċm������邱�Ƃ��w������B
'pattern' patternContentUnits="objectBoundingBox" Indicates that the user coordinate system for the contents of the pattern is established using the bounding box of the element to which the pattern is applied.
'clipPath' clipPathUnits="objectBoundingBox" 'clipPath' �v�f�̓��e�ɑ΂��闘�p���W�n���N���b�s���O�p�X���K�p�����v�f�̕�܃{�b�N�X�ɂ���Ċm������邱�Ƃ��w������B
'clipPath' clipPathUnits="objectBoundingBox" Indicates that the user coordinate system for the contents of the 'clipPath' element is established using the bounding box of the element to which the clipping path is applied.
'mask' maskUnits="objectBoundingBox" �}�X�N�̈���`���鑮���i x, y, width, height �j���}�X�N���K�p�����v�f�̕�܃{�b�N�X�ɂ���Ċm������邱�Ƃ��w������B �i�󒍁F�Ƃ������Ɍ����ɂ͏����Ă��邪�u��܃{�b�N�X�ɑ΂���䗦���邢�̓p�[�Z���g�ŕ\����Ă��邱�Ƃ��w������v�̈Ӗ��ł��낤�B�j
'mask' maskUnits="objectBoundingBox" Indicates that the attributes which define the masking region (x, y, width, height) is established using the bounding box of the element to which the mask is applied.
'mask' maskContentUnits="objectBoundingBox" 'mask' �v�f�̓��e�ɑ΂��闘�p���W�n���}�X�N���K�p�����v�f�̕�܃{�b�N�X�ɂ���Ċm������邱�Ƃ��w������B
'mask' maskContentUnits="objectBoundingBox" Indicates that the user coordinate system for the contents of the 'mask' element are established using the bounding box of the element to which the mask is applied.
'filter' filterUnits="objectBoundingBox" �t�B���^���ʗ̈� ���`���鑮���i x, y, width, height �j���t�B���^���K�p�����v�f�̕�܃{�b�N�X�ɑ΂���䗦���邢�̓p�[�Z���g�ŕ\����Ă��邱�Ƃ��w������B
'filter' filterUnits="objectBoundingBox" Indicates that the attributes which define the filter effects region (x, y, width, height) represent fractions or percentages of the bounding box of the element to which the filter is applied.
'filter' primitiveUnits="objectBoundingBox" ���n�t�B���^���̎�X�̒����l���t�B���^���K�p�����v�f�̕�܃{�b�N�X�ɑ΂���䗦���邢�̓p�[�Z���g�ŕ\����Ă��邱�Ƃ��w������B
'filter' primitiveUnits="objectBoundingBox" Indicates that the various length values within the filter primitives represent fractions or percentages of the bounding box of the element to which the filter is applied.

�ȉ��̉���ł� ��K�p�v�f �Ƃ�����ŗ^����ꂽ���ʂ��K�p�����v�f���w�����̂Ƃ���B�O���f�[�V��������уp�^�[���̏ꍇ�A��K�p�v�f�͓��Y�O���f�[�V�����^�p�^�[�����Q�Ƃ��� 'fill' ���邢�� 'stroke' �v���p�e�B������ �O���t�B�b�N�X�v�f �ł���B�i �h��v���p�e�B�̌p�� ������B �e�L�X�g�v�f �ɑ΂�����ʂȋK���ɂ‚��Ă� �I�u�W�F�N�g�̕�܃{�b�N�X�ɑ΂��đ��ΓI�ȒP�ʂƃe�L�X�g�v�f ������B�j �N���b�s���O�p�X, �}�X�N, �t�B���^�̏ꍇ�A��K�p�v�f�� �R���e�i�v�f ���邢�� �O���t�B�b�N�X�v�f �ł���B

In the discussion that follows, the term applicable element is the element to which the given effect applies. For gradients and patterns, the applicable element is the graphics element which has its 'fill' or 'stroke' property referencing the given gradient or pattern. (See Inheritance of Painting Properties . For special rules concerning text elements , see the discussion of object bounding box units and text elements .) For clipping paths, masks and filters, the applicable element can be either a container element or a graphics element .

�L�[���[�h objectBoundingBox ���p����ꂽ�ꍇ�A�V�������p���W�n����邽�߂ɒlj��̕ϊ��s�񂪕ϊ��s��̓���q�ɑ}�������̂Ɠ������ʂ������炳���B

When keyword objectBoundingBox is used, then the effect is as if a supplemental transformation matrix were inserted into the list of nested transformation matrixes to create a new user coordinate system.

�܂��A���W (minx, miny) �� (maxx, maxy) ����K�p�v�f�Ƃ��̑S�Ă̎q���Ɋ�Â��Č��肳���B minx, miny, maxx, maxy �͗v�f�̐}�`����߂�̈�ɂ����Ăw�Ƃx���Ƃ蓾��ŏ��^�ő�l�ł���B�������A�����͔�K�p�v�f�̗��p���W�n�ɂ�����l�Ƃ��Č��肳���B��܃{�b�N�X�Ƃ́A��K�p�v�f�Ƃ��̎q���S�̂��͂ށA���p���W�n�̍��W���ɕ��s�ȁA�ŏ��̋�`�ł���B��܃{�b�N�X�̓N���b�s���O, �}�X�N, �t�B���^����, �s�����x, �X�g���[�N�̑����ɗ^����ꂽ�l�Ƃ͊֌W�Ȃ��v�Z�����B�Ȑ����܂ސ}�`�̏ꍇ�A��܃{�b�N�X�͐}�`�̒��_�����ɂƂǂ܂炸�A�Ȑ��S�̂��͂ށB 'text' �v�f�̏ꍇ�A��܃{�b�N�X�̌v�Z�Ɍ����Č����Ίe�O���t�����ꂼ��ʁX�̃O���t�B�b�N�X�v�f�ł�����̂Ƃ��Ĉ����A�S�ẴO���t�͂��̃Z���S�̂��߂���̂Ƃ����B�Ⴆ�Ή������̃e�L�X�g�̏ꍇ�A���ꂼ��̃O���t�͏c�������t�H���g�̃A�Z���g�l�ƃf�B�Z���g�l�����ς��܂Ő�߂Ă�����̂Ƃ��Čv�Z���s����B

First, the (minx,miny) and (maxx,maxy) coordinates are determined for the applicable element and all of its descendants. The values minx, miny, maxx and maxy are determined by computing the maximum extent of the shape of the element in X and Y with respect to the user coordinate system for the applicable element. The bounding box is the tightest fitting rectangle aligned with the axes of the applicable element's user coordinate system that entirely encloses the applicable element and its descendants. The bounding box is computed exclusive of any values for clipping, masking, filter effects, opacity and stroke-width. For curved shapes, the bounding box encloses all portions of the shape, not just end points. For 'text' elements, for the purposes of the bounding box calculation, each glyph is treated as a separate graphics element. The calculations assume that all glyphs occupy the full glyph cell. For example, for horizontal text, the calculations assume that each glyph extends vertically to the full ascent and descent values for the font.

�V�������p���W�n�̍��W (0,0), (1,1) �� ��K�p�v�f�̗��p���W�n�ɂ������܃{�b�N�X�̊p (minx,miny), (maxx,maxy) �Ɏʑ������i�����j�B�قƂ�ǂ̏󋵂ł́A���̕ϊ��s��Ő��m�Ȍ��ʂ����������F

Then, coordinate (0,0) in the new user coordinate system is mapped to the (minx,miny) corner of the tight bounding box within the user coordinate system of the applicable element and coordinate (1,1) in the new user coordinate system is mapped to the (maxx,maxy) corner of the tight bounding box of the applicable element. In most situations, the following transformation matrix produces the correct effect:

[ (maxx-minx) 0 0 (maxy-miny) minx miny ]

 

�p�[�Z���g���O���f�[�V�����x�N�g��, �p�^�[���^�C��, �t�B���^�̈�, �}�X�N�̈���`���鑮���ɗp����ꂽ�ꍇ�A�p�[�Z���g�͑Ή����铯���\�i�l������킷�i�Ⴆ�� 50% �� 0.5 ���Ӗ�����j�B �p�[�Z���g�� 'pattern', 'clipPath', 'mask' 'filter' �v�f�̓��e�ɗp����ꂽ�ꍇ�A�����̒l�� �P�� �Œ�`���ꂽ�p�[�Z���g�Ɋւ��鏈���K���ɏ]���Ĉ�����B

When percentages are used with attributes that define the gradient vector, the pattern tile, the filter region or the masking region, a percentage represents the same value as the corresponding decimal value (e.g., 50% means the same as 0.5). If percentages are used within the content of a 'pattern', 'clipPath', 'mask' or 'filter' element, these values are treated according to the processing rules for percentages as defined in Units .

�I�u�W�F�N�g�̕�܃{�b�N�X�ɑ΂���䗦���邢�̓p�[�Z���g�Ƃ��ċL�q�����l�ɂ́A�C�ӂ̐��l���w�肷�邱�Ƃ��ł���B���ɁA 0 ���� 1 �͈̔͊O�̎����� 0% ���� 100% �͈̔͊O�̃p�[�Z���g���w�肵�Ă��悢�B

Any numeric value can be specified for values expressed as a fraction or percentage of object bounding box units. In particular, fractions less are zero or greater than one and percentages less than 0% or greater than 100% can be specified.

�L�[���[�h objectBoundingBox ���A�������␂�����̂悤�ȁA��K�p�v�f�̊􉽂����⍂���������Ȃ��ꍇ�ɗp����ׂ��ł͂Ȃ��B���Ƃ����̐��̃X�g���[�N�ɂO�łȂ��������w�肳��Ă��āA���Ž��ۂɑ����������ĕ\������Ă���Ƃ��Ă��A�X�g���[�N�̑����͕�܃{�b�N�X�̌v�Z�ł͖��������B objectBoundingBox �����⍂���̂Ȃ��􉽂����”�K�p�v�f�Ɏw�肳��Ă���ꍇ�A�^����ꂽ���ʁi�Ⴆ�΃O���f�[�V������t�B���^�j�͖��������B

Keyword objectBoundingBox should not be used when the geometry of the applicable element has no width or no height, such as the case of a horizontal or vertical line, even when the line has actual thickness when viewed due to having a non-zero stroke width since stroke width is ignored for bounding box calculations. When the geometry of the applicable element has no width or height and objectBoundingBox is specified, then the given effect (e.g., a gradient or a filter) will be ignored.


7.12 �n�����W�n

SVG ���e�W�F�l���[�^�� SVG �ɕ��������ꂽ�n�}�������t�`�Ƃ̊Ԃ̑��݉^�p�����͂��邽�߁A SVG �����̐����ɗ��p�������W�n�ɂ‚��ċL�q���鋤�ʂ̃��^�f�[�^��`�̗��p�����コ���B

In order to allow interoperability between SVG content generators and user agents dealing with maps encoded in SVG, SVG encourages the use of a common metadata definition for describing the coordinate system used to generate SVG documents.

���̂悤�ȃ��^�f�[�^�͒n�}���L�q����ŏ�ʂ� 'svg' �v�f�� 'metadata' �v�f�̉��ɒlj������ׂ��ł���B������ SVG �n�}�̐����ɗ��p�������W�Q�ƌn�i Coordinate Reference System - CRS �j���`���� RDF �ɂ��L�q�ō\�������B

Such metadata should be added under the 'metadata' element of the topmost 'svg' element describing the map. They consist of an RDF description of the Coordinate Reference System definition used to generate the SVG map.

���̒�`�͍��W�Q�ƌn�ɂ‚��Ă� OpenGIS �����i the OpenGIS Recommendation on the Definition of Coordinate Reference System �j [OpenGIS Coordinate Systems] �ɏq�ׂ��Ă��� XML ���@�ɓK�����Ă���ׂ��ł���B SVG �ŗ��p�����񎟌��f�[�^�𐳂����ϊ����邽�߂ɂ́A CRS �� ProjectedCRS �܂��� Geographic2dCRS �̃T�u�^�C�v�łȂ���΂Ȃ�Ȃ��B CRS �n�}�̑����W���� SVG �̂w���ցA�����W���� SVG �̂x���֎ʑ������B���ӂɒlj��̃A�t�B���ϊ������̎ʑ��̉ߒ��ɓK�p���Ă��ǂ��B���̒lj��̕ϊ��� SVG �� transform �����ŋL�q����A OpenGIS �� 'CoordinateReferenceSystem' �v�f�ɒlj��ł���B 'CoordinateReferenceSystem' �v�f�� transform �����͕ϊ����t�@�C���̃f�[�^�ɓK�p�����ׂ��ł��邱�Ƃ��w�����Ă���킯�ł͂Ȃ��A�P�� SVG �ɕ��������ꂽ�Ƃ��ɂ��̕ϊ����f�[�^�ɓK�p���ꂽ���Ƃ��L�q���Ă���ɂ����Ȃ����Ƃɒ��ӁB

The definition should be conformant to the XML grammar described in the OpenGIS Recommendation on the Definition of Coordinate Reference System [OpenGIS Coordinate Systems] . In order to correctly map the 2-dimensional data used by SVG, the CRS must be of subtype ProjectedCRS or Geographic2dCRS. The first axis of the described CRS maps the SVG x-axis and the second axis maps the SVG y-axis. Optionally, an additional affine transformation may have been applied during this mapping. This additional transformation is described by an SVG transform attribute that can be added to the OpenGIS 'CoordinateReferenceSystem' element. Note that the transform attribute on the 'CoordinateReferenceSystem' does not indicate that a transformation should be applied to the data within the file, it simply describes the transformation that was applied to the data when being encoded in SVG.

�ȉ��� SVG �̕ϊ��i transform �j�����𗘗p����R�‚̓T�^����q�ׂ�B

There are three typical uses for the SVG transform attribute. These are described below and used in the examples.

���̗l�ȃ��^�f�[�^�̎�v�ȖړI�́A������ SVG �������d�ˍ��킹�����‚̕����ɍ����������邱�Ƃ��t�`�Ɏ������邱�Ƃł���B�Q�‚̒n�}���������W�Q�ƌn��`���Q�Ƃ��A���� SVG �̕ϊ����������‚Ȃ�΁A�������ē��e�����ɏd�ˍ��킹���邱�Ƃ͖����ł���B���������̒n�}���قȂ������W�Q�ƌn���Q�Ƃ���ꍇ��قȂ��� SVG �̕ϊ����������ꍇ�A�n�}�쐬�ɐ�剻���ꂽ�t�`�Ȃ�΍��W�f�[�^�̕ϊ������邱�Ƃ��”\�ł��낤�B�������Ȃ���A��ʓI�� SVG-�t�`�ɂ͂��̂悤�ȕϊ������⃁�^�f�[�^�̔F���������v������Ă��Ȃ��B

The main purpose of such metadata is to indicate to the User Agent that two or more SVG documents can be overlayed or merged into a single document. Obviously, if two maps reference the same Coordinate Reference System definition and have the same SVG transform attribute value then they can be overlayed without reprojecting the data. If the maps reference different Coordinate Reference Systems and/or have different SVG transform attribute values, then a specialized cartographic User Agent may choose to transform the coordinate data to overlay the data. However, typical SVG user agents are not required to perform these types of transformations, or even recognize the metadata.

�ȉ��ɕ����ŗ��p�������W�n�� URI �ɂ���ċL�q������W���^�f�[�^�ɂ‚��Ă̊ȒP�ȗ��������B

Below is a simple example of the coordinate metadata, which describes the coordinate system used by the document via a URI.

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
          "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100" height="100" viewBox="0 0 1000 1000" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
    <metadata>
      <rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
               xmlns:crs = "http://www.ogc.org/crs"
               xmlns:svg="http://www.w3.org/2000/svg">
        <rdf:Description>
          <!-- ���W�Q�ƌn�� URI ��ʂ��ċL�q�����B-->
          <crs:CoordinateReferenceSystem svg:transform="rotate(-90)"
                 rdf:resource="http://www.example.org/srs/epsg.xml#4326"/>
        </rdf:Description>
      </rdf:RDF>
    </metadata>
    <!-- The actual map content -->
</svg>

��Ԗڂ̗�ł͍��W�n���L�q������m�̎��ʎq��p���Ă���B�����ɂ�������W�ɂ͂��łɗ^����ꂽ�ϊ����K�p����Ă��邱�Ƃɒ��ӁB

The second example uses a well-known identifier to describe the coordinate system. Note that the coordinates used in the document have had the supplied transform applied.

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
          "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100" height="100" viewBox="0 0 1000 1000" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
    <metadata>
      <rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
               xmlns:crs = "http://www.ogc.org/crs"
               xmlns:svg="http://www.w3.org/2000/svg">
        <rdf:Description>
          <!-- ���m�̍��W�Q�ƌn�̏ꍇ��
               CRS �̋L�q�͎��ʎq�i 'Identifier' �j�ŏ\���ɂȂ�B-->
          <crs:CoordinateReferenceSystem svg:transform="rotate(-90) scale(100, 100)">
            <crs:Identifier>
              <crs:code>4326</crs:code>
              <crs:codeSpace>EPSG</crs:codeSpace>
              <crs:edition>5.2</crs:edition>
            </crs:Identifier>
          </crs:CoordinateReferenceSystem>
        </rdf:Description>
      </rdf:RDF>
    </metadata>
    <!-- The actual map content -->
</svg>

�O�Ԗڂ̗�ł͍��W�n�̒�`�� SVG �������Ɋ��S�Ɋ܂܂�Ă���B

The third example defines the coordinate system completely within the SVG document.

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
          "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100" height="100" viewBox="0 0 1000 1000" version="1.1"
     xmlns="http://www.w3.org/2000/svg">
    <metadata>
      <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
               xmlns:crs="http://www.ogc.org/crs"
               xmlns:svg="http://www.w3.org/2000/svg">
        <rdf:Description>
          <!-- ���� CRS �ɂ‚��Ă͑S�Ă���`�����ׂ��ł��� -->
          <crs:CoordinateReferenceSystem svg:transform="scale(1,-1)">
            <crs:NameSet>
              <crs:name>Mercator projection of WGS84</crs:name>
            </crs:NameSet>
            <crs:ProjectedCRS>
              <!-- CRS �̎����̒�` -->
              <crs:CartesianCoordinateSystem>
                <crs:dimension>2</crs:dimension>
                <crs:CoordinateAxis>
                  <crs:axisDirection>north</crs:axisDirection>
                  <crs:AngularUnit>
                    <crs:Identifier>
                      <crs:code>9108</crs:code>
                      <crs:codeSpace>EPSG</crs:codeSpace>
                      <crs:edition>5.2</crs:edition>
                    </crs:Identifier>
                  </crs:AngularUnit>
                </crs:CoordinateAxis>
                <crs:CoordinateAxis>
                  <crs:axisDirection>east</crs:axisDirection>
                  <crs:AngularUnit>
                    <crs:Identifier>
                      <crs:code>9108</crs:code>
                      <crs:codeSpace>EPSG</crs:codeSpace>
                      <crs:edition>5.2</crs:edition>
                    </crs:Identifier>
                  </crs:AngularUnit>
                </crs:CoordinateAxis>
              </crs:CartesianCoordinateSystem>
              <crs:CoordinateReferenceSystem>
                <!-- the reference system of that projected system is
                           WGS84 which is EPSG 4326 in EPSG codeSpace -->
                <crs:NameSet>
                  <crs:name>WGS 84</crs:name>
                </crs:NameSet>
                <crs:Identifier>
                  <crs:code>4326</crs:code>
                  <crs:codeSpace>EPSG</crs:codeSpace>
                  <crs:edition>5.2</crs:edition>
                </crs:Identifier>
              </crs:CoordinateReferenceSystem>
              <crs:CoordinateTransformationDefinition>
                <crs:sourceDimensions>2</crs:sourceDimensions>
                <crs:targetDimensions>2</crs:targetDimensions>
                <crs:ParameterizedTransformation>
                  <crs:TransformationMethod>
                    <!-- the projection is a Mercator projection which is
                          EPSG 9805 in EPSG codeSpace -->
                    <crs:NameSet>
                      <crs:name>Mercator</crs:name>
                    </crs:NameSet>
                    <crs:Identifier>
                      <crs:code>9805</crs:code>
                      <crs:codeSpace>EPSG</crs:codeSpace>
                      <crs:edition>5.2</crs:edition>
                    </crs:Identifier>
                    <crs:description>Mercator (2SP)</crs:description>
                  </crs:TransformationMethod>
                  <crs:Parameter>
                    <crs:NameSet>
                      <crs:name>Latitude of 1st standart parallel</crs:name>
                    </crs:NameSet>
                    <crs:Identifier>
                      <crs:code>8823</crs:code>
                      <crs:codeSpace>EPSG</crs:codeSpace>
                      <crs:edition>5.2</crs:edition>
                    </crs:Identifier>
                    <crs:value>0</crs:value>
                  </crs:Parameter>
                  <crs:Parameter>
                    <crs:NameSet>
                      <crs:name>Longitude of natural origin</crs:name>
                    </crs:NameSet>
                    <crs:Identifier>
                      <crs:code>8802</crs:code>
                      <crs:codeSpace>EPSG</crs:codeSpace>
                      <crs:edition>5.2</crs:edition>
                    </crs:Identifier>
                    <crs:value>0</crs:value>
                  </crs:Parameter>
                  <crs:Parameter>
                    <crs:NameSet>
                      <crs:name>False Easting</crs:name>
                    </crs:NameSet>
                    <crs:Identifier>
                      <crs:code>8806</crs:code>
                      <crs:codeSpace>EPSG</crs:codeSpace>
                      <crs:edition>5.2</crs:edition>
                    </crs:Identifier>
                    <crs:value>0</crs:value>
                  </crs:Parameter>
                  <crs:Parameter>
                    <crs:NameSet>
                      <crs:name>False Northing</crs:name>
                    </crs:NameSet>
                    <crs:Identifier>
                      <crs:code>8807</crs:code>
                      <crs:codeSpace>EPSG</crs:codeSpace>
                      <crs:edition>5.2</crs:edition>
                    </crs:Identifier>
                    <crs:value>0</crs:value>
                  </crs:Parameter>
                </crs:ParameterizedTransformation>
              </crs:CoordinateTransformationDefinition>
            </crs:ProjectedCRS>
          </crs:CoordinateReferenceSystem>
        </rdf:Description>
      </rdf:RDF>
    </metadata>
    <!-- ���ۂ̒n�}���e -->
</svg>

7.13 Viewport �������W���[��

Viewport �������W���[���� Viewport.attrib �����Z�b�g���`����B

The Viewport Attribute Module defines the Viewport.attrib attribute set.

�R���N�V������ �R���N�V�����Ɋ܂܂�鑮��
Viewport.attrib clip, overflow

7.14 DOM �C���^�[�t�F�[�X

���ɋ�����C���^�[�t�F�[�X���ȉ��Œ�`�����F SVGPoint, SVGPointList, SVGMatrix, SVGTransform, SVGTransformList, SVGAnimatedTransformList, SVGPreserveAspectRatio, SVGAnimatedPreserveAspectRatio


�C���^�[�t�F�[�X SVGPoint

SVG DOM �C���^�[�t�F�[�X�̑����� SVGPoint �N���X�̃I�u�W�F�N�g���Q�Ƃ���B SVGPoint �͍��W (x,y) ��\���B SVGPoint ���s�񉉎Z�ŗp������Ƃ��͎��̌`���̃x�N�g���Ƃ��Ĉ�����F

[x]
[y]
[1]

IDL ��`
interface SVGPoint { 
           attribute float x;
                       // raises DOMException on setting
           attribute float y;
                       // raises DOMException on setting
  SVGPoint matrixTransform ( in SVGMatrix matrix );
};

����
float x
�w���W�B
�ݒ莞�̗�O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
float y
�x���W�B
�ݒ莞�̗�O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
���\�b�h
matrixTransform

���� SVGPoint �I�u�W�F�N�g�� 2x3 �s��̕ϊ���K�p���A�ϊ����ꂽ�V���� SVGPoint �I�u�W�F�N�g��Ԃ��F

newpoint = matrix * thispoint
�p�����^
in SVGMatrix matrix ���� SVGPoint �I�u�W�F�N�g�ɓK�p�����s��B
�߂�l
SVGPoint �V���� SVGPoint �I�u�W�F�N�g�B
��O����

�C���^�[�t�F�[�X SVGPointList

���̃C���^�[�t�F�[�X�� SVGPoint �I�u�W�F�N�g�̃��X�g���`����B

SVGPointList �͑��� SVGxxxList �C���^�[�t�F�[�X�Ɠ��������ƃ��\�b�h�����B��X�� SVGxxxList �C���^�[�t�F�[�X�̎����ɂ����ẮA�P��̊��N���X�̗��p���l������B


IDL ��`
interface SVGPointList { 
  readonly attribute unsigned long numberOfItems;
  void   clear (  )
                  raises( DOMException );
  SVGPoint initialize ( in SVGPoint newItem )
                  raises( DOMException, SVGException );
  SVGPoint getItem ( in unsigned long index )
                  raises( DOMException );
  SVGPoint insertItemBefore ( in SVGPoint newItem, in unsigned long index )
                  raises( DOMException, SVGException );
  SVGPoint replaceItem ( in SVGPoint newItem, in unsigned long index )
                  raises( DOMException, SVGException );
  SVGPoint removeItem ( in unsigned long index )
                  raises( DOMException );
  SVGPoint appendItem ( in SVGPoint newItem )
                  raises( DOMException, SVGException );
};

����
readonly unsigned long numberOfItems
���X�g���̍��ڐ��B
���\�b�h
clear
���X�g���ɑ��݂���S�Ă̍��ڂ���菜���A��ɂ���B
�p�����^����
�߂�l����
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
initialize
���X�g���ɑ��݂���S�Ă̍��ڂ���菜���ċ�ɂ�����A�p�����^�Ŏw�肳�ꂽ��‚̍��ڂ����‚悤����������B
�i �G���[�^ �F����lj��j �}������鍀�ڂ����Ƀ��X�g���ɑ��݂���ꍇ�A�������񃊃X�g�����菜���ꂽ��ɑ}�������B���̂Ƃ��A�}������鍀�ڂ͍��ڂ��ꎩ�g�ł���A�����͂���Ȃ��B
�p�����^
in SVGPoint newItem ���X�g�̗B��̍��ڂƂȂ���́B
�߂�l
SVGPoint ���X�g�ɑ}������鍀�ځB
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
SVGException
SVG_WRONG_TYPE_ERR �F�p�����^ newItem �̃I�u�W�F�N�g�^�����X�g�ɍ���Ȃ��Ƃ��Ƀ��C�Y�����B
getItem
���X�g���̎w�肳�ꂽ���ڂ�Ԃ��B
�i �G���[�^ �F����lj��j �Ԃ���鍀�ڂ͕����ł͂Ȃ��A���ڂ��ꎩ�g�ɂȂ�B���ڂɉ�������ύX�͑����Ƀ��X�g�ɔ��f����B
�p�����^
in unsigned long index ���X�g����Ԃ���鍀�ڂ��w�肷��Y���B�ŏ��̍��ڂ��Y���O�B
�߂�l
SVGPoint �w�肳�ꂽ���ځB
��O
DOMException
INDEX_SIZE_ERR �F�Y�������܂��� numberOfItems �ȏ�̂Ƃ��Ƀ��C�Y�����B
insertItemBefore
���X�g���̎w�肳�ꂽ�ʒu�ɍ��ڂ�}������B�ŏ��̍��ڂ��Y���O�B newItem �����łɉ��炩�̃��X�g���ɑ��݂��Ă����ꍇ�́A���̃��X�g�ɑ}�������O�ɂ��̃��X�g�����菜�����B
�i �G���[�^ �F����lj��j �}������鍀�ڂ͍��ڂ��ꎩ�g�ł���A�����͂���Ȃ��B
�p�����^
in SVGPoint newItem ���X�g�ɑ}������鍀�ځB
in unsigned long index ���̓Y���̍��ڂ̑O�ɐV�������ڂ��}�������B�ŏ��̍��ڂ��Y���O�B
�Y�����O�Ȃ�ΐV�������ڂ̓��X�g�̐擪�ɑ}�������B�Y���� numberOfItems �ȏ�Ȃ�ΐV�������ڂ̓��X�g�̖����ɑ}�������B
�߂�l
SVGPoint �}�����ꂽ���ځB
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
SVGException
SVG_WRONG_TYPE_ERR �F�p�����^ newItem �̃I�u�W�F�N�g�^�����X�g�ɍ���Ȃ��Ƃ��Ƀ��C�Y�����B
replaceItem
���X�g���ɑ��݂��鍀�ڂ�V�������ڂɒu��������B newItem �����łɉ��炩�̃��X�g���ɑ��݂��Ă����ꍇ�́A���̃��X�g�ɑ}�������O�ɂ��̃��X�g�����菜�����B
�i �G���[�^ �F����lj��j �}������鍀�ڂ͍��ڂ��ꎩ�g�ł���A�����͂���Ȃ��B
�p�����^
in SVGPoint newItem ���X�g�ɑ}������鍀�ځB
in unsigned long index �u�������鍀�ڂ̓Y���B�ŏ��̍��ڂ��Y���O�B
�߂�l
SVGPoint �}�����ꂽ���ځB
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
INDEX_SIZE_ERR �F�Y�������܂��� numberOfItems �ȏ�̂Ƃ��Ƀ��C�Y�����B
SVGException
SVG_WRONG_TYPE_ERR �F�p�����^ newItem �̃I�u�W�F�N�g�^�����X�g�ɍ���Ȃ��Ƃ��Ƀ��C�Y�����B
removeItem
���X�g���獀�ڂ���菜���B
�p�����^
in unsigned long index ��菜����鍀�ڂ̓Y���B�ŏ��̍��ڂ��Y���O�B
�߂�l
SVGPoint ��菜���ꂽ���ځB
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
INDEX_SIZE_ERR �F�Y�������܂��� numberOfItems �ȏ�̂Ƃ��Ƀ��C�Y�����B
appendItem
newItem �����łɉ��炩�̃��X�g���ɑ��݂��Ă����ꍇ�́A���̃��X�g�ɒlj������O�ɂ��̃��X�g�����菜�����B
�i �G���[�^ �F����lj��j �}������鍀�ڂ͍��ڂ��ꎩ�g�ł���A�����͂���Ȃ��B
�p�����^
in SVGPoint newItem ���X�g�ɑ}�����鍀�ځB�ŏ��̍��ڂ��Y���O�B
�߂�l
SVGPoint �}�����ꂽ���ځB
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
SVGException
SVG_WRONG_TYPE_ERR �F�p�����^ newItem �̃I�u�W�F�N�g�^�����X�g�ɍ���Ȃ��Ƃ��Ƀ��C�Y�����B

�C���^�[�t�F�[�X SVGMatrix

SVG �̃O���t�B�b�N�X���Z�ł͎��̌`���� 2x3 �s�񂪑��p�����F

[a c e]
[b d f]

�s��̎Z�p���s���Ƃ��� 3x3 �s��̌`���Ɋg�������F

[a c e]
[b d f]
[0 0 1]

IDL ��`
interface SVGMatrix { 
           attribute float a;
                       // raises DOMException on setting
           attribute float b;
                       // raises DOMException on setting
           attribute float c;
                       // raises DOMException on setting
           attribute float d;
                       // raises DOMException on setting
           attribute float e;
                       // raises DOMException on setting
           attribute float f;
                       // raises DOMException on setting
  SVGMatrix multiply ( in SVGMatrix secondMatrix );
  SVGMatrix inverse (  )
                  raises( SVGException );
  SVGMatrix translate ( in float x, in float y );
  SVGMatrix scale ( in float scaleFactor );
  SVGMatrix scaleNonUniform ( in float scaleFactorX, in float scaleFactorY );
  SVGMatrix rotate ( in float angle );
  SVGMatrix rotateFromVector ( in float x, in float y )
                  raises( SVGException );
  SVGMatrix flipX (  );
  SVGMatrix flipY (  );
  SVGMatrix skewX ( in float angle );
  SVGMatrix skewY ( in float angle );
};

����
float a
�s��� a �����B
�ݒ莞�̗�O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
float b
�s��� b �����B
�ݒ莞�̗�O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
float c
�s��� c �����B
�ݒ莞�̗�O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
float d
�s��� d �����B
�ݒ莞�̗�O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
float e
�s��� e �����B
�ݒ莞�̗�O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
float f
�s��� f �����B
�ݒ莞�̗�O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
���\�b�h
multiply
�s��̐ω��Z���s���B���̍s��ɑ΂��ʂ̍s��ɂ���u�ς��Ƃ��A���ʂ��V�����s��Ƃ��ĕԂ����B �i�󒍁F This matrix is post-multiplied by another matrix, returning the resulting new matrix. - ���̕��ʂ���́A���̃I�u�W�F�N�g�ɂ�����s�񎩑͕̂ύX�����̂��ǂ����͂����肵�Ȃ��B��Ɍ���郁�\�b�h�����l�ł���B�j
�p�����^
in SVGMatrix secondMatrix ���̍s��ɑ΂���u�ς��Ƃ�s��B
�߂�l
SVGMatrix ���ʂ̍s��B
��O����
inverse
�t�s���Ԃ��B
�p�����^����
�߂�l
SVGMatrix �t�s��B
��O
SVGException
SVG_MATRIX_NOT_INVERTABLE �F�t�s�񂪑��݂��Ȃ��Ƃ��Ƀ��C�Y�����B
translate
���݂̍s��ɑ΂����i�ϊ��ɂ���u�ς��Ƃ�A���ʂ̍s���Ԃ��B
�p�����^
in float x �w�̕��i�ʁB
in float y �x�̕��i�ʁB
�߂�l
SVGMatrix ���ʂ̍s��B
��O����
scale
���݂̍s��ɑ΂���l�ȐL�k�ϊ��ɂ���u�ς��Ƃ�A���ʂ̍s���Ԃ��B
�p�����^
in float scaleFactor �w�Ƃx�̐L�k�{���B
�߂�l
SVGMatrix ���ʂ̍s��B
��O����
scaleNonUniform
���݂̍s��ɑ΂���l�łȂ��L�k�ϊ��ɂ���u�ς��Ƃ�A���ʂ̍s���Ԃ��B
�p�����^
in float scaleFactorX �w�̐L�k�{���B
in float scaleFactorY �x�̐L�k�{���B
�߂�l
SVGMatrix ���ʂ̍s��B
��O����
rotate
���݂̍s��ɑ΂���]�ϊ��ɂ���u�ς��Ƃ�A���ʂ̍s���Ԃ��B
�p�����^
in float angle ��]�p�x�B
�߂�l
SVGMatrix ���ʂ̍s��B
��O����
rotateFromVector
���݂̍s��ɑ΂���]�ϊ��ɂ���u�ς��Ƃ�A���ʂ̍s���Ԃ��B ��]�p�x�� (+/-) atan(y/x) �ŗ^������B�p�x�̐����̓x�N�g�� (x,y) �̌����Œ�߂���B
�p�����^
in float x �x�N�g�� (x,y) �̂w���W�B�O�ł����Ă͂Ȃ�Ȃ��B
in float y �x�N�g�� (x,y) �̂x���W�B�O�ł����Ă͂Ȃ�Ȃ��B
�߂�l
SVGMatrix ���ʂ̍s��B
��O
SVGException
SVG_INVALID_VALUE_ERR �F�p�����^�̂����ꂩ�������Ȓl�̂Ƃ��Ƀ��C�Y�����B
flipX
���݂̍s��ɑ΂��ϊ� [-1 0 0 1 0 0] �ɂ���u�ς��Ƃ�A���ʂ̍s���Ԃ��B
�p�����^����
�߂�l
SVGMatrix ���ʂ̍s��B
��O����
flipY
���݂̍s��ɑ΂��ϊ� [1 0 0 -1 0 0] �ɂ���u�ς��Ƃ�A���ʂ̍s���Ԃ��B
�p�����^����
�߂�l
SVGMatrix ���ʂ̍s��B
��O����
skewX
���݂̍s��ɑ΂��w���ɉ����ΌX�ϊ��ɂ���u�ς��Ƃ�A���ʂ̍s���Ԃ��B
�p�����^
in float angle �ΌX�p�x�B
�߂�l
SVGMatrix ���ʂ̍s��B
��O����
skewY
���݂̍s��ɑ΂��x���ɉ����ΌX�ϊ��ɂ���u�ς��Ƃ�A���ʂ̍s���Ԃ��B
�p�����^
in float angle �ΌX�p�x�B
�߂�l
SVGMatrix ���ʂ̍s��B
��O����

�C���^�[�t�F�[�X SVGTransform

SVGTransform �� SVGTransformList �̌X�̕ϊ������ɑ΂���C���^�[�t�F�[�X�ł���B���� SVGTransform �I�u�W�F�N�g�� transform �����̎w��ɂ������ˆ�‚̕ϊ������i�Ⴆ�� "scale(..)" �� "matrix(...)" �Ȃǁj�ɑΉ�����B


IDL ��`
interface SVGTransform { 
  // Transform Types
  const unsigned short SVG_TRANSFORM_UNKNOWN   = 0;
  const unsigned short SVG_TRANSFORM_MATRIX    = 1;
  const unsigned short SVG_TRANSFORM_TRANSLATE = 2;
  const unsigned short SVG_TRANSFORM_SCALE     = 3;
  const unsigned short SVG_TRANSFORM_ROTATE    = 4;
  const unsigned short SVG_TRANSFORM_SKEWX     = 5;
  const unsigned short SVG_TRANSFORM_SKEWY     = 6;
  readonly attribute unsigned short type;
  readonly attribute SVGMatrix matrix;
  readonly attribute float angle;
  void setMatrix ( in SVGMatrix matrix );
                  raises( DOMException );
  void setTranslate ( in float tx, in float ty );
                  raises( DOMException );
  void setScale ( in float sx, in float sy );
                  raises( DOMException );
  void setRotate ( in float angle, in float cx, in float cy );
                  raises( DOMException );
  void setSkewX ( in float angle );
                  raises( DOMException );
  void setSkewY ( in float angle );
                  raises( DOMException );
};

��`�O���[�v Transform Types
��`����Ă���萔
SVG_TRANSFORM_UNKNOWN �^�C�v����`�ς݂̂��̂ł͂Ȃ����Ƃ�\���B�V�����l�ɂ��̃^�C�v���߂���A�����̒l�����̃^�C�v�ɕύX���鎎�݂͖����ł���B
SVG_TRANSFORM_MATRIX "matrix(...)" �ϊ��B
SVG_TRANSFORM_TRANSLATE "translate(...)" �ϊ��B
SVG_TRANSFORM_SCALE "scale(...)" �ϊ��B
SVG_TRANSFORM_ROTATE "rotate(...)" �ϊ��B
SVG_TRANSFORM_SKEWX "skewX(...)" �ϊ��B
SVG_TRANSFORM_SKEWY "skewY(...)" �ϊ��B
����
readonly unsigned short type
��� Transform Types �Œ�`���ꂽ�萔�̂����ꂩ�B
readonly SVGMatrix matrix
���̕ϊ���\������s��B �i �G���[�^ �F����lj��j �s��I�u�W�F�N�g�͊�����Ԃɂ���B���Ȃ킿�A SVGTransform �I�u�W�F�N�g�ɉ�������C�ӂ̕ύX�͑����ɍs��I�u�W�F�N�g�ɔ��f�����B
SVG_TRANSFORM_MATRIX �ɑ΂��ẮA�s��͗��p�҂���^������ a, b, c, d, e, f �����̒l���܂ށB
SVG_TRANSFORM_TRANSLATE �ɑ΂��ẮA e, f �����i�ʂ�\���i a=1, b=0, c=0, d=1 �j�B
SVG_TRANSFORM_SCALE �ɑ΂��ẮA a, d ���L�k�{����\���i b=0, c=0, e=0, f=0 �j�B
SVG_TRANSFORM_ROTATE, SVG_TRANSFORM_SKEWX, SVG_TRANSFORM_SKEWY �ɑ΂��ẮA a, b, c, d ���^����ꂽ�ϊ���\���i e=0, f=0 �j�B
readonly float angle
SVG_TRANSFORM_ROTATE, SVG_TRANSFORM_SKEWX, SVG_TRANSFORM_SKEWY �ɑ΂��闘�ւ̂��߂̑����B�w�肳�ꂽ�p�x��ێ�����B
SVG_TRANSFORM_MATRIX, SVG_TRANSFORM_TRANSLATE, SVG_TRANSFORM_SCALE �ɂ����� angle �͂O�ɂ����B
���\�b�h
setMatrix
�V�����ϊ����߂�s����p�����^�Ƃ��āA�ϊ��^�C�v�� SVG_TRANSFORM_MATRIX �ɐݒ肷��B �i �G���[�^ �F����lj��j �p�����^ matrix ����̒l�͕��������B matrix �� SVGTransform.matrix �ɒu������邱�Ƃ͖����B
�p�����^
in SVGMatrix matrix �ϊ���^����V�����s��B
�߂�l����
��O����
��O
DOMException
DOMException NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
setTranslate
���i�ʂ��߂� tx, ty ���p�����^�Ƃ��āA�ϊ��^�C�v�� SVG_TRANSFORM_TRANSLATE �ɐݒ肷��B
�p�����^
in float tx �w�̕��i�ʁB
in float ty �x�̕��i�ʁB
�߂�l����
��O����
��O
DOMException
DOMException NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
setScale
�L�k�{�����߂� sx, sy ���p�����^�Ƃ��āA�ϊ��^�C�v�� SVG_TRANSFORM_SCALE �ɐݒ肷��B
�p�����^
in float sx �w�̐L�k�{���B
in float sy �x�̐L�k�{���B
�߂�l����
��O����
��O
DOMException
DOMException NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
setRotate
��]�p�x���߂� angle �ƃI�v�V�����̉�]�̒��S���߂� cx, cy ���p�����^�Ƃ��āA�ϊ��^�C�v�� SVG_TRANSFORM_ROTATE �ɐݒ肷��B
�p�����^
in float angle ��]�p�x�B
in float cx ��]�̒��S�̂w���W�B
in float cy ��]�̒��S�̂x���W�B
�߂�l����
��O����
��O
DOMException
DOMException NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
setSkewX
�ΌX�p�x���߂� angle ���p�����^�Ƃ��āA�ϊ��^�C�v�� SVG_TRANSFORM_SKEWX �ɐݒ肷��B
�p�����^
in float angle �ΌX�p�x�B
�߂�l����
��O����
��O
DOMException
DOMException NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
setSkewY
�ΌX�p�x���߂� angle ���p�����^�Ƃ��āA�ϊ��^�C�v�� SVG_TRANSFORM_SKEWX �ɐݒ肷��B
�p�����^
in float angle �ΌX�p�x�B
�߂�l����
��O����
��O
DOMException
DOMException NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B

�C���^�[�t�F�[�X SVGTransformList

���̃C���^�[�t�F�[�X�� SVGTransform �I�u�W�F�N�g�̃��X�g���`����B

SVGTransformList �� SVGTransform �C���^�[�t�F�[�X�́A SVG �̗v�f�̑����ŗ��p�”\�� transform �����Ȃǂ́A��A�̕ϊ����w�肷��l�X�ȑ����ɑΉ�����B

SVGTransformList �͑��� SVGxxxList �C���^�[�t�F�[�X�Ɠ��������ƃ��\�b�h�����B��X�� SVGxxxList �C���^�[�t�F�[�X�̎����ɂ����ẮA�P��̊��N���X�̗��p���l������B


IDL ��`
interface SVGTransformList { 
  readonly attribute unsigned long numberOfItems;
  void   clear (  )
                  raises( DOMException );
  SVGTransform initialize ( in SVGTransform newItem )
                  raises( DOMException, SVGException );
  SVGTransform getItem ( in unsigned long index )
                  raises( DOMException );
  SVGTransform insertItemBefore ( in SVGTransform newItem, in unsigned long index )
                  raises( DOMException, SVGException );
  SVGTransform replaceItem ( in SVGTransform newItem, in unsigned long index )
                  raises( DOMException, SVGException );
  SVGTransform removeItem ( in unsigned long index )
                  raises( DOMException );
  SVGTransform appendItem ( in SVGTransform newItem )
                  raises( DOMException, SVGException );
  SVGTransform createSVGTransformFromMatrix ( in SVGMatrix matrix );
  SVGTransform consolidate (  );
                  raises( DOMException );
};

����
readonly unsigned long numberOfItems
���X�g���̍��ڐ��B
���\�b�h
clear
���X�g���ɑ��݂���S�Ă̍��ڂ���菜���ċ�ɂ���B
�p�����^����
�߂�l����
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
initialize
���X�g���ɑ��݂���S�Ă̍��ڂ���菜���ċ�ɂ�����A�p�����^�Ŏw�肳�ꂽ��‚̍��ڂ����‚悤����������B
�i �G���[�^ �F����lj��j �}������鍀�ڂ����Ƀ��X�g���ɑ��݂���ꍇ�A�������񃊃X�g�����菜���ꂽ��ɑ}�������B���̂Ƃ��A�}������鍀�ڂ͍��ڂ��ꎩ�g�ł���A�����͂���Ȃ��B
�p�����^
in SVGTransform newItem ���X�g�̗B��̍��ڂƂȂ���́B
�߂�l
SVGTransform ���X�g�ɑ}������鍀�ځB
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
SVGException
SVG_WRONG_TYPE_ERR �F�p�����^ newItem �̃I�u�W�F�N�g�^�����X�g�ɍ���Ȃ��Ƃ��Ƀ��C�Y�����B
getItem
���X�g���̎w�肳�ꂽ���ڂ�Ԃ��B
�i �G���[�^ �F����lj��j �Ԃ���鍀�ڂ͕����ł͂Ȃ��A���ڂ��ꎩ�g�ɂȂ�B���ڂɉ�������ύX�͑����Ƀ��X�g�ɔ��f����B
�p�����^
in unsigned long index ���X�g����Ԃ���鍀�ڂ��w�肷��Y���B�ŏ��̍��ڂ��Y���O�B
�߂�l
SVGTransform �w�肳�ꂽ���ځB
��O
DOMException
INDEX_SIZE_ERR �F�Y�������܂��� numberOfItems �ȏ�̂Ƃ��Ƀ��C�Y�����B
insertItemBefore
���X�g���̎w�肳�ꂽ�ʒu�ɍ��ڂ�}������B�ŏ��̍��ڂ��Y���O�B newItem �����łɉ��炩�̃��X�g���ɑ��݂��Ă����ꍇ�́A���̃��X�g�ɑ}�������O�ɂ��̃��X�g�����菜�����B
�i �G���[�^ �F����lj��j �}������鍀�ڂ͍��ڂ��ꎩ�g�ł���A�����͂���Ȃ��B
�p�����^
in SVGTransform newItem ���X�g�ɑ}������鍀�ځB
in unsigned long index ���̓Y���̍��ڂ̑O�ɐV�������ڂ��}�������B�ŏ��̍��ڂ̓Y���� 0 �B
�Y�����O�Ȃ�ΐV�������ڂ̓��X�g�̐擪�ɑ}�������B�Y���� numberOfItems �ȏ�Ȃ�ΐV�������ڂ̓��X�g�̖����ɑ}�������B
�߂�l
SVGTransform �}�����ꂽ���ځB
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
SVGException
SVG_WRONG_TYPE_ERR �F�p�����^ newItem �̃I�u�W�F�N�g�^�����X�g�ɍ���Ȃ��Ƃ��Ƀ��C�Y�����B
replaceItem
���X�g���ɑ��݂��鍀�ڂ�V�������ڂɒu��������B newItem �����łɉ��炩�̃��X�g���ɑ��݂��Ă����ꍇ�́A���̃��X�g�ɑ}�������O�ɂ��̃��X�g�����菜�����B
�i �G���[�^ �F����lj��j �}������鍀�ڂ͍��ڂ��ꎩ�g�ł���A�����͂���Ȃ��B
�p�����^
in SVGTransform newItem ���X�g�ɑ}������鍀�ځB
in unsigned long index �u�������鍀�ڂ̓Y���B�ŏ��̍��ڂ��Y���O�B
�߂�l
SVGTransform �}�����ꂽ���ځB
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
INDEX_SIZE_ERR �F�Y�������܂��� numberOfItems �ȏ�̂Ƃ��Ƀ��C�Y�����B
SVGException
SVG_WRONG_TYPE_ERR �F�p�����^ newItem �̃I�u�W�F�N�g�^�����X�g�ɍ���Ȃ��Ƃ��Ƀ��C�Y�����B
removeItem
���X�g���獀�ڂ���菜���B
�p�����^
in unsigned long index ��菜����鍀�ڂ̓Y���B�ŏ��̍��ڂ��Y���O�B
�߂�l
SVGTransform ��菜���ꂽ���ځB
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
INDEX_SIZE_ERR �F�Y�������܂��� numberOfItems �ȏ�̂Ƃ��Ƀ��C�Y�����B
appendItem
newItem �����łɉ��炩�̃��X�g���ɑ��݂��Ă����ꍇ�́A���̃��X�g�ɒlj������O�ɂ��̃��X�g�����菜�����B
�i �G���[�^ �F����lj��j �}������鍀�ڂ͍��ڂ��ꎩ�g�ł���A�����͂���Ȃ��B
�p�����^
in SVGTransform newItem ���X�g�ɑ}�����鍀�ځB�ŏ��̍��ڂ��Y���O�B
�߂�l
SVGTransform �}�����ꂽ���ځB
��O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F���X�g�̕ύX��������Ă��Ȃ��Ƃ��Ƀ��C�Y�����B
SVGException
SVG_WRONG_TYPE_ERR �F�p�����^ newItem �̃I�u�W�F�N�g�^�����X�g�ɍ���Ȃ��Ƃ��Ƀ��C�Y�����B
createSVGTransformFromMatrix
�^����ꂽ�s���l�ɂƂ� SVG_TRANSFORM_MATRIX �^�C�v�̕ϊ��ɏ��������ꂽ SVGTransform �I�u�W�F�N�g�����B �i �G���[�^ �F����lj��j �p�����^ matrix ����̒l�͕��������B matrix �����̂܂� SVGTransform.matrix �ɂȂ邱�Ƃ͖����B
�p�����^
in SVGMatrix matrix ���̕ϊ����`����s��B
�߂�l
SVGTransform �Ԃ���� SVGTransform �I�u�W�F�N�g�B
��O����
consolidate
���X�g�Ɋ܂܂�� SVGTransform �I�u�W�F�N�g�������̕ϊ��s��̐ς��Ƃ邱�Ƃɂ�蓝�����āA SVG_TRANSFORM_MATRIX �^�C�v�� SVGTransform �I�u�W�F�N�g�P�‚���Ȃ郊�X�g�ɂ���B
�i �G���[�^ �F����lj��j �Ԃ���鍀�ڂ͕����ł͂Ȃ��A���ڂ��ꎩ�g�ɂȂ�B���ڂɉ�������ύX�͑����Ƀ��X�g�ɔ��f����B
�p�����^����
�߂�l
SVGTransform �������ꂽ���ʂ� SVGTransform �I�u�W�F�N�g�B���X�g�̍��ڂ͂��̂P�‚����ɂȂ�B���X�g����ł������ꍇ�A�l null ���Ԃ����B
��O����
��O
DOMException
DOMException NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B

�C���^�[�t�F�[�X SVGAnimatedTransformList

SVG �̗v�f�̑����ŗ��p�”\�ł���A�j���[�V�����”\�� transform �����Ȃǂ́A��A�̕ϊ����w�肷���X�̑����ɑ΂����p�����B

IDL ��`
interface SVGAnimatedTransformList { 
  readonly attribute SVGTransformList baseVal;
  readonly attribute SVGTransformList animVal;
};

����
readonly SVGTransformList baseVal
�A�j���[�V�������K�p�����O�̗^����ꂽ�����̊��l�i base value �j�B
readonly SVGTransformList animVal
�^����ꂽ�����܂��̓v���p�e�B���A�j���[�V��������Ă���ꍇ�A���̃A�j���[�V�������ꂽ�l���Ƃ�A�I�u�W�F�N�g���g�Ƃ��̓��e�͓ǂݏo����p�ƂȂ�B�A�j���[�V��������Ă��Ȃ��ꍇ�� 'baseVal' �Ɠ����l���Ƃ�B

�C���^�[�t�F�[�X SVGPreserveAspectRatio

SVGPreserveAspectRatio �C���^�[�t�F�[�X�͈ꕔ�� SVG �v�f�ŗ��p�”\�� preserveAspectRatio �����ɑΉ�����B


IDL ��`
interface SVGPreserveAspectRatio { 
  // Alignment Types
  const unsigned short SVG_PRESERVEASPECTRATIO_UNKNOWN   = 0;
  const unsigned short SVG_PRESERVEASPECTRATIO_NONE     = 1;
  const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMIN = 2;
  const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3;
  const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4;
  const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMID = 5;
  const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMID = 6;
  const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMID = 7;
  const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMAX = 8;
  const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9;
  const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10;
  // Meet-or-slice Types
  const unsigned short SVG_MEETORSLICE_UNKNOWN   = 0;
  const unsigned short SVG_MEETORSLICE_MEET  = 1;
  const unsigned short SVG_MEETORSLICE_SLICE = 2;
           attribute unsigned short align;
                       // raises DOMException on setting
           attribute unsigned short meetOrSlice;
                       // raises DOMException on setting
};

��`�O���[�v Alignment Types
��`����Ă���萔
SVG_PRESERVEASPECTRATIO_UNKNOWN �^�C�v����`�ς݂̂��̂ł͂Ȃ����Ƃ�\���B�V�����l�ɂ��̃^�C�v���߂���A�����̒l�����̃^�C�v�ɕύX���鎎�݂͖����ł���B
SVG_PRESERVEASPECTRATIO_NONE preserveAspectRatio �����̒l 'none' �ɑΉ�����B
SVG_PRESERVEASPECTRATIO_XMINYMIN preserveAspectRatio �����̒l 'xMinYMin' �ɑΉ�����B
SVG_PRESERVEASPECTRATIO_XMIDYMIN preserveAspectRatio �����̒l 'xMidYMin' �ɑΉ�����B
SVG_PRESERVEASPECTRATIO_XMAXYMIN preserveAspectRatio �����̒l 'xMaxYMin' �ɑΉ�����B
SVG_PRESERVEASPECTRATIO_XMINYMID preserveAspectRatio �����̒l 'xMinYMid' �ɑΉ�����B .
SVG_PRESERVEASPECTRATIO_XMIDYMID preserveAspectRatio �����̒l 'xMidYMid' �ɑΉ�����B
SVG_PRESERVEASPECTRATIO_XMAXYMID preserveAspectRatio �����̒l 'xMaxYMid' �ɑΉ�����B
SVG_PRESERVEASPECTRATIO_XMINYMAX preserveAspectRatio �����̒l 'xMinYMax' �ɑΉ�����B
SVG_PRESERVEASPECTRATIO_XMIDYMAX preserveAspectRatio �����̒l 'xMidYMax' �ɑΉ�����B
SVG_PRESERVEASPECTRATIO_XMAXYMAX preserveAspectRatio �����̒l 'xMaxYMax' �ɑΉ�����B
��`�O���[�v Meet-or-slice Types
��`����Ă���萔
SVG_MEETORSLICE_UNKNOWN �^�C�v����`�ς݂̂��̂ł͂Ȃ����Ƃ�\���B�V�����l�ɂ��̃^�C�v���߂���A�����̒l�����̃^�C�v�ɕύX���鎎�݂͖����ł���B
SVG_MEETORSLICE_MEET preserveAspectRatio �����̒l 'meet' �ɑΉ�����B
SVG_MEETORSLICE_SLICE preserveAspectRatio �����̒l 'slice' �ɑΉ�����B
����
unsigned short align
��� Alignment Types �Œ�`���ꂽ�萔�̂����ꂩ�B
�ݒ莞�̗�O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B
unsigned short meetOrSlice
��� Meet-or-slice Types �Œ�`���ꂽ�萔�̂����ꂩ�B
�ݒ莞�̗�O
DOMException
NO_MODIFICATION_ALLOWED_ERR �F�ǂݏo����p�̑����l�̕ύX�����݂��Ƃ��Ƀ��C�Y�����B

�C���^�[�t�F�[�X SVGAnimatedPreserveAspectRatio

�^ SVGPreserveAspectRatio �̃A�j���[�V�����”\�ȑ����ɑ΂����p�����B


IDL ��`
interface SVGAnimatedPreserveAspectRatio { 
  readonly attribute SVGPreserveAspectRatio baseVal;
  readonly attribute SVGPreserveAspectRatio animVal;
};

����
readonly SVGPreserveAspectRatio baseVal
�A�j���[�V�������K�p�����O�̗^����ꂽ�����̊��l�B
readonly SVGPreserveAspectRatio animVal
�^����ꂽ�����܂��̓v���p�e�B���A�j���[�V��������Ă���ꍇ�A���̃A�j���[�V�������ꂽ�l���Ƃ�A�I�u�W�F�N�g���g�Ƃ��̓��e�͓ǂݏo����p�ƂȂ�B�A�j���[�V��������Ă��Ȃ��ꍇ�� 'baseVal' �Ɠ����l���Ƃ�B