IMO, unless you're writing a new renderer from scratch or doing something else super custom, three.js is the best way of doing real-time 3d for the web these days.
I think the bitmap font stuff can be extended to rendering SDF (signed distance field) fonts, which are nice enough for me--but that is not ready to use out of the box.
I would just render text to a canvas and use it as a texture in your Three.js scene. That's how I do it in my side project and it works without any extra dependency.
That's precisely what I'm looking at. I'm not as familiar with the front-end space as I used to be. What's the SOTA these days?