SVG <text> positioning lists break with non-BMP characters

RESOLVED FIXED

Status

()

defect
RESOLVED FIXED
8 years ago
6 years ago

People

(Reporter: hortont424, Unassigned)

Tracking

Trunk
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10

Steps to reproduce:

From https://bugs.webkit.org/show_bug.cgi?id=18039:

Open the testcase https://bug-18039-attachments.webkit.org/attachment.cgi?id=20000, which contains non-BMP characters positioned with dx positioning lists inside an SVG <text> element.


Actual results:

Characters are incorrectly positioned (they don't respect the positioning list correctly).


Expected results:

See a WebKit nightly for the expected result; there should be four separate characters, evenly spaced, each underlined.
See this bit from the spec:

When multiple XML characters map to a single glyph (e.g., when a ligature is used) - Suppose that the i-th and (i+1)-th XML characters map to a single glyph. In this case, the i-th value for the ‘x’, ‘y’, ‘dx’, ‘dy’ and ‘rotate’ attributes all apply when rendering the glyph. The (i+1)-th values, however, for ‘x’, ‘y’ and ‘rotate’ are ignored (exception: the final ‘rotate’ value in the list would still apply to subsequent characters), whereas the ‘dx’ and ‘dy’ are applied to the subsequent XML character (i.e., the (i+2)-th character), if one exists, by translating the current text position by the given amounts before rendering the first glyph associated with that character.
Component: General → SVG
OS: Mac OS X → All
Hardware: x86 → All
Confirmed, each dx="" value should correspond to a single character (and not the individual surrogates stored in memory).  Bug 655877 should fix both the positioning and the lack of underline.
Status: UNCONFIRMED → NEW
Depends on: svgtext
Ever confirmed: true
Version: 9 Branch → Trunk
Depends on: 839955
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.