Unfortunately it isn't practical for parsing reasons to keep two offsets in a string. If we did that, some files have CR only, some have LF only, others have CR LF. So there is no consistent pattern to check for when looking for line ends. Now obviously we have to do that somewhere, so we take the parsing hit the first time the text is typed, pasted, or loaded into the control. But then from that point on, we know that there will always only be a LF at the end of each line internally. So the fact that we know exactly what character delimits a line terminator and that there is only one character eliminates all kinds of if...then...else statements and such that would need to be scattered through our code, thereby slowing down run-time parsing significantly. Hope that explains the reasoning.