Expand description
Line preprocessing: docutils statemachine.string2lines(tab_width=8, convert_whitespace=True) equivalent, with byte-span mapping back to the
original source (docutils loses this; we keep it for node spans).
Probe-verified semantics (docutils 0.22.4):
\v/\fbecome single spaces (convert_whitespace).- Lines split on
\n,\r\n,\r(plus Pythonsplitlinesexotics:\x1c-\x1e,\u{85},\u{2028},\u{2029}). - Tabs expand to the next multiple-of-8 column (character columns).
- Trailing whitespace stripped per line.
- One processed line == one source line, so message line numbers are
processed index + 1.