<head>
<script>

function testString(s)
{
    var fast = document.getElementById("fastPath");
    fast.firstChild.data = s;
    var fastWidth = fast.offsetWidth;
    var slow = document.getElementById("slowPath");
    slow.firstChild.data = s;
    var slowWidth = slow.offsetWidth;
    return fastWidth == slowWidth;
}

function test()
{
    if (window.testRunner)
        testRunner.dumpAsText();

    var testStrings = ["\u02E5\u02E9", "\u02E9\u02E5", "\u02E7\u02E9",
                       "\u02E5\u02E7", "\u02E5\u02E7\u02E5"];
                    
    var failedStrings = new Array;
    for (var i = 0; i < testStrings.length; ++i) 
        if (!testString(testStrings[i]))
            failedStrings.push(testStrings[i]);

    var testArea = document.getElementById("testArea");
    testArea.parentNode.removeChild(testArea);

    if (failedStrings.length > 0) 
        result = "FAIL: The following strings are rendered differently depending on what text-rendering is set to : " + failedStrings.join(", ");
    else
        result = "PASS: All strings have identical widths regardless of what text-rendering is set to.";
    document.getElementById("result").firstChild.data = result;
}
</script>
</head>
<body onload="test()">
  <p>This test checks if sequences of IPA tone marks are treated as complex script characters and ligated when a font capable of that is specified regardless of text-rendering mode. It's for <a href="http://bugs.webkit.org/show_bug.cgi?id=39799">bug 39799</a></p>
<p id="result">FAIL: Script did not run to completion.</p>
<p id="testArea" style="font-family: Arial;">
<span id="fastPath" style="text-rendering: optimizeSpeed"> </span>
<span id="slowPath" style="text-rendering: optimizeLegibility"> </span>
</p>
</body>
