<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <script type="text/javascript"> var testFont = '40px sans-serif'; function test(x, y, text, style, rotation, baseline) { var canvas = document.createElement("canvas"); canvas.width = 400; canvas.height = 400; canvas.style.cssText = 'position:absolute;' + style; document.getElementsByTagName('body')[0].appendChild(canvas); var ctx = canvas.getContext('2d'); ctx.globalAlpha = 0.5; ctx.beginPath(); ctx.moveTo(x - 20, y); ctx.lineTo(x + 20, y); ctx.moveTo(x, y - 20); ctx.lineTo(x, y + 20); ctx.stroke(); ctx.globalAlpha = 1.0; ctx.font = testFont; if (rotation != 0) { ctx.translate(x,y); ctx.rotate(rotation); ctx.translate(-x,-y); } if (baseline != '') { ctx.textBaseline = baseline; } ctx.fillText(text, x, y); } // Testcase: vertical text with various textBaselines // test(100, 50, 'Top', 'writing-mode:vertical-lr', 0, 'top'); // test(150, 50, 'Middle', 'writing-mode:vertical-lr', 0, 'middle'); // test(200, 50, 'Alphabetic', 'writing-mode:vertical-lr', 0, 'alphabetic'); // test(250, 50, 'Bottom', 'writing-mode:vertical-lr', 0, 'bottom'); // Reference: horizontal text with 90° rotation and the same baselines test(100, 50, 'Top', 'writing-mode:horizontal-tb', Math.PI/2, 'top'); test(150, 50, 'Middle', 'writing-mode:horizontal-tb', Math.PI/2, 'middle'); test(200, 50, 'Alphabetic', 'writing-mode:horizontal-tb', Math.PI/2, 'alphabetic'); test(250, 50, 'Bottom', 'writing-mode:horizontal-tb', Math.PI/2, 'bottom'); </script>