<!DOCTYPE html>
<style>
text {
font-size: 50px;
font-style: italic;
}
rect {
stroke-width: 1px;
stroke: green;
fill: transparent;
}
#middleGlyphOverhang {
font-family: cursive;
}
</style>
No glyphs should extend outside the rects.<br>
<svg id="svg" width="700" height="500">
<defs>
<path id="straightPath" d="M50 100 L 400 100"/>
<path id="backwardsPath" d="M400 150 L 50 150"/>
<path id="slantedPath" d="M50 250 L 400 350"/>
<path id="middleGlyphOverhangPath" d="M50 450 L 400 450"/>
</defs>
<text id="straightText">
<textPath xlink:href="#straightPath">ffffffffffffffffffffffff</textPath>
</text>
<text id="backwardsText">
<textPath xlink:href="#backwardsPath">ffffffffffffffffffffffff</textPath>
</text>
<text id="slantedText">
<textPath xlink:href="#slantedPath">ffffffffffffffffffffffff</textPath>
</text>
<text id="middleGlyphOverhang">
<textPath xlink:href="#middleGlyphOverhangPath">'faQ'</textPath>
</text>
</svg>
<script>
[straightText, backwardsText, slantedText, middleGlyphOverhang].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>