With the patches currently in bug 249159 to implement the word-break property, there's an unwanted interaction with text-transform.
Comparing these two examples,
the results should be identical (the 'b' and combining ring below should remain together as a cluster), but the version with text-transform:lowercase incorrectly splits this onto separate lines.
Created attachment 621934 [details] [diff] [review]
patch, don't allow word break within cluster when copying glyph data for text-transform
The problem here arises because we set word-break positions on the destination textrun's characterGlyph array before we've done the RebuildTextRun for text-transform, but at that point it had no cluster information and so gfxTextRun::SetPotentialLineBreaks didn't suppress those breaks.
CopyGlyphDataFrom has the cluster data available in its source run, so it needs to remove any potential breaks in the destination that turn out to be inside clusters.
Created attachment 621935 [details] [diff] [review]
reftest for word-break, clusters, text-transform