My favorites | Sign in
Logo
             
New issue | Search
for
| Advanced search | Search tips
Issue 43951: Some combining marks (Devanagari vowel signs, Latin/Cyrillic diacritics) are placed to the left of where they should be
12 people starred this issue and may be notified of changes. Back to list
 
Reported by jshin@chromium.org, May 11, 2010
1. Load the test page with Lohit Hindi font installed. 
2. Note that U+0947 (vowel sign E) is misplaced and U+0938 ( 'SA' स) and 
U+092E ('MA' : म ) overlap each other in Chrome.  In Firefox (see the 2nd 
attachment), neither problem is present. 

Somehow, U+0938's advanced width seems to be calculated to be zero.

This is the string chunk with two problems above:

तक के समाचार 

I believe this is a regression (I don't think I've seen this before, but I 
might be wrong). 

hindi.html
1.9 KB   View   Download
dev.shaping.png
188 KB   View   Download
Comment 1 by karen@chromium.org, May 26, 2010
(No comment was entered for this change.)
Owner: js...@chromium.org
Labels: Mstone-6
Comment 2 by jshin@chromium.org, Jun 09, 2010
 Thai has a similar issue with Droid Sans Thai. 

To Vivian, Song:  I think it's a regression (but not sure). Can you narrow the regression window if it is? 

See http://crosbug.com/3931


Summary: Devanagari / Thai shaping broken
Cc: vivi...@chromium.org
Comment 3 by jshin@chromium.org, Jun 09, 2010
Oops. it's http://crosbug.com/3031


Comment 4 by jshin@chromium.org, Jun 14, 2010
 Issue 43713  has been merged into this issue.
Comment 5 by vivianz@chromium.org, Jun 14, 2010
confirm this is a regression issue. works fine in Chrome linux build 4.0.250.0.

reproduce it in the earliest 5.0 build available 5.0.340.0. unfortunately , all builds in between are no longer available. 



Labels: Regression
Comment 6 by jshin@chromium.org, Jun 17, 2010
http://build.chromium.org/buildbot/continuous/linux/ has all the builds including those between Dec and April.  There were not many webkit changes relevant to this over that period. I'll try pairs of builds before and after each of those changes. 
Comment 7 by jshin@chromium.org, Jun 22, 2010
WebCore/platform/graphics/chromium/FontLinux.cpp has only several CLs landed since December. I tried a build right (actually a couple of days) before each of those changes. 

Chrome r36951 (Jan 22, 2010) without http://trac.webkit.org/changeset/54020 and http://trac.webkit.org/changeset/53958 (both landed on Jan 27) works fine with hindi.html (attached above).  Chrome r37619 (Jan 29, 2010) with those two has an issue. 

It's likely that webkit r54020 broke this. I'll look into it. 

Comment 8 by evan@chromium.org, Jun 22, 2010
I looked into this.

Here's a paste of a message I just wrote:

A text shaper takes Unicode as input and outputs a series of glyphs with positioning information. There are two interesting metrics. One is the advance: amount to more forward per glyph, and and the other offset: how to offset the glyph relative to the current position. For a plain letter the advance is the width and the offset is zero; for a combining character, like say adding a bar over the previous letter, the advance is zero and the offset is computed by language-dependent rules in the shaper.

Previously we didn't obey the offset when shaping, because we were providing the wrong glyph metrics and the offset was nonsense. Fixing both of those bugs fixed Hebrew vowel positioning.

But it broke this pair of letters: के. The line above is supposed to be centered above the letter it's paired with. It turns out that this "worked" before because the line above by default has a negative left edge, so if we naively just laid it out "after" the letter it would appear above it.

I traced through a bunch of code but I can't tell what is going wrong; perhaps the Indic shaper is wrong in that it doesn't know to produce an offset that moves it back over to the right; perhaps Skia/FreeType are wrong in computing the left extent of the glyph so far negative. (FreeType's ftgrid shows the glyph to the left of the origin, so it doesn't seem unreasonable.)

At least I fixed another bug in this area while I was at it!
Comment 9 by evan@chromium.org, Jun 22, 2010
(Oh, and the latter bug I mentioned fixing will fix the overlapping chars issue
https://bugs.webkit.org/show_bug.cgi?id=40966 )
Comment 10 by jshin@chromium.org, Jun 23, 2010
The same happens with diacritic marks like U+0301. bug 44646 has exactly the same two issues as this one (see bug 44646 comment 12). I changed it to deal with the second issue (overlapping characters) and using this one to track the first issue
Summary: Some combining marks (Devanagari vowel signs, Latin/Cyrillic diacritics) are placed to the left of where they should be
Comment 11 by evan@chromium.org, Jun 23, 2010
I fixed this one last night!  It will take me a while to get it through all the necessary review processes though.  :\
Status: Started
Owner: e...@chromium.org
Comment 12 by evan@chromium.org, Jun 24, 2010
BTW, an explanation: the bug is that basically we end up misreading the GPOS offsets.  The regression was caused by a fix elsewhere causing us to start obeying the GPOS offsets (even though they are wrong).
Comment 13 by agl@chromium.org, Jun 25, 2010
(No comment was entered for this change.)
Cc: -a...@chromium.org
Comment 14 by jshin@chromium.org, Jun 30, 2010
Evan, have you filed a bug in the webkit bug db? A point would be nice. Thanks !

Comment 15 by evan@chromium.org, Jun 30, 2010
I uploaded my patch here:
  https://bugs.webkit.org/show_bug.cgi?id=41435
Comment 16 by gmhossain, Jul 06, 2010
This issue also affects Bengali vowel signs that are put on the top or bottom of the previous letter (in certain font but not in all).  Thanks for fixing the character overlapping issue. (Chrome 6.0.453.1 dev in Kubuntu 10.04).
Comment 17 by evan@chromium.org, Aug 05, 2010
Not gonna get to these soon, sorry.
Labels: Mstone-7
Comment 18 by PostcardsFromThailand, Aug 23, 2010
Is it possible to get the priority of this problem raised? Currently formatting for Thai text is pretty horrible, with certain characters sometimes disappearing off the left edge of the page.  It's really a struggle to read, so is a big barrier to Chromium/Chrome adoption in Thailand.
Comment 19 by gmhossain, Aug 23, 2010
I agree with #18; this bug should be given higher priority. This bug affects almost all Indic users as well. What's worst: this bug often completely changes the meaning of a word by putting the vowel sign on previous letter. 
Sign in to add a comment

Powered by Google Project Hosting