<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>
