<!DOCTYPE html>
<style>
text {
font-size: 50px;
font-style: italic;
}
rect {
stroke-width: 1px;
stroke: green;
fill: transparent;
}
#middleGlyphOverhang {
font-family: cursive;
}
#simpleTextVerticalRl {
writing-mode: vertical-rl;
font-size: 80px;
}
#simpleTextVerticalLr {
writing-mode: vertical-lr;
font-size: 80px;
}
</style>
No glyphs should extend outside the rects.<br>
<svg id="svg" width="700" height="500">
<text id="simpleText" x="50" y="50">ffffffff</text>
<text id="textWithSpan" x="50" y="150">ffffff<tspan>ffffff</tspan></text>
<text id="textWithDifferentSizes" x="50" y="250"><tspan font-size="30px">ffffff</tspan><tspan font-size="80px">ffffff</tspan></text>
<text id="rotatedText" x="50" y="350" rotate="20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380">fffffffffffffffffff</text>
<text id="middleGlyphOverhang" x="50" y="475">'faQ'</text>
<text id="simpleTextVerticalRl" x="350" y="30">ffffffff</text>
<text id="simpleTextVerticalLr" x="500" y="30">ffffffff</text>
</svg>
<script>
[simpleText, textWithSpan, textWithDifferentSizes, rotatedText,
middleGlyphOverhang, simpleTextVerticalRl, simpleTextVerticalLr].forEach(function (textElement) {
var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
rect.setAttribute('x', textElement.getBBox().x);
rect.setAttribute('y', textElement.getBBox().y);
rect.setAttribute('width', textElement.getBBox().width);
rect.setAttribute('height', textElement.getBBox().height);
document.getElementById('svg').appendChild(rect);
});
</script>