Closed Bug 1426827 Opened 6 years ago Closed 6 years ago

An emoji sequence (e.g. base emoji + fitzpatrick modifier) may be split into 2 halves in separate lines

Categories

(Core :: Layout: Text and Fonts, defect, P3)

defect

Tracking

()

VERIFIED FIXED
mozilla63
Tracking Status
firefox63 --- verified

People

(Reporter: Fanolian+BMO, Assigned: jfkthame)

References

()

Details

(Keywords: reproducible, testcase)

Attachments

(3 files)

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0
Build ID: 20171221220104

Steps to reproduce:

1. Open the attached reduced testcase. (Or visit the original page: https://ol.mingpao.com/php/showbiz3.php?nodeid=1513917011660&subcate=latest&issue=20171222)
2. Observe the emoji at the end of the paragraph.


Actual results:

The emoji is split into halves and displayed on separate lines.

Note:
If I delete Emoji Modifier Fitzpatrick Type-1-2 from the emoji, it will display as a whole on a new line.
Attached image Screenshot of the issue
Has Regression Range: --- → no
Has STR: --- → yes
Yes, I can reproduce this on macOS as well, by slightly adjusting the line width in the testcase.

I guess the problem arises because in general, the line-break code allows a break between emoji characters; but it doesn't recognize that the fitzpatrick modifiers should always remain attached to the preceding character. This, combined with the fact that a line-break is _not_ allowed before the following punctuation character, results in breaking the line before the modifier. :(

A somewhat related issue is that text selection and caret movement doesn't treat the emoji+modifier combination as a single unit: it can be selected in two separate parts. Presumably for some of the complex family emoji sequences, etc., the issue would be even worse.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: An emoji may be split into 2 halves in separate lines → An emoji sequence (e.g. base emoji + fitzpatrick modifier) may be split into 2 halves in separate lines
Also the same issue on Linux (tested with "Apple Color Emoji"), interestingly if you check the source code it's rendered properly.
Priority: -- → P3
This is also an issue on Android v61.0

See https://twitter.com/edent/status/1016960926178840577
FYI, the testcase is currently affected by bug 1463161.
Similar to the tag characters in bug 1477010, I think we should treat these as cluster-extenders to force them to stay attached to their base glyph.
Attachment #8994447 - Flags: review?(m_kato)
Assignee: nobody → jfkthame
Status: NEW → ASSIGNED
Attachment #8994447 - Flags: review?(m_kato) → review+
Pushed by jkew@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/a1ef0307687c
Treat Fitzpatrick skin-tone modifiers as cluster extenders when building textruns. r=m_kato
https://hg.mozilla.org/mozilla-central/rev/a1ef0307687c
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
I can verify the bug is fixed in 2018-07-26 Nightly. Thanks.
Status: RESOLVED → VERIFIED
See Also: → 1540747
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: