Summarized test results:
CSS3 Text, Cursive joining

Intended audience: users, HTML coders, script developers, CSS coders, Web project managers, and anyone who wants to know whether browsers shape Arabic and other cursive text as described in the CSS Text module.

Updated

These tests check whether user agents correctly join or separate cursive characters according to style changes applied to them, as indicated by the CSS Text spec.

To see the test, click on the link in the left-most column. To see detailed results for a single test, click on a row and look just above the table. The detailed results show the date(s) the test result was recorded, and the version of the browser tested.

Any dependencies are shown in notes above the table, and notes below the table will usually provide any additional useful information, including an explanation of why a result was marked as 'partially successful'.

Key:

pass fail partially successful

Basic tests

Tests in this section check whether joining is broken or not for simple cases concerning ordinary adjacent letters when one letter is in markup to which styling may apply. Most of the tests use Arabic.

Just markup

This test puts markup around a letter, but applies no styling change, so joins must not be broken.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
span
shaping-000.html
Shaping is not broken across inline box boundaries with no styling change. passpassfailpass

Style doesn't affect letters

These tests create no effective change in the formatting for the affected letters, so joins must not be broken.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
text-decoration
shaping-015.html
Shaping is not broken across inline box boundaries for changes in text-decoration. passpassskippedpass
outline
shaping-016.html
Shaping is not broken across inline box boundaries for changes in outline. passpassskippedpass
font size 100%
shaping-007.html
Shaping is not broken across inline box boundaries when font-size is set to 100%. passpassskippedpass
margin 0
shaping-004.html
Shaping is not broken across inline box boundaries when margin is set to 0. passpassskippedpass
padding 0
shaping-005.html
Shaping is not broken across inline box boundaries when padding is set to 0. passpassskippedpass
border 0
shaping-006.html
Shaping is not broken across inline box boundaries when border is set to 0. passpassskippedpass

Acceptable style change

These tests do create a change in the formatting, but joining should not be broken.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
colour
shaping-001.html
Shaping is not broken across inline box boundaries for changes to colour. passpassskippedpass
font-weight
shaping-002.html
Shaping is not broken across inline box boundaries for changes in font weight. failpassskippedfail
font-style
shaping-003.html
Shaping is not broken across inline box boundaries for changes in font style. failpassskippedfail
font size 120%
shaping-008.html
Shaping is not broken across inline box boundaries for changes to font-size. failpassskippedfail
em element
shaping-017.html
Shaping is not broken across inline box boundaries for the em element. failpassskippedfail
b element
shaping-018.html
Shaping is not broken across inline box boundaries for the b element. failpassskippedfail

Breaking boundaries

These tests are for features that must break the joining behaviour.

Dependencies

  1. shaping-012 only works if the the browser supports bdi and dir=auto.
Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
margin > 0
shaping-009.html
Shaping IS broken across inline box boundaries when margin is set to a non-zero value. passfailskippedpass
padding > 0
shaping-010.html
Shaping IS broken across inline box boundaries when padding is set to a non-zero value. passfailskippedpass
border > 0
shaping-011.html
Shaping IS broken across inline box boundaries when border is set to a non-zero value. passfailskippedfail
isolation, bdi
shaping-012.html
Shaping IS broken across inline box boundaries when isolation occurs. passpassskippedfail

Other languages

In this section we run basic tests against languages that use other cursive writing systems, as a quick check that the same results apply.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
n'ko, colour
shaping-020.html
Shaping is not broken across inline box boundaries for changes to colour in N'Ko. passpassfailpass
n'ko, font-style
shaping-021.html
Shaping is not broken across inline box boundaries for changes to font-style in N'Ko. failpassfailfail
n'ko, text-decoration
shaping-022.html
Shaping is not broken across inline box boundaries for changes to text-decoration in N'Ko. passpassfailpass
mongolian, colour
shaping-023.html
Shaping is not broken across inline box boundaries for changes to colour in Mongolian. passpassskippedpass
mongolian, font-style
shaping-024.html
Shaping is not broken across inline box boundaries for changes to font-style in Mongolian. failfailskippedfail
mongolian, text-decoration
shaping-025.html
Shaping is not broken across inline box boundaries for changes to text-decoration in Mongolian. passpassskippedpass

Intervening diacritics

This section runs the same tests as before, but the span element is around a diacritic that appears between the to joining letters. Since styling of the diacritic doesn't affect the joining letters, the same behaviour should apply as for the tests in the previous section.

Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
span
shaping_cchar-000.html
[exploratory] Shaping is not broken by a span (with no styling) around a diacritic. passpassfailpass
colour
shaping_cchar-001.html
[exploratory] Shaping is not broken when changes to colour are applied to an intervening diacritic. passpassskippedpass
font-weight
shaping_cchar-002.html
[exploratory] Shaping is not broken when changes to font weight are applied to an intervening diacritic. failpassskippedfail
font-style
shaping_cchar-003.html
[exploratory] Shaping is not broken when changes to font style are applied to an intervening diacritic. failpassskippedfail
margin 0
shaping_cchar-004.html
[exploratory] Shaping is not broken when margin is set to 0 for an intervening diacritic. passpassskippedpass
padding 0
shaping_cchar-005.html
[exploratory] Shaping is not broken when padding is set to 0 for an intervening diacritic. passpassskippedpass
border 0
shaping_cchar-006.html
[exploratory] Shaping is not broken when border is set to 0 for an intervening diacritic. passpassskippedpass
font size 100%
shaping_cchar-007.html
[exploratory] Shaping is not broken when font-size is set to 100% for an intervening diacritic. passpassskippedpass
font size 120%
shaping_cchar-008.html
[exploratory] Shaping is not broken when changes to font-size are applied to an intervening diacritic. failpassskippedfail
margin > 0
shaping_cchar-009.html
[exploratory] Shaping IS BROKEN when margin is set to a non-zero value on an intervening diacritic. passfailskippedpass
padding > 0
shaping_cchar-010.html
[exploratory] Shaping IS BROKEN when padding is set to a non-zero value on an intervening diacritic. passfailskippedpass
border > 0
shaping_cchar-011.html
[exploratory] Shaping IS BROKEN when border is set to a non-zero value on an intervening diacritic. passfailskippedfail

Ligated form

These tests are exploratory. They look at the behaviour produced when the letter with markup around it is displayed as part of a ligated sequence. In theory, this is what the spec refers to as a situation where it is impossible to join across boundaries. We would expect all the tests to break the join.

Dependencies

  1. shaping_lig-012 only works if the the browser support bdi and dir=auto.
Links to run testsAssertionsGecko FirefoxBlink ChromeWebkit SafariLegacy Edge
colour
shaping_lig-001.html
[exploratory] Styling part of a ligature for colour will break joining behaviour across inline box boundaries, or apply the styling to the glyph corresponding to the middle letter, or apply the styling to the whole ligature. passpassskippedfail
font-weight
shaping_lig-002.html
[exploratory] Styling part of a ligature for font-weight will break joining behaviour across inline box boundaries, or apply the styling to the glyph corresponding to the middle letter, or apply the styling to the whole ligature. passpassskippedpass
font-style
shaping_lig-003.html
[exploratory] Styling part of a ligature for font-style will break joining behaviour across inline box boundaries, or apply the styling to the glyph corresponding to the middle letter, or apply the styling to the whole ligature. passpassskippedpass
font size 120%
shaping_lig-008.html
[exploratory] Styling part of a ligature for font-size will break joining behaviour across inline box boundaries, or apply the styling to the glyph corresponding to the middle letter, or apply the styling to the whole ligature. passpassskippedpass