1. HTML reserved characters like < > and \.
2. overflowing content
3. displaying ASCII made with special encodings and characters sets, like code page 437
4. displaying nonprintable (control) characters
5. displaying colors
6. text preprocessors messing up the formatting
Yeah, for non-ASCII / more sophisticated stuff, images are kinda the only widely-compatible option without adopting a full terminal emulator worth of javascript.