16.6.1 The 'white-space' processing model

Chapter 16 - Text - 16.6.1 The 'white-space' processing model

Go to the relevant page of the specification.

bidi-001
The bidi algorithm and inlines in CSS
bidi-003
The bidi algorithm and inlines in CSS
bidi-004 (may)
The bidi algorithm and inlines in CSS
bidi-004a
Bidi Codes, White space, and Tree structure
The final order of characters in a block container is the same as if markup had been stripped, consecutive space collapsed in logical order, and the resulting character sequence, including any bidi codes, had been passed to an implementation of the Unicode bidirectional algorithm for plain text that produced the same line-breaks as the styled text.
inlines-016 (ahem)
Inline box model: space collapsing, padding, white-space, et al
If a space (U+0020) at the beginning of a line has 'white-space' set to 'normal', then it is removed, even if there's padding.
line-breaking-bidi-001
Line breaking and the bidi algorithm
line-breaking-bidi-002
Line breaking and the bidi algorithm (with hebrew character)
line-breaking-bidi-003
Line breaking and the bidi algorithm (no breaks)
white-space-007 (ahem)
white-space
'white-space: normal' and 'white-space: nowrap' should collapse sequences of white space. Regarding wrapping, line breaking opportunities are determined on the text prior to white space collapsing steps.
white-space-collapsing-001
white-space normal: collapsing through padding, borders, margins
white-space-collapsing-002
white-space normal: collapsing through padding, borders, margins
white-space-collapsing-003
white-space normal: collapsing at line edges
white-space-collapsing-004
white-space normal: simple tests
white-space-collapsing-005
white-space normal: simple tests
white-space-collapsing-bidi-003
Trailing spaces in table cells
white-space-collapsing-breaks-001
Line Breaking in Collapsed White Space
Line break opportunities are determined before white space collapsing.
white-space-mixed-001
white-space: mixed tests
white-space-mixed-002
white-space: mixed tests (simple)
white-space-mixed-003
white-space: mixed tests (simple)
white-space-mixed-004 (ahem, interact)
white-space: mixed tests
white-space-normal-001
white-space normal: simple tests
white-space-normal-002
white-space normal: simple tests
white-space-normal-003
white-space normal: UNICODE space characters
white-space-normal-004
white-space normal: UNICODE space characters with inline elements
white-space-normal-005
white-space normal: zero width non-breaking space
white-space-normal-006
white-space normal: zero width non-breaking space
white-space-normal-007
white-space normal: zero width non-breaking space
white-space-normal-008
white-space normal: zero width non-breaking space
white-space-normal-009
white-space normal: zero width non-breaking space
white-space-nowrap-001
white-space nowrap: basic test
white-space-nowrap-005
white-space nowrap: zero width non-breaking space
white-space-nowrap-006
white-space nowrap: zero width non-breaking space
white-space-pre-001 (ahem)
white-space pre: simple tests
white-space-pre-002
white-space pre: simple tests
white-space-pre-005
white-space pre: zero width non-breaking space
white-space-pre-006
white-space pre: zero width non-breaking space
white-space-pre-007
white-space and word-spacing
white-space-processing-001 (ahem)
Block level elements with text and white space
Text within a block element is treated like an anonymous inline element for white space processing model.
white-space-processing-002 (ahem, may)
White-space 'normal' with tab adjoining linefeed
A tab before a linefeed is removed if 'white-space' is set to 'normal'. The linefeed may be rendered as a space or not rendered.
white-space-processing-003 (ahem, may)
White-space 'nowrap' with tab adjoining linefeed
A tab before a linefeed is removed if 'white-space' is set to 'nowrap'. The linefeed may be rendered as a space or not rendered.
white-space-processing-004 (ahem, may)
White-space 'pre-line' with tab adjoining linefeed
A tab before a linefeed is removed if 'white-space' is set to 'pre-line'. The linefeed may be rendered as a space or not rendered.
white-space-processing-005 (ahem, may)
White-space 'normal' with carriage return adjoining linefeed
A carriage return before a linefeed is removed if 'white-space' is set to 'normal'. The linefeed may be rendered as a space or not rendered.
white-space-processing-006 (ahem, may)
White-space 'nowrap' with carriage return adjoining linefeed
A carriage return before a linefeed is removed if 'white-space' is set to 'nowrap'. The linefeed may be rendered as a space or not rendered.
white-space-processing-007 (ahem, may)
White-space 'pre-line' with carriage return adjoining linefeed
A carriage return before a linefeed is removed if 'white-space' is set to 'pre-line'. The linefeed may be rendered as a space or not rendered.
white-space-processing-008 (ahem, may)
White-space 'normal' with space adjoining linefeed
A space before a linefeed is removed if 'white-space' is set to 'normal'. The linefeed may be rendered as a space or not rendered.
white-space-processing-009 (ahem, may)
White-space 'nowrap' with space adjoining linefeed
A space before a linefeed is removed if 'white-space' is set to 'nowrap'. The linefeed may be rendered as a space or not rendered.
white-space-processing-010 (ahem, may)
White-space 'pre-line' with space adjoining linefeed
A space before a linefeed is removed if 'white-space' is set to 'pre-line'. The linefeed may be rendered as a space or not rendered.
white-space-processing-011 (ahem)
White-space 'pre' with sequence of spaces
A sequence of spaces are not collapsed when 'white-space' is set to 'pre'.
white-space-processing-012 (ahem)
White-space 'pre-wrap' with sequence of spaces
Sequence of spaces are not collapsed when 'white-space' is set to 'pre-wrap'.
white-space-processing-013 (ahem)
White-space 'pre-wrap' and line opportunity with sequence of spaces
A line breaking opportunity is introduced at the end of a sequence of spaces when 'white-space' is set to 'pre-wrap'.
white-space-processing-014 (ahem, may)
White-space 'normal' and linefeed characters
Linefeed characters are transformed into spaces, zero-width space, or not rendered when 'white-space' is set to 'normal'.
white-space-processing-015 (ahem)
White-space 'nowrap' and linefeed characters
Linefeed characters are transformed into spaces, zero-width space, or not rendered when 'white-space' is set to 'nowrap'.
white-space-processing-016 (ahem)
White-space 'pre' and linefeed characters
Linefeed characters are not transformed when 'white-space' is set to 'pre'.
white-space-processing-017 (ahem)
White-space 'pre-line' and linefeed characters
Linefeed characters are not transformed when 'white-space' is set to 'pre-line'.
white-space-processing-018 (ahem)
White-space 'pre-wrap' and linefeed characters
Linefeed characters are not transformed when 'white-space' is set to 'pre-wrap'.
white-space-processing-019 (ahem)
White-space 'normal' and tabs
Tabs are converted to spaces when 'white-space' is set to 'normal'.
white-space-processing-020 (ahem)
White-space 'nowrap' and tabs
Tabs are converted to spaces when 'white-space' is set to 'nowrap'.
white-space-processing-021 (ahem)
White-space 'pre-line' and tabs
Tabs are converted to spaces when 'white-space' is set to 'pre-line'.
white-space-processing-022 (ahem)
White space processing model with 'space' characters
One space with 'white-space' set to 'normal' adjoining a space with 'white-space' set to 'normal' collapse into one space.
white-space-processing-023 (ahem)
Two spaces adjoining with 'white-space' 'normal'/'nowrap'
One space with 'white-space' set to 'normal' adjoining a space with 'white-space' set to 'nowrap' collapse into one space.
white-space-processing-024 (ahem)
Two spaces adjoining with 'white-space' 'normal'/'pre-line'
One space with 'white-space' set to 'normal' adjoining a space with 'white-space' set to 'pre-line' collapse into one space.
white-space-processing-025 (ahem)
Two spaces adjoining with 'white-space' 'nowrap'/'normal'
One space with 'white-space' set to 'nowrap' adjoining a space with 'white-space' set to 'normal' collapse into one space.
white-space-processing-026 (ahem)
Two spaces adjoining with 'white-space' 'nowrap'/'nowrap'
One space with 'white-space' set to 'nowrap' adjoining a space with 'white-space' set to 'nowrap' collapse into one space.
white-space-processing-027 (ahem)
Two spaces adjoining with 'white-space' 'nowrap'/'pre-line'
One space with 'white-space' set to 'nowrap' adjoining a space with 'white-space' set to 'pre-line' collapse into one space.
white-space-processing-028 (ahem)
Two spaces adjoining with 'white-space' 'pre-line'/'normal'
One space with 'white-space' set to 'pre-line' adjoining a space with 'white-space' set to 'normal' collapse into one space.
white-space-processing-029 (ahem)
Two spaces adjoining with 'white-space' 'pre-line'/'nowrap'
One space with 'white-space' set to 'pre-line' adjoining a space with 'white-space' set to 'nowrap' collapse into one space.
white-space-processing-030 (ahem)
Two spaces adjoining with 'white-space' 'pre-line'/'pre-line'
One space with 'white-space' set to 'pre-line' adjoining a space with 'white-space' set to 'pre-line' collapse into one space.
white-space-processing-031 (ahem)
Two spaces adjoining with 'white-space' 'normal'/'pre'
One space with 'white-space' set to 'normal' adjoining a space with 'white-space' set to 'pre' remain two spaces.
white-space-processing-032 (ahem)
Two spaces adjoining with 'white-space' 'normal'/'pre-wrap'
One space with 'white-space' set to 'normal' adjoining a space with 'white-space' set to 'pre-wrap' remain two spaces.
white-space-processing-033 (ahem)
Two spaces adjoining with 'white-space' 'nowrap'/'pre'
One space with 'white-space' set to 'nowrap' adjoining a space with 'white-space' set to 'pre' remain two spaces.
white-space-processing-034 (ahem)
Two spaces adjoining with 'white-space' 'nowrap'/'pre-wrap'
One space with 'white-space' set to 'nowrap' adjoining a space with 'white-space' set to 'pre-wrap' remain two spaces.
white-space-processing-035 (ahem)
Two spaces adjoining with 'white-space' 'pre-line'/'pre'
One space with 'white-space' set to 'pre-line' adjoining a space with 'white-space' set to 'pre' retain two spaces.
white-space-processing-036 (ahem)
Two spaces adjoining with 'white-space' 'pre-line'/'pre-wrap'
One space with 'white-space' set to 'pre-line' adjoining a space with 'white-space' set to 'pre-wrap' retain two spaces.
white-space-processing-037 (ahem)
White-space 'normal' and space at beginning of line
Space at beginning of line is removed when 'white-space' is set to 'normal'.
white-space-processing-038 (ahem)
White-space 'nowrap' and space at beginning of line
Space at beginning of line is removed when 'white-space' is set to 'nowrap'.
white-space-processing-039 (ahem)
White-space 'pre-line' and space at beginning of line
Space at beginning of line is removed when 'white-space' is set to 'pre-line'.
white-space-processing-040 (ahem)
White-space 'pre-wrap' and space at beginning of line
Space at beginning of line is not removed when 'white-space' is set to 'pre-wrap'.
white-space-processing-041 (ahem)
White-space 'pre' and space at beginning of line
Space at beginning of line is not removed when 'white-space' is set to 'pre'.
white-space-processing-042 (ahem)
Tab width
Tabs (when rendered) render spaces at 8 character stops. That is, within a line, split the line into 8 character lengths. The tab would continue until the end of the next length. So if there are already 3 characters in a line, the tab would be rendered as 5 spaces.
white-space-processing-043 (ahem)
White-space 'normal' and space at end of line
Space is removed at the end of the line when 'white-space' is set to 'normal'.
white-space-processing-044 (ahem)
White-space 'nowrap' and space at end of line
Space is removed at the end of the line when 'white-space' is set to 'nowrap'.
white-space-processing-045 (ahem)
White-space 'pre-line' and space at end of line
Space is removed at the end of the line when 'white-space' is set to 'pre-line'.
white-space-processing-046 (ahem)
White-space 'pre' and space at end of line
Space is not removed at the end of the line when 'white-space' is set to 'pre'.
white-space-processing-047 (ahem)
White-space 'pre-wrap' and space at end of line
Space is not removed at the end of the line when 'white-space' is set to 'pre-wrap'.
white-space-processing-048 (ahem)
Floats and line opportunity with 'white-space'
A line breaking opportunity is not introduced with floats.
white-space-processing-049 (ahem)
Floats and line-breaking opportunities with 'white-space'
A line breaking opportunity is not introduced with an absolutely positioned element.
white-space-processing-050 (ahem)
White-space 'normal' on a 'pre' element
The 'white-space' property set to 'normal' removes extra spacing when two spaces are next to each other when set on 'pre' element.
white-space-processing-051 (ahem)
White-space 'nowrap' on a 'pre' element
The 'white-space' property set to 'nowrap' does not remove extra spacing when two spaces are next to each other.
white-space-processing-052 (ahem)
White-space 'pre-wrap' on a 'pre' element
The 'white-space' property set to 'pre-wrap' does not remove extra spacing when two spaces are next to each other and introduces line breaking opportunities when set on a 'pre' element.
white-space-processing-053 (ahem)
White-space 'pre-line' on a 'pre' element
The 'white-space' property set to 'pre-line' does remove extra spacing when two spaces are next to each other and breaks at new lines when set on a 'pre' element.
white-space-processing-054 (ahem)
White space processing model with 'en quad' characters
An 'en quad' characters is not collapsed by the white space processing model.
white-space-processing-055 (ahem)
White space processing model with 'zero width no break space' character
A 'zero width no break space' character is not collapsed by the white space processing model.
white-space-processing-056 (ahem)
White space processing model with 'ideographic space' character
The 'ideographic space' character is not collapsed by the white space processing model.
white-space-processing-057 (ahem, may)
White-space 'pre-wrap' and tab at end of line
A tab at end of line may be removed when 'white-space' is set to 'pre-wrap'.
white-space-processing-058 (ahem, may)
White-space 'pre-wrap' and space at end of line before following inline element
A space at end of line may be removed when 'white-space' is set to 'pre-wrap'.