[Webkit-unassigned] [Bug 18031] New: SVGTextElement.getStartPositionOfChar is wrong in various cases (affects Acid3 test 79)

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sun Mar 23 19:10:23 PDT 2008


http://bugs.webkit.org/show_bug.cgi?id=18031

           Summary: SVGTextElement.getStartPositionOfChar is wrong in
                    various cases (affects Acid3 test 79)
           Product: WebKit
           Version: 526+ (Nightly build)
          Platform: Macintosh
        OS/Version: Mac OS X 10.5
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: SVG
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: mjs at apple.com


With my fix for 17062, Acid3 test 79 continues to fail because it gets the
wrong start position for nearly every character in the string. I modified Acid3
to print all errors in each test, and to look at the position delta for each
character, to learn more about the errors. It appears that the most common
error is counting the glyph advance instead of 0 for positions between
characters of a multi-character glyph, another likely one is failing to take
kerning into account, as well as failing to render altGlyph properly:

Test 79 failed: character advance + kerning 2, which is between the first
character of a two-character glyph and the second character of a two-character
glyph, is 300 but should be 0.
character advance + kerning 3, which is between the second character of a
two-character glyph and a normal character, which shouldn't be the first
character of a two-character glyph, is 500 but should be 200.
character advance + kerning 6, which is between a normal character, which has
some kerning after it and the first character of a two-character glyph, which
has some kerning before it, is 10000 but should be 10200.
character advance + kerning 7, which is between the first character of a
two-character glyph, which has some kerning before it and the second character
of a two-character glyph, which has some kerning before it, is 10000 but should
be 0.
character advance + kerning 8, which is between the second character of a
two-character glyph, which has some kerning before it and the first character
of a six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning after it, but this glyph does not, is 10000
but should be 1300.
character advance + kerning 9, which is between the first character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning after it, but this glyph does not and the
second character of a six-character glyph, which happens to look like a Unicode
range, where the range-specified glyph has kerning after it, but this glyph
does not, is 10000 but should be 0.
character advance + kerning 10, which is between the second character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning after it, but this glyph does not and the
third character of a six-character glyph, which happens to look like a Unicode
range, where the range-specified glyph has kerning after it, but this glyph
does not, is 10000 but should be 0.
character advance + kerning 11, which is between the third character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning after it, but this glyph does not and the
fourth character of a six-character glyph, which happens to look like a Unicode
range, where the range-specified glyph has kerning after it, but this glyph
does not, is 10000 but should be 0.
character advance + kerning 12, which is between the fourth character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning after it, but this glyph does not and the
fifth character of a six-character glyph, which happens to look like a Unicode
range, where the range-specified glyph has kerning after it, but this glyph
does not, is 10000 but should be 0.
character advance + kerning 13, which is between the fifth character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning after it, but this glyph does not and the
sixth character of a six-character glyph, which happens to look like a Unicode
range, where the range-specified glyph has kerning after it, but this glyph
does not, is 10000 but should be 0.
character advance + kerning 14, which is between the sixth character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning after it, but this glyph does not and the
first character of a six-character glyph, which happens to look like a Unicode
range, where the range-specified glyph has kerning before it, but this glyph
does not, is 10000 but should be 1700.
character advance + kerning 15, which is between the first character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning before it, but this glyph does not and the
second character of a six-character glyph, which happens to look like a Unicode
range, where the range-specified glyph has kerning before it, but this glyph
does not, is 10000 but should be 0.
character advance + kerning 16, which is between the second character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning before it, but this glyph does not and the
third character of a six-character glyph, which happens to look like a Unicode
range, where the range-specified glyph has kerning before it, but this glyph
does not, is 10000 but should be 0.
character advance + kerning 17, which is between the third character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning before it, but this glyph does not and the
fourth character of a six-character glyph, which happens to look like a Unicode
range, where the range-specified glyph has kerning before it, but this glyph
does not, is 10000 but should be 0.
character advance + kerning 18, which is between the fourth character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning before it, but this glyph does not and the
fifth character of a six-character glyph, which happens to look like a Unicode
range, where the range-specified glyph has kerning before it, but this glyph
does not, is 10000 but should be 0.
character advance + kerning 19, which is between the fifth character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning before it, but this glyph does not and the
sixth character of a six-character glyph, which happens to look like a Unicode
range, where the range-specified glyph has kerning before it, but this glyph
does not, is 10000 but should be 0.
character advance + kerning 20, which is between the sixth character of a
six-character glyph, which happens to look like a Unicode range, where the
range-specified glyph has kerning before it, but this glyph does not and a
normal character, which has some kerning after it that is specified by glyph
name, is 10000 but should be 1700.
character advance + kerning 21, which is between a normal character, which has
some kerning after it that is specified by glyph name and a normal character,
which has some kerning before it that is specified by glyph name, is 2300 but
should be 2500.
character advance + kerning 25, which is between a normal character, whose
glyph should match the one with a lang="" attribute on it and a normal
character, which has some kerning after it that is equal to the advance of the
character, is 4300 but should be 4100.
character advance + kerning 26, which is between a normal character, which has
some kerning after it that is equal to the advance of the character and a
normal character, which has some kerning before it that is equal to the advance
of the previous character, is 4700 but should be 0.
character advance + kerning 31, which is between a normal character, whose
glyph is chosen to be another by using <altGlyph> and a character not in Plane
0 (high surrogate pair), is 10000 but should be 2900.
character advance + kerning 32, which is between a character not in Plane 0
(high surrogate pair) and a character not in Plane 0 (low surrogate pair), is
10000 but should be 2900.
character advance + kerning 33, which is between a character not in Plane 0
(low surrogate pair) and a normal character, is 10000 but should be 0.


-- 
Configure bugmail: http://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the webkit-unassigned mailing list