<svg version="1.1" baseProfile="full" 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.3" reviewer="CL" author="CM" status="accepted"
    version="$Revision: 1.10 $" testname="$RCSfile: text-dom-02-f.svg,v $">
    <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/text.html#InterfaceSVGTextContentElement">
      <p>
        This tests that methods on the SVGTextContentElement interface
        that take an index to a character or a number of characters
        actually interpret these as indexes to or numbers of UTF-16 code
        units. To test this, a character from outside the Basic Multilingual Plane 
        (U+10000; LINEAR B SYLLABLE B008) is used in a text string. 
        This character is stored in UTF-16 as a surrogate pair.
      </p>
      <p>
        The test consists of two  sub-tests, which test those methods
        on the SVGTextContentElement interface which do not rely on rendering.  The result
        of each sub-test is shown as a small rectangle: black
        indicates that the sub-test did not run, red indicates that
        the sub-test failed and green indicates that the sub-test
        succeeded.
      </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 is passed if both rectangles are green.
      </p>
    </d:passCriteria>
  </d:SVGTestCase>
  <title id="test-title">$RCSfile: text-dom-02-f.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">
    <text x='10' y='30' font-size='13'>Test that SVGTextContentElement methods work on UTF-16 code units</text>
   <text x='10' y='60' font-size='11'>Methods independent of layout</text>
      <font-face font-family='SPlaneOne'>
        <font-face-src>
          <font-face-uri xlink:href="../resources/Plane1/PlaneOne.svg#SPlaneOne"/>
        </font-face-src>
    </font-face>
    <style type="text/css">
      @font-face {
        font-family: PlaneOne;
        src: url(woffs/PlaneOne.woff) format("woff");
        }
    </style>

    <text id='t' x='50' y='50' visibility='hidden' font-family='PlaneOne, SPlaneOne, serif' font-size='10' rotate='10 20 30'>a&#x10000;b</text>

    <rect id='r1' x='10' y='140' width='30' height='30'/>
    <text x='50' y='160'>getNumberOfChars</text>

    <rect id='r2' x='10' y='180' width='30' height='30'/>
    <text x='50' y='200'>getSubStringLength</text>

    <script><![CDATA[
      function $(x) { return document.getElementById(x) }
      function eq(a, b) {
        if (a.length != b.length) return false;
        for (var i = 0; i < a.length; i++) if (a[i] != b[i]) return false;
        return true;
      }
      function p(x, y) {
        var p = document.documentElement.createSVGPoint();
        p.x = x;
        p.y = y;
        return p;
      }

      var t = $('t');
      var x, b;

      b = false;
      try {
        b = t.getNumberOfChars() == 4;
      } catch (e) {
      }
      $('r1').setAttribute('fill', b ? 'green' : 'red');

      b = false;
      try {
        x = [
          t.getSubStringLength(0, 1),
          t.getSubStringLength(0, 2),
          t.getSubStringLength(0, 3),
          t.getSubStringLength(0, 4),
          t.getSubStringLength(1, 1),
          t.getSubStringLength(1, 2),
          t.getSubStringLength(1, 3),
          t.getSubStringLength(2, 1),
          t.getSubStringLength(2, 2),
          t.getSubStringLength(3, 1),
        ];
        b = eq(x, [1, 3, 3, 7, 2, 2, 6, 2, 6, 4]);
      } catch (e) {
      }
      $('r2').setAttribute('fill', b ? 'green' : 'red');

    ]]></script>
  </g>
  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
    <text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.10 $</text>
  </g>
  <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
  <!-- 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>
