WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
119043
Large stretch size error for MathML operators
https://bugs.webkit.org/show_bug.cgi?id=119043
Summary
Large stretch size error for MathML operators
Frédéric Wang (:fredw)
Reported
2013-07-24 01:45:00 PDT
Created
attachment 207384
[details]
testcase When building operators with glyphs you generally can not achieve perfect stretch size and only want the operators to stretch slightly larger than the target sizes. However in the attached testcase, the error is significant, at least 50px. Martin's patch for stretchy operators does not improve the situation.
Attachments
testcase
(1.51 KB, text/html)
2013-07-24 01:45 PDT
,
Frédéric Wang (:fredw)
no flags
Details
testcase with different depth and height
(1.19 KB, text/html)
2013-11-25 13:35 PST
,
Frédéric Wang (:fredw)
no flags
Details
screenshot of attachment 217827 in Gecko
(7.91 KB, image/png)
2013-11-25 13:37 PST
,
Frédéric Wang (:fredw)
no flags
Details
screenshot of attachment 217827 in WebKit
(3.60 KB, image/png)
2013-11-25 13:38 PST
,
Frédéric Wang (:fredw)
no flags
Details
WIP Patch
(8.51 KB, patch)
2013-11-29 07:01 PST
,
Frédéric Wang (:fredw)
no flags
Details
Formatted Diff
Diff
screenshot of attachment 217827 in WebKit + the patch
(12.39 KB, image/png)
2013-11-29 07:03 PST
,
Frédéric Wang (:fredw)
no flags
Details
Patch V1
(18.50 KB, patch)
2014-02-19 04:10 PST
,
Frédéric Wang (:fredw)
buildbot
: commit-queue-
Details
Formatted Diff
Diff
Archive of layout-test-results from webkit-ews-15 for mac-mountainlion-wk2
(498.16 KB, application/zip)
2014-02-19 05:12 PST
,
Build Bot
no flags
Details
Archive of layout-test-results from webkit-ews-06 for mac-mountainlion
(529.83 KB, application/zip)
2014-02-19 07:40 PST
,
Build Bot
no flags
Details
Patch V2
(35.85 KB, patch)
2014-02-19 07:47 PST
,
Frédéric Wang (:fredw)
no flags
Details
Formatted Diff
Diff
Patch
(36.39 KB, patch)
2014-02-20 00:59 PST
,
Frédéric Wang (:fredw)
no flags
Details
Formatted Diff
Diff
Patch
(29.44 KB, patch)
2014-02-21 01:54 PST
,
Frédéric Wang (:fredw)
no flags
Details
Formatted Diff
Diff
Patch
(36.85 KB, patch)
2014-02-22 00:29 PST
,
Frédéric Wang (:fredw)
cfleizach
: review+
Details
Formatted Diff
Diff
Final Patch
(36.83 KB, patch)
2014-02-22 01:58 PST
,
Frédéric Wang (:fredw)
no flags
Details
Formatted Diff
Diff
Show Obsolete
(11)
View All
Add attachment
proposed patch, testcase, etc.
Frédéric Wang (:fredw)
Comment 1
2013-07-30 08:14:46 PDT
This bug can be seen in test 23 of the Mozilla MathML torture test (and a bit in test 24 and 18 too):
https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/MathML_Torture_Test
Frédéric Wang (:fredw)
Comment 2
2013-11-25 13:35:08 PST
Created
attachment 217827
[details]
testcase with different depth and height
Frédéric Wang (:fredw)
Comment 3
2013-11-25 13:37:50 PST
Created
attachment 217828
[details]
screenshot of
attachment 217827
[details]
in Gecko
Frédéric Wang (:fredw)
Comment 4
2013-11-25 13:38:30 PST
Created
attachment 217829
[details]
screenshot of
attachment 217827
[details]
in WebKit
Frédéric Wang (:fredw)
Comment 5
2013-11-25 13:47:52 PST
I just looked at the stretching code and I think: - The gOperatorExpansion seems to cause the error. It basically adds 20% of the target size, so for a target of height 300px in the first testcase, that's 60px! It seems that the delimiter size should match the target size, or add a small delta that depends only on the font-size, not the target size. - I'm not sure I understand the alignment in RenderMathMLOperator::firstLineBaseline(). In my opinion, the target size should equal to a height + a depth (using the terminology of the mspace element) and this should be used to determine the alignment. - Also, we may want to distinguish the symmetric / non symmetric cases (
bug 124827
).
Frédéric Wang (:fredw)
Comment 6
2013-11-29 07:01:37 PST
Created
attachment 218062
[details]
WIP Patch Here is a patch that removes the gOperatorExpansion factor (and thus the stretch error) and takes into account the children height/depth to align and stretch the operator correctly. I have not tested it much, but that seems to improves the rendering on the torture test and of the testcase.
Frédéric Wang (:fredw)
Comment 7
2013-11-29 07:03:25 PST
Created
attachment 218063
[details]
screenshot of
attachment 217827
[details]
in WebKit + the patch
Frédéric Wang (:fredw)
Comment 8
2014-02-19 04:10:10 PST
Created
attachment 224620
[details]
Patch V1
Build Bot
Comment 9
2014-02-19 05:11:58 PST
Comment on
attachment 224620
[details]
Patch V1
Attachment 224620
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
http://webkit-queues.appspot.com/results/5106382919434240
New failing tests: fast/ruby/ruby-base-merge-block-children-crash-2.html mathml/presentation/mo-stretch.html
Build Bot
Comment 10
2014-02-19 05:12:00 PST
Created
attachment 224624
[details]
Archive of layout-test-results from webkit-ews-15 for mac-mountainlion-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: webkit-ews-15 Port: mac-mountainlion-wk2 Platform: Mac OS X 10.8.5
Frédéric Wang (:fredw)
Comment 11
2014-02-19 06:48:14 PST
Comment on
attachment 224620
[details]
Patch V1 I'm asking review for this. The mac failures for mo-stretch.html are expected, as I indicated in the ChangeLog. I'll need to update the reference once the bots give the output but they seem to take time. Actually, I'm not sure why the other ports pass the test. I don't really like this pixel test, so I think I'll convert it to reftest in another bug.
Build Bot
Comment 12
2014-02-19 07:40:08 PST
Comment on
attachment 224620
[details]
Patch V1
Attachment 224620
[details]
did not pass mac-ews (mac): Output:
http://webkit-queues.appspot.com/results/5155889933713408
New failing tests: fast/ruby/ruby-base-merge-block-children-crash-2.html mathml/presentation/mo-stretch.html
Build Bot
Comment 13
2014-02-19 07:40:11 PST
Created
attachment 224631
[details]
Archive of layout-test-results from webkit-ews-06 for mac-mountainlion The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: webkit-ews-06 Port: mac-mountainlion Platform: Mac OS X 10.8.5
Frédéric Wang (:fredw)
Comment 14
2014-02-19 07:47:17 PST
Created
attachment 224632
[details]
Patch V2
Martin Robinson
Comment 15
2014-02-19 08:59:13 PST
How do you plan to make this a reference test and still test proper rendering of stretchy characters?
Frédéric Wang (:fredw)
Comment 16
2014-02-19 09:06:46 PST
(In reply to
comment #15
)
> How do you plan to make this a reference test and still test proper rendering of stretchy characters?
I think I'll try to measure getBoundingClientRect() as in stretchy-depth-height.html. There is another test to check gaps IIRC. This won't test that the rendering is "good", though. The problem with that pixel test is that it is going to break each time we modify the rendering of <mo>...
chris fleizach
Comment 17
2014-02-19 11:00:20 PST
Comment on
attachment 224632
[details]
Patch V2 View in context:
https://bugs.webkit.org/attachment.cgi?id=224632&action=review
some minor comments
> Source/WebCore/rendering/mathml/RenderMathMLOperator.h:92 > + int m_stretchDepth;
what does depth represent here? It looks like the logicalHeight - firstLineBase, but it's not clear from the name what this is
> Source/WebCore/rendering/mathml/RenderMathMLRow.cpp:90 > + if (auto renderMo = child.unembellishedOperator())
auto& renderOperator
Frédéric Wang (:fredw)
Comment 18
2014-02-19 11:08:44 PST
(In reply to
comment #17
)
> some minor comments > > > Source/WebCore/rendering/mathml/RenderMathMLOperator.h:92 > > + int m_stretchDepth; > > what does depth represent here? It looks like the logicalHeight - firstLineBase, but it's not clear from the name what this is
height is the distance above the baseline and depth below the baseline. These are the TeX names I think, as well as those of the <mspace> elements. However, "height" is confusing since it is sometimes used to denote the sum of these two values. Alternatively, perhaps we can use ascent/descent as in font metrics.
Frédéric Wang (:fredw)
Comment 19
2014-02-19 11:17:36 PST
So should I rename them ascent/descent or just add a comment explaining what they represent?
Martin Robinson
Comment 20
2014-02-19 11:34:54 PST
(In reply to
comment #19
)
> I think I'll try to measure getBoundingClientRect() as in stretchy-depth-height.html. There is another test to check gaps IIRC. This won't test that the rendering is "good", though. The problem with that pixel test is that it is going to break each time we modify the rendering of <mo>...
I think that's fine. There are really only 4 ports to rebase and otherwise we don't have test coverage.
Frédéric Wang (:fredw)
Comment 21
2014-02-19 11:53:33 PST
(In reply to
comment #20
)
> I think that's fine. There are really only 4 ports to rebase and otherwise we don't have test coverage.
OK, so let's keep that test. However, that does not explain why only the Mac bot failed and why I only needed to update the txt reference. I would have expected that the *.png and other ports failed too.
Frédéric Wang (:fredw)
Comment 22
2014-02-20 00:59:54 PST
Created
attachment 224729
[details]
Patch
Frédéric Wang (:fredw)
Comment 23
2014-02-20 01:38:03 PST
Comment on
attachment 224729
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=224729&action=review
> LayoutTests/mathml/presentation/stretchy-depth-height.html:101 > + <mo id="s5">{</mo>
I forgot a symmetric="false" here. That won't make the test fails now but will after
bug 124827
. So I'll update this after the review.
Frédéric Wang (:fredw)
Comment 24
2014-02-21 01:54:54 PST
Created
attachment 224844
[details]
Patch
Frédéric Wang (:fredw)
Comment 25
2014-02-21 02:04:51 PST
(In reply to
comment #23
)
> I forgot a symmetric="false" here. That won't make the test fails now but will after
bug 124827
. So I'll update this after the review.
Done. (In reply to
comment #19
)
> So should I rename them ascent/descent or just add a comment explaining what they represent?
After discussion with Martin, I've renamed them heightAboveBaseline and depthBelowBaseline. Actually, the spec uses the axis as a reference (center of plus sign, of fraction bar etc), but that won't make a difference for asymmetric stretching here and using the baseline as a reference is bit more convenient to handle with the firstLineBaseline() function. I'll need to update
bug 124827
to consider stretch symmetrically with respect to the axis (although we won't really have a reliable way to compute it until
bug 122297
is fixed). See
http://www.w3.org/TR/MathML/chapter3.html#id.3.2.5.8.2
chris fleizach
Comment 26
2014-02-21 23:15:49 PST
Comment on
attachment 224844
[details]
Patch I'm not seeing stretchy-depth-height.html in this patch otherwise seems ok
Frédéric Wang (:fredw)
Comment 27
2014-02-22 00:23:06 PST
(In reply to
comment #26
)
> (From update of
attachment 224844
[details]
) > I'm not seeing > stretchy-depth-height.html in this patch > otherwise seems ok
It is in
attachment 224729
[details]
but was lost in this last patch. I'll upload a new version.
Frédéric Wang (:fredw)
Comment 28
2014-02-22 00:29:06 PST
Created
attachment 224953
[details]
Patch
chris fleizach
Comment 29
2014-02-22 01:18:26 PST
Comment on
attachment 224953
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=224953&action=review
> LayoutTests/mathml/presentation/stretchy-depth-height.html:11 > + return Math.abs(x - y) < epsilon;
Indentation should be 4 spaces in. { should be on line above
Frédéric Wang (:fredw)
Comment 30
2014-02-22 01:45:33 PST
Committed
r164534
: <
http://trac.webkit.org/changeset/164534
>
Frédéric Wang (:fredw)
Comment 31
2014-02-22 01:52:21 PST
Reverted
r164534
for reason: missing tests Committed
r164535
: <
http://trac.webkit.org/changeset/164535
>
Frédéric Wang (:fredw)
Comment 32
2014-02-22 01:58:31 PST
Created
attachment 224956
[details]
Final Patch
Frédéric Wang (:fredw)
Comment 33
2014-02-22 02:02:49 PST
Committed
r164536
: <
http://trac.webkit.org/changeset/164536
>
Frédéric Wang (:fredw)
Comment 34
2014-02-22 02:04:40 PST
OK, the first attempt was correct. For some reason I didn't realize that the new files were in the commit diff...
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug