Intent to Implement and Ship: text-decoration skip with values: objects, ink

269 views
Skip to first unread message

Dominik Röttsches

unread,
Sep 23, 2016, 11:54:35 AM9/23/16
to blink-dev
Contact emails

Spec

Summary
Implement support for text-decoration-skip, initially for values "objects" and "ink". 

Currently, this property is not parsed or functional. Without any changes, the current default behavior matches the spec's "objects" property value, which skips inline replaced objects but does not skip descenders.

This intent to implement and ship proposes to add support for: "objects" and "ink" values for this property.

Bonus intent: Contrary to the current specification draft, but matching Safari: Making "ink" the default value for this property.

Motivation
Underline typography is improved by this change, the underline does not cover or obstruct the descenders. Overall text readability is improved as well. 

While this is already an improvement in Latin script, scripts that make more use of the space below the baseline are more positively affected, compare the screenshot below for examples of Latin, Arabic and Burmese.




Interoperability risk
Firefox: Public support
It seems that Firefox is willing to support this, judging from issue 812990, but currently has implementation difficulties.
Edge: No public signals, only requested in UserVoice 
Safari: Shipped
Web developers: Positive

See this post by Marcin Wicary of Medium about what kind of technical effort Medium went through to enable descender gaps in underlines. Implementing support for text-underline-skip helps to reduce the pressure to add such an extra load to the rendering engine for rendering accordingly.

Compatibility risk
Switching to "ink" as the default value changes the rendering of existing pages, however for Safari 8 that has been received mostly positively. 

Shipping with "objects" as default does not change the existing default behavior and poses no compatibility risks.

Ongoing technical constraints
None, Skia added support for calculating the intercepts. The above screenshot has been generated with a proof of concept implementation.

Will this feature be supported on all six Blink platforms (Windows, Mac, Linux,
Chrome OS, Android, and Android WebView)?
Yes

OWP launch tracking bug

Link to entry on the Chrome Platform Status

Requesting approval to ship?
Yes

Requesting bonus approval to ship?
Yes, ideally with making "ink" the default as well.

PhistucK

unread,
Sep 23, 2016, 12:18:34 PM9/23/16
to Dominik Röttsches, blink-dev
Are you driving a specification change for the default value?

The aesthetics aspect is questionable here, really (it looks really messy and distracting to me, for example), so changing the default value (which is also visible in English) may be significant... Do you have use counters for cases where the new default value changes rendering?


Tangentially, there was an intent to implement the entire (or parts of) CSS Text Decoration. As far as I know, the implementation was already in an advanced stage before Blink forked. I know this is a specific feature of that, but do you intend to finish the implementation?


PhistucK

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

Dominik Röttsches

unread,
Sep 23, 2016, 2:07:18 PM9/23/16
to PhistucK, blink-dev
Hi,

On Fri, Sep 23, 2016 at 7:17 PM, PhistucK <phis...@gmail.com> wrote:
Are you driving a specification change for the default value?

I put the intent up for discussion here, and I have listed some points why I am strongly in favour of it. If there is consensus among API owners for making it the default, I'll take that to the CSS WG, yes.
 
Tangentially, there was an intent to implement the entire (or parts of) CSS Text Decoration. As far as I know, the implementation was already in an advanced stage before Blink forked. I know this is a specific feature of that, but do you intend to finish the implementation?

I checked the implementation and it looks mostly complete. In a separate effort, when I have the bandwidth, I'll send out an intent to ship for it.
 
Dominik

Chris Harrelson

unread,
Sep 23, 2016, 2:34:19 PM9/23/16
to Dominik Röttsches, PhistucK, blink-dev
On Fri, Sep 23, 2016 at 11:06 AM, 'Dominik Röttsches' via blink-dev <blin...@chromium.org> wrote:
Hi,

On Fri, Sep 23, 2016 at 7:17 PM, PhistucK <phis...@gmail.com> wrote:
Are you driving a specification change for the default value?

I put the intent up for discussion here, and I have listed some points why I am strongly in favour of it. If there is consensus among API owners for making it the default, I'll take that to the CSS WG, yes.

It generally goes the other way around. Intents to Implement don't need approval, and discussions with use cases and standards bodies happen in advance of requesting an Intent to Ship. The API owners aren't
an approval body for proposed spec changes before going to a WG, they are an approval body for making sure that a change has sufficient proof of interop, standards support, testing, etc. already done via other means with appropriate stakeholders (who are almost always not the API owners).
 
 
Tangentially, there was an intent to implement the entire (or parts of) CSS Text Decoration. As far as I know, the implementation was already in an advanced stage before Blink forked. I know this is a specific feature of that, but do you intend to finish the implementation?

I checked the implementation and it looks mostly complete. In a separate effort, when I have the bandwidth, I'll send out an intent to ship for it.
 
Dominik

--

Emil A Eklund

unread,
Sep 23, 2016, 6:47:11 PM9/23/16
to Dominik Röttsches, blink-dev
This is awesome and something web developers have been asking about for *years*!
Looks great and is significantly more legible, especially for Arabic.

Given the push-back against changing the default (which I support) I propose starting with adding support for text-decoration-skip without that and then sending out a separate intent to ship about changing the default once the feature itself is in place.

Thank you for driving this and for your continued effort to improve the quality of our text rendering.

Dominik Röttsches

unread,
Sep 26, 2016, 3:14:49 AM9/26/16
to Chris Harrelson, PhistucK, blink-dev
Hi Chris, others,

On Fri, Sep 23, 2016 at 9:33 PM, Chris Harrelson <chri...@chromium.org> wrote:
On Fri, Sep 23, 2016 at 11:06 AM, 'Dominik Röttsches' via blink-dev <blin...@chromium.org> wrote:
On Fri, Sep 23, 2016 at 7:17 PM, PhistucK <phis...@gmail.com> wrote:
Are you driving a specification change for the default value?

I put the intent up for discussion here, and I have listed some points why I am strongly in favour of it. If there is consensus among API owners for making it the default, I'll take that to the CSS WG, yes.

It generally goes the other way around. Intents to Implement don't need approval, and discussions with use cases and standards bodies happen in advance of requesting an Intent to Ship. The API owners aren't
an approval body for proposed spec changes before going to a WG, they are an approval body for making sure that a change has sufficient proof of interop, standards support, testing, etc. already done via other means with appropriate stakeholders (who are almost always not the API owners).

Right, I will follow up on a change of the default value in the CSS WG, where the topic has been brought up for discussion before.

In the meantime, please consider the intend to implement without a change of the default.

Dominik

一丝

unread,
Sep 26, 2016, 9:48:37 PM9/26/16
to blink-dev
In CJK text layout, edges is very important, I hope you can support.







text-decoration-skip: edges for <u>石井</u><u>艾俐俐</u>


在 2016年9月23日星期五 UTC+8下午11:54:35,Dominik Röttsches写道:

PhistucK

unread,
Sep 27, 2016, 1:45:12 AM9/27/16
to 一丝, blink-dev
I did not realize there were other values - why do you only plan to support ink and objects but not the other values?


PhistucK

--

Dominik Röttsches

unread,
Sep 27, 2016, 3:09:20 AM9/27/16
to PhistucK, 一丝, blink-dev
Thanks for the feedback, yiorsi, I'll consider this once I the the initially proposed values are implemented. 

[...] - why do you only plan to support ink and objects but not the other values?

I don't know of any shipping implementations in other browsers for edges and box-decoration. This is one of the reasons I prioritize ink and objects.

Dominik

Dimitri

unread,
Sep 27, 2016, 12:16:39 PM9/27/16
to blink-dev, phis...@gmail.com, yio...@gmail.com
LGTM.

Chris Harrelson

unread,
Sep 27, 2016, 12:47:35 PM9/27/16
to Dominik Röttsches, PhistucK, blink-dev
Sounds good to me. Looks like a nice feature.

Dominik Röttsches

unread,
Oct 3, 2016, 8:53:27 AM10/3/16
to Chris Harrelson, PhistucK, blink-dev
Thanks Dimitri for the LGTM.

Gentle ping on this one, if I may.

As mentioned, please consider my proposal without the "bonus" part, so without changing any defaults - in that sense: just adding support for parsing text-decoration-skip: and supporting objects (the default, and current behavior) and ink.

Chris Harrelson

unread,
Oct 3, 2016, 12:38:05 PM10/3/16
to Dominik Röttsches, PhistucK, blink-dev
On Mon, Oct 3, 2016 at 5:52 AM, 'Dominik Röttsches' via blink-dev <blin...@chromium.org> wrote:
Thanks Dimitri for the LGTM.

Gentle ping on this one, if I may.

Are you looking for LGTMs? If so, this is now just an intent to implement.Those don't need LGTMs.

Dominik Röttsches

unread,
Oct 3, 2016, 2:05:47 PM10/3/16
to Chris Harrelson, PhistucK, blink-dev
Hi Chris,

On Mon, Oct 3, 2016 at 7:37 PM, Chris Harrelson <chri...@chromium.org> wrote:

On Mon, Oct 3, 2016 at 5:52 AM, 'Dominik Röttsches' via blink-dev <blin...@chromium.org> wrote:
Thanks Dimitri for the LGTM.

Gentle ping on this one, if I may.

Are you looking for LGTMs? If so, this is now just an intent to implement.Those don't need LGTMs.

Yes, I am. Did I perhaps miss something in the description or formatting? I am confused why this appears as only intent to implement? The subject says at least "Implement and Ship" and the text has "Requesting approval to ship? Yes

I mean to ship the feature, i.e. support for objects and ink as values - which is new. I don't mean to ship a change to any default behavior.

Thanks,

Dominik

PhistucK

unread,
Oct 3, 2016, 2:12:49 PM10/3/16
to Dominik Röttsches, Chris Harrelson, blink-dev
Yes, but you later wrote this partially confusing sentence -
"In the meantime, please consider the intend to implement without a change of the default." :)

So, to summarize, this is an intent to ship. API owners should just disregard the "changing the default" part of the intent.


PhistucK

Dominik Röttsches

unread,
Oct 4, 2016, 1:54:42 AM10/4/16
to PhistucK, Chris Harrelson, blink-dev
Hi,

On Mon, Oct 3, 2016 at 9:12 PM, PhistucK <phis...@gmail.com> wrote:
Yes, but you later wrote this partially confusing sentence -
"In the meantime, please consider the intend to implement without a change of the default." :)

 Right, my bad, sorry for the confusion.
 
So, to summarize, this is an intent to ship. API owners should just disregard the "changing the default" part of the intent.

Yes, correct, thanks.

Dominik

Philip Jägenstedt

unread,
Oct 4, 2016, 4:21:05 AM10/4/16
to Dominik Röttsches, PhistucK, Chris Harrelson, blink-dev
LGTM2

Rick Byers

unread,
Oct 4, 2016, 5:38:09 PM10/4/16
to Philip Jägenstedt, Dominik Röttsches, PhistucK, Chris Harrelson, blink-dev
LGTM3
Reply all
Reply to author
Forward
0 new messages