diff --git a/src/ol/render/canvas.js b/src/ol/render/canvas.js index 4e9f562ac8..3c2607cae0 100644 --- a/src/ol/render/canvas.js +++ b/src/ol/render/canvas.js @@ -288,22 +288,22 @@ function getMeasureContext() { * @return {import("../size.js").Size} Measurement. */ export const measureTextHeight = (function() { - let span; + let div; const heights = textHeights; return function(font) { let height = heights[font]; if (height == undefined) { - if (!span) { - span = document.createElement('span'); - span.textContent = 'M'; - span.style.margin = span.style.padding = '0 !important'; - span.style.position = 'absolute !important'; - span.style.left = '-99999px !important'; + if (!div) { + div = document.createElement('div'); + div.innerHTML = 'M'; + div.style.margin = div.style.padding = '0 !important'; + div.style.position = 'absolute !important'; + div.style.left = '-99999px !important'; } - span.style.font = font; - document.body.appendChild(span); - height = heights[font] = span.offsetHeight; - document.body.removeChild(span); + div.style.font = font; + document.body.appendChild(div); + height = heights[font] = div.offsetHeight; + document.body.removeChild(div); } return height; }; diff --git a/test/spec/ol/render/canvas/index.test.js b/test/spec/ol/render/canvas/index.test.js index 7f178a37be..560cf4698b 100644 --- a/test/spec/ol/render/canvas/index.test.js +++ b/test/spec/ol/render/canvas/index.test.js @@ -76,6 +76,14 @@ describe('ol.render.canvas', function() { }); + describe('measureTextHeight', function() { + it('respects line-height', function() { + const height = render.measureTextHeight('12px/1.2 sans-serif'); + expect(render.measureTextHeight('12px/2.4 sans-serif')).to.be.greaterThan(height); + expect(render.measureTextHeight('12px/0.1 sans-serif')).to.be.lessThan(height); + }); + }); + describe('rotateAtOffset', function() { it('rotates a canvas at an offset point', function() {