To run the test, or to see detailed, per character, results, click on the link in the left-most column. To see detailed results click on a row and look just above the table.
Key: | pass | fail | partially successful |
---|
Updated
These tests check whether user agents correctly apply word-break
to various writing systems per the CSS-text-3 spec. Since the CSS spec relies on the browser to implement fine details on a language-by-language basis, the tests listed here check only unarguable expectations of behaviour, in very simplistic arrangements. They focus on the interaction between letters and spaces, and do not tackle the impact of punctuation marks.
For word-break:normal
the CSS spec mostly just says that the 'customary rules' should be applied, without further detail. More detailed rules may be added to the spec as the information becomes available (initiatives such as the layout requirements and digital publishing work may provide such details, amongst others). For the time being, these tests check browser behavior for just the obvious characteristics pertaining to several major writing systems. As more information becomes available, additional tests may be added.
Some specific behaviors for CJK script, in particular, are covered by line break tests elsewhere. See the word-break: break-all section for tests related to typographic units that are only exposed when partial words are wrapped, such as indic conjuncts.
These scripts separate words with spaces and in simple scenarios wrap whole words to the next line when part of a word exceeds the length of a line.
Links to run tests | Assertions | Gecko Firefox | Blink Chrome | Webkit Safari | Legacy Edge |
---|---|---|---|---|---|
normal, latin word-break-normal-en-000.html |
Simple Latin text will break on spaces under customary rules for word-break: normal. | pass | pass | pass | pass |
normal, hindi word-break-normal-hi-000.html |
Simple Devanagari text will break on spaces under customary rules for word-break: normal. | pass | pass | pass | pass |
normal, arabic word-break-normal-ar-000.html |
Simple Arabic text will break on spaces under customary rules for word-break: normal. | pass | pass | pass | pass |
Spec links for this table: link
These scripts don't separate words in text and in simple scenarios wrap characters one-by-one to the next line when part of a word exceeds the length of a line. Tests elsewhere examine less basic behaviour for Chinese and Japanese.
Links to run tests | Assertions | Gecko Firefox | Blink Chrome | Webkit Safari | Legacy Edge |
---|---|---|---|---|---|
normal, japanese word-break-normal-ja-000.html |
Simple Japanese kanji text will wrap single characters under customary rules for word-break: normal. | pass | pass | pass | pass |
normal, japanese hiragana word-break-normal-ja-001.html |
Simple Japanese hiragana text will wrap single characters under customary rules for word-break: normal. | pass | pass | pass | pass |
normal, japanese katakana word-break-normal-ja-002.html |
Simple Japanese katakana text will wrap single characters under customary rules for word-break: normal. | pass | pass | pass | pass |
normal, japanese word-break-normal-ja-004.html |
Japanese text where a line ends with ideographic full stop will wrap two characters under customary rules for word-break: normal. | pass | pass | pass | pass |
normal, chinese word-break-normal-zh-000.html |
Simple Chinese text will wrap single characters under customary rules for word-break: normal. | pass | pass | pass | pass |
Spec links for this table: link
This test is exploratory. Simple Korean text can wrap characters or words when part of a word exceeds the length of a line, according to preference. The more common approach is to wrap between any two consecutive Hangul/Hanja, so this test checks whether this is what a browser does.
Links to run tests | Assertions | Gecko Firefox | Blink Chrome | Webkit Safari | Legacy Edge |
---|---|---|---|---|---|
normal, korean word-break-normal-ko-000.html |
[exploratory] Simple Korean text can wrap characters or words. The more common approach is to wrap between any two consecutive Hangul/Hanja under customary rules for word-break: normal. | pass | pass | fail | pass |
Spec links for this table: link
These scripts don't separate words in text but nevertheless in simple scenarios wrap whole words to the next line when part of a word exceeds the length of a line.
Links to run tests | Assertions | Gecko Firefox | Blink Chrome | Webkit Safari | Legacy Edge |
---|---|---|---|---|---|
normal, khmer word-break-normal-km-000.html |
Simple Khmer text will break on invisible word boundaries under customary rules for word-break: normal. | pass | pass | pass | fail |
normal, lao word-break-normal-lo-000.html |
Simple Lao text will break on invisible word boundaries under customary rules for word-break: normal. | pass | pass | pass | fail |
normal, myanmar word-break-normal-my-000.html |
Simple Myanmar text will break on invisible word boundaries under customary rules for word-break: normal. | fail | fail | fail | fail |
normal, tai nüa word-break-normal-tdd-000.html |
Simple Tai Nüa text will break on invisible word boundaries under customary rules for word-break: normal. | fail | fail | fail | fail |
normal, thai word-break-normal-th-000.html |
Simple Thai text will break on invisible word boundaries under customary rules for word-break: normal. | pass | pass | pass | pass |
Spec links for this table: link
These scripts don't separate words in text but typically wrap an orthographic syllable to the next line when part of a word exceeds the length of a line.
Links to run tests | Assertions | Gecko Firefox | Blink Chrome | Webkit Safari | Legacy Edge |
---|---|---|---|---|---|
normal, tibetan word-break-normal-bo-000.html |
Simple Tibetan text will break at tsek punctuation under customary rules for word-break: normal. | pass | pass | pass | pass |
normal, javanese word-break-normal-jv-000.html |
Simple Javanese text will break on orthographic syllable boundaries under customary rules for word-break: normal. | fail | fail | fail | fail |
normal, javanese word-break-normal-jv-001.html |
Simple Javanese text will break on orthographic syllable boundaries under customary rules for word-break: normal. | fail | fail | fail | fail |
Spec links for this table: link
When it exceeds the line length, word-break: break-all
splits text between typographic letter units, regardless of word boundaries.
These tests deal with text where a typographic letter unit is equivalent to a single code point. Note that the expected behaviour for Korean is unambiguous here for text encoded using syllabic code points.
Links to run tests | Assertions | Gecko Firefox | Blink Chrome | Webkit Safari | Legacy Edge |
---|---|---|---|---|---|
break-all, japanese word-break-break-all-000.html |
word-break: break-all creates break opportunities between kanji characters in Japanese text. | pass | pass | pass | pass |
break-all, latin word-break-break-all-001.html |
word-break: break-all creates break opportunities between ordinary letters in Latin text. | pass | pass | pass | pass |
break-all, korean word-break-break-all-002.html |
word-break: break-all creates break opportunities between syllables in Korean text. | pass | pass | pass | pass |
break-all, thai word-break-break-all-003.html |
word-break: break-all creates break opportunities between ordinary letters in Thai text, including letters that are part of a complex vowel. | pass | pass | pass | fail |
break-all, hebrew word-break-break-all-004.html |
word-break: break-all creates break opportunities between ordinary letters in Hebrew text. | pass | pass | pass | pass |
Spec links for this table: link
Where the line length is exceeded by a code point that is part of a grapheme cluster, break-all
should wrap the whole grapheme cluster to the next line, since typographic letter units include grapheme clusters.
Links to run tests | Assertions | Gecko Firefox | Blink Chrome | Webkit Safari | Legacy Edge |
---|---|---|---|---|---|
break-all, subjoined tibetan word-break-break-all-005.html |
word-break: break-all doesn't create break opportunities inside simple Tibetan stacks. | pass | pass | pass | pass |
break-all, spacing vowel sign word-break-break-all-006.html |
word-break: break-all doesn't create break opportunities between a consonant and following spacing vowel sign. | pass | fail | fail | pass |
break-all, combining diacritic word-break-break-all-007.html |
word-break: break-all doesn't create break opportunities between a consonant and combining diacritic. | pass | pass | pass | fail |
Spec links for this table: link
This test is exploratory. In some cases, a user-perceived character encompasses more than one grapheme cluster. Conjunct clusters in northern Indic scripts are a prime example.
This test is exploratory because indic conjuncts containing more than one consonant are not covered by the extended grapheme cluster definition, and therefore constitute more than one typographic unit, per the definition in the CSS spec. Nevertheless, people using relevant indic scripts expect the user agent to keep the orthographic syllable as a single unit. The test checks whether such a sequence is wrapped to the next line as a unit.
Links to run tests | Assertions | Gecko Firefox | Blink Chrome | Webkit Safari | Legacy Edge |
---|---|---|---|---|---|
break-all, syllabic cluster word-break-break-all-008.html |
[Exploratory test] word-break: break-all doesn't create break opportunities between the components of an Indic conjunct cluster. | fail | fail | fail | fail |
Spec links for this table: link
The CSS spec says that when shaping scripts such as Arabic are allowed to break within words due to break-all
, the characters must still be shaped as if the word were not broken.
Links to run tests | Assertions | Gecko Firefox | Blink Chrome | Webkit Safari | Legacy Edge |
---|---|---|---|---|---|
break-all, arabic word-break-break-all-ar-001.html |
When shaping scripts such as Arabic are allowed to break within words due to break-all, the characters must still be shaped as if the word were not broken. | pass | fail | fail | fail |
Spec links for this table: link
When it exceeds the line length, word-break: keep-all
splits text at 'word' boundaries, regardless of normal behaviour.
The basic use of keep-all
is to prevent break opportunities within 'words' – which, when dealing with sequences of ordinary letters surrounded by spaces, means that breaks only occur after the spaces. This is particularly relevant for CJK scripts.
Links to run tests | Assertions | Gecko Firefox | Blink Chrome | Webkit Safari | Legacy Edge |
---|---|---|---|---|---|
keep-all, latin word-break-keep-all-000.html |
word-break: keep-all prevents break opportunities within 'words'. | pass | pass | pass | pass |
keep-all, japanese word-break-keep-all-001.html |
word-break: keep-all prevents break opportunities between sequences of Japanese characters, and treats intervening spaces as break opportunities. | pass | pass | pass | pass |
keep-all, japanese word-break-keep-all-ja-001.html |
word-break: keep-all prevents break opportunities between sequences of Japanese characters. A single word longer than the line will not be broken. | pass | pass | pass | pass |
keep-all, korean word-break-keep-all-ko-001.html |
word-break: keep-all causes Korean text to break between space-separated words. | pass | pass | pass | pass |
Spec links for this table: link
keep-all
prevents break opportunities within sequences of letters, except where opportunities exist due to dictionary-based breaking (such as in Khmer and Thai). These tests check whether an unbroken sequence of text in such languages are broken at word boundaries by the browser when keep-all
is set.
Links to run tests | Assertions | Gecko Firefox | Blink Chrome | Webkit Safari | Legacy Edge |
---|---|---|---|---|---|
keep-all, khmer word-break-keep-all-km-001.html |
word-break: keep-all allows break opportunities after words in Khmer that are detected by dictionary-based algorithms. | fail | pass | fail | fail |
keep-all, thai word-break-keep-all-th-001.html |
word-break: keep-all allows break opportunities after words in Thai that are detected by dictionary-based algorithms. | fail | pass | fail | pass |
Spec links for this table: link