Adds smailus contributor with textLength tests in text-text and text-tspan default tip
authorThomas Smailus <thomas.o.smailus@boeing.com>
Fri, 25 Jul 2014 11:21:13 -0700
changeset 35 af5c1e617395
parent 34 424f1c4d0e4c
Adds smailus contributor with textLength tests in text-text and text-tspan
contributors/smailus/incoming/SVG2 TestTemplate.svg
contributors/smailus/incoming/Test - SVG2 - text-text-textLength/text-text-01-b.html
contributors/smailus/incoming/Test - SVG2 - text-text-textLength/text-text-01-b_files/testharnessreport.js
contributors/smailus/incoming/Test - SVG2 - text-text-textLength/text-text-01-b_files/text-text-01-b-SVG1.2version.png
contributors/smailus/incoming/Test - SVG2 - text-text-textLength/text-text-01-b_files/text-text-01-b.png
contributors/smailus/incoming/Test - SVG2 - text-text-textLength/text-text-01-b_files/text-text-01-b.svg
contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/testharnessreport.js
contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength-test 1 2 - IE.png
contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength-test 5 - FF.png
contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength-test 6 - IE.png
contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength.cdr
contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength.png
contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength.svg
contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan.html
contributors/smailus/submitted/SVG2 TestTemplate.svg
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contributors/smailus/incoming/SVG2 TestTemplate.svg	Fri Jul 25 11:21:13 2014 -0700
@@ -0,0 +1,50 @@
+<svg 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"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>SVG Test: DESCRIPTION OF TEST</title>
+    <html:link rel="copyright"
+          href="http://www.w3.org/Graphics/SVG/Test/Copyright"/>
+    <html:link rel="license"
+          href="http://www.w3.org/Consortium/Legal/2008/03-bsd-license.html"/>
+    <html:link rel="author"
+          title="Thomas Smailus"
+          href="mailto:EMAIL OR http://CONTACT_PAGE"/>
+    <html:link rel="reviewer"
+          title="NAME_OF_REVIEWER"
+          href="mailto:EMAIL OR http://CONTACT_PAGE" />
+          <!-- YYYY-MM-DD -->
+    <html:link rel="help"
+          href="RELEVANT_SPEC_SECTION"/>
+    <html:link rel="match"  href="RELATIVE_PATH_TO_REFERENCE_FILE" />
+    <html:link rel="mismatch" href="RELATIVE_PATH_TO_REFERENCE_FILE" />
+    <metadata class="flags">TOKENS</metadata>
+    <desc class="assert">TEST ASSERTION</desc>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff" format("woff"),
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { fill: green; }
+  </style>
+
+  <defs></defs>
+
+  <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">SVG Test Template</text>
+
+  <g id="test-body-content" font-size="16">
+    <text x="50" y="100" fill="red">This text should be green.</text>
+  </g>
+
+</svg>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contributors/smailus/incoming/Test - SVG2 - text-text-textLength/text-text-01-b.html	Fri Jul 25 11:21:13 2014 -0700
@@ -0,0 +1,161 @@
+<!--?xml version="1.0" encoding="UTF-8"?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+      <meta name="keywords" content="W3C SVG 1.1 2nd Edition Test Suite">
+      <meta name="description" content="W3C SVG 1.1 2nd Edition Object Test Suite">
+      <title>
+SVG 1.1 2nd Edition Test (&lt;object&gt;): text-text-01-b.svg
+      </title>
+      <style type="text/css">
+        <!--
+         .bodytext      { font-family:verdana, helvetica, sans-serif; font-size: 12pt; line-height: 125%; text-align: Left; margin-top: 0; margin-bottom: 0 }
+         .pageTitle     { line-height: 150%; font-size: 20pt; font-weight : 900; margin-bottom: 20pt }
+         .pageSubTitle  { color : blue; line-height: 100%; font-size: 24pt; font-weight : 900 }
+         .openChapter   { color : blue; line-height: 125%; font-weight : 900 }
+         .openSection   { color : blue; line-height: 125%; font-weight : 900 }
+         .info          { color : black; line-height: 110%; font-size: 10pt; font-weight : 100 }
+         p              { margin-top:0; margin-bottom:0; padding-top:0; padding-bottom:0 }
+         blockquote     { margin-top:0; margin-bottom:0; padding-top:0; padding-bottom:0 }
+         .opscript      { margin-left: 3%; margin-right: 3%; }
+         .opscript p    { margin-top: 0.7em }
+         .navbar        { background: black; color: white; font-weight: bold }
+         .warning       { color: red; text-align: Center;}
+         a,a:visited    { color: blue }
+        -->
+      </style>
+      <link rel="prev" href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/text-spacing-01-b.html">
+      <link rel="index" href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/index.html">
+      <link rel="next" href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/text-text-03-b.html">
+      <script src="text-text-01-b_files/testharnessreport.js"></script>
+    </head>
+  <body class="bodytext">
+<div class="linkbar"> 
+  <p>Specification link: <a target="spec" href="http://www.w3.org/TR/SVG11/text.html#TextElement">10.4 The 'text' element</a></p>
+  <p>
+    <a href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/text-spacing-01-b.html" rel="prev">text-spacing-01-b ←</a> 
+    <a href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/index.html" rel="index">index</a>
+    <a href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/text-text-03-b.html" rel="next">→ text-text-03-b</a>
+  </p>
+</div>
+<div>
+  <br>
+  <p class="warning">
+    Tests that contain the draft-watermark are under development and may be incorrectly testing a feature.
+  </p>
+</div>
+<table align="center" border="0" cellpadding="10" cellspacing="0">
+  <tbody><tr>
+    <td colspan="3" align="center">
+      <table border="0" cellpadding="8">
+        <tbody><tr>
+          <td colspan="2" class="pageTitle" align="center">
+            <h1>text-text-01-b.svg</h1>
+          </td>
+        </tr>
+        <tr class="navbar">
+          <td align="center">
+            SVG Image
+          </td>
+          <td align="center">
+            PNG Image
+          </td>
+        </tr>
+        <tr>
+          <td align="right">
+            <object data="text-text-01-b_files/text-text-01-b.svg" type="image/svg+xml" width="480" height="360"><p style="font-size:300%;color:red">FAIL</p></object>
+          </td>
+          <td align="left">
+            <img alt="raster image of text-text-01-b.svg" src="text-text-01-b_files/text-text-01-b.png" width="480" height="360">
+          </td>
+        </tr>
+      </tbody></table>
+    </td>
+  </tr>
+</tbody></table>
+
+<div class="opscript">
+    <h2 id="operatorscript">
+      Operator Script
+    </h2>
+    <div>
+<p>
+        Run the test. No interaction required.
+      </p>
+  </div>
+  <h2 id="passcriteria">
+    Pass Criteria
+  </h2>
+  <div>
+<p>
+        The rendered picture (left) should match the reference image (right), except as noted in the Test Description.
+        In particular, the 'textLength' constraint must be satisfied precisely,
+        and the basic rules associated with the "spacing" and "spacingAndGlyphs" values
+        of 'lengthAdjust' must be met, but the precise algorithm for meeting all
+	of the required contraints is otherwise unspecified.  
+	The <font color="blue">blue text</font> will be the length of the <font color="magenta">magenta lines</font>
+      	below that text.
+</p>
+  </div>
+  <h2 id="testdescription">
+    Test Description
+  </h2>
+  <div>
+<p>
+        Test viewer capibility to handle basic use of 'textLength'
+        and 'lengthAdjust' attributes.
+      </p><p>
+        There are four pairs of sub-tests.  Each pair of sub-tests consists
+        of the same two strings:  "Line to Stretch" on the left, and "this is
+        a line to squeeze" on the right.
+      </p><p>
+        The first (topmost) pair contains no occurrences of the textLength and
+        lengthAdjust attributes in the 'text' elements.
+        The pink reference line under each of the top
+        two strings indicates the approximate length of the strings.  Since
+        the lengths are not constrained by the 'textLength' attribute, small
+        variations of the lengths are permissible.
+      </p><p>
+        The remaining three pairs each applies 'textLength' attributes to the
+        strings.  In the leftmost sub-test of each pair, the 'textLength' value
+        will cause a stretching of the string of approximately 25% over the
+        "normal" length.  In the rightmost sub-test of each pair, the 'textLength' value
+        will cause a squeezing of the string of approximately 20% under the
+        "normal" length for the string.
+      </p><p>
+        In each of the sub-tests with an application of 'textLength', the
+        pink reference lines indicate the exact extent of the rendered text.
+        The rendered text should fit snugly just within the ticks at the end of
+        the pink lines.
+      </p><p>
+        The second pair from the top contains 'textLength' but no 'lengthAdjust'
+        attributes.  In this case, the effect should be as if the value "spacing"
+        were specified.  Only the inter-character advancement and inter-word spacing
+        should change.  The aspect ratio of the glyphs should be unaffected.  The
+        reference image illustrates one valid way to achieve this, by a
+        uniform increase or decrease of inter-character advancement.
+      </p><p>
+        The third pair from the top explicitly sets 'lengthAdjust' value
+        to "spacing".  Therefore it should be rendered identically to the second pair.
+      </p><p>
+        The fourth (bottommost) sub-test pair explicitly sets 'lengthAdjust' value
+        to "spacingAndGlyphs".  The advancements between characters and words, as well as
+        the glyph aspect ratios should be affected.
+        The reference image illustrates one valid way to achieve
+        this, by a uniform expansion or compression of the string as a whole.
+        This effect is equivalent to application of a "scale(xfactor, 1.0)" transformation
+        to the 'text' elements.
+      </p>
+  </div>
+</div>
+<br>
+<div class="linkbar">
+  <p>
+    <a href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/text-spacing-01-b.html" rel="prev">text-spacing-01-b ←</a>
+    <a href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/index.html" rel="index">index</a>
+    <a href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/text-text-03-b.html" rel="next">→ text-text-03-b</a>
+  </p>
+</div>
+
+
+</body></html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contributors/smailus/incoming/Test - SVG2 - text-text-textLength/text-text-01-b_files/testharnessreport.js	Fri Jul 25 11:21:13 2014 -0700
@@ -0,0 +1,54 @@
+/* Handling testsuite results:
+*
+* When tests using testharness.js are loaded in an iframe they will attempt to call global functions in the top frame to report the progress of the testsuite and the results status:
+*
+* start_callback() - called before the first test is run.
+*
+* result_callback(Test) - called once a result for a specific test has been determined.
+*
+* completion_callback([Test]) - called with a list of all tests run once all results have been determined.
+*
+* A Test object exposes three properties that should be considered public:
+*
+* name - The name of the test
+* status - an integer representing the test result
+* message - a string indicating the reason a test failed, or null if it passed
+*
+* The test status can be compared to the status object on the test frame. e.g. to check for a pass one might do
+*
+* passed = (test.status === test_frame.contentWindow.status.PASS)
+*
+* (TODO: make this easier)
+*
+* Current statuses are PASS, FAIL and TIMEOUT
+*
+* Example:
+* The following are examples for global functions.
+* result_callback : alerts the test name, status and message
+* completion_callback : alerts the number of pass/fail/timeout
+
+function start_callback() {
+   //Add test setup (if needed) here.
+}
+
+function result_callback(test) {
+   var passed = test.status === test_frame.contentWindow.status.PASS;
+   var failed = test.status === test_frame.contentWindow.status.FAIL;
+   var str = test.name;
+   if (passed) str += " passed: ";
+   else if (failed) str += " failed: ";
+   else str += " timed out: ";
+   str += test.message;
+   alert(str);
+}
+
+function completion_callback(tests) {
+    var passes=[], fails=[], timeouts=[];
+    for (var i = 0; i < tests.length; i++) {
+       if (tests[i].status === test_frame.contentWindow.status.PASS) passes.push(test[i]);
+       else if (test[i].status === test_frame.contentWindow.status.FAIL) fails.push(test[i]);
+       else timeouts.push(test[i]);
+    }
+    alert("Got " + passes.length + " pass, " + fails.length + " fail and "+ timeouts.length + " timeout");
+}
+*/
\ No newline at end of file
Binary file contributors/smailus/incoming/Test - SVG2 - text-text-textLength/text-text-01-b_files/text-text-01-b-SVG1.2version.png has changed
Binary file contributors/smailus/incoming/Test - SVG2 - text-text-textLength/text-text-01-b_files/text-text-01-b.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contributors/smailus/incoming/Test - SVG2 - text-text-textLength/text-text-01-b_files/text-text-01-b.svg	Fri Jul 25 11:21:13 2014 -0700
@@ -0,0 +1,208 @@
+<svg version="1.1" baseProfile="basic" id="svg-root"
+  width="100%" height="100%" viewBox="0 0 160 120"
+  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="Lofton Henderson" status="accepted"
+    version="$Revision: 1.2 $" testname="$RCSfile: text-text-01-b.svg,v $">
+    <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/text.html#TextElement">
+      <p>
+        Test viewer capibility to handle basic use of 'textLength'
+        and 'lengthAdjust' attributes.
+      </p>
+      <p>
+        There are four pairs of sub-tests.  Each pair of sub-tests consists
+        of the same two strings:  "Line to Stretch" on the left, and "this is
+        a line to squeeze" on the right.
+      </p>
+      <p>
+        The first (topmost) pair contains no occurrences of the textLength and
+        lengthAdjust attributes in the 'text' elements.
+        The pink reference line under each of the top
+        two strings indicates the approximate length of the strings.  Since
+        the lengths are not constrained by the 'textLength' attribute, small
+        variations of the lengths are permissible.
+      </p>
+      <p>
+        The remaining three pairs each applies 'textLength' attributes to the
+        strings.  In the leftmost sub-test of each pair, the 'textLength' value
+        will cause a stretching of the string of approximately 25% over the
+        "normal" length.  In the rightmost sub-test of each pair, the 'textLength' value
+        will cause a squeezing of the string of approximately 20% under the
+        "normal" length for the string.
+      </p>
+      <p>
+        In each of the sub-tests with an application of 'textLength', the
+        pink reference lines indicate the exact extent of the rendered text.
+        The rendered text should fit snugly just within the ticks at the end of
+        the pink lines.
+      </p>
+      <p>
+        The second pair from the top contains 'textLength' but no 'lengthAdjust'
+        attributes.  In this case, the effect should be as if the value "spacing"
+        were specified.  Only the inter-character advancement and inter-word spacing
+        should change.  The aspect ratio of the glyphs should be unaffected.  The
+        reference image illustrates one valid way to achieve this, by a
+        uniform increase or decrease of inter-character advancement.
+      </p>
+      <p>
+        The third pair from the top explicitly sets 'lengthAdjust' value
+        to "spacing".  Therefore it should be rendered identically to the second pair.
+      </p>
+      <p>
+        The fourth (bottommost) sub-test pair explicitly sets 'lengthAdjust' value
+        to "spacingAndGlyphs".  The advancements between characters and words, as well as
+        the glyph aspect ratios should be affected.
+        The reference image illustrates one valid way to achieve
+        this, by a uniform expansion or compression of the string as a whole.
+        This effect is equivalent to application of a "scale(xfactor, 1.0)" transformation
+        to the 'text' elements.
+      </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 rendered picture should match the reference image, except as noted in the Test Description.
+        In particular, the 'textLength' constraint must be satisfied precisely,
+        and the basic rules associated with the "spacing" and "spacingAndGlyphs" values
+        of 'lengthAdjust' must be met, but the precise algorithm for meeting all
+        of the required contraints is otherwise unspecified.
+      </p>
+    </d:passCriteria>
+  </d:SVGTestCase>
+  <title id="test-title">$RCSfile: text-text-01-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">
+    <text x="14" y="10" font-size="10" fill="black">Basic test of 'textLength' </text>
+    <text x="10" y="20" font-size="10" fill="black">and 'lengthAdjust' attributes.</text>
+    <!-- Test cases 1&2: all defaults -->
+    <g id="test-1-2">
+      <!-- The text lines -->
+      <g font-size="8" fill="blue">
+        <text x="3" y="30">Line to Stretch</text>
+        <text x="75" y="30">this is a line to squeeze</text>
+      </g>
+      <!-- Length reference lines -->
+      <!-- (half ticks here only, as these lengths can validly vary slightly) -->
+      <g stroke="fuchsia">
+        <line x1="2" y1="32" x2="56" y2="32"/>
+        <!--      <line x1="39" y1="70" x2="39" y2="84" /> -->
+        <line x1="2" y1="32" x2="2" y2="36"/>
+        <!--      <line x1="145" y1="70" x2="145" y2="84" /> -->
+        <line x1="56" y1="32" x2="56" y2="36"/>
+        <line x1="74" y1="32" x2="158" y2="32"/>
+        <!--      <line x1="244" y1="70" x2="244" y2="84" /> -->
+        <line x1="74" y1="32" x2="74" y2="36"/>
+        <!--      <line x1="412" y1="70" x2="412" y2="84" /> -->
+        <line x1="158" y1="32" x2="158" y2="36"/>
+      </g>
+      <!-- Labels -->
+      <g font-size="6" fill="black">
+        <text x="6" y="38">textLength: default</text>
+        <text x="6" y="44">lengthAdjust: default</text>
+        <text x="76" y="38">textLength: default</text>
+        <text x="76" y="44">lengthAdjust: default</text>
+      </g>
+    </g>
+    <!-- Test cases 3&4: define textLength, default lengthAdjust-->
+    <g id="test-3-4" transform="translate(0,22)">
+      <!-- The text lines -->
+      <g font-size="8" fill="blue">
+        <text x="3" y="30" textLength="65">Line to Stretch</text>
+        <text x="75" y="30" textLength="65">this is a line to squeeze</text>
+      </g>
+      <!-- Length reference lines -->
+      <g stroke="fuchsia">
+        <line x1="2" y1="32" x2="69" y2="32"/>
+        <line x1="2" y1="32" x2="2" y2="36"/>
+        <line x1="69" y1="32" x2="69" y2="36"/>
+        <line x1="74" y1="32" x2="141" y2="32"/>
+        <line x1="74" y1="32" x2="74" y2="36"/>
+        <line x1="141" y1="32" x2="141" y2="36"/>
+      </g>
+      <!-- Labels -->
+      <g font-size="6" fill="black">
+        <text x="6" y="38">textLength: 25% longer</text>
+        <text x="6" y="44">lengthAdjust: default</text>
+        <text x="76" y="38">textLength: 20% shorter</text>
+        <text x="76" y="44">lengthAdjust: default</text>
+      </g>
+    </g>
+    <!-- Test cases 5&6: define textLength, lengthAdjust=spacing -->
+    <g id="test-5-6" transform="translate(0,44)">
+      <!-- The text lines -->
+      <g font-size="8" fill="blue">
+        <text x="3" y="30" textLength="65" lengthAdjust="spacing">Line to Stretch</text>
+        <text x="75" y="30" textLength="65" lengthAdjust="spacing">this is a line to squeeze</text>
+      </g>
+      <!-- Length reference lines -->
+      <g stroke="fuchsia">
+        <line x1="2" y1="32" x2="69" y2="32"/>
+        <line x1="2" y1="32" x2="2" y2="36"/>
+        <line x1="69" y1="32" x2="69" y2="36"/>
+        <line x1="74" y1="32" x2="141" y2="32"/>
+        <line x1="74" y1="32" x2="74" y2="36"/>
+        <line x1="141" y1="32" x2="141" y2="36"/>
+      </g>
+      <!-- Labels -->
+      <g font-size="6" fill="black">
+        <text x="3" y="38">textLength: 25% longer</text>
+        <text x="3" y="44">lengthAdjust: spacing</text>
+        <text x="76" y="38">textLength: 20% shorter</text>
+        <text x="76" y="44">lengthAdjust: spacing</text>
+      </g>
+    </g>
+    <!-- Test cases 7&8: define textLength, lengthAdjust=spacingAndGlyphs -->
+    <g id="test-7-8" transform="translate(0,66)">
+      <!-- The text lines -->
+      <g font-size="8" fill="blue">
+        <text x="3" y="30" textLength="65" lengthAdjust="spacingAndGlyphs">Line to Stretch</text>
+        <text x="75" y="30" textLength="65" lengthAdjust="spacingAndGlyphs">this is a line to squeeze</text>
+      </g>
+      <!-- Length reference lines -->
+      <g stroke="fuchsia">
+        <line x1="2" y1="32" x2="69" y2="32"/>
+        <line x1="2" y1="32" x2="2" y2="36"/>
+        <line x1="69" y1="32" x2="69" y2="36"/>
+        <line x1="74" y1="32" x2="141" y2="32"/>
+        <line x1="74" y1="32" x2="74" y2="36"/>
+        <line x1="141" y1="32" x2="141" y2="36"/>
+      </g>
+      <!-- Labels -->
+      <g font-size="6" fill="black">
+        <text x="6" y="38">textLength: 25% longer</text>
+        <text x="6" y="44">lengthAdjust: sAG</text>
+        <text x="76" y="38">textLength: 20% shorter</text>
+        <text x="76" y="44">lengthAdjust: sAG</text>
+      </g>
+    </g>
+  </g>
+  <g font-family="SVGFreeSansASCII,sans-serif" font-size="8">
+    <text id="revision" x="10" y="117" stroke="none" fill="black">$Revision: 1.2 $</text>
+  </g>
+  <rect id="test-frame" x="1" y="1" width="158" height="118" 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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/testharnessreport.js	Fri Jul 25 11:21:13 2014 -0700
@@ -0,0 +1,54 @@
+/* Handling testsuite results:
+*
+* When tests using testharness.js are loaded in an iframe they will attempt to call global functions in the top frame to report the progress of the testsuite and the results status:
+*
+* start_callback() - called before the first test is run.
+*
+* result_callback(Test) - called once a result for a specific test has been determined.
+*
+* completion_callback([Test]) - called with a list of all tests run once all results have been determined.
+*
+* A Test object exposes three properties that should be considered public:
+*
+* name - The name of the test
+* status - an integer representing the test result
+* message - a string indicating the reason a test failed, or null if it passed
+*
+* The test status can be compared to the status object on the test frame. e.g. to check for a pass one might do
+*
+* passed = (test.status === test_frame.contentWindow.status.PASS)
+*
+* (TODO: make this easier)
+*
+* Current statuses are PASS, FAIL and TIMEOUT
+*
+* Example:
+* The following are examples for global functions.
+* result_callback : alerts the test name, status and message
+* completion_callback : alerts the number of pass/fail/timeout
+
+function start_callback() {
+   //Add test setup (if needed) here.
+}
+
+function result_callback(test) {
+   var passed = test.status === test_frame.contentWindow.status.PASS;
+   var failed = test.status === test_frame.contentWindow.status.FAIL;
+   var str = test.name;
+   if (passed) str += " passed: ";
+   else if (failed) str += " failed: ";
+   else str += " timed out: ";
+   str += test.message;
+   alert(str);
+}
+
+function completion_callback(tests) {
+    var passes=[], fails=[], timeouts=[];
+    for (var i = 0; i < tests.length; i++) {
+       if (tests[i].status === test_frame.contentWindow.status.PASS) passes.push(test[i]);
+       else if (test[i].status === test_frame.contentWindow.status.FAIL) fails.push(test[i]);
+       else timeouts.push(test[i]);
+    }
+    alert("Got " + passes.length + " pass, " + fails.length + " fail and "+ timeouts.length + " timeout");
+}
+*/
\ No newline at end of file
Binary file contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength-test 1 2 - IE.png has changed
Binary file contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength-test 5 - FF.png has changed
Binary file contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength-test 6 - IE.png has changed
Binary file contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength.cdr has changed
Binary file contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan-files/text-tspan-textLength.svg	Fri Jul 25 11:21:13 2014 -0700
@@ -0,0 +1,81 @@
+<?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 version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="10 0 240 400">
+
+
+
+	<!-- DRAFT indicator - to be commented out once test is validated as a good test -->
+	<text x="50" y="300" font-size="80" transform="translate(50,300) rotate(-45) translate(-50,-300)" 
+		fill="rgb(240,220,220)" stroke="none" font-family="courier" >DRAFT</text>
+
+
+
+	<!-- Test 1 - textLength on only the text element, with text and tspan content defintion -->
+	<rect x="10" y="20" width="220" height="20" stroke-width="2" stroke="rgb(150,150,0)" fill="none" />
+	<text  x="10" y="40" font-size="15" textLength="220" lengthAdjust="spacingAndGlyphs" font-family="arial" fill="blue">
+		Core text
+		<tspan font-size="20"  fill="black" >tspan 1</tspan>
+		<tspan font-size="15" font-style="italic" fill="black" >tspan 2</tspan>
+	</text>
+	<text x="10" y="55" font-size="12">textLength on the parent &lt;text /&gt; element only </text>
+
+
+
+	<!-- Test 2 - textLength only on first tspan element, with text and tspan content definition -->
+	<rect x="76" y="70" width="120" height="20" stroke-width="1" stroke="rgb(250,150,0)" fill="none" />
+	<text  x="10" y="90" font-size="15" font-family="arial">
+		Core text
+		<tspan textLength="120" lengthAdjust="spacingAndGlyphs" font-size="20" fill="blue">tspan 1</tspan>
+		<tspan font-size="15" font-style="italic" fill="black" > tspan 2</tspan>
+	</text>
+	<text x="10" y="105" font-size="12">textLength on the child &lt;tspan /&gt; 1 element only</text>
+
+
+
+	<!-- Test 3 - textLength on text and one child tspan element, with text and tspan content definition -->
+	<rect x="10" y="130" width="220" height="20" stroke-width="2" stroke="rgb(150,150,0)" fill="none" />
+	<rect x="190" y="130" width="40" height="20" stroke-width="1" stroke="rgb(250,150,0)" fill="none" />
+	<text  x="10" y="150" font-size="15" textLength="220"  lengthAdjust="spacingAndGlyphs" font-family="arial" fill="blue">
+		Core text
+		<tspan font-size="20" fill="black" >tspan 1</tspan>
+		<tspan font-size="15" font-style="italic" textLength="40" fill="blue"> tspan 2</tspan>
+	</text>
+	<text x="10" y="165" font-size="12">textLength on the parent &lt;text /&gt; element and</text>
+	<text x="10" y="180" font-size="12">the &lt;tspan /&gt;2 element</text>
+
+
+
+	<!-- Test 4 - textLength on text and both tspan children, with text and tspan content definition -->
+	<rect x="10" y="200" width="220" height="20" stroke-width="2" stroke="rgb(150,150,0)" fill="none" />
+	<rect x="130" y="200" width="60" height="20" stroke-width="1" stroke="rgb(250,150,0)" fill="none" />
+	<rect x="190" y="200" width="40" height="20" stroke-width="1" stroke="rgb(250,150,0)" fill="none" />
+	<text  x="10" y="220" font-size="15" textLength="220" lengthAdjust="spacingAndGlyphs" font-family="arial" fill="blue">
+		Core text
+		<tspan font-size="20" fill="blue" textLength="60" >tspan 1</tspan>
+		<tspan font-size="15" font-style="italic" textLength="40" fill="blue"> tspan 2</tspan>
+	</text>
+	<text x="10" y="235" font-size="12">textLength on the parent &lt;text /&gt; element and</text>
+	<text x="10" y="250" font-size="12">both &lt;tspan /&gt; 1 and 2 elements</text>
+
+
+	<!-- Test 5 - textLength on only text element, with empty text content, with tspan content definition -->
+	<rect x="10" y="260" width="220" height="20" stroke-width="2" stroke="rgb(150,150,0)" fill="none" />
+	<text  x="10" y="280" font-size="15" textLength="220" lengthAdjust="spacingAndGlyphs" font-family="arial" fill="blue">
+		<tspan font-size="20"  fill="black" >tspan 1</tspan>
+		<tspan font-size="15" font-style="italic" fill="black" >tspan 2</tspan>
+	</text>
+	<text x="10" y="295" font-size="12">textLength on the parent &lt;text /&gt; element only</text>
+	<text x="10" y="310" font-size="12">- no &lt;text /&gt; content</text>
+
+	<!-- Test 6 - textLength on only tspan element, with empty text content, with tspan content definition -->
+	<rect x="10" y="330" width="100" height="20" stroke-width="1" stroke="rgb(250,150,0)" fill="none" />
+	<text  x="10" y="350" font-size="15" font-family="arial" fill="blue">
+		<tspan font-size="20"  fill="blue" textLength="100" lengthAdjust="spacingAndGlyphs" >tspan 1</tspan>
+		<tspan font-size="15" font-style="italic" fill="black" >tspan 2</tspan>
+	</text>
+	<text x="10" y="365" font-size="12">textLength on the child &lt;tspan /&gt; "tspan 1"</text>
+	<text x="10" y="380" font-size="12">element only; no &lt;text /&gt; content</text>
+
+
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contributors/smailus/incoming/Test - SVG2 - text-tspan-textLength/text-tspan.html	Fri Jul 25 11:21:13 2014 -0700
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="UTF-8"?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+      <meta name="keywords" content="W3C SVG 1.1 2nd Edition Test Suite">
+      <meta name="description" content="W3C SVG 1.1 2nd Edition Object Test Suite">
+      <title>
+SVG 1.1 2nd Edition Test (&lt;object&gt;): text-text-01-b.svg
+      </title>
+      <style type="text/css">
+        <!--
+         .bodytext      { font-family:verdana, helvetica, sans-serif; font-size: 12pt; line-height: 125%; text-align: Left; margin-top: 0; margin-bottom: 0 }
+         .pageTitle     { line-height: 150%; font-size: 20pt; font-weight : 900; margin-bottom: 20pt }
+         .pageSubTitle  { color : blue; line-height: 100%; font-size: 24pt; font-weight : 900 }
+         .openChapter   { color : blue; line-height: 125%; font-weight : 900 }
+         .openSection   { color : blue; line-height: 125%; font-weight : 900 }
+         .info          { color : black; line-height: 110%; font-size: 10pt; font-weight : 100 }
+         p              { margin-top:0; margin-bottom:0; padding-top:0; padding-bottom:0 }
+         blockquote     { margin-top:0; margin-bottom:0; padding-top:0; padding-bottom:0 }
+         .opscript      { margin-left: 3%; margin-right: 3%; }
+         .opscript p    { margin-top: 0.7em }
+         .navbar        { background: black; color: white; font-weight: bold }
+         .warning       { color: red; text-align: Center;}
+         a,a:visited    { color: blue }
+        -->
+      </style>
+      <link rel="prev" href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/text-spacing-01-b.html">
+      <link rel="index" href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/index.html">
+      <link rel="next" href="http://www.w3.org/Graphics/SVG/Test/20110816/harness/htmlObjectApproved/text-text-03-b.html">
+      <script src="text-text-01-b_files/testharnessreport.js"></script>
+    </head>
+  <body class="bodytext">
+<div class="linkbar"> 
+	<p>
+	Specification links: <a target="spec" href="http://www.w3.org/TR/SVG11/text.html#TextElement">10.4 The 'text' element</a>
+	<a target="spec" href="http://www.w3.org/TR/SVG11/text.html#TSpanElement">10.5 The 'tspan' element</a>
+	</p>
+  <p>
+  <a href="http://dev.w3.org/SVG/profiles/2.0/test/" rel="index">test root</a>
+</p>
+</div>
+<div>
+  <br>
+  <p class="warning">
+    Tests that contain the draft-watermark are under development and may be incorrectly testing a feature.
+  </p>
+</div>
+<table align="center" border="0" cellpadding="10" cellspacing="0">
+  <tbody><tr>
+    <td colspan="3" align="center">
+      <table border="0" cellpadding="8">
+        <tbody><tr>
+          <td colspan="2" class="pageTitle" align="center">
+            <h1>text-tspan-textLength.svg</h1>
+          </td>
+        </tr>
+        <tr class="navbar">
+          <td align="center" width="50%">
+            SVG Image
+          </td>
+          <td align="center" width="50%" >
+            PNG Image
+          </td>
+        </tr>
+        <tr>
+          <td align="center">
+            <object data="text-tspan-files/text-tspan-textLength.svg" type="image/svg+xml" width="240" height="400"><p style="font-size:300%;color:red">FAIL</p></object>
+          </td>
+          <td align="center">
+            <img alt="raster image of text-tspan-textLength.svg" src="text-tspan-files/text-tspan-textLength.png" width="252" height="370">
+          </td>
+        </tr>
+      </tbody></table>
+    </td>
+  </tr>
+</tbody></table>
+
+<div class="opscript">
+    <h2 id="operatorscript">
+      Operator Script
+    </h2>
+    <div>
+<p>
+        Run the test. No interaction required.
+      </p>
+  </div>
+  <h2 id="passcriteria">
+    Pass Criteria
+  </h2>
+  <div>
+<p>
+        The rendered picture (left) should match the reference image (right), except as noted in the Test Description.
+	In particular, the 'textLength' constraint must be satisfied precisely, as it is used in combinations over
+	the text element and tspan subelements of the text element.
+	The length of text that are not specified with a textLength should be adjusted to ensure the specified
+	textLength regions are enforced.
+</p>
+  </div>
+  <h2 id="testdescription">
+    Test Description
+  </h2>
+  <div>
+	<p>
+	Test viewer capibility to handle basic use of 'textLength'
+	and 'lengthAdjust' attributes, when applied to 'text' elements and 'tspan' subelements.
+
+      </p><p>
+      There are four sub-tests.  Each sub-test consists of the same sequence of text:
+      "Core text tspan 1 tspan 2", where "Core text" is the value of the &lt;text/&gt; element, and
+      "tspan 1" and "tspan 2" are the values of two &lt;tspan/&gt; child elements of the &lt;text/&gt; element.
+      The core text is one font size, the tspan 1 child has  larger font size, and the tspan 2 a smaller italic
+      font.  This same set of fonts is used in each sample.  The blue text elements are to indicate on which
+      elements an explicit textLength attribute has been set.</p>
+      <p>
+      There are <font color=#969600>olive green boxes</font> around the overall  &lt;text/&gt; element affected
+      by textLength specifications which are of the length of the total textLength specified,
+      and should be filled left to right by the text.  There are <font color=#FA9600>orange boxes</font>
+     where &lt;tspan/&gt; elements
+      have textLenght specified, that represent the extents of the tspan and are of width equal to the 
+      tspan textLength.
+      </p><p><b>Test 1</b>
+	The first test applies a single textLength on only the  &lt;text/&gt; element which should apply
+	to the length of the contents of the &lt;text/&gt; and the two child  &lt;tspan/&gt; as a whole.  The
+	total sentence should fill the box, being stretched uniformly.
+      </p><p><b>Test 2</b>
+	The second test applies no textLength to the root  &lt;text/&gt;, but applies a textLength to only the 
+	first &lt;tspan/&gt;.  The tspan 1 text should thus be of the specified length and cover the box.
+	As the viewer renders the "core text" at its default font size, the start of the box/tspan 1 can vary
+	slightly.
+      </p><p><b>Test 3</b>
+      The third test applies a textLength to the  &lt;text/&gt; element, and to the second &lt;tspan/&gt;
+      element.  This specifies an overall length for the entire line, as well as a specific length for the tspan 2
+      section.  "tspan 2" should resize to fit its constraint requirement, and "Core text tspan 1" should uniformly
+      resize to, with "tspan 2" meet the overall lenght set on the  &lt;text/&gt; element. 
+      </p><p><b>Test 4</b>
+      The fourth test applies a textLength to the  &lt;text/&gt; element (which governs the length of the total
+      sentence length) and explicit ones applied to the two  &lt;tspan/&gt; child elements, which specify the lenght
+      of the specific tspans.  The tspan 1 and tspan 2 elements should be independently sized to meet thier individual
+      testLength requirements, and then all of the elements, "Core text," "tspan 1," and "tspan 2" uniformly to 
+      meet the  &lt;text/&gt; elements overal textLength reqirement.
+      </p>
+      <p><b>Test 5</b>
+      The fifth test is a variation of test 1, with the change that there is no text content (empty) for the main
+      &lt;text/&gt; element; all of the actual text is only contained in the tspan children, but the main
+      text element still specifies the overall textLength extents.  The text "tspan 1" and "tspan 2" should be 
+      adjusted to fill the box.
+      </p>
+      <p><b>Test 6</b>
+      The sixth test is a variation of test 2, with the change that there is no text content (empty) for the main
+      &lt;text/&gt; element; all of the actual text is only contained in the tspan children.  The first 
+      &lt;tspan/&gt; specifies its textLength extents.  The text "tspan 1" should fill its box.
+  </p>
+</font>
+  </div>
+</div>
+<br>
+<div class="linkbar">
+  <p>
+    <a href="http://dev.w3.org/SVG/profiles/2.0/test/" rel="index">test root</a>
+  </p>
+</div>
+
+
+</body></html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contributors/smailus/submitted/SVG2 TestTemplate.svg	Fri Jul 25 11:21:13 2014 -0700
@@ -0,0 +1,50 @@
+<svg 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"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>SVG Test: DESCRIPTION OF TEST</title>
+    <html:link rel="copyright"
+          href="http://www.w3.org/Graphics/SVG/Test/Copyright"/>
+    <html:link rel="license"
+          href="http://www.w3.org/Consortium/Legal/2008/03-bsd-license.html"/>
+    <html:link rel="author"
+          title="Thomas Smailus"
+          href="mailto:EMAIL OR http://CONTACT_PAGE"/>
+    <html:link rel="reviewer"
+          title="NAME_OF_REVIEWER"
+          href="mailto:EMAIL OR http://CONTACT_PAGE" />
+          <!-- YYYY-MM-DD -->
+    <html:link rel="help"
+          href="RELEVANT_SPEC_SECTION"/>
+    <html:link rel="match"  href="RELATIVE_PATH_TO_REFERENCE_FILE" />
+    <html:link rel="mismatch" href="RELATIVE_PATH_TO_REFERENCE_FILE" />
+    <metadata class="flags">TOKENS</metadata>
+    <desc class="assert">TEST ASSERTION</desc>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff" format("woff"),
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { fill: green; }
+  </style>
+
+  <defs></defs>
+
+  <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">SVG Test Template</text>
+
+  <g id="test-body-content" font-size="16">
+    <text x="50" y="100" fill="red">This text should be green.</text>
+  </g>
+
+</svg>
+