| <html> |
| <head> |
| <meta charset="UTF-8" /> |
| <title>Canvas Normalized String Test</title> |
| </head> |
| |
| <body> |
| <p>On success, two same text string with equal width will be rendered.</p> |
| <canvas id="myCanvas" width="300px" height="300px" style="border:1px solid #c3c3c3;"> |
| Your browser does not support the canvas element. |
| </canvas> |
| <div id="console"></div> |
| |
| <script type="text/javascript"> |
| function compareImageData(img1,img2) |
| { |
| if(img1.data.length != img2.data.length) |
| return false; |
| |
| for(var i = 0; i < img1.data.length; ++i){ |
| if(img1.data[i] != img2.data[i]) |
| return false; |
| } |
| return true; |
| } |
| |
| function compareStrings(string1, string2, fontSize, ctx, yCo) |
| { |
| ctx.fillText(string1, 10, yCo); |
| var imgDataCombinedText = ctx.getImageData(10,yCo-fontSize, ctx.measureText(string1).width,fontSize); |
| |
| yCo += fontSize * 2; |
| ctx.fillText(string2, 10, yCo); |
| var imgData = ctx.getImageData(10, yCo-fontSize, ctx.measureText(string2).width,fontSize); |
| return compareImageData(imgDataCombinedText, imgData); |
| } |
| |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| var c=document.getElementById("myCanvas"); |
| var ctx=c.getContext("2d"); |
| |
| var yCo = 30; |
| var testFlag = false; |
| var fontFamily = "Arial, san-serif"; |
| var fontSize = 20; |
| ctx.font = fontSize + "px " + fontFamily; |
| |
| // This will test both Complex and Simple code path |
| var latinString="Sample string \u0009 \u000A \u000D string end"; |
| var normalizedLatinString="Sample string \u0020 \u0020 \u0020 string end"; |
| |
| var HindiString="हिन्दी \u0009 \u000A \u000D हिन्दी "; |
| var normalizedHindiString="हिन्दी \u0020 \u0020 \u0020 हिन्दी "; |
| |
| testFlag = compareStrings(latinString, normalizedLatinString, fontSize, ctx, yCo); |
| yCo += fontSize * 4; |
| testFlag = compareStrings(HindiString, normalizedHindiString, fontSize, ctx, yCo); |
| if (testFlag) |
| document.getElementById("console").innerHTML = "TEST PASSED"; |
| else |
| document.getElementById("console").innerHTML = "TEST FAILED"; |
| |
| </script> |
| </body> |
| </html> |