New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 19 users
Status: Fixed
Owner:
Closed: Nov 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Launch-OWP
Launch-Accessibility: NA
Launch-Legal: NA
Launch-M-Approved: ----
Launch-M-Target: 57-Dev, 57-Beta, 57-Stable-Exp, 57-Stable
Launch-Privacy: NA
Launch-Security: NA
Launch-Status: Review-Requested
Launch-Test: ----
Launch-UI: ----
Product-Review: ----

Blocked on:
issue 653872
issue 655166
issue 670599
issue 677093



Sign in to add a comment
Support text-decoration-skip with values: objects, ink
Project Member Reported by drott@chromium.org, Sep 23 2016 Back to list
Change description:
Add support for text-decoration-skip, initially values objects and ink.

Changes to API surface:
* Adding parsing this property to the CSS parser
* Handling this property in the CSSOM
* Adding painting capabilities for ink skipping

Links:
<b>Public standards discussion: <link here></b>

Support in other browsers:
Internet Explorer: No
Firefox: No, bug filed https://bugzilla.mozilla.org/show_bug.cgi?id=812990
Safari: Yes, with defaulting to ink

 
Comment 1 by drott@chromium.org, Sep 23 2016
Standards reference:
https://drafts.csswg.org/css-text-decor-3/
Comment 2 by drott@chromium.org, Oct 7 2016
Blockedon: 653872
Comment 3 by drott@chromium.org, Oct 11 2016
Labels: -Launch-M-Target-55-Beta Launch-M-Target-56-Dev Launch-M-Target-56-Beta Launch-M-Target-56-Stable-Exp Launch-M-Target-56-Stable
Comment 4 by drott@chromium.org, Oct 11 2016
Labels: -M-55 M-56
Project Member Comment 5 by bugdroid1@chromium.org, Oct 11 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0

commit 750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0
Author: drott <drott@chromium.org>
Date: Tue Oct 11 08:52:44 2016

Add CSS support for text-decoration-skip

Add text-decoration-skip parsing and value computed style value support
for values objects (the default) and ink.  Still behind the CSS3
text-decoration flag for now.

BUG= 649700 ,  581456 

Review-Url: https://codereview.chromium.org/2394273006
Cr-Commit-Position: refs/heads/master@{#424393}

[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-listing-expected.txt
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt
[add] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/resources/text-decoration-skip-css-support.js
[add] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip-css-support.html
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/LayoutTests/svg/css/getComputedStyle-listing-expected.txt
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/LayoutTests/webexposed/css-properties-as-js-properties-expected.txt
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/css/CSSComputedStyleDeclaration.cpp
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/css/CSSPrimitiveValueMappings.h
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/css/CSSProperties.in
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/css/CSSPropertyEquality.cpp
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/css/CSSValueKeywords.in
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/frame/UseCounter.cpp
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/style/ComputedStyle.cpp
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/style/ComputedStyle.h
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/style/ComputedStyleConstants.h
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/style/StyleRareInheritedData.cpp
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/third_party/WebKit/Source/core/style/StyleRareInheritedData.h
[modify] https://crrev.com/750ed7a13da275f7afa3c8ec38fb01bc3a7f30f0/tools/metrics/histograms/histograms.xml

Comment 6 by drott@chromium.org, Oct 12 2016
Blockedon: 655166
Comment 7 by drott@chromium.org, Nov 2 2016
Cc: drott@chromium.org
 Issue 661338  has been merged into this issue.
Comment 8 by drott@chromium.org, Nov 11 2016
Labels: -Launch-M-Target-56-Dev -Launch-M-Target-56-Beta -Launch-M-Target-56-Stable-Exp -Launch-M-Target-56-Stable Launch-M-Target-57-Dev Launch-M-Target-57-Beta Launch-M-Target-57-Stable-Exp Launch-M-Target-57-Stable
Comment 9 by drott@chromium.org, Nov 16 2016
Labels: -M-56 M-57
Project Member Comment 10 by bugdroid1@chromium.org, Nov 19 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92

commit c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92
Author: drott <drott@chromium.org>
Date: Sat Nov 19 08:54:19 2016

Introduce support for text-decoration-skip: ink

In addition to the "objects" default value, support value "ink" for
text-decoration-skip. The spec [1] describes this as:

    "Skip over where glyphs are drawn: interrupt the decoration line to
    let the shape of the text show through where the text decoration
    would otherwise cross over a glyph. The UA must skip a small
    distance to either side of the glyph outline."

This CL supports this for all underline, overline, and line-through and
all text-decoration-style styles: solid, double, dashed, dotted, wavy.

The implementation approach is: If ink skipping is requested, clip
rectangles are calculated for the text intercepts. The vertical bounds
for those clip rectangles are computed from the extends of the underline
style: For example tight bounds of a Bezier curve are calculated for the
wavy underline style. Using these vertical boundaries, the text
intercepts are retrieved from Skia, via GraphicsContext. Skia computes
them from the glyph shapes and two distances, the vertical bounds that
were previously calculated. The rectangles are inflated in the baseline
direction by the underline thickness itself, same as WebKit. These clip
rectangles are then used to clip out painting an underline at the
calculated positions.

Known issue at this point: Due to the way we draw upright in vertical
text, currently there is no correct way of computing the ink skip
rectangles in this case, tracked in crbug.com/655154

[1] https://drafts.csswg.org/css-text-decor-3/#text-decoration-skip-property

BUG= 649700 ,  581456 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2416993002
Cr-Commit-Position: refs/heads/master@{#433415}

[modify] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/LayoutTests/TestExpectations
[add] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip-expected.png
[add] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip-expected.txt
[add] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip.html
[modify] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
[modify] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.h
[modify] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/Source/core/paint/TextPainter.cpp
[modify] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/Source/core/paint/TextPainter.h
[modify] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/Source/core/style/ComputedStyle.h
[modify] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp
[modify] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/Source/platform/graphics/GraphicsContext.cpp
[modify] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/Source/platform/graphics/GraphicsContext.h
[modify] https://crrev.com/c0fd99aa9f08fd23c5cf35e4f29b2e650fcace92/third_party/WebKit/Source/platform/graphics/GraphicsContextTest.cpp

Comment 11 by drott@chromium.org, Nov 19 2016
Status: Fixed
Comment 12 by drott@chromium.org, Dec 22 2016
Blockedon: 670599
Comment 13 by kojii@chromium.org, Dec 27 2016
Blockedon: 677093
Comment 14 by suzyh@chromium.org, Mar 30 2017
Cc: ashej...@chromium.org
 Issue 477917  has been merged into this issue.
Sign in to add a comment