<svg id="svg-root" width="100%" height="100%" onload="test()" xmlns="http://www.w3.org/2000/svg"
  viewBox="0 0 480 360" xmlns:xlink="http://www.w3.org/1999/xlink">
  <!--======================================================================-->
  <!--=  Copyright 2008 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="AG" author="ED" status="reviewed"
    version="$Revision: 1.4 $" testname="$RCSfile: text-dom-04-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 the SVGTextContentElement.getSubStringLength method.
      </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>
        To pass the test there should be no red visible.
      </p>
    </d:passCriteria>
  </d:SVGTestCase>
  <title id="test-title">$RCSfile: text-dom-04-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">
	<defs>
		<font horiz-adv-x="4000" id="mini">
			<font-face font-family="simplesvgfont" units-per-em="4000" ascent="800" descent="-200" alphabetic="0"/>
			<missing-glyph horiz-adv-x="10000" d="M0 0 4000 0"/>
			<glyph unicode="a" glyph-name="a" horiz-adv-x="4100" d="M0 4000l2000 -4000l2000 4000Z"/>
			<glyph unicode="b" glyph-name="b" horiz-adv-x="2000" d="M0 0l2000 0000l0 2000l-2000 0Z"/>
			<glyph unicode="cb" d="M0 0l2000 2000l-2000 2000Z" horiz-adv-x="800"/>
			<glyph unicode="c" glyph-name="c" horiz-adv-x="1900" d="M0 0L2000 2000l-2000 0L2000 0Z"/>
			<glyph unicode="&#x1D352;" glyph-name="compliance" d="M1000,0 h1000 v-1000 h-1000 z" horiz-adv-x="2100"/>
			<hkern u1="c" u2="a" k="500"/>
		</font>
	</defs>

	<script type="text/ecmascript"><![CDATA[
		function test()
		{
			var t = document.getElementById("t");
			var r = document.getElementById("r");
			var res = document.getElementById("res");
			var isPassed = true;
			
			// string:  abca&#x1D352;cb
			// indices: 0123   4  5  67
			
			var tests = new Array("getSubStringLength(0,1)", "4100", 	// 'a'
								  "getSubStringLength(0,2)", "6100", 	// 'ab'
								  "getSubStringLength(0,3)", "7500", 	// 'abc'
								  "getSubStringLength(0,4)", "11600", 	// 'abca'
								  "getSubStringLength(0,5)", "13700",	// 'abca' and high surrogate of 1D352
								  "getSubStringLength(0,6)", "13700",	// 'abca&#x1D352'
								  "getSubStringLength(0,7)", "14500",	// 'abca&#x1D352' and half of ligature 'cb'
								  "getSubStringLength(0,8)", "14500",	// 'abca&#x1D352cb'
								  "getSubStringLength(0,9)", "14500",	// 'abca&#x1D352cb'
								  "getSubStringLength(3,1)", "4100",	// 'a'
								  "getSubStringLength(1,1)", "2000",	// 'b'
								  "getSubStringLength(4,1)", "2100",	// high surrogate of 1D352
								  "getSubStringLength(4,2)", "2100",	// '&#x1D352'
								  "getSubStringLength(5,1)", "2100",	// low surrogate of 1D352
								  "getSubStringLength(6,1)", "800",		// first half of ligature 'cb'
								  "getSubStringLength(6,2)", "800",		// ligature 'cb'
								  "getSubStringLength(7,1)", "800",		// second half of ligature 'cb'
								  "getSubStringLength(8,1)", "INDEX_SIZE_ERR",
								  "getSubStringLength(9,0)", "INDEX_SIZE_ERR",
								  "getSubStringLength(-1,1)", "INDEX_SIZE_ERR",
								  "getSubStringLength(-57,0)", "INDEX_SIZE_ERR",
								  "getSubStringLength(0,-52)", "INDEX_SIZE_ERR",
								  "getSubStringLength(-1,-5)", "INDEX_SIZE_ERR",
								  "getSubStringLength(7,0)", "0", 		// second half of ligature 'cb'
								  "getSubStringLength(5,0)", "0",		// high surrogate of 1D352
								  "getSubStringLength(4,0)", "0"		// low surrogate of 1D352
								  );
			
			try
			{
				for(var i = 0; i < tests.length; i=i+2)
				{
					try
					{
						val = eval("t."+tests[i]);
					}
					catch(e)
					{
						if(e.code == DOMException.INDEX_SIZE_ERR)
						{
							val = "INDEX_SIZE_ERR"
						}
						else
						{
							val = e;
						}
					}
					
					if(val != tests[i+1])
					{
						throw "Failed " + tests[i] + " got " + val + " but expected " + tests[i+1];
					}
				}
			}
			catch(f)
			{
				isPassed = false;
				res.textContent = f;
			}
			
			if(isPassed)
			{
				r.setAttribute("fill", "none");
			}
		}
	]]></script>
	
	<g transform="scale(0.02 0.02) translate(4000 2000)">
		<g id="reference" fill="red">
			<path d="M0 4000l2000 -4000l2000 4000Z" transform="scale(1 -1) translate(0 -8000)"/>
			<path d="M0 0l2000 0000l0 2000l-2000 0Z" transform="translate(4100 6000)"/>
			<path d="M0 0L2000 2000l-2000 0L2000 0Z" transform="translate(6100 6000)"/>
			<path d="M0 4000l2000 -4000l2000 4000Z" transform="scale(1 -1) translate(7500 -8000)"/>
			<path d="M1000,0 h1000 v-1000 h-1000 z" transform="scale(1 -1) translate(11600 -8000)"/>
			<path d="M0 0l2000 2000l-2000 2000Z" transform="scale(1 -1) translate(13700 -8000)"/>
		</g>
		
		<text id="t" font-family="simplesvgfont" font-size="4000" y="2em" fill="lime">abca&#x1D352;cb</text>
		<rect id="r" x="5000" y="10%" width="2000" height="2000" fill="red"/>
		<text id="res" x="50%" text-anchor="middle" font-family="sans-serif" font-size="200" y="80%"></text>
	</g>
  </g>
  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
    <text id="revision" x="10" y="340" stroke="none"
      fill="black">$Revision: 1.4 $</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>
