RESOLVED FIXED 51456
Introduce FontMetrics abstraction
https://bugs.webkit.org/show_bug.cgi?id=51456
Summary Introduce FontMetrics abstraction
Nikolas Zimmermann
Reported 2010-12-22 02:20:21 PST
In order to fix several SVG bugs, regarding very small font sizes, I'd ideally have access to floating-point ascent/descent information. SimpleFontData stores lineGap/lineHeight/ascent/descent as integers at the moment. For CG the ascent/descent is actually a floating-point number that (integerAscent scaled according to emPerUnits, multiplied with pointSize == floatAscent) gets rounded using lroundf and then stored as integer. Just changing the floats to integers, and storing accurate ascent/descent/.. information is not easily doable, as the int ascent() accessors would need to round the float m_ascent, every time on access. That means for HTML layout (where we only need integers atm) we'd round much more often than necessary. Storing both int and float variants of the metrics in Font, seems also redundant and costly. I'm proposing a new FontMetrics class, that holds floating-point values for lineGap/lineHeight/ascent/descent, plus another IntegerFontMetrics class, that holds rounded integers. The IntegerFontMetrics class is dynamically created and stored as OwnPtr in FontMetrics. Whenever someone accesses the int versions of ascent/descent/etc.. that datastructure is created and stored in FontMetrics. Follow-up calls to ascent/descent, just return the cached integer, no need to round again. Of course that will double the amount of memory to hold font metrics, in the worst-case, but gives us the ability to expose accurate ascent/descent/lineHeight/lineGap values for users that need it -> SVG. I've worked on this the last weeks, and could fix all bugs related to small-font usages & SVG with this approach. Stripped down my current work, to a patch which just introduces FontMetrics, w/o any functional changes. I'm open for all ideas, on how to make it better... uploading the patch to discuss soon.
Attachments
Patch (111.99 KB, patch)
2010-12-22 08:32 PST, Nikolas Zimmermann
no flags
Patch v2 (111.17 KB, patch)
2010-12-22 10:55 PST, Nikolas Zimmermann
simon.fraser: review-
Patch v3 (116.28 KB, patch)
2010-12-23 01:39 PST, Nikolas Zimmermann
no flags
Patch v4 (116.29 KB, patch)
2010-12-23 02:14 PST, Nikolas Zimmermann
no flags
Patch v5 (116.96 KB, patch)
2010-12-26 04:47 PST, Nikolas Zimmermann
no flags
Patch v6 (121.86 KB, patch)
2010-12-26 06:47 PST, Nikolas Zimmermann
no flags
Patch v7 (121.23 KB, patch)
2010-12-27 04:44 PST, Nikolas Zimmermann
no flags
Patch v8 (123.39 KB, patch)
2010-12-27 06:50 PST, Nikolas Zimmermann
no flags
Patch v9 (123.42 KB, patch)
2010-12-27 06:57 PST, Nikolas Zimmermann
no flags
Patch v10 (123.42 KB, patch)
2010-12-27 09:55 PST, Nikolas Zimmermann
krit: review-
Patch v11 (125.32 KB, patch)
2011-01-21 06:45 PST, Nikolas Zimmermann
krit: review+
Fixup patch (after patch v11 landed) (39.27 KB, patch)
2011-01-25 03:22 PST, Nikolas Zimmermann
krit: review+
Fixup patch v2 (new approach, only SVGFonts changes) (4.94 KB, patch)
2011-01-25 03:35 PST, Nikolas Zimmermann
no flags
Fixup patch v3 (775.66 KB, patch)
2011-01-25 03:48 PST, Nikolas Zimmermann
krit: review+
Nikolas Zimmermann
Comment 1 2010-12-22 08:32:58 PST
WebKit Review Bot
Comment 2 2010-12-22 08:46:44 PST
WebKit Review Bot
Comment 3 2010-12-22 08:48:40 PST
Early Warning System Bot
Comment 4 2010-12-22 08:48:46 PST
mitz
Comment 5 2010-12-22 08:57:37 PST
(In reply to comment #0) > In order to fix several SVG bugs, regarding very small font sizes, I'd ideally have access to floating-point ascent/descent information. SimpleFontData stores lineGap/lineHeight/ascent/descent as integers at the moment. For CG the ascent/descent is actually a floating-point number that (integerAscent scaled according to emPerUnits, multiplied with pointSize == floatAscent) gets rounded using lroundf and then stored as integer. > > Just changing the floats to integers, and storing accurate ascent/descent/.. information is not easily doable, as the int ascent() accessors would need to round the float m_ascent, every time on access. I am not sure I understand why that would not be easily doable. Can you explain? > That means for HTML layout (where we only need integers atm) we'd round much more often than necessary. How much more often? > Storing both int and float variants of the metrics in Font, seems also redundant and costly. Okay… > > I'm proposing a new FontMetrics class, that holds floating-point values for lineGap/lineHeight/ascent/descent, plus another IntegerFontMetrics class, that holds rounded integers. > The IntegerFontMetrics class is dynamically created and stored as OwnPtr in FontMetrics. Whenever someone accesses the int versions of ascent/descent/etc.. that datastructure is created > and stored in FontMetrics. Follow-up calls to ascent/descent, just return the cached integer, no need to round again. So, if I understand correctly, with the rare exception of fonts used only in SVG, all fonts will store both the floating point and integer values. That seems to be at least as “redundant and costly” as just adding the floating point data members alongside the integer ones. > Of course that will double the amount of memory to hold font metrics, in the worst-case, but gives us the ability to expose accurate ascent/descent/lineHeight/lineGap values for users that need it -> SVG. > I've worked on this the last weeks, and could fix all bugs related to small-font usages & SVG with this approach. > > Stripped down my current work, to a patch which just introduces FontMetrics, w/o any functional changes. > I'm open for all ideas, on how to make it better... uploading the patch to discuss soon. I am not convinced that this is the best approach to take.
Nikolas Zimmermann
Comment 6 2010-12-22 09:53:25 PST
(In reply to comment #5) > (In reply to comment #0) > > In order to fix several SVG bugs, regarding very small font sizes, I'd ideally have access to floating-point ascent/descent information. SimpleFontData stores lineGap/lineHeight/ascent/descent as integers at the moment. For CG the ascent/descent is actually a floating-point number that (integerAscent scaled according to emPerUnits, multiplied with pointSize == floatAscent) gets rounded using lroundf and then stored as integer. > > > > Just changing the floats to integers, and storing accurate ascent/descent/.. information is not easily doable, as the int ascent() accessors would need to round the float m_ascent, every time on access. > > I am not sure I understand why that would not be easily doable. Can you explain? It's easy doable, sorry, but I think we'd round a lot more than now.. > > > That means for HTML layout (where we only need integers atm) we'd round much more often than necessary. > > How much more often? On every access of any font metrics like ascent/descent. During each layout call.. > > > Storing both int and float variants of the metrics in Font, seems also redundant and costly. > > Okay… > > > > > I'm proposing a new FontMetrics class, that holds floating-point values for lineGap/lineHeight/ascent/descent, plus another IntegerFontMetrics class, that holds rounded integers. > > The IntegerFontMetrics class is dynamically created and stored as OwnPtr in FontMetrics. Whenever someone accesses the int versions of ascent/descent/etc.. that datastructure is created > > and stored in FontMetrics. Follow-up calls to ascent/descent, just return the cached integer, no need to round again. > > So, if I understand correctly, with the rare exception of fonts used only in SVG, all fonts will store both the floating point and integer values. That seems to be at least as “redundant and costly” as just adding the floating point data members alongside the integer ones. Yeah it's not a good approach, it only avoids the cost of storing both integer & float for SVG... for HTML it doubles the cost, so it's not good. > I am not convinced that this is the best approach to take. I agree, I mostly uploaded it to discuss the issue. Another option would be to use a union { float f; int i; } and to decide upon creation of the FontMetrics object, wheter floating point or integer accurancy is desired. That would only require rounding the incoming float values once, if integers are wanted, but it makes it impossible to reconstruct floating-point ascent/descent values, for the Font object, once constructed with IntegerMetrics. The most easy approach would be to use int ascent() const { return lroundf(m_ascent); } of course, but I was worried that it would be a performance decrease, so I thought that maybe it's a better trade-off to use more memory for the Font object, rather than decreasing performance. Note, I did not benchmark this at all, it's just a feeling. If I upload another, simpler version, which just does the rounding on every invocation, would you be able to run it through Apples PLT?
Nikolas Zimmermann
Comment 7 2010-12-22 10:55:10 PST
Created attachment 77235 [details] Patch v2 The easier way: always round, don't cache an IntegerFontMetrics object.
Simon Fraser (smfr)
Comment 8 2010-12-22 11:16:09 PST
Comment on attachment 77235 [details] Patch v2 There should be no need to add a new class and touch dozens of files for this. Why not just start by rounding in the accessors, and measuring performance?
WebKit Review Bot
Comment 9 2010-12-22 11:19:20 PST
WebKit Review Bot
Comment 10 2010-12-22 11:29:50 PST
Nikolas Zimmermann
Comment 11 2010-12-22 11:30:47 PST
(In reply to comment #8) > (From update of attachment 77235 [details]) > There should be no need to add a new class and touch dozens of files for this. Why not just start by rounding in the accessors, and measuring performance? Well, I still think introducing a FontMetrics class is cleaner, than duplicating each accessor in Font and SimpleFontData. Especially if I want to introduce floatAscent/floatDescent/floatLineGap/floatLineSpacing methods, I'd need to add them to both Font and SimpleFontData, which is a bad design. The metrics should go into their own class. Of course, to just measure performance it's not needed, but I have already written it, so why not?
Build Bot
Comment 12 2010-12-22 12:47:37 PST
Nikolas Zimmermann
Comment 13 2010-12-23 01:39:33 PST
Created attachment 77315 [details] Patch v3 Patch v3: Attempt to make it build on more platform. Is it really unacceptable to just apply this patch and try a PLT run with it?? It at least works fine on Mac, at the moment.
WebKit Review Bot
Comment 14 2010-12-23 02:01:04 PST
Nikolas Zimmermann
Comment 15 2010-12-23 02:14:57 PST
Created attachment 77317 [details] Patch v4 Uploading Patch v4, hopefully chromium build works now.
Build Bot
Comment 16 2010-12-23 04:09:34 PST
Nikolas Zimmermann
Comment 17 2010-12-26 04:44:19 PST
I performance tested this for a while (without PLT, of course) and didn't notice any measurable slowdown. I created an artifical testcase, compiled w/o optimizations: #include <math.h> class FooInt { public: FooInt(float bar) : m_bar(lroundf(bar)) { } int bar() const { return m_bar; } private: int m_bar; }; class FooFloat { public: FooFloat(float bar) : m_bar(bar) { } int bar() const { return lroundf(m_bar); } private: float m_bar; }; int main() { int result = 0; FooInt foo(1.7f); for (long i = 0; i < 1e8; ++i) { result = foo.bar(); } } Results: using FooFloat(1.7f) and 1e8 calls: 1.531s (1e8 lroundf calls) using FooInt(1.7f) and 1e8 calls: 0.6754s (1 lroundf call) This is artifical of course, but it gives a rough estimation of the slowdown, but of course 1e8 calls is _a lot_. The usual count is several orders of magnitudes lower. I suspect that's why I didn't notice any slowdown when runing DRT. I tested 10 DRT runs w/o the patch and 10 with the patch, and there was no difference, except the usual deviations betweens runs. I'll upload a new patch soon, fixing the win build, hopefully the approach is sane enough now to get it reviewed?
Nikolas Zimmermann
Comment 18 2010-12-26 04:47:45 PST
Created attachment 77452 [details] Patch v5
Build Bot
Comment 19 2010-12-26 05:44:34 PST
Nikolas Zimmermann
Comment 20 2010-12-26 06:47:01 PST
Created attachment 77453 [details] Patch v6 Forgot to alter files in WebKit/win, uploading patch v6, let's see if win build is fixed.
Build Bot
Comment 21 2010-12-26 08:14:07 PST
Nikolas Zimmermann
Comment 22 2010-12-27 04:44:55 PST
Created attachment 77491 [details] Patch v7 Fixed another win problem. void FontMetrics(..) clashes with FontMetrics class, use WebCore:: prefix, hopefully it builds now.
Build Bot
Comment 23 2010-12-27 05:44:11 PST
Nikolas Zimmermann
Comment 24 2010-12-27 06:50:50 PST
Created attachment 77501 [details] Patch v8 Fix WebKit2/win build.
Nikolas Zimmermann
Comment 25 2010-12-27 06:53:01 PST
Comment on attachment 77501 [details] Patch v8 Going to rebase to trunk first, the patch doesn't seem to apply on cr-mac-ews otherhwise, obsoleting the patch in the meanwhile.
Nikolas Zimmermann
Comment 26 2010-12-27 06:57:47 PST
Created attachment 77502 [details] Patch v9 Rebased against trunk, hopefully patch v9 now builds everywhere.
Nikolas Zimmermann
Comment 27 2010-12-27 08:32:05 PST
I don't understand why mac-ews and cr-mac-ews reject this patch. It tells me: patching file WebCore/WebCore.vcproj/WebCore.vcproj Hunk #1 FAILED at 26381. 1 out of 1 hunk FAILED -- saving rejects to file WebCore/WebCore.vcproj/WebCore.vcproj.rej I'm on trunk, and the patch just works fine on the other ews bots: nikolaszimmermann ~/Coding/WebKit > svn diff WebCore/WebCore.vcproj Index: WebCore/WebCore.vcproj/WebCore.vcproj =================================================================== --- WebCore/WebCore.vcproj/WebCore.vcproj (revision 74683) +++ WebCore/WebCore.vcproj/WebCore.vcproj (working copy) @@ -26381,6 +26381,10 @@ > </File> <File + RelativePath="..\platform\graphics\FontMetrics.h" + > + </File> + <File RelativePath="..\platform\graphics\FontRenderingMode.h" > </File> nikolaszimmermann ~/Coding/WebKit > svn up WebCore/WebCore.vcproj At revision 74683. Any idea?
Dirk Schulze
Comment 28 2010-12-27 09:02:56 PST
(In reply to comment #27) > I don't understand why mac-ews and cr-mac-ews reject this patch. It tells me: > > patching file WebCore/WebCore.vcproj/WebCore.vcproj > Hunk #1 FAILED at 26381. > 1 out of 1 hunk FAILED -- saving rejects to file WebCore/WebCore.vcproj/WebCore.vcproj.rej > > I'm on trunk, and the patch just works fine on the other ews bots: > > nikolaszimmermann ~/Coding/WebKit > svn diff WebCore/WebCore.vcproj > Index: WebCore/WebCore.vcproj/WebCore.vcproj > =================================================================== > --- WebCore/WebCore.vcproj/WebCore.vcproj (revision 74683) > +++ WebCore/WebCore.vcproj/WebCore.vcproj (working copy) > @@ -26381,6 +26381,10 @@ > > > </File> > <File > + RelativePath="..\platform\graphics\FontMetrics.h" > + > > + </File> > + <File > RelativePath="..\platform\graphics\FontRenderingMode.h" > > > </File> > nikolaszimmermann ~/Coding/WebKit > svn up WebCore/WebCore.vcproj > At revision 74683. > > Any idea? Not sure if you hit the same problem like me, but I had this with some editors (and not always, just sometimes). It helped to use another editor. I think I took vi.
Nikolas Zimmermann
Comment 29 2010-12-27 09:55:23 PST
(In reply to comment #28) > > > > Any idea? > > Not sure if you hit the same problem like me, but I had this with some editors (and not always, just sometimes). It helped to use another editor. I think I took vi. It bothers me, that only the mac bots can't process it. Anyway, I'm going to revert the file and reedit, then resubmit. Let's see..
Nikolas Zimmermann
Comment 30 2010-12-27 09:55:48 PST
Created attachment 77512 [details] Patch v10
Dirk Schulze
Comment 31 2010-12-27 11:06:48 PST
(In reply to comment #30) > Created an attachment (id=77512) [details] > Patch v10 You're right, just the two bots can't apply the patch. Are they not up to trunk?
Nikolas Zimmermann
Comment 32 2010-12-29 04:22:54 PST
Is anyone available for a real review? Simon? David? Dan?
Simon Fraser (smfr)
Comment 33 2010-12-31 09:04:43 PST
Comment on attachment 77512 [details] Patch v10 I don't think FontMetrics warrants its own class and header. I think it should just be a struct in Font.h.
Nikolas Zimmermann
Comment 34 2011-01-03 10:41:16 PST
(In reply to comment #33) > (From update of attachment 77512 [details]) > I don't think FontMetrics warrants its own class and header. I think it should just be a struct in Font.h. I'm a huge fan of our one-class-one-file policy. So even though a struct in Font.h might sound convienent, it's violating our style guidelines. nikolaszimmermann ~/Coding/WebKit/WebCore/platform/graphics > ls Font*.h Font.h FontCache.h FontDescription.h FontFamily.h FontOrientation.h FontSelector.h FontTraitsMask.h FontBaseline.h FontData.h FontFallbackList.h FontRenderingMode.h FontSmoothingMode.h Why should adding FontMetrics.h be any problem?
Nikolas Zimmermann
Comment 35 2011-01-05 03:31:18 PST
Simon, did I convince you?
Dirk Schulze
Comment 36 2011-01-18 10:37:09 PST
Comment on attachment 77512 [details] Patch v10 View in context: https://bugs.webkit.org/attachment.cgi?id=77512&action=review I'm not sure why a struct is violating the style guidelines. Sometime a struct is the better choice. But in this case I agree to Niko, because this code makes use of various functions (with more than one line) and this should really be in a header. I'd like to see another run r-, but not because of the header itself. > WebCore/platform/graphics/FontMetrics.h:19 > +/* > + Copyright (C) Research In Motion Limited 2010. All rights reserved. > + > + This library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Library General Public > + License as published by the Free Software Foundation; either > + version 2 of the License, or (at your option) any later version. > + > + This library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Library General Public License for more details. > + > + You should have received a copy of the GNU Library General Public License > + aint with this library; see the file COPYING.LIB. If not, write to > + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, > + Boston, MA 02110-1301, USA. > +*/ > + Can you start every line with a space and a star? Also why do you copy&paste wrong licenses? aint? What is aint? Do you want to save memory? ;-) > WebCore/platform/graphics/FontMetrics.h:112 > +private: Do you think this 'private:' is helpful? I don't. > WebCore/platform/graphics/SimpleFontData.cpp:85 > + int xHeight = static_cast<int>(svgFontFaceElement->xHeight() * scale); > + int ascent = static_cast<int>(svgFontFaceElement->ascent() * scale); > + int descent = static_cast<int>(svgFontFaceElement->descent() * scale); why not floorf? > WebCore/platform/graphics/SimpleFontData.cpp:86 > + int lineGap = 0.1f * size; This doesn't cause a compiler warning?
Nikolas Zimmermann
Comment 37 2011-01-21 02:48:05 PST
(In reply to comment #36) > (From update of attachment 77512 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=77512&action=review > > I'm not sure why a struct is violating the style guidelines. Sometime a struct is the better choice. But in this case I agree to Niko, because this code makes use of various functions (with more than one line) and this should really be in a header. Okay. > I'd like to see another run r-, but not because of the header itself. > > Can you start every line with a space and a star? Also why do you copy&paste wrong licenses? aint? What is aint? Do you want to save memory? ;-) Fixed. > > > WebCore/platform/graphics/FontMetrics.h:112 > > +private: > > Do you think this 'private:' is helpful? I don't. Removed. > > WebCore/platform/graphics/SimpleFontData.cpp:85 > > + int xHeight = static_cast<int>(svgFontFaceElement->xHeight() * scale); > > + int ascent = static_cast<int>(svgFontFaceElement->ascent() * scale); > > + int descent = static_cast<int>(svgFontFaceElement->descent() * scale); > why not floorf? There's a FIXME just before the lines to use floating-point FontMetrics, in a follow-up patch Note the static_cast<int>(..) is existing code - changing this causes multiple SVGFonts DRT differences (progressions, but I want to land them seperated). > > > WebCore/platform/graphics/SimpleFontData.cpp:86 > > + int lineGap = 0.1f * size; > > This doesn't cause a compiler warning? Wrapped in the same static_cast<int>, with the same warning, that this is gonne change soon to use floating-point metrics, fixing bugs with small font sizes.
Nikolas Zimmermann
Comment 38 2011-01-21 06:45:02 PST
Created attachment 79730 [details] Patch v11 Updated patch v11 to trunk. Save memory in FontMetrics by not storing but computing the lineSpacing() from the lineGap / ascent / descent, remaining compatibility with existing DRT expectations. Current assumption across most ports (mac/win/chromium/gtk...) is "lineSpacing = lroundf(ascent) + lroundf(descent) + lroundf(lineGap)". In my previous patch I stored m_lineSpacing as "lineSpacing = lroundf(floatAscent + floatDescent + floatLineGap)" which lead to several changes in layout tests, which might be correct, but I don't want to cause any layout test changes with this patch.
Dirk Schulze
Comment 39 2011-01-21 06:56:37 PST
Comment on attachment 79730 [details] Patch v11 r=me
Nikolas Zimmermann
Comment 40 2011-01-22 03:48:04 PST
Nikolas Zimmermann
Comment 41 2011-01-22 04:52:23 PST
Reopening bug. Landed cr-win build fix in r76443. I broke several tests on the bot, due the last-minute changes regarding lineSpacing rounding. I'm going to rechek and post a follow-up patch, if that doesn't work out I'm going to roll it out.
WebKit Review Bot
Comment 42 2011-01-22 04:54:48 PST
http://trac.webkit.org/changeset/76442 might have broken Qt Linux Release The following tests are not passing: animations/missing-values-first-keyframe.html animations/missing-values-last-keyframe.html animations/state-at-end-event.html css1/basic/class_as_selector.html css1/basic/comments.html css1/basic/containment.html css1/basic/contextual_selectors.html css1/basic/grouping.html css1/basic/id_as_selector.html css1/basic/inheritance.html css1/box_properties/border.html css1/box_properties/border_bottom.html css1/box_properties/border_bottom_inline.html css1/box_properties/border_bottom_width.html css1/box_properties/border_bottom_width_inline.html css1/box_properties/border_color.html css1/box_properties/border_color_inline.html css1/box_properties/border_inline.html css1/box_properties/border_left.html css1/box_properties/border_left_inline.html css1/box_properties/border_left_width.html css1/box_properties/border_left_width_inline.html css1/box_properties/border_right.html css1/box_properties/border_right_inline.html css1/box_properties/border_right_width.html css1/box_properties/border_right_width_inline.html css1/box_properties/border_style.html css1/box_properties/border_style_inline.html css1/box_properties/border_top.html css1/box_properties/border_top_inline.html css1/box_properties/border_top_width.html css1/box_properties/border_top_width_inline.html css1/box_properties/border_width.html css1/box_properties/border_width_inline.html css1/box_properties/clear.html css1/box_properties/clear_float.html css1/box_properties/float.html css1/box_properties/float_elements_in_series.html css1/box_properties/float_margin.html css1/box_properties/float_on_text_elements.html css1/box_properties/height.html css1/box_properties/margin.html css1/box_properties/margin_bottom.html css1/box_properties/margin_bottom_inline.html css1/box_properties/margin_inline.html css1/box_properties/margin_left.html css1/box_properties/margin_left_inline.html css1/box_properties/margin_right.html css1/box_properties/margin_right_inline.html css1/box_properties/margin_top.html css1/box_properties/margin_top_inline.html css1/box_properties/padding.html css1/box_properties/padding_bottom.html css1/box_properties/padding_bottom_inline.html css1/box_properties/padding_inline.html css1/box_properties/padding_left.html css1/box_properties/padding_left_inline.html css1/box_properties/padding_right.html css1/box_properties/padding_right_inline.html css1/box_properties/padding_top.html css1/box_properties/padding_top_inline.html css1/box_properties/width.html css1/cascade/cascade_order.html css1/cascade/important.html css1/classification/display.html css1/classification/list_style.html css1/classification/list_style_image.html css1/classification/list_style_position.html css1/classification/list_style_type.html css1/classification/white_space.html css1/color_and_background/background.html css1/color_and_background/background_attachment.html css1/color_and_background/background_color.html css1/color_and_background/background_image.html css1/color_and_background/background_position.html css1/color_and_background/background_repeat.html css1/color_and_background/color.html css1/conformance/forward_compatible_parsing.html css1/font_properties/font.html css1/font_properties/font_family.html css1/font_properties/font_size.html css1/font_properties/font_style.html css1/font_properties/font_variant.html css1/font_properties/font_weight.html css1/formatting_model/canvas.html css1/formatting_model/floating_elements.html css1/formatting_model/height_of_lines.html css1/formatting_model/horizontal_formatting.html css1/formatting_model/inline_elements.html css1/formatting_model/replaced_elements.html css1/formatting_model/vertical_formatting.html css1/pseudo/anchor.html css1/pseudo/firstletter.html css1/pseudo/firstline.html css1/pseudo/multiple_pseudo_elements.html css1/pseudo/pseudo_elements_in_selectors.html css1/text_properties/letter_spacing.html css1/text_properties/line_height.html css1/text_properties/text_align.html css1/text_properties/text_decoration.html css1/text_properties/text_indent.html css1/text_properties/text_transform.html css1/text_properties/vertical_align.html css1/text_properties/word_spacing.html css1/units/color_units.html css1/units/length_units.html css1/units/percentage_units.html css1/units/urls.html css2.1/t010403-shand-border-00-c.html css2.1/t010403-shand-font-00-b.html css2.1/t010403-shand-font-01-b.html css2.1/t040102-keywords-00-b.html css2.1/t040102-keywords-01-b.html css2.1/t040103-case-00-b.html css2.1/t040103-case-01-c.html css2.1/t040103-escapes-00-b.html css2.1/t040103-escapes-01-b.html css2.1/t040103-escapes-02-d.html css2.1/t040103-escapes-03-b.html css2.1/t040103-escapes-04-b.html css2.1/t040103-escapes-05-c.html css2.1/t040103-escapes-06-b.html css2.1/t040103-escapes-07-b.html css2.1/t040103-escapes-08-b.html css2.1/t040103-ident-00-c.html css2.1/t040103-ident-01-c.html css2.1/t040103-ident-02-c.html css2.1/t040103-ident-03-c.html css2.1/t040103-ident-04-c.html css2.1/t040103-ident-05-c.html css2.1/t040103-ident-06-c.html css2.1/t040103-ident-07-c.html css2.1/t040103-ident-08-c.html css2.1/t040103-ident-09-c.html css2.1/t040103-ident-10-c.html css2.1/t040103-ident-11-c.html css2.1/t040103-ident-12-c.html css2.1/t040103-ident-13-c.html css2.1/t040105-atkeyw-00-b.html css2.1/t040105-atkeyw-01-b.html css2.1/t040105-atkeyw-02-b.html css2.1/t040105-atrule-00-b.html css2.1/t040105-atrule-01-b.html css2.1/t040105-atrule-02-b.html css2.1/t040105-atrule-03-b.html css2.1/t040105-atrule-04-b.html css2.1/t040105-import-00-b.html css2.1/t040105-import-01-b.html css2.1/t040105-import-10-b.html css2.1/t040109-c17-comments-00-b.html css2.1/t040109-c17-comments-01-b.html css2.1/t0402-c71-fwd-parsing-00-f.html css2.1/t0402-c71-fwd-parsing-01-f.html css2.1/t0402-c71-fwd-parsing-02-f.html css2.1/t0402-c71-fwd-parsing-03-f.html css2.1/t0402-c71-fwd-parsing-04-f.html css2.1/t0402-syntax-01-f.html css2.1/t0402-syntax-02-f.html css2.1/t0402-syntax-03-f.html css2.1/t0402-syntax-04-f.html css2.1/t0402-syntax-05-f.html css2.1/t0402-syntax-06-f.html css2.1/t040302-c61-ex-len-00-b-a.html css2.1/t040302-c61-phys-len-00-b.html css2.1/t040302-c61-rel-len-00-b-ag.html css2.1/t040303-c62-percent-00-b-ag.html css2.1/t040304-c64-uri-00-a-g.html css2.1/t040306-c63-color-00-b-ag.html css2.1/t040306-syntax-01-f.html css2.1/t040307-syntax-01-b.html css2.1/t050201-c12-grouping-00-b.html css2.1/t0505-c16-descendant-00-e.html css2.1/t0505-c16-descendant-01-e.html css2.1/t0505-c16-descendant-02-e.html css2.1/t050803-c14-classes-00-e.html css2.1/t0509-c15-ids-00-a.html css2.1/t0509-c15-ids-01-e.html css2.1/t0509-id-sel-syntax-01-f.html css2.1/t0509-id-sel-syntax-02-b.html css2.1/t0510-c25-pseudo-elmnt-00-c.html css2.1/t0511-c21-pseud-anch-00-e-i.html css2.1/t0511-c21-pseud-link-00-e.html css2.1/t0511-c21-pseud-link-01-e.html css2.1/t051103-c21-activ-ln-00-e-i.html css2.1/t051103-c21-focus-ln-00-e-i.html css2.1/t051103-c21-hover-ln-00-e-i.html css2.1/t051103-dom-hover-01-c-io.html css2.1/t051103-dom-hover-02-c-io.html css2.1/t0602-c13-inheritance-00-e.html css2.1/t0602-inherit-bdr-pad-b-00.html css2.1/t0603-c11-import-00-b.html css2.1/t060401-c32-cascading-00-b.html css2.1/t060402-c31-important-00-b.html css2.1/t060403-c21-pseu-cls-00-e-i.html css2.1/t060403-c21-pseu-id-00-e-i.html css2.1/t0801-c412-hz-box-00-b-a.html css2.1/t0803-c5501-imrgn-t-00-b-ag.html css2.1/t0803-c5501-mrgn-t-00-b-a.html css2.1/t0803-c5502-imrgn-r-00-b-ag.html css2.1/t0803-c5502-imrgn-r-01-b-ag.html css2.1/t0803-c5502-imrgn-r-02-b-a.html css2.1/t0803-c5502-imrgn-r-03-b-a.html css2.1/t0803-c5502-imrgn-r-04-b-ag.html css2.1/t0803-c5502-imrgn-r-05-b-ag.html css2.1/t0803-c5502-imrgn-r-06-b-ag.html css2.1/t0803-c5502-mrgn-r-00-c-ag.html css2.1/t0803-c5502-mrgn-r-01-c-a.html css2.1/t0803-c5502-mrgn-r-02-c.html css2.1/t0803-c5502-mrgn-r-03-c.html css2.1/t0803-c5503-imrgn-b-00-b-a.html css2.1/t0803-c5503-mrgn-b-00-b-a.html css2.1/t0803-c5504-imrgn-l-00-b-ag.html css2.1/t0803-c5504-imrgn-l-01-b-ag.html css2.1/t0803-c5504-imrgn-l-02-b-ag.html css2.1/t0803-c5504-imrgn-l-03-b-a.html css2.1/t0803-c5504-imrgn-l-04-b-ag.html css2.1/t0803-c5504-imrgn-l-05-b-ag.html css2.1/t0803-c5504-imrgn-l-06-b-ag.html css2.1/t0803-c5504-mrgn-l-00-c-ag.html css2.1/t0803-c5504-mrgn-l-01-c-a.html css2.1/t0803-c5504-mrgn-l-02-c.html css2.1/t0803-c5504-mrgn-l-03-c.html css2.1/t0803-c5505-imrgn-00-a-ag.html css2.1/t0803-c5505-mrgn-00-b-ag.html css2.1/t0803-c5505-mrgn-01-e-a.html css2.1/t0803-c5505-mrgn-02-c.html css2.1/t0803-c5505-mrgn-03-c-ag.html css2.1/t080301-c411-vt-mrgn-00-b.html css2.1/t0804-c5506-ipadn-t-00-b-a.html css2.1/t0804-c5506-ipadn-t-01-b-a.html css2.1/t0804-c5506-ipadn-t-02-b-a.html css2.1/t0804-c5506-padn-t-00-b-a.html css2.1/t0804-c5507-ipadn-r-00-b-ag.html css2.1/t0804-c5507-ipadn-r-01-b-ag.html css2.1/t0804-c5507-ipadn-r-03-b-a.html css2.1/t0804-c5507-ipadn-r-04-b-ag.html css2.1/t0804-c5507-padn-r-00-c-ag.html css2.1/t0804-c5507-padn-r-01-c-a.html css2.1/t0804-c5507-padn-r-02-f.html css2.1/t0804-c5507-padn-r-03-f.html css2.1/t0804-c5508-ipadn-b-00-b-a.html css2.1/t0804-c5508-ipadn-b-01-f-a.html css2.1/t0804-c5508-ipadn-b-02-b-a.html css2.1/t0804-c5508-ipadn-b-03-b-a.html css2.1/t0804-c5509-ipadn-l-00-b-ag.html css2.1/t0804-c5509-ipadn-l-01-b-ag.html css2.1/t0804-c5509-ipadn-l-02-b-ag.html css2.1/t0804-c5509-ipadn-l-03-b-a.html css2.1/t0804-c5509-ipadn-l-04-f-ag.html css2.1/t0804-c5509-padn-l-00-b-ag.html css2.1/t0804-c5509-padn-l-01-b-a.html css2.1/t0804-c5509-padn-l-02-f.html css2.1/t0804-c5509-padn-l-03-f-g.html css2.1/t0804-c5510-ipadn-00-b-ag.html css2.1/t0804-c5510-padn-00-b-ag.html css2.1/t0804-c5510-padn-01-e-a.html css2.1/t0804-c5510-padn-02-f.html css2.1/t0805-c5511-brdr-tw-00-b.html css2.1/t0805-c5511-brdr-tw-01-b-g.html css2.1/t0805-c5511-brdr-tw-02-b.html css2.1/t0805-c5511-brdr-tw-03-b.html css2.1/t0805-c5511-ibrdr-tw-00-a.html css2.1/t0805-c5512-brdr-rw-00-b.html css2.1/t0805-c5512-brdr-rw-01-b-g.html css2.1/t0805-c5512-brdr-rw-02-b.html css2.1/t0805-c5512-brdr-rw-03-b.html css2.1/t0805-c5512-ibrdr-rw-00-a.html css2.1/t0805-c5513-brdr-bw-00-b.html css2.1/t0805-c5513-brdr-bw-01-b-g.html css2.1/t0805-c5513-brdr-bw-02-b.html css2.1/t0805-c5513-brdr-bw-03-b.html css2.1/t0805-c5513-ibrdr-bw-00-a.html css2.1/t0805-c5514-brdr-lw-00-b.html css2.1/t0805-c5514-brdr-lw-01-b-g.html css2.1/t0805-c5514-brdr-lw-02-b.html css2.1/t0805-c5514-brdr-lw-03-b.html css2.1/t0805-c5514-ibrdr-lw-00-a.html css2.1/t0805-c5515-brdr-w-00-a.html css2.1/t0805-c5515-brdr-w-01-b-g.html css2.1/t0805-c5515-brdr-w-02-b.html css2.1/t0805-c5515-ibrdr-00-b.html css2.1/t0805-c5516-brdr-c-00-a.html css2.1/t0805-c5516-ibrdr-c-00-a.html css2.1/t0805-c5517-brdr-s-00-c.html css2.1/t0805-c5517-ibrdr-s-00-a.html css2.1/t0805-c5518-brdr-t-00-a.html css2.1/t0805-c5518-brdr-t-01-e.html css2.1/t0805-c5518-ibrdr-t-00-a.html css2.1/t0805-c5519-brdr-r-00-a.html css2.1/t0805-c5519-brdr-r-01-e.html css2.1/t0805-c5519-brdr-r-02-e.html css2.1/t0805-c5519-ibrdr-r-00-a.html css2.1/t0805-c5520-brdr-b-00-a.html css2.1/t0805-c5520-brdr-b-01-e.html css2.1/t0805-c5520-ibrdr-b-00-a.html css2.1/t0805-c5521-brdr-l-00-a.html css2.1/t0805-c5521-brdr-l-01-e.html css2.1/t0805-c5521-brdr-l-02-e.html css2.1/t0805-c5521-ibrdr-l-00-a.html css2.1/t0805-c5522-brdr-00-b.html css2.1/t0805-c5522-brdr-01-b-g.html css2.1/t0805-c5522-ibrdr-00-a.html css2.1/t090204-display-change-01-b-ao.html css2.1/t090402-c42-ibx-pad-00-d-ag.html css2.1/t0905-c414-flt-00-d.html css2.1/t0905-c414-flt-01-d-g.html css2.1/t0905-c414-flt-02-c.html css2.1/t0905-c414-flt-03-c.html css2.1/t0905-c414-flt-04-c.html css2.1/t0905-c414-flt-fit-00-d.html css2.1/t0905-c414-flt-wrap-00-e.html css2.1/t0905-c414-flt-wrap-01-d-g.html css2.1/t0905-c5525-fltblck-00-d-ag.html css2.1/t0905-c5525-fltblck-01-d.html css2.1/t0905-c5525-fltclr-00-c-ag.html css2.1/t0905-c5525-fltcont-00-d-g.html css2.1/t0905-c5525-fltinln-00-c-ag.html css2.1/t0905-c5525-fltmrgn-00-c-ag.html css2.1/t0905-c5525-fltmult-00-d-g.html css2.1/t0905-c5525-fltwidth-00-c-g.html css2.1/t0905-c5525-fltwidth-01-c-g.html css2.1/t0905-c5525-fltwidth-02-c-g.html css2.1/t0905-c5525-fltwidth-03-c-g.html css2.1/t0905-c5525-fltwrap-00-b.html css2.1/t0905-c5526-fltclr-00-c-ag.html css2.1/t090501-c414-flt-00-d.html css2.1/t090501-c414-flt-01-b.html css2.1/t090501-c414-flt-02-d-g.html css2.1/t090501-c414-flt-03-b-g.html css2.1/t090501-c414-flt-ln-00-d.html css2.1/t090501-c414-flt-ln-01-d-g.html css2.1/t090501-c414-flt-ln-02-d.html css2.1/t090501-c414-flt-ln-03-d.html css2.1/t090501-c5525-flt-l-00-b-g.html css2.1/t090501-c5525-flt-r-00-b-g.html css2.1/t1002-c5523-width-00-b-g.html css2.1/t1002-c5523-width-01-b-g.html css2.1/t1002-c5523-width-02-b-g.html css2.1/t100303-c412-blockw-00-d-ag.html css2.1/t100304-c43-rpl-bbx-00-d-g.html css2.1/t100304-c43-rpl-bbx-01-d-g.html css2.1/t1004-c43-rpl-bbx-00-d-ag.html css2.1/t1004-c5524-width-00-b-g.html css2.1/t1005-c5524-width-00-b-g.html css2.1/t1005-c5524-width-01-b-g.html css2.1/t1008-c44-ln-box-03-d-ag.html css2.1/t100801-c544-valgn-00-a-ag.html css2.1/t100801-c544-valgn-02-d-agi.html css2.1/t100801-c544-valgn-03-d-agi.html css2.1/t100801-c544-valgn-04-d-agi.html css2.1/t100801-c548-leadin-00-d-a.html css2.1/t100801-c548-ln-ht-00-c-a.html css2.1/t100801-c548-ln-ht-01-b-ag.html css2.1/t100801-c548-ln-ht-03-d-ag.html css2.1/t100801-c548-ln-ht-04-d-ag.html css2.1/t1202-counter-00-b.html css2.1/t1202-counter-01-b.html css2.1/t1202-counter-02-b.html css2.1/t1202-counter-03-b.html css2.1/t1202-counter-04-b.html css2.1/t1202-counter-05-b.html css2.1/t1202-counter-06-b.html css2.1/t1202-counter-07-b.html css2.1/t1202-counter-08-b.html css2.1/t1202-counter-11-b.html css2.1/t1202-counter-12-b.html css2.1/t1202-counter-13-b.html css2.1/t1202-counter-14-b.html css2.1/t1202-counter-16-f.html css2.1/t1202-counters-00-b.html css2.1/t1202-counters-01-b.html css2.1/t1202-counters-02-b.html css2.1/t1202-counters-03-b.html css2.1/t1202-counters-05-b.html css2.1/t1202-counters-06-b.html css2.1/t1202-counters-07-b.html css2.1/t1202-counters-08-b.html css2.1/t1202-counters-11-b.html css2.1/t1202-counters-12-b.html css2.1/t1202-counters-13-b.html css2.1/t1202-counters-14-b.html css2.1/t1202-counters-16-c.html css2.1/t1202-counters-17-d.html css2.1/t1202-counters-18-f.html css2.1/t1204-implied-00-b.html css2.1/t1204-implied-01-c.html css2.1/t1204-implied-02-d.html css2.1/t1204-multiple-00-c.html css2.1/t1204-multiple-01-c.html css2.1/t1204-order-00-c.html css2.1/t1204-order-01-d.html css2.1/t1204-root-e.html css2.1/t120401-scope-00-b.html css2.1/t120401-scope-01-c.html css2.1/t120401-scope-02-c.html css2.1/t120401-scope-03-c.html css2.1/t120401-scope-04-d.html css2.1/t120403-content-none-00-c.html css2.1/t120403-display-none-00-c.html css2.1/t120403-visibility-00-c.html css2.1/t1205-c561-list-displ-00-b.html css2.1/t1205-c563-list-type-00-b.html css2.1/t1205-c563-list-type-01-b.html css2.1/t1205-c564-list-img-00-b-g.html css2.1/t1205-c565-list-pos-00-b.html css2.1/t1205-c566-list-stl-00-e-ag.html css2.1/t1401-c531-color-00-a.html css2.1/t1402-c45-bg-canvas-00-b.html css2.1/t140201-c532-bgcolor-00-a.html css2.1/t140201-c532-bgcolor-01-b.html css2.1/t140201-c533-bgimage-00-a.html css2.1/t140201-c533-bgimage-01-b-g.html css2.1/t140201-c534-bgre-00-b-ag.html css2.1/t140201-c534-bgre-01-b-ag.html css2.1/t140201-c535-bg-fixd-00-b-g.html css2.1/t140201-c536-bgpos-00-b-ag.html css2.1/t140201-c536-bgpos-01-b-ag.html css2.1/t1503-c522-font-family-00-b.html css2.1/t1504-c523-font-style-00-b.html css2.1/t1504-c543-txt-decor-00-d-g.html css2.1/t1505-c524-font-var-00-b.html css2.1/t1506-c525-font-wt-00-b.html css2.1/t1507-c526-font-sz-00-b.html css2.1/t1507-c526-font-sz-01-b-a.html css2.1/t1507-c526-font-sz-02-b-a.html css2.1/t1507-c526-font-sz-03-f-a.html css2.1/t1508-c527-font-00-b.html css2.1/t1601-c547-indent-01-d.html css2.1/t1602-c546-txt-align-00-b.html css2.1/t1606-c562-white-sp-00-b-ag.html css2.1/t170602-bdr-conflct-w-00-d.html css2.1/t170602-bdr-conflct-w-01-d.html css2.1/t170602-bdr-conflct-w-02-d.html css2.1/t170602-bdr-conflct-w-03-d.html css2.1/t170602-bdr-conflct-w-04-d.html css2.1/t170602-bdr-conflct-w-05-d.html css2.1/t170602-bdr-conflct-w-06-d.html css2.1/t170602-bdr-conflct-w-07-d.html css2.1/t170602-bdr-conflct-w-08-d.html css2.1/t170602-bdr-conflct-w-09-d.html css2.1/t170602-bdr-conflct-w-10-d.html css2.1/t170602-bdr-conflct-w-11-d.html css2.1/t170602-bdr-conflct-w-12-d.html css2.1/t170602-bdr-conflct-w-13-d.html css2.1/t170602-bdr-conflct-w-14-d.html css2.1/t170602-bdr-conflct-w-15-d.html css2.1/t170602-bdr-conflct-w-16-d.html css2.1/t170602-bdr-conflct-w-17-d.html css2.1/t170602-bdr-conflct-w-18-d.html css2.1/t170602-bdr-conflct-w-19-d.html css2.1/t170602-bdr-conflct-w-20-d.html css2.1/t170602-bdr-conflct-w-21-d.html css2.1/t170602-bdr-conflct-w-22-d.html css2.1/t170602-bdr-conflct-w-23-d.html css2.1/t170602-bdr-conflct-w-24-d.html css2.1/t170602-bdr-conflct-w-25-d.html css2.1/t170602-bdr-conflct-w-26-d.html css2.1/t170602-bdr-conflct-w-27-d.html css2.1/t170602-bdr-conflct-w-28-d.html css2.1/t170602-bdr-conflct-w-29-d.html css2.1/t170602-bdr-conflct-w-30-d.html css2.1/t170602-bdr-conflct-w-31-d.html css2.1/t170602-bdr-conflct-w-32-d.html css2.1/t170602-bdr-conflct-w-33-d.html css2.1/t170602-bdr-conflct-w-34-d.html css2.1/t170602-bdr-conflct-w-35-d.html css2.1/t170602-bdr-conflct-w-36-d.html css2.1/t170602-bdr-conflct-w-37-d.html css2.1/t170602-bdr-conflct-w-38-d.html css2.1/t170602-bdr-conflct-w-39-d.html css2.1/t170602-bdr-conflct-w-40-d.html css2.1/t170602-bdr-conflct-w-41-d.html css2.1/t170602-bdr-conflct-w-42-d.html css2.1/t170602-bdr-conflct-w-43-d.html css2.1/t170602-bdr-conflct-w-44-d.html css2.1/t170602-bdr-conflct-w-45-d.html css2.1/t170602-bdr-conflct-w-46-d.html css2.1/t170602-bdr-conflct-w-47-d.html css2.1/t170602-bdr-conflct-w-48-d.html css2.1/t170602-bdr-conflct-w-49-d.html css2.1/t170602-bdr-conflct-w-50-d.html css2.1/t170602-bdr-conflct-w-51-d.html css2.1/t170602-bdr-conflct-w-52-d.html css2.1/t170602-bdr-conflct-w-53-d.html css2.1/t170602-bdr-conflct-w-54-d.html css2.1/t170602-bdr-conflct-w-55-d.html css2.1/t170602-bdr-conflct-w-56-d.html css2.1/t170602-bdr-conflct-w-57-d.html css2.1/t170602-bdr-conflct-w-58-d.html css2.1/t170602-bdr-conflct-w-59-d.html css2.1/t170602-bdr-conflct-w-60-d.html css2.1/t170602-bdr-conflct-w-61-d.html css2.1/t170602-bdr-conflct-w-62-d.html css2.1/t170602-bdr-conflct-w-63-d.html css2.1/t170602-bdr-conflct-w-64-d.html css2.1/t170602-bdr-conflct-w-65-d.html css2.1/t170602-bdr-conflct-w-66-d.html css2.1/t170602-bdr-conflct-w-67-d.html css2.1/t170602-bdr-conflct-w-68-d.html css2.1/t170602-bdr-conflct-w-69-d.html
Nikolas Zimmermann
Comment 43 2011-01-22 05:38:58 PST
Bug 52960 covers fixing the regression. Closing this bug, continuing the work there.
Martin Robinson
Comment 44 2011-01-22 09:37:59 PST
This patch seems to have introduced some rounding error between 64-bit and 32-bit platforms. You can see that both 64-bit GTK+ bots now fail this set of tests, even after your rebaselines: svg/W3C-SVG-1.1-SE/filters-image-03-f.svg svg/W3C-SVG-1.1-SE/pservers-pattern-03-f.svg svg/text/text-hkern-on-vertical-text.svg svg/text/text-hkern.svg expecte svg/text/text-vkern-on-horizontal-text.svg svg/text/text-vkern.svg
Csaba Osztrogonác
Comment 45 2011-01-23 23:43:07 PST
(In reply to comment #44) > This patch seems to have introduced some rounding error between 64-bit and 32-bit platforms. You can see that both 64-bit GTK+ bots now fail this set of tests, even after your rebaselines: > > svg/W3C-SVG-1.1-SE/filters-image-03-f.svg > svg/W3C-SVG-1.1-SE/pservers-pattern-03-f.svg > svg/text/text-hkern-on-vertical-text.svg > svg/text/text-hkern.svg expecte > svg/text/text-vkern-on-horizontal-text.svg > svg/text/text-vkern.svg Similar problem on Qt: https://bugs.webkit.org/show_bug.cgi?id=52812
Nikolas Zimmermann
Comment 46 2011-01-24 01:30:50 PST
(In reply to comment #45) > (In reply to comment #44) > > This patch seems to have introduced some rounding error between 64-bit and 32-bit platforms. You can see that both 64-bit GTK+ bots now fail this set of tests, even after your rebaselines: > > > > svg/W3C-SVG-1.1-SE/filters-image-03-f.svg > > svg/W3C-SVG-1.1-SE/pservers-pattern-03-f.svg > > svg/text/text-hkern-on-vertical-text.svg > > svg/text/text-hkern.svg expecte > > svg/text/text-vkern-on-horizontal-text.svg > > svg/text/text-vkern.svg > > Similar problem on Qt: https://bugs.webkit.org/show_bug.cgi?id=52812 Ok, I'm not sure whether I can manage to investigate today. Does anyone have an idea? Maybe the lroundf usage causes differences across 32/64 bit boundaries? If we can't find a solution in the next few hours, it should probably be rolled out. Sorry for the trouble, but that was really unexpected to me...
Jessie Berlin
Comment 47 2011-01-24 09:23:06 PST
(In reply to comment #46) > (In reply to comment #45) > > (In reply to comment #44) > > > This patch seems to have introduced some rounding error between 64-bit and 32-bit platforms. You can see that both 64-bit GTK+ bots now fail this set of tests, even after your rebaselines: > > > > > > svg/W3C-SVG-1.1-SE/filters-image-03-f.svg > > > svg/W3C-SVG-1.1-SE/pservers-pattern-03-f.svg > > > svg/text/text-hkern-on-vertical-text.svg > > > svg/text/text-hkern.svg expecte > > > svg/text/text-vkern-on-horizontal-text.svg > > > svg/text/text-vkern.svg > > > > Similar problem on Qt: https://bugs.webkit.org/show_bug.cgi?id=52812 > > Ok, I'm not sure whether I can manage to investigate today. > Does anyone have an idea? Maybe the lroundf usage causes differences across 32/64 bit boundaries? > > If we can't find a solution in the next few hours, it should probably be rolled out. > Sorry for the trouble, but that was really unexpected to me... This patch is causing ~25 tests to fail on the Windows 7 Release Tests bots: http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/8525 http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/8526 http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r76442%20(8526)/results.html
Nikolas Zimmermann
Comment 48 2011-01-25 00:51:45 PST
I'm aware of the breakage, and working on a fix...
Nikolas Zimmermann
Comment 49 2011-01-25 03:22:12 PST
Created attachment 80041 [details] Fixup patch (after patch v11 landed) Potential fix, let's see whether it builds.
Dirk Schulze
Comment 50 2011-01-25 03:32:58 PST
Comment on attachment 80041 [details] Fixup patch (after patch v11 landed) r=me. It may had been better to fix this all at once :-/
Nikolas Zimmermann
Comment 51 2011-01-25 03:35:53 PST
Created attachment 80043 [details] Fixup patch v2 (new approach, only SVGFonts changes) Another attempt, which does not involve changing the lroundf() rounding for lineSpacing, I'm worried about the number of rebaselines, that would need discussion first, as it changes the visual appearance of lots of tests. I'll try again with just fixing SVGFonts alone, let ossy try on Qt/64 and see if it helps :-)
Nikolas Zimmermann
Comment 52 2011-01-25 03:48:56 PST
Created attachment 80044 [details] Fixup patch v3 Fix ChangeLog, included mac layout test changes, for a full review.
Dirk Schulze
Comment 53 2011-01-25 04:17:39 PST
Comment on attachment 80044 [details] Fixup patch v3 LGTM. r=me.
WebKit Review Bot
Comment 54 2011-01-25 05:48:24 PST
http://trac.webkit.org/changeset/76586 might have broken Qt Linux Release The following tests are not passing: svg/W3C-SVG-1.1-SE/filters-image-03-f.svg svg/W3C-SVG-1.1-SE/pservers-grad-17-b.svg svg/W3C-SVG-1.1-SE/pservers-grad-20-b.svg svg/W3C-SVG-1.1-SE/pservers-pattern-03-f.svg svg/W3C-SVG-1.1/fonts-glyph-02-t.svg svg/custom/svg-fonts-with-no-element-reference.html svg/custom/svg-fonts-without-missing-glyph.xhtml svg/text/text-hkern-on-vertical-text.svg svg/text/text-hkern.svg svg/text/text-vkern-on-horizontal-text.svg svg/text/text-vkern.svg svg/transforms/text-with-mask-with-svg-transform.svg
Csaba Osztrogonác
Comment 55 2011-01-25 06:19:34 PST
(In reply to comment #54) > http://trac.webkit.org/changeset/76586 might have broken Qt Linux Release > The following tests are not passing: > svg/W3C-SVG-1.1-SE/filters-image-03-f.svg > svg/W3C-SVG-1.1-SE/pservers-grad-17-b.svg > svg/W3C-SVG-1.1-SE/pservers-grad-20-b.svg > svg/W3C-SVG-1.1-SE/pservers-pattern-03-f.svg > svg/W3C-SVG-1.1/fonts-glyph-02-t.svg > svg/custom/svg-fonts-with-no-element-reference.html > svg/custom/svg-fonts-without-missing-glyph.xhtml > svg/text/text-hkern-on-vertical-text.svg > svg/text/text-hkern.svg > svg/text/text-vkern-on-horizontal-text.svg > svg/text/text-vkern.svg > svg/transforms/text-with-mask-with-svg-transform.svg Fixed by http://trac.webkit.org/changeset/76588. Thx.
Nikolas Zimmermann
Comment 56 2011-01-25 06:22:02 PST
Everything is fine again after r76588, no diffs between 32/64 bit bots anymore, closing bug.
Note You need to log in before you can comment on or make changes to this bug.