Open
Bug 1299876
Opened 9 years ago
Updated 2 years ago
The size of referenced stroke-box is not correct for graphics element with stroke-linejoin or stroke-linecap assigned.
Categories
(Core :: Layout, defect, P3)
Core
Layout
Tracking
()
NEW
People
(Reporter: u459114, Unassigned)
References
(Blocks 1 open bug)
Details
Attachments
(2 files, 1 obsolete file)
https://drafts.fxtf.org/css-masking-1/#compute-stroke-bounding-box
If element is not <rect>, <ellipse>, <circle> or <image> just follow one of the following conditions in the order they apply:
the used value for stroke-linejoin is miter
1. Let miter be the used value of stroke-miterlimit.
2. If miter is smaller than the square root of 2 and if the used value for stroke-linecap is square, multiply delta with the square root of 2. Otherwise, multiply delta with miter.
the used value for stroke-linecap is square
1. Multiply delta with the square root of 2.
SVGPathGeometryElement::GetGeometryBounds does not support this formula yet.
Create this issue to tracing this work
1. Add a new type BBoxFlags::eBBoxIncludeStrokeBox(??)
2. Find a way to bring this new enum type into
SVGLineElement::GetGeometryBounds
SVGPathGeometryElement::GetGeometryBounds
nsSVGPolyElement::GetGeometryBounds
nsSVGTextElement::GetGeometryBounds
3. Apply the formula defined in spec in these functions.
Summary: The size of stroke-box is not correct for graphics element with stroke-linejoin or stroke-linecap assigned. → The size of referenced stroke-box is not correct for graphics element with stroke-linejoin or stroke-linecap assigned.
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Attachment #8797112 -
Attachment is obsolete: true
Attachment #8797246 -
Flags: review?(cam)
Attachment #8797247 -
Flags: review?(cam)
Comment 5•8 years ago
|
||
Sorry for the delay looking at this. There is another definition of "stroke bounding box" in the SVG 2 specification, which I think is more recent than the one in the Masking spec, but I am not sure.
https://www.w3.org/TR/SVG2/coords.html#BoundingBoxes
("Stroke bounding box" is defined by reference to that general algorithm, right at the end of the "Bounding boxes" section.)
I remember having discussions with Dirk about whether the definition should include a specific way to handle stroke-{linejoin,miterlimit,width}, but I don't remember what the outcome of that was. But I can see that the definition in the Masking says to take the regular bounding box and inflate it with a value based on those three properties, while the definition in the SVG 2 spec says just to return the tightest box that contains the stroke shape, without saying how to do that. I think Dirk's reasoning was that it wasn't clear how to compute the tight bounding box of the stroke shape, so the Masking spec should define exactly how to produce a stroke bounding box, even if it might result in a box bigger than it needs to be.
Do other browsers implement the stroke-box reference box yet? If so, do they follow the definition in the Masking spec, the SVG 2 spec, or something else? Also, the definition in the SVG 2 spec is also used for svg_element.getBBox({ stroke: true }), so it might be useful to see whether we and other browsers differ in that.
Flags: needinfo?(cku)
(In reply to Cameron McCormack (:heycam) from comment #5)
> Do other browsers implement the stroke-box reference box yet? If so, do
No, chrome & safari do not support it in release and developer version.
> they follow the definition in the Masking spec, the SVG 2 spec, or something
> else? Also, the definition in the SVG 2 spec is also used for
> svg_element.getBBox({ stroke: true }), so it might be useful to see whether
> we and other browsers differ in that.
The definition of stoke box in these two spec is different. Let me figure it out before ask review.
Flags: needinfo?(cku)
Attachment #8797246 -
Flags: review?(cam)
Attachment #8797247 -
Flags: review?(cam)
Updated•8 years ago
|
Status: NEW → ASSIGNED
Priority: -- → P2
Blocks: basic-shape
No longer blocks: basic-shape-ship
Updated•8 years ago
|
Priority: P2 → P3
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•