There are markup languages for this purpose. And you store the rich text as normal text in that markup language. For the most part.
It's typically an XML or XML-like language, or bb-codes. MS Word for example uses XML to store the markup data for the rich text.
Simpler and more limited text needs tend to use markdown these days, like Lemmy, or most text fields on GitHub.
There's no need to include complex technology stacks into it!
Now the real hard part is the rendering engine for WYSIWYG. That's a nightmare.