This page summarises results for a series of tests that seek to establish how user agents support the display of white space associated with passages of text in the Thai script. Thai text doesn't use spaces to separate words, although spaces may be introduced at boundaries with Latin text or digits and spacing is the normal way to separate phrases or sentences (rather than using a full stop or equivalent).
The assumptions we make here about expected behaviour are based on the white-space processing model described in CSS 2.1. This specification is not explicit about the expected detailed behaviour for specific script types, so some assumptions have been borrowed from ongoing work on the CSS3 Text Module, which will specify this more clearly.
The CSS 2.1 spec says that white space should be removed from around linebreaks when the white-space
property is set to
normal
. It then says that a remaining linebreak can be transformed into a space, a zero-width space, or removed, according to
UA-specific algorithms. Although it is technically correct to argue that transforming the linebreak into a space in the middle of Thai text is
not counter to the specification, the intent of the removal option is to to allow broken lines of Thai text to be reconstituted as one would expect - ie. with no intervening space, or with a zero-width space.
See the results below for user agents tested. This section summarizes the results of those tests.
All user agents except Chrome produced a visual space where it was expected.
With the exception of Chrome, all user agents handled Thai in the same way as Latin text.
The implications of this are that authors of Thai text must avoid editing environments that will automatically reformat their text, since leading indentation that uses spaces will introduce unexpected gaps into their text.
Conversely, if you want to have a space between runs of text, you can currently achieve this in most browsers by adding space to the beginning or end of a line (but not Chrome).
Chrome removes visual space in all cases (even where the test assertion wasn't expecting it) except where you have a single line break with spaces after. However, if you copy and paste the text, a space character is always picked up.
These are results for the latest versions of each user agent tested. A green background (yes) means that the assertion associated with the test held true; red (no) means that it did not; orange (partially) means that it was only partially true.
UA | IE | IE | Firefox | Opera | Safari | Safari | Chrome |
---|---|---|---|---|---|---|---|
version | 8 | 7 | 3.0.8 | 9.64 | 4 beta | iPod Touch 2.2.1 | 1.0.154.53 |
OS | XP | XP | XP | XP | XP | XP | |
date | 20090407 | 20090407 | 20090407 | 20090407 | 20090407 | 20090407 | 20090407 |
inline spaces | yes | yes | yes | yes | yes | yes | yes |
line break only | no | no | no | no | no | no | partially1 |
spaces at end of line | no | no | no | no | no | no | no |
spaces at beginning of line | no | no | no | no | no | no | partially1 |
spaces at beginning and end of line | no | no | no | no | no | no | no |
multiple line breaks | no | no | no | no | no | no | partially1 |
multiple line breaks and spaces | no | no | no | no | no | no | partially1 |
digits at line end | yes | yes | yes | yes | yes | yes | partially1 |
line break before latin | yes | yes | yes | yes | yes | yes | partially1 |
Notes:
UA | IE | IE | Firefox | Opera | Safari | Safari | Chrome |
---|---|---|---|---|---|---|---|
version | 8 | 7 | 3.0.8 | 9.64 | 4 beta | iPod Touch 2.2.1 | 1.0.154.53 |
OS | XP | XP | XP | XP | XP | XP | |
date | 20090407 | 20090407 | 20090407 | 20090407 | 20090407 | 20090407 | 20090407 |
inline spaces | yes | yes | yes | yes | yes | yes | yes |
line break only | no | no | no | no | no | no | partially1 |
spaces at end of line | no | no | no | no | no | no | no |
spaces at beginning of line | no | no | no | no | no | no | partially1 |
spaces at beginning and end of line | no | no | no | no | no | no | no |
multiple line breaks | no | no | no | no | no | no | partially1 |
multiple line breaks and spaces | no | no | no | no | no | no | partially1 |
digits at line end | yes | yes | yes | yes | yes | yes | partially1 |
line break before latin | yes | yes | yes | yes | yes | yes | partially1 |
Notes: