Nice write up, Justin! I was one of the first engineers at a competitor of TeeSpring's, and we tackled the same problems. We used Fabric.js in our second iteration (first was jQuery).
Eventually, we ditched the SVG and moved more things into 3D, which made for a better design in the end. For example, now we calculate 3D geometry for the font from its curves and get an actual real bounding box for it.
Anyway, it's interesting to read about how other people solved the same problem.
1: https://www.43layers.com/products/laser-cut-coasters/Custom-...
Drop me a line at malonso [at] loopbit.com if you want :)