| <!doctype html> |
| <title>Test that alignment-baseline is unaffected by zoom level</title> |
| <script src="../../resources/ahem.js"></script> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <svg width="250" height="140" viewBox="0 0 250 140" |
| xmlns="http://www.w3.org/2000/svg" version="1.1"> |
| <style> |
| text { |
| font-family: ahem; |
| font-size: 20px; |
| } |
| </style> |
| <text x="15" y="40">before<tspan>inter</tspan>after</text> |
| <script> |
| var alignmentBaselineValues = ["baseline", "central", "after-edge", "text-after-edge", |
| "ideograpic", "alphabetic", "mathematical"]; |
| var expectedDeltas = { |
| "baseline" : 0, |
| "before-edge": -16, |
| "text-before-edge": -16, |
| "middle": -8, |
| "central": -6, |
| "after-edge": 4, |
| "text-after-edge": 4, |
| "ideograpic": 0, |
| "alphabetic": 0, |
| "hanging": -13, |
| "mathematical": -8 |
| }; |
| |
| var zoomLevels = [1, 4, 16]; |
| var html = document.documentElement; |
| alignmentBaselineValues.forEach(function (alignmentBaselineValue) { |
| document.querySelector('tspan').setAttribute('alignment-baseline', alignmentBaselineValue); |
| zoomLevels.forEach(function (zoom) { |
| html.style.zoom = zoom; |
| var baselineShiftDelta = (document.querySelector('text').getStartPositionOfChar(0).y - |
| document.querySelector('tspan').getStartPositionOfChar(0).y); |
| test(function () { |
| assert_approx_equals(baselineShiftDelta, expectedDeltas[alignmentBaselineValue], 1); |
| }, "Text bounds height at zoom " + zoom + " with alignment-baseline=" + alignmentBaselineValue); |
| }); |
| }); |
| html.style.zoom = 1; |
| // Clean up to avoid being classified as a text test; avoids an -expected.txt file. |
| document.querySelector('text').remove(); |
| </script> |
| </svg> |