In ComplexTextControllerLinux.cpp for Chrome on Linux, zero-width characters are normalized away (by being replaced with zerowidthSpace). In complex script, ZWJ and ZWNJ make both visual and symantic differences. So, we should not do that. Instead of treatAsZeroWidthSpace, we should use treatAsZeroWidthInComplexScript.
It's http://crbug.com/105169
Created attachment 116301 [details] another test case for zwj and zwnj (Devanagari)
Created attachment 116302 [details] screenshot of Linux Chrome and Window Chrome rendering the previous attachment Line 1 does not have either ZWJ or ZWNJ Line 2 has ZWNJ and line 3 has ZWJ. All 3 lines should be different, but on Linux CHrome, Line 2 and line 3 are identical becasuse ZWNJ/ZWJ are replaced by zero-width-space.
In addition to the proposed Webkit change, harfbuzz-indic shaper need a 2-line patch. This is also tracked at http://crbug.com/45840
This was fixed by moving to harfbuzz-ng. (bug 97281)