Open Bug 1592622 Opened 3 years ago Updated 4 months ago

text-decoration-skip-ink produces ugly result for cyrillic


(Core :: Layout: Text and Fonts, enhancement, P5)

70 Branch





(Reporter: sandfox, Unassigned)



(2 files)

Attached image skip-actual

User Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0

Steps to reproduce:

Browse any page with underlined cyrillic text

Actual results:

Cyrillic letter 'д' is underlined like on skip-actual

Expected results:

Cyrillic letter д is underlined something like on skip-expected

Attached image skip-expected

Hi Anton

I tried on a Russian website for exampleд
when i hover over the text on the green square at the bottom of the page see the same result. Te result is the same for many other browsers not only Firefox.

Can you share the specific link where you see this?


Hi Pablo,

The current behavior when д is not underlined at all, because it has descenders on both sides, is problematic and lowers readability of the underlined cyrillic. Yes, Chrome has the same problem

Component: Untriaged → Layout: Text and Fonts
Product: Firefox → Core

AFAIK, this is consistent across all current browsers that do skip-ink rendering. It occurs because the underlying Skia function used to implement the skipping returns (at most) a single pair of "intercepts" for each glyph, indicating the left-most and right-most places where the line intersects the glyph outline. So in the case of a glyph like д that has two descenders, these positions correspond to the left edge of the left descender and the right edge of the right one, and the whole glyph is skipped.

Improving this behavior, therefore, would be dependent on an extension to the Skia getTextIntercepts APIs to allow multiple pairs of intercepts for a single glyph (or some other implementation approach); it's not something that can readily be changed within the current architecture.

Priority: -- → P5
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.