Right, so the reason this happens is due to css text styling.
Originally, I used whitespace pre-wrap, which preserves ALL white space, new lines, so on. Eventually, after adding support for some markup functions, pre-wrap became untenable.
Switching to normal was necessary to avoid massive headaches. For new lines to show up in normal whitespace, they must be .
1 Newline creates BR
2 New Lines Create
BR
3 New Lines Create
BR
Reddit works the same way
EDIT oh shit nevermind this is broke. it requires 1 line too many, I think because my pseudo-markup function is only looking for "\n" lines to replace with instead of end/start of strings.
Enter pressed once after first line of text.
Enter pressed twice after second line of text.
Enter pressed three times after third line of text.