| Commit-Queue | +1 |
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Haven't looked at the implementation, but based on the description this is pretty far up the wrong tree. I suggest fixing one case at a time (wavy is obviously the most complex one).
https://docs.google.com/document/d/1RTACTs71zy2KAmTMWEd_zK1vNujdVVHzHHQbs16nfZs/edit?usp=sharingThis looks outdated now?
Previously, SVG text decorations were painted using a single color
(text-decoration-color) without respecting the element's fill/stroke
properties. This CL adds two-pass rendering for decoration lines:Not really true, though? `solid` was definitely painted with `fill` and `stroke`.
properties. This CL adds two-pass rendering for decoration lines:There was two-pass rendering before as well?
For decorations with stroke, the paint order is fixed to stroke-first to
ensure the border effect renders correctly. This is a deliberate
deviation from the paint-order property for text decorations, as the
visual result matches the expected SVG text-decoration rendering per the
verified behavior in crbug.com/40789409#comment27.
This is broken and you shouldn't do this. This is also breaking existing rendering behavior. I don't understand why you're doing this.
- decoration_line_painter.cc: Adds fill/stroke-aware rendering for
DrawLineAsStroke (dashed/dotted), DrawLineAsRect (solid/double),I did this already in https://chromium-review.googlesource.com/c/chromium/src/+/7233381 - and asked you to review it (which you haven't). Doing this piecemeal is generally a quite workable strategy.
// For decorations with stroke, always draw stroke first (before fill)
// to create proper border effect, regardless of paint-order property.Divyansh MangalThe SVG spec doesn't explicitly address paint-order for text decorations. The CSS Text Decoration spec defines decoration painting order but doesn't account for SVG's fill/stroke two-pass model.
The stroke-first ordering here is intentional to create the correct bordered appearance (stroke forms the border, fill is inset). This was verified against expected renders in crbug.com/40789409#comment27. Using the element's `paint-order` property would produce incorrect visual results — e.g., fill-first would hide the stroke border.
This is called out in the CL description as a deliberate deviation, tracked for spec discussion.
Fredrik SöderquistDo we have a corresponding spec issue link this in that case?
We've supported paint-order on decorations before this CL, so changing it here would be a regression (as indicated by the `TestExpectations` change). FWIW, I consider "text" to include decorations, so that's a no-brainer for me. `svg/painting/reftests/paint-order-text-decorations.svg`[1] appears to be passing everywhere already as well, so there's not a strong case here.
[1] Gecko fails due to minor issues with the text, but the decorations are painted in the correct order.
// When text-decoration-color is explicitly set (not currentColor),
// it overrides the fill color of the decoration while preserving
// the stroke border effect.I rather think that `fill` and `stroke` should always take precedence (until there is a mechanism like `text-decoration-fill/stroke`). I don't think that any changes should be needed at this level.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
- decoration_line_painter.cc: Adds fill/stroke-aware rendering for
DrawLineAsStroke (dashed/dotted), DrawLineAsRect (solid/double),I did this already in https://chromium-review.googlesource.com/c/chromium/src/+/7233381 - and asked you to review it (which you haven't). Doing this piecemeal is generally a quite workable strategy.
I'll be sending more bite-sized CLs instead of this CL with remaining changes clubbed together making it cumbersome to review as well as agreeing to a common behavior.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Vinay Singh abandoned this change.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |