Apparently this used to be a common thing, groff has a feature to output bold text for TTY devices by backspacing and re-printing each character twice.
You can get underlined text in a similar way using backpace and underscore.
It doesn't work out of the box on terminal emulators, but less(1) does this rendering for man pages, etc.