blob: c9828be4b3c57d1444d841fc09a1ad073079eca1 [file] [log] [blame]
<svg version="1.1" baseProfile="basic" id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= SVG 1.1 2nd Edition Test Case =-->
<!--======================================================================-->
<!--= Copyright 2009 World Wide Web Consortium, (Massachusetts =-->
<!--= Institute of Technology, European Research Consortium for =-->
<!--= Informatics and Mathematics (ERCIM), Keio University). =-->
<!--= All Rights Reserved. =-->
<!--= See http://www.w3.org/Consortium/Legal/. =-->
<!--======================================================================-->
<d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
template-version="1.4" reviewer="SVGWG" author="Vincent Hardy" status="accepted"
version="$Revision: 1.7 $" testname="$RCSfile: coords-units-03-b.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/coords.html#Units">
<p>
This test verifies both the initial viewport size and the support for the various
unit specifiers.
</p>
<p>
The units in SVG can be: user coordinate and CSS units: em, ex, px, pt, pc, cm, mm,
in and percentages. The test does not check the absolute length accuracy as this
can only be truly validated with a ruler. However, it validates that the different
units are supported by drawing multiple elements who have the same length specified
in different units.
</p>
<p>
The viewport is the "finite rectangular region" where rendering occurs in SVG.
Hence, nothing should be rendered outside the viewport (paragraph 7.1). Furthermore,
when no positioning properties are set on the top svg element, the initial viewport
size should have the value of the top svg element's "width" and "height" attributes.
To check this behavior, the test does not define positioning properties on the top
svg element but defines its "width" and "height" properties. Then it fills a red
rectangle that is bigger than the viewport size. Then, a rectangle, the size of the
viewport is drawn in white. If rendering is limited to the viewport area, none of the
red should show.
</p>
<p>
The line showing the "ex" units will not necessarily appear with the same length
as shown in the reference image because the X-height of a font is not
necessarily half of the font size (which is assumed in the reference image where
1ex is considered to be .5em).
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>The test passes if the top three lines (user units, px, em) are the same length,
the fifth line (%) is the same length as the top three lines, and the bottom
five lines (in, cm, mm, pt, pc) are the same length. The fourth line (ex) may have
any non-zero length, since the X-height of the font will depend on the exact font
chosen by the user agent (which may vary).</p>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: coords-units-03-b.svg,v $</title>
<defs>
<font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F">
<font-face-src>
<font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
</font-face-src>
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<g id="viewport-initial-size-test">
<!-- ====================================================================== -->
<!-- First fill a rectangle that is bigger than the defined viewport ====== -->
<!-- ====================================================================== -->
<rect x="0px" y="0px" width="2000px" height="2000px" fill="red"/>
<!-- ====================================================================== -->
<!-- This second rectangle should cover the previous one, so none of the == -->
<!-- red should show if the initial viewport has the requested size == -->
<!-- ====================================================================== -->
<rect x="0px" y="0px" width="480px" height="360px" fill="white"/>
</g>
<!-- viewport-initial-size-test -->
<!-- Title -->
<text x="125" y="20" fill="black" font-size="12" font-family="Arial">Initial viewport and CSS units test</text>
<g id="units-test" fill="black" font-size="10pt" transform="translate(0, 60)">
<!-- ====================================================================== -->
<!-- Now, draw rectangles using the various unit specifiers -->
<!-- ====================================================================== -->
<!-- User Space -->
<text x="20" y="18">200</text>
<text x="230" y="20">User space units (no specifier)</text>
<rect x="20" y="20" width="200" height="1"/>
<!-- ================== -->
<!-- Relative CSS Units -->
<!-- ================== -->
<!-- Pixels : Should correspond to User Space, because the initial user -->
<!-- coordinate is such that one user space unit equals one pixel in -->
<!-- viewport. -->
<text x="20" y="38">200 px</text>
<text x="230" y="40">Pixels (px)</text>
<rect x="20" y="40" width="200px" height="1"/>
<!-- Font size (em). Should be equal to 200pt because current font's -->
<!-- point size is 10pt -->
<text x="20" y="58">20 em = 200 px (font-size=10px)</text>
<text x="230" y="60">Relative to font size (em)</text>
<g font-size="10px">
<rect x="20" y="60" width="20em" height="1"/>
</g>
<!-- X-Height (ex). With a 10px font-size, x-height is about 5px, so -->
<!-- ex units would be about 200px -->
<text x="20" y="78">40 ex</text>
<text x="230" y="80">Relative to font x-height (ex)</text>
<g font-size="10px">
<rect x="20" y="80" width="40ex" height="1"/>
</g>
<!-- ========================= -->
<!-- Percentage -->
<!-- ========================= -->
<!-- 1% = 4.8px because viewport is 480px -->
<text x="20" y="98">41.67% = 200 px</text>
<text x="230" y="100">Percentage (%)</text>
<rect x="20" y="100" width="41.67%" height="1"/>
<!-- ========================= -->
<!-- Absolute Length CSS Units -->
<!-- ========================= -->
<!-- Inches (should be the same length as following (cm) rect) -->
<text x="20" y="118">1 in</text>
<text x="230" y="120">Inches (in)</text>
<rect x="20" y="120" width="1in" height="1"/>
<!-- Centimeters(should be the same length as previous (in) rect) -->
<!-- 1in = 2.54cm -->
<text x="20" y="138">2.54 cm = 1 in</text>
<text x="230" y="140">Centimeters (cm)</text>
<rect x="20" y="140" width="2.54cm" height="1"/>
<!-- Millimeters (should be the same length as previous (cm) rect) -->
<!-- 10mm = 1cm -->
<text x="20" y="158">25.4 mm = 1 in</text>
<text x="230" y="160">Millimeters (mm)</text>
<rect x="20" y="160" width="25.4mm" height="1"/>
<!-- Points (should be the same length as (in) rect -->
<!-- 1pt = 1/72 in -->
<text x="20" y="178">72pt = 1 in</text>
<text x="230" y="180">Points (pt)</text>
<rect x="20" y="180" width="72pt" height="1"/>
<!-- Picas (should be the same length as previous (pt) rect) -->
<!-- 1pc = 12pt -->
<text x="20" y="198">6pc = 1 in</text>
<text x="230" y="200">Picas (pc)</text>
<rect x="20" y="200" width="6pc" height="1"/>
</g>
<!-- units-test -->
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.7 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
<!-- comment out this watermark once the test is approved -->
<!--<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>