Bug 15312 - WebKit applies an incorrect min width for <input type="text"> fields
Summary: WebKit applies an incorrect min width for <input type="text"> fields
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: 523.x (Safari 3)
Hardware: PC Windows 2000
: P2 Normal
Assignee: Ojan Vafai
URL: http://www.megaupload.com/?c=abuse
Keywords: HasReduction
: 7505 16789 (view as bug list)
Depends on:
Blocks:
 
Reported: 2007-09-28 17:04 PDT by Anantha Keesara
Modified: 2009-04-29 16:27 PDT (History)
14 users (show)

See Also:


Attachments
WebKit applies an incorrect min width for <input type="text"> fields (80 bytes, text/html)
2007-09-28 17:10 PDT, Anantha Keesara
no flags Details
Better test case (compare to FF or IE) (791 bytes, text/html)
2008-05-08 13:51 PDT, Eric Seidel (no email)
no flags Details
even better test case (847 bytes, text/html)
2008-05-16 14:32 PDT, Eric Seidel (no email)
no flags Details
an even betterer testcase (822 bytes, text/html)
2008-06-26 18:42 PDT, Ojan Vafai
no flags Details
patch to match IE's width (7.71 KB, patch)
2008-06-26 18:54 PDT, Ojan Vafai
mrowe: review-
Details | Formatted Diff | Diff
Make textarea metrics more closely match IEs. (42.05 KB, patch)
2009-03-24 18:42 PDT, Ojan Vafai
no flags Details | Formatted Diff | Diff
Make textarea metrics more closely match IEs. (957.60 KB, patch)
2009-03-31 16:14 PDT, Ojan Vafai
no flags Details | Formatted Diff | Diff
Make textarea metrics more closely match IEs. (958.18 KB, patch)
2009-03-31 17:44 PDT, Ojan Vafai
no flags Details | Formatted Diff | Diff
Make textarea metrics more closely match IEs. (958.18 KB, patch)
2009-04-03 12:06 PDT, Ojan Vafai
no flags Details | Formatted Diff | Diff
Make textarea metrics more closely match IEs. (973.75 KB, patch)
2009-04-08 18:38 PDT, Ojan Vafai
mitz: review-
Details | Formatted Diff | Diff
Make textarea metrics more closely match IEs. (1022.38 KB, patch)
2009-04-10 16:08 PDT, Ojan Vafai
no flags Details | Formatted Diff | Diff
Make textarea metrics more closely match IEs. (1022.17 KB, patch)
2009-04-10 16:57 PDT, Ojan Vafai
no flags Details | Formatted Diff | Diff
Make textarea metrics more closely match IEs. (1022.02 KB, patch)
2009-04-20 11:41 PDT, Ojan Vafai
mitz: review+
Details | Formatted Diff | Diff
rolled out code (1.35 MB, patch)
2009-04-20 22:26 PDT, Geoffrey Garen
no flags Details | Formatted Diff | Diff
WebCore side of patch. (19.20 KB, patch)
2009-04-24 14:24 PDT, Ojan Vafai
no flags Details | Formatted Diff | Diff
WebCore side of patch. (19.18 KB, patch)
2009-04-24 14:26 PDT, Ojan Vafai
mitz: review+
Details | Formatted Diff | Diff
Mac LayoutTests side of patch. Run on Tiger and Leopard. (1015.33 KB, patch)
2009-04-28 19:01 PDT, Ojan Vafai
no flags Details | Formatted Diff | Diff
LayoutTests side of patch. Run on Windows, Tiger and Leopard. (1.71 MB, patch)
2009-04-28 21:21 PDT, Ojan Vafai
mitz: review+
Details | Formatted Diff | Diff
WebCore side of patch with final review comments implemented. (19.31 KB, patch)
2009-04-29 11:02 PDT, Ojan Vafai
no flags Details | Formatted Diff | Diff
LayoutTests side of patch. Run on Windows, Tiger and Leopard. (1.66 MB, patch)
2009-04-29 11:45 PDT, Ojan Vafai
mitz: review+
Details | Formatted Diff | Diff
WebCore side of patch with final review comments implemented. (19.32 KB, patch)
2009-04-29 11:45 PDT, Ojan Vafai
mitz: review+
Details | Formatted Diff | Diff
git format-patch version of WebCore side for easy landing... (20.70 KB, patch)
2009-04-29 11:49 PDT, Ojan Vafai
no flags Details | Formatted Diff | Diff
New expected results.wq (10.56 KB, patch)
2009-04-29 15:58 PDT, Ojan Vafai
eric: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Anantha Keesara 2007-09-28 17:04:39 PDT
Steps:
1. Go to: http://www.megaupload.com/?c=abuse

Issue:
The text field under 'Description of abuse:' text area renders small. Thus shows the number as 10 instead of 1000.

Other Browsers:
IE, FF, Opera don't have this issue.

Attached is the reduction.
Comment 1 Anantha Keesara 2007-09-28 17:10:36 PDT
Created attachment 16437 [details]
WebKit applies an incorrect min width for <input type="text"> fields
Comment 2 Sascha 2008-02-05 10:09:03 PST
Hi, WebKit renders it correct regarding to the HTML 4.01 Specs.
But i think IE and Firefox use a min width of 3 characters for input fields of type "text" or "password".
Comment 3 Eric Seidel (no email) 2008-04-15 09:32:45 PDT
Yup.  Test case looks wrong to me in Safari.  Should be an easy fix.  Might just be a change to html4.css
Comment 5 Eric Seidel (no email) 2008-05-08 13:51:49 PDT
Created attachment 21028 [details]
Better test case (compare to FF or IE)
Comment 6 Eric Seidel (no email) 2008-05-08 13:52:24 PDT
It looks like our form controls are simply the "wrong" size, compared with FF.
Comment 7 Eric Seidel (no email) 2008-05-08 13:52:44 PDT
By form controls I meant text fields. :)
Comment 8 Eric Seidel (no email) 2008-05-08 13:55:06 PDT
I expect this causes a whole raft of site compat issues.
Comment 9 Dave Hyatt 2008-05-08 14:48:50 PDT
This is about how you measure characters when computing the size attribute.  I believe FFX deliberately uses a very wide character, whereas we use a character of average width.   Our rendering certainly seems more sensible to me.

Comment 10 Eric Seidel (no email) 2008-05-08 15:33:41 PDT
Firefox matches IE.  We don't.

The other important part of this bug is that IE and FF appear to apply a minimum size of 3 characters to any text/password field (See my test case).
Comment 11 Dave Hyatt 2008-05-08 17:37:09 PDT
I think they're just measuring using a wider character (with some slop possibly thrown in).

Comment 12 Eric Seidel (no email) 2008-05-08 23:14:54 PDT
There is just some large slop.  Since the difference from nothing to 1, is very different from the difference between 2 and 3 (or 3 and 4, etc)
Comment 13 Eric Seidel (no email) 2008-05-16 14:32:50 PDT
Created attachment 21206 [details]
even better test case
Comment 14 Eric Seidel (no email) 2008-05-16 14:36:05 PDT
My latest test case seems to show that FF/IE are in fact using a slightly *smaller* char to measure width of the text field and they are padding any widths by 2 characters.
Comment 15 Ojan Vafai 2008-06-26 18:42:13 PDT
Created attachment 21964 [details]
an even betterer testcase

Works in IE and normalizes fontFamily/fontSize. WebKit has different defaults than IE/FF and IE/FF do different things for different fontFamilies.
Comment 16 Ojan Vafai 2008-06-26 18:54:26 PDT
Created attachment 21965 [details]
patch to match IE's width

IE does the following for width of text controls (FF mostly matches this, but not exactly):
Text inputs: avgCharWidth * size + (maxCharWidth - avgCharWidth)
Textareas: avgCharWidth * cols

As the changelog in the patch says, this makes WebKit exactly match IE for GDI fonts (I don't have access to CG hooks for avgCharWidth/maxCharWidth). There's still 2 extra pixels in WebKit that I explain in more detail in the changelog.
Comment 17 Eric Seidel (no email) 2008-06-26 22:26:21 PDT
Two things need to be done here:

1.  Decide if this is the right behavior for WebKit.  Ideally Hyatt or Hixie or Adele or Darin or such would chime in here.  There are obvious compatibility issues with our existing behavior.  Would this new behavior introduce worse ones?

2.  Once that's decided, implementing CG and SVG versions of this code path would require some time form Hyatt or Mitz or Adele or such.
Comment 18 Ian 'Hixie' Hickson 2008-06-27 12:41:25 PDT
I don't really mind what happens here, but if you come up with something that is optimal for the Web, then I'd be happy to spec that.
Comment 19 Ojan Vafai 2008-06-27 12:51:32 PDT
I think this is about as optimal as we can get with respect to compatibility with the web that's out there. This patch only affects sites that don't explicitly set the width/height of a textarea/text-input or set it via the cols/size attribute. 

I posit that sites that rely on these values are mostly older sites that are coded to and tested only in IE. That said, I don't have statistically significant data to back that up, just the handful of sites in this bug which have layout problems because of this. :)
Comment 20 Ojan Vafai 2008-07-15 15:47:21 PDT
Hyatt, Adele, Darin, care to comment on this? Sorry for not following up with this earlier (was on vacation).
Comment 21 Dave Hyatt 2008-07-15 15:50:52 PDT
My concern is really with the case where no font is explicitly specified.  IE uses a fixed pitch default font.  Safari uses Lucida Grande.  We need to ensure that this algorithm works well for Lucida Grande.

Comment 22 Dave Hyatt 2008-07-15 15:56:33 PDT
Comment on attachment 21965 [details]
patch to match IE's width

Oh, I see you did this for Windows only.  

I really dislike that you added 2 members to SimpleFontData on every platform, but then only use them on Windows.  I also don't like treating "0" for avgCharWidth as "unset."

Character widths should also be float-based (the fact that Windows rounds is a platform-specific characteristic not shared by other platforms necessarily).

Why not get the width of 0 for the other platforms?  Then you don't have to special case the RenderTextControl code.
Comment 23 Mark Rowe (bdash) 2008-07-26 21:49:55 PDT
Comment on attachment 21965 [details]
patch to match IE's width

Marking r-'s due to Hyatt's concerns in Comment #22.
Comment 24 Ojan Vafai 2008-07-27 10:02:51 PDT
Sorry I didn't respond sooner. I didn't get emails when Hyatt responded on the 15th.

> My concern is really with the case where no font is explicitly specified.  IE
> uses a fixed pitch default font.  Safari uses Lucida Grande.  We need to ensure
> that this algorithm works well for Lucida Grande.

I'll ensure Lucida Grande does something reasonable once the platform issues below are address. As it is now, Lucida Grande renders exactly as it did before because it goes down the CG path (even with GDI fonts enabled).

> Oh, I see you did this for Windows only.

Only because I don't know how to do this on Mac/Linux. I was hoping someone on this thread that is more familiar with Mac/Linux APIs could help me out here.

> I really dislike that you added 2 members to SimpleFontData on every platform,
> but then only use them on Windows.  I also don't like treating "0" for
> avgCharWidth as "unset."

My hope was to add a proper value for this to every platform. I just am not familier with the Mac/Linux ways to get this data (if there are any). I sent this patch as is so that it would at least be submittable without breaking other platforms.

> Character widths should also be float-based (the fact that Windows rounds is a
> platform-specific characteristic not shared by other platforms necessarily).

Will fix that.

> Why not get the width of 0 for the other platforms?  Then you don't have to
> special case the RenderTextControl code.

That's fine with me. Again, I was hoping someone on this thread would know how to get the actual avgCharWidth/maxCharWidth of the font on Mac/Linux. 

Should maxCharWidth also be the width of a 0? That seems a bit weird, but I don't know what would be better.
Comment 25 Eric Seidel (no email) 2008-07-28 00:36:40 PDT
Hyatt, can you provide Ojan information as to how he'd get the average char width from CG?  Windows seems to have explicit APIs for this.  I don't think CG exposes this information as API.
Comment 26 mitz 2008-08-01 15:33:14 PDT
(In reply to comment #25)
> Hyatt, can you provide Ojan information as to how he'd get the average char
> width from CG?  Windows seems to have explicit APIs for this.  I don't think CG
> exposes this information as API.

I don't know a high-level Mac OS X API for "average character width". I am not sure what the value that the Windows API returns is based on. If it is the xAvgCharWidth field from the font's OS/2 table, then there is Mac OS X API for accessing font tables which can be used (ATSFontGetTable).
Comment 27 Pam Greene (IRC:pamg) 2008-10-06 17:47:08 PDT
A layout test for this was posted in bug 21407, then dropped from there in favor of this one. Even if it's decided not to fix/change anything here, a test should still be added to verify intended behavior.
Comment 28 Pam Greene (IRC:pamg) 2008-10-17 16:16:49 PDT
Actually, on the "catch unintentional changes" theory, two tests that will be affected by this were landed from bug 21407 after all, in r37665:

fast/forms/input-type-text-min-width.html
fast/forms/textarea-width.html
Comment 29 Mike Pinkerton 2008-11-20 07:22:51 PST
After about an evening + morning worth of research, we couldn't really find any concept of this on Mac in either ATSUI or CoreText. It seems to be very Microsoftian at its core.

The best we could do would be to read the "OS/2 table" present in TrueType fonts (hoping the font in question is one) and dig the xAvgCharWidth field out of it. We could fallback to '0' if there's no table present.

Can someone at infinite loop talk to the CoreText team and see if there's a better way to go about this? It sounds like such a hack. Does anyone think it's worth pursuing, or would it be rejected outright? 
Comment 30 mitz 2008-11-20 07:52:37 PST
(In reply to comment #29)
> Can someone at infinite loop talk to the CoreText team and see if there's a
> better way to go about this?

I asked right after making comment #26 and was told that "the only path open is to parse the OS2 table yourself". Sorry about not adding this to the bug at the time.
Comment 31 Ojan Vafai 2009-03-24 18:41:04 PDT
*** Bug 16789 has been marked as a duplicate of this bug. ***
Comment 32 Ojan Vafai 2009-03-24 18:42:31 PDT
Created attachment 28920 [details]
Make textarea metrics more closely match IEs.

 LayoutTests/ChangeLog                              |   23 +++
 LayoutTests/fast/forms/resources/TEMPLATE.html     |   13 ++
 .../fast/forms/resources/textarea-metrics.js       |  171 +++++++++++++++++++
 .../fast/forms/textarea-metrics-expected.txt       |  173 ++++++++++++++++++++
 LayoutTests/fast/forms/textarea-metrics.html       |   13 ++
 .../custom/resources/svg-fonts-in-text-controls.js |   20 +++
 .../custom/svg-fonts-in-text-controls-expected.txt |    6 +
 .../svg/custom/svg-fonts-in-text-controls.html     |   13 ++
 WebCore/ChangeLog                                  |   60 +++++++
 WebCore/css/html4.css                              |    2 +
 WebCore/css/themeWin.css                           |    4 -
 WebCore/platform/graphics/SimpleFontData.cpp       |   70 ++++++++-
 WebCore/platform/graphics/SimpleFontData.h         |    7 +
 .../chromium/SimpleFontDataChromiumWin.cpp         |    5 +
 .../graphics/chromium/SimpleFontDataLinux.cpp      |    5 +
 WebCore/platform/graphics/mac/SimpleFontDataMac.mm |   21 +++
 .../platform/graphics/win/SimpleFontDataCGWin.cpp  |    7 +
 .../graphics/win/SimpleFontDataCairoWin.cpp        |    7 +
 .../platform/graphics/win/SimpleFontDataWin.cpp    |    2 +
 WebCore/rendering/RenderTextControl.cpp            |    6 +-
 WebCore/rendering/RenderTextControlMultiLine.cpp   |    4 -
 WebCore/rendering/RenderTextControlSingleLine.cpp  |    4 +
 22 files changed, 619 insertions(+), 17 deletions(-)
Comment 33 Ojan Vafai 2009-03-24 18:43:52 PDT
I'm still slogging through layout test failures. I've looked at all the pixel failures so far and all the new results look correct to me. I was hoping to get an initial review of the code before doing all the rebaselining work though in case the review affects any of the metrics.
Comment 34 Dimitri Glazkov (Google) 2009-03-24 19:31:27 PDT
/me wrings hands in anticipation. This one is a big unfork for the Chromium port.
Comment 35 Mike Pinkerton 2009-03-25 05:55:32 PDT
This fixes about 100 chromium mac layout tests. We're very eager to see it land :-)
Comment 36 Ojan Vafai 2009-03-31 16:14:12 PDT
Created attachment 29140 [details]
Make textarea metrics more closely match IEs.

 LayoutTests/ChangeLog                              |   23 +
 LayoutTests/fast/dom/tabindex-clamp-expected.txt   |    2 +-
 .../fast/forms/mailto/advanced-get-expected.txt    |    2 +-
 .../fast/forms/mailto/advanced-put-expected.txt    |    2 +-
 LayoutTests/fast/forms/resources/TEMPLATE.html     |   13 +
 .../fast/forms/resources/textarea-metrics.js       |  171 ++
 .../fast/forms/textarea-metrics-expected.txt       |  173 ++
 LayoutTests/fast/forms/textarea-metrics.html       |   13 +
 LayoutTests/fast/forms/textarea-width.html         |    5 +-
 .../replaced/table-percent-height-expected.txt     |   18 +-
 .../fast/replaced/table-percent-height.html        |   18 +-
 .../mac/editing/deleting/5168598-expected.checksum |    2 +-
 .../mac/editing/deleting/5168598-expected.png      |  Bin 27473 -> 27436 bytes
 .../mac/editing/deleting/5168598-expected.txt      |    6 +-
 .../editing/inserting/4960120-1-expected.checksum  |    2 +-
 .../mac/editing/inserting/4960120-1-expected.png   |  Bin 15987 -> 16812 bytes
 .../mac/editing/inserting/4960120-1-expected.txt   |   16 +-
 .../editing/inserting/5607069-2-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-2-expected.png   |  Bin 22947 -> 22933 bytes
 .../mac/editing/inserting/5607069-2-expected.txt   |   14 +-
 .../editing/inserting/5607069-3-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-3-expected.png   |  Bin 24465 -> 24461 bytes
 .../mac/editing/inserting/5607069-3-expected.txt   |   18 +-
 .../before-after-input-element-expected.checksum   |    2 +-
 .../before-after-input-element-expected.png        |  Bin 17707 -> 17696 bytes
 .../before-after-input-element-expected.txt        |   10 +-
 .../typing-tab-designmode-forms-expected.checksum  |    2 +-
 .../typing-tab-designmode-forms-expected.png       |  Bin 16680 -> 16842 bytes
 .../typing-tab-designmode-forms-expected.txt       |   24 +-
 .../editing/pasteboard/4806874-expected.checksum   |    2 +-
 .../mac/editing/pasteboard/4806874-expected.png    |  Bin 17925 -> 17931 bytes
 .../mac/editing/pasteboard/4806874-expected.txt    |   10 +-
 .../drop-text-without-selection-expected.checksum  |    2 +-
 .../drop-text-without-selection-expected.png       |  Bin 32837 -> 32891 bytes
 .../drop-text-without-selection-expected.txt       |   14 +-
 .../pasteboard/input-field-1-expected.checksum     |    2 +-
 .../editing/pasteboard/input-field-1-expected.png  |  Bin 16352 -> 16342 bytes
 .../editing/pasteboard/input-field-1-expected.txt  |   12 +-
 .../nested-blocks-with-text-area-expected.checksum |    2 +-
 .../nested-blocks-with-text-area-expected.png      |  Bin 24246 -> 24429 bytes
 .../nested-blocks-with-text-area-expected.txt      |   24 +-
 ...nested-blocks-with-text-field-expected.checksum |    2 +-
 .../nested-blocks-with-text-field-expected.png     |  Bin 24411 -> 24408 bytes
 .../nested-blocks-with-text-field-expected.txt     |   14 +-
 .../pasteboard/pasting-tabs-expected.checksum      |    2 +-
 .../editing/pasteboard/pasting-tabs-expected.png   |  Bin 22164 -> 22163 bytes
 .../editing/pasteboard/pasting-tabs-expected.txt   |   14 +-
 .../editing/selection/3690703-2-expected.checksum  |    2 +-
 .../mac/editing/selection/3690703-2-expected.png   |  Bin 33204 -> 33191 bytes
 .../mac/editing/selection/3690703-2-expected.txt   |   24 +-
 .../editing/selection/3690703-expected.checksum    |    2 +-
 .../mac/editing/selection/3690703-expected.png     |  Bin 33409 -> 33446 bytes
 .../mac/editing/selection/3690703-expected.txt     |   24 +-
 .../editing/selection/3690719-expected.checksum    |    2 +-
 .../mac/editing/selection/3690719-expected.png     |  Bin 33409 -> 33446 bytes
 .../mac/editing/selection/3690719-expected.txt     |   24 +-
 .../editing/selection/4895428-3-expected.checksum  |    2 +-
 .../mac/editing/selection/4895428-3-expected.png   |  Bin 29560 -> 29543 bytes
 .../mac/editing/selection/4895428-3-expected.txt   |    6 +-
 .../editing/selection/4975120-expected.checksum    |    2 +-
 .../mac/editing/selection/4975120-expected.png     |  Bin 24197 -> 24193 bytes
 .../mac/editing/selection/4975120-expected.txt     |    8 +-
 .../editing/selection/5136696-expected.checksum    |    2 +-
 .../mac/editing/selection/5136696-expected.png     |  Bin 26565 -> 26598 bytes
 .../mac/editing/selection/5136696-expected.txt     |    6 +-
 .../editing/selection/5213963-expected.checksum    |    2 +-
 .../mac/editing/selection/5213963-expected.png     |  Bin 23592 -> 23590 bytes
 .../mac/editing/selection/5213963-expected.txt     |    8 +-
 .../selection/drag-select-1-expected.checksum      |    2 +-
 .../editing/selection/drag-select-1-expected.png   |  Bin 16773 -> 16771 bytes
 .../editing/selection/drag-select-1-expected.txt   |    6 +-
 .../selection/drag-text-delay-expected.checksum    |    2 +-
 .../editing/selection/drag-text-delay-expected.png |  Bin 12773 -> 12829 bytes
 .../editing/selection/drag-text-delay-expected.txt |    6 +-
 ...elect-from-textfield-outwards-expected.checksum |    2 +-
 .../select-from-textfield-outwards-expected.png    |  Bin 59715 -> 59657 bytes
 .../select-from-textfield-outwards-expected.txt    |    6 +-
 .../fast/block/margin-collapse/103-expected.txt    |   64 +-
 .../mac/fast/css/line-height-expected.checksum     |    2 +-
 .../platform/mac/fast/css/line-height-expected.png |  Bin 27854 -> 27856 bytes
 .../platform/mac/fast/css/line-height-expected.txt |    6 +-
 .../css/resize-corner-tracking-expected.checksum   |    2 +-
 .../fast/css/resize-corner-tracking-expected.png   |  Bin 21083 -> 21151 bytes
 .../fast/css/resize-corner-tracking-expected.txt   |   18 +-
 .../reset-textarea-expected.checksum               |    2 +-
 .../reset-textarea-expected.png                    |  Bin 29075 -> 29090 bytes
 .../reset-textarea-expected.txt                    |   30 +-
 .../mac/fast/dom/isindex-002-expected.checksum     |    2 +-
 .../platform/mac/fast/dom/isindex-002-expected.png |  Bin 19769 -> 19780 bytes
 .../platform/mac/fast/dom/isindex-002-expected.txt |   12 +-
 .../mac/fast/dynamic/008-expected.checksum         |    2 +-
 .../platform/mac/fast/dynamic/008-expected.png     |  Bin 30135 -> 30083 bytes
 .../platform/mac/fast/dynamic/008-expected.txt     |   18 +-
 .../mac/fast/events/autoscroll-expected.checksum   |    2 +-
 .../mac/fast/events/autoscroll-expected.png        |  Bin 23996 -> 23991 bytes
 .../mac/fast/events/autoscroll-expected.txt        |    6 +-
 .../mac/fast/events/label-focus-expected.checksum  |    2 +-
 .../mac/fast/events/label-focus-expected.png       |  Bin 14891 -> 14888 bytes
 .../mac/fast/events/label-focus-expected.txt       |    8 +-
 .../fast/forms/basic-textareas-expected.checksum   |    2 +-
 .../mac/fast/forms/basic-textareas-expected.png    |  Bin 116809 -> 118460 bytes
 .../mac/fast/forms/basic-textareas-expected.txt    | 1757 ++++++++++----------
 .../forms/box-shadow-override-expected.checksum    |    2 +-
 .../fast/forms/box-shadow-override-expected.png    |  Bin 32657 -> 32680 bytes
 .../fast/forms/box-shadow-override-expected.txt    |   30 +-
 .../control-restrict-line-height-expected.checksum |    2 +-
 .../control-restrict-line-height-expected.png      |  Bin 27564 -> 27432 bytes
 .../control-restrict-line-height-expected.txt      |   10 +-
 .../mac/fast/forms/encoding-test-expected.checksum |    2 +-
 .../mac/fast/forms/encoding-test-expected.png      |  Bin 13755 -> 13763 bytes
 .../mac/fast/forms/encoding-test-expected.txt      |    6 +-
 .../fast/forms/fieldset-align-expected.checksum    |    2 +-
 .../mac/fast/forms/fieldset-align-expected.png     |  Bin 44796 -> 44797 bytes
 .../mac/fast/forms/fieldset-align-expected.txt     |   96 +-
 .../forms/form-element-geometry-expected.checksum  |    2 +-
 .../fast/forms/form-element-geometry-expected.png  |  Bin 89841 -> 89636 bytes
 .../fast/forms/form-element-geometry-expected.txt  |   82 +-
 .../mac/fast/forms/input-align-expected.checksum   |    2 +-
 .../mac/fast/forms/input-align-expected.png        |  Bin 24821 -> 24918 bytes
 .../mac/fast/forms/input-align-expected.txt        |   62 +-
 .../input-appearance-bkcolor-expected.checksum     |    2 +-
 .../forms/input-appearance-bkcolor-expected.png    |  Bin 19152 -> 18261 bytes
 .../forms/input-appearance-bkcolor-expected.txt    |   18 +-
 ...ut-appearance-default-bkcolor-expected.checksum |    2 +-
 .../input-appearance-default-bkcolor-expected.png  |  Bin 17571 -> 17577 bytes
 .../input-appearance-default-bkcolor-expected.txt  |    6 +-
 .../input-appearance-disabled-expected.checksum    |    2 +-
 .../forms/input-appearance-disabled-expected.png   |  Bin 16835 -> 16853 bytes
 .../forms/input-appearance-disabled-expected.txt   |    6 +-
 .../forms/input-appearance-focus-expected.checksum |    2 +-
 .../fast/forms/input-appearance-focus-expected.png |  Bin 31673 -> 31669 bytes
 .../fast/forms/input-appearance-focus-expected.txt |   16 +-
 .../input-appearance-height-expected.checksum      |    2 +-
 .../forms/input-appearance-height-expected.png     |  Bin 36689 -> 36742 bytes
 .../forms/input-appearance-height-expected.txt     |   58 +-
 ...put-appearance-preventDefault-expected.checksum |    2 +-
 .../input-appearance-preventDefault-expected.png   |  Bin 23799 -> 23785 bytes
 .../input-appearance-preventDefault-expected.txt   |    8 +-
 .../input-appearance-readonly-expected.checksum    |    2 +-
 .../forms/input-appearance-readonly-expected.png   |  Bin 17183 -> 17191 bytes
 .../forms/input-appearance-readonly-expected.txt   |    6 +-
 .../input-appearance-selection-expected.checksum   |    2 +-
 .../forms/input-appearance-selection-expected.png  |  Bin 54570 -> 54562 bytes
 .../forms/input-appearance-selection-expected.txt  |    6 +-
 .../input-appearance-visibility-expected.checksum  |    2 +-
 .../forms/input-appearance-visibility-expected.png |  Bin 17288 -> 17330 bytes
 .../forms/input-appearance-visibility-expected.txt |    6 +-
 .../forms/input-appearance-width-expected.checksum |    2 +-
 .../fast/forms/input-appearance-width-expected.png |  Bin 21419 -> 21502 bytes
 .../fast/forms/input-appearance-width-expected.txt |   24 +-
 .../fast/forms/input-baseline-expected.checksum    |    2 +-
 .../mac/fast/forms/input-baseline-expected.png     |  Bin 23472 -> 23479 bytes
 .../mac/fast/forms/input-baseline-expected.txt     |   22 +-
 .../forms/input-disabled-color-expected.checksum   |    2 +-
 .../fast/forms/input-disabled-color-expected.png   |  Bin 49110 -> 47649 bytes
 .../fast/forms/input-disabled-color-expected.txt   |  198 ++--
 ...ouble-click-selection-gap-bug-expected.checksum |    2 +-
 ...put-double-click-selection-gap-bug-expected.png |  Bin 18205 -> 18447 bytes
 ...put-double-click-selection-gap-bug-expected.txt |   28 +-
 .../fast/forms/input-paste-undo-expected.checksum  |    2 +-
 .../mac/fast/forms/input-paste-undo-expected.png   |  Bin 23103 -> 23091 bytes
 .../mac/fast/forms/input-paste-undo-expected.txt   |    6 +-
 .../input-readonly-autoscroll-expected.checksum    |    2 +-
 .../forms/input-readonly-autoscroll-expected.png   |  Bin 22927 -> 22900 bytes
 .../forms/input-readonly-autoscroll-expected.txt   |    8 +-
 .../forms/input-readonly-dimmed-expected.checksum  |    2 +-
 .../fast/forms/input-readonly-dimmed-expected.png  |  Bin 18116 -> 18028 bytes
 .../fast/forms/input-readonly-dimmed-expected.txt  |    6 +-
 .../forms/input-readonly-empty-expected.checksum   |    2 +-
 .../fast/forms/input-readonly-empty-expected.png   |  Bin 15766 -> 16578 bytes
 .../fast/forms/input-readonly-empty-expected.txt   |    6 +-
 .../mac/fast/forms/input-spaces-expected.checksum  |    2 +-
 .../mac/fast/forms/input-spaces-expected.png       |  Bin 20178 -> 19265 bytes
 .../mac/fast/forms/input-spaces-expected.txt       |    6 +-
 .../mac/fast/forms/input-table-expected.txt        |   18 +-
 .../input-text-click-inside-expected.checksum      |    2 +-
 .../forms/input-text-click-inside-expected.png     |  Bin 20522 -> 20529 bytes
 .../forms/input-text-click-inside-expected.txt     |    6 +-
 .../input-text-click-outside-expected.checksum     |    2 +-
 .../forms/input-text-click-outside-expected.png    |  Bin 20346 -> 20326 bytes
 .../forms/input-text-click-outside-expected.txt    |    6 +-
 .../input-text-double-click-expected.checksum      |    2 +-
 .../forms/input-text-double-click-expected.png     |  Bin 18494 -> 18473 bytes
 .../forms/input-text-double-click-expected.txt     |    6 +-
 .../forms/input-text-drag-down-expected.checksum   |    2 +-
 .../fast/forms/input-text-drag-down-expected.png   |  Bin 20125 -> 20101 bytes
 .../fast/forms/input-text-drag-down-expected.txt   |    6 +-
 .../forms/input-text-maxlength-expected.checksum   |    2 +-
 .../fast/forms/input-text-maxlength-expected.png   |  Bin 61128 -> 60988 bytes
 .../fast/forms/input-text-maxlength-expected.txt   |  172 +-
 .../input-text-option-delete-expected.checksum     |    2 +-
 .../forms/input-text-option-delete-expected.png    |  Bin 18162 -> 18150 bytes
 .../forms/input-text-option-delete-expected.txt    |    6 +-
 .../input-text-paste-maxlength-expected.checksum   |    2 +-
 .../forms/input-text-paste-maxlength-expected.png  |  Bin 51892 -> 51953 bytes
 .../forms/input-text-paste-maxlength-expected.txt  |  130 +-
 ...nput-text-scroll-left-on-blur-expected.checksum |    2 +-
 .../input-text-scroll-left-on-blur-expected.png    |  Bin 23523 -> 23400 bytes
 .../input-text-scroll-left-on-blur-expected.txt    |   30 +-
 ...nput-text-self-emptying-click-expected.checksum |    2 +-
 .../input-text-self-emptying-click-expected.png    |  Bin 19524 -> 19505 bytes
 .../input-text-self-emptying-click-expected.txt    |    6 +-
 .../forms/input-text-word-wrap-expected.checksum   |    2 +-
 .../fast/forms/input-text-word-wrap-expected.png   |  Bin 18699 -> 18760 bytes
 .../fast/forms/input-text-word-wrap-expected.txt   |    6 +-
 .../forms/input-type-change2-expected.checksum     |    2 +-
 .../mac/fast/forms/input-type-change2-expected.png |  Bin 23623 -> 23487 bytes
 .../mac/fast/forms/input-type-change2-expected.txt |    6 +-
 .../forms/input-type-text-min-width-expected.txt   |    6 +-
 .../mac/fast/forms/input-value-expected.checksum   |    2 +-
 .../mac/fast/forms/input-value-expected.png        |  Bin 87713 -> 87687 bytes
 .../mac/fast/forms/input-value-expected.txt        |   30 +-
 .../mac/fast/forms/input-width-expected.checksum   |    2 +-
 .../mac/fast/forms/input-width-expected.png        |  Bin 11310 -> 11474 bytes
 .../mac/fast/forms/input-width-expected.txt        |    6 +-
 ...-overflow-in-textarea-padding-expected.checksum |    2 +-
 ...nebox-overflow-in-textarea-padding-expected.png |  Bin 20931 -> 21109 bytes
 ...nebox-overflow-in-textarea-padding-expected.txt |   24 +-
 .../forms/negativeLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/negativeLineHeight-expected.png |  Bin 24377 -> 24387 bytes
 .../mac/fast/forms/negativeLineHeight-expected.txt |   22 +-
 .../forms/password-placeholder-expected.checksum   |    2 +-
 .../fast/forms/password-placeholder-expected.png   |  Bin 12333 -> 12140 bytes
 .../fast/forms/password-placeholder-expected.txt   |    6 +-
 ...ord-placeholder-text-security-expected.checksum |    2 +-
 ...password-placeholder-text-security-expected.png |  Bin 32293 -> 32291 bytes
 ...password-placeholder-text-security-expected.txt |   24 +-
 .../placeholder-pseudo-style-expected.checksum     |    2 +-
 .../forms/placeholder-pseudo-style-expected.png    |  Bin 21930 -> 21843 bytes
 .../forms/placeholder-pseudo-style-expected.txt    |   60 +-
 .../placeholder-set-attribute-expected.checksum    |    2 +-
 .../forms/placeholder-set-attribute-expected.png   |  Bin 17163 -> 17087 bytes
 .../forms/placeholder-set-attribute-expected.txt   |    6 +-
 .../forms/placeholder-set-value-expected.checksum  |    2 +-
 .../fast/forms/placeholder-set-value-expected.png  |  Bin 16450 -> 23538 bytes
 .../fast/forms/placeholder-set-value-expected.txt  |   10 +-
 ...h-cancel-button-style-sharing-expected.checksum |    2 +-
 ...search-cancel-button-style-sharing-expected.png |  Bin 17836 -> 17682 bytes
 ...search-cancel-button-style-sharing-expected.txt |   24 +-
 ...ch-display-none-cancel-button-expected.checksum |    2 +-
 .../search-display-none-cancel-button-expected.png |  Bin 17826 -> 17613 bytes
 .../search-display-none-cancel-button-expected.txt |    8 +-
 ...rch-placeholder-value-changed-expected.checksum |    2 +-
 .../search-placeholder-value-changed-expected.png  |  Bin 13192 -> 13002 bytes
 .../search-placeholder-value-changed-expected.txt  |   10 +-
 .../mac/fast/forms/search-rtl-expected.checksum    |    2 +-
 .../mac/fast/forms/search-rtl-expected.png         |  Bin 29068 -> 29018 bytes
 .../mac/fast/forms/search-rtl-expected.txt         |   62 +-
 .../forms/search-transformed-expected.checksum     |    2 +-
 .../mac/fast/forms/search-transformed-expected.png |  Bin 18634 -> 25994 bytes
 .../mac/fast/forms/search-transformed-expected.txt |   10 +-
 .../mac/fast/forms/search-zoomed-expected.checksum |    2 +-
 .../mac/fast/forms/search-zoomed-expected.png      |  Bin 28283 -> 28261 bytes
 .../mac/fast/forms/search-zoomed-expected.txt      |   10 +-
 .../forms/searchfield-heights-expected.checksum    |    2 +-
 .../fast/forms/searchfield-heights-expected.png    |  Bin 19095 -> 19092 bytes
 .../fast/forms/searchfield-heights-expected.txt    |   38 +-
 .../forms/tabbing-input-iframe-expected.checksum   |    2 +-
 .../fast/forms/tabbing-input-iframe-expected.png   |  Bin 19080 -> 19082 bytes
 .../fast/forms/tabbing-input-iframe-expected.txt   |   22 +-
 .../forms/textAreaLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/textAreaLineHeight-expected.png |  Bin 48117 -> 45936 bytes
 .../mac/fast/forms/textAreaLineHeight-expected.txt |  102 +-
 .../fast/forms/textarea-align-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-align-expected.png     |  Bin 28848 -> 28906 bytes
 .../mac/fast/forms/textarea-align-expected.txt     |   66 +-
 .../forms/textarea-rows-cols-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-rows-cols-expected.png |  Bin 46948 -> 65390 bytes
 .../mac/fast/forms/textarea-rows-cols-expected.txt |  252 ++--
 .../forms/textarea-scroll-height-expected.checksum |    2 +-
 .../fast/forms/textarea-scroll-height-expected.png |  Bin 30971 -> 30857 bytes
 .../fast/forms/textarea-scroll-height-expected.txt |   96 +-
 .../forms/textarea-scrollbar-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-scrollbar-expected.png |  Bin 20145 -> 20245 bytes
 .../mac/fast/forms/textarea-scrollbar-expected.txt |   60 +-
 .../forms/textarea-scrolled-type-expected.checksum |    2 +-
 .../fast/forms/textarea-scrolled-type-expected.png |  Bin 21736 -> 21968 bytes
 .../fast/forms/textarea-scrolled-type-expected.txt |  100 +-
 .../forms/textarea-setinnerhtml-expected.checksum  |    2 +-
 .../fast/forms/textarea-setinnerhtml-expected.png  |  Bin 12658 -> 12767 bytes
 .../fast/forms/textarea-setinnerhtml-expected.txt  |   10 +-
 .../fast/forms/textarea-width-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-width-expected.png     |  Bin 34699 -> 30783 bytes
 .../mac/fast/forms/textarea-width-expected.txt     |   28 +-
 .../textfield-drag-into-disabled-expected.checksum |    2 +-
 .../textfield-drag-into-disabled-expected.png      |  Bin 27697 -> 27604 bytes
 .../textfield-drag-into-disabled-expected.txt      |   18 +-
 .../fast/forms/textfield-outline-expected.checksum |    2 +-
 .../mac/fast/forms/textfield-outline-expected.png  |  Bin 18261 -> 18198 bytes
 .../mac/fast/forms/textfield-outline-expected.txt  |    6 +-
 .../forms/textfield-overflow-expected.checksum     |    2 +-
 .../mac/fast/forms/textfield-overflow-expected.png |  Bin 11728 -> 11059 bytes
 .../mac/fast/forms/textfield-overflow-expected.txt |    6 +-
 .../visual-hebrew-text-field-expected.checksum     |    2 +-
 .../forms/visual-hebrew-text-field-expected.png    |  Bin 29381 -> 29379 bytes
 .../forms/visual-hebrew-text-field-expected.txt    |    6 +-
 .../mac/fast/invalid/residual-style-expected.txt   |    8 +-
 .../lists/dynamic-marker-crash-expected.checksum   |    2 +-
 .../fast/lists/dynamic-marker-crash-expected.png   |  Bin 16214 -> 16247 bytes
 .../fast/lists/dynamic-marker-crash-expected.txt   |    6 +-
 .../fast/overflow/overflow-x-y-expected.checksum   |    2 +-
 .../mac/fast/overflow/overflow-x-y-expected.png    |  Bin 30889 -> 30863 bytes
 .../mac/fast/overflow/overflow-x-y-expected.txt    |   26 +-
 .../parser/comment-in-textarea-expected.checksum   |    2 +-
 .../fast/parser/comment-in-textarea-expected.png   |  Bin 15290 -> 15049 bytes
 .../fast/parser/comment-in-textarea-expected.txt   |   22 +-
 .../entity-comment-in-textarea-expected.checksum   |    2 +-
 .../parser/entity-comment-in-textarea-expected.png |  Bin 14901 -> 15050 bytes
 .../parser/entity-comment-in-textarea-expected.txt |   16 +-
 .../open-comment-in-textarea-expected.checksum     |    2 +-
 .../parser/open-comment-in-textarea-expected.png   |  Bin 16913 -> 16050 bytes
 .../parser/open-comment-in-textarea-expected.txt   |   26 +-
 ...-by-invalidateSelection-crash-expected.checksum |    2 +-
 ...ction-by-invalidateSelection-crash-expected.png |  Bin 11756 -> 11723 bytes
 ...ction-by-invalidateSelection-crash-expected.txt |    6 +-
 .../repaint/search-field-cancel-expected.checksum  |    2 +-
 .../fast/repaint/search-field-cancel-expected.png  |  Bin 14259 -> 21200 bytes
 .../fast/repaint/search-field-cancel-expected.txt  |   10 +-
 .../repaint/subtree-root-skipped-expected.checksum |    2 +-
 .../fast/repaint/subtree-root-skipped-expected.png |  Bin 13935 -> 13935 bytes
 .../fast/repaint/subtree-root-skipped-expected.txt |    6 +-
 .../replaced/replaced-breaking-expected.checksum   |    2 +-
 .../fast/replaced/replaced-breaking-expected.png   |  Bin 26204 -> 26190 bytes
 .../fast/replaced/replaced-breaking-expected.txt   |   12 +-
 .../replaced-breaking-mixture-expected.checksum    |    2 +-
 .../replaced-breaking-mixture-expected.png         |  Bin 18252 -> 18280 bytes
 .../replaced-breaking-mixture-expected.txt         |   12 +-
 .../width100percent-searchfield-expected.checksum  |    2 +-
 .../width100percent-searchfield-expected.png       |  Bin 18572 -> 18573 bytes
 .../width100percent-searchfield-expected.txt       |   44 +-
 .../width100percent-textarea-expected.checksum     |    2 +-
 .../replaced/width100percent-textarea-expected.png |  Bin 16709 -> 16303 bytes
 .../replaced/width100percent-textarea-expected.txt |  114 +-
 .../width100percent-textfield-expected.checksum    |    2 +-
 .../width100percent-textfield-expected.png         |  Bin 17012 -> 17013 bytes
 .../width100percent-textfield-expected.txt         |   36 +-
 .../platform/mac/fast/table/003-expected.checksum  |    2 +-
 .../platform/mac/fast/table/003-expected.png       |  Bin 38785 -> 38786 bytes
 .../platform/mac/fast/table/003-expected.txt       |   36 +-
 .../fast/table/colspanMinWidth-expected.checksum   |    2 +-
 .../mac/fast/table/colspanMinWidth-expected.png    |  Bin 11652 -> 10924 bytes
 .../mac/fast/table/colspanMinWidth-expected.txt    |   32 +-
 .../table/spanOverlapRepaint-expected.checksum     |    2 +-
 .../mac/fast/table/spanOverlapRepaint-expected.png |  Bin 12276 -> 12267 bytes
 .../mac/fast/table/spanOverlapRepaint-expected.txt |   30 +-
 .../table/text-field-baseline-expected.checksum    |    2 +-
 .../fast/table/text-field-baseline-expected.png    |  Bin 47879 -> 47877 bytes
 .../fast/table/text-field-baseline-expected.txt    |   50 +-
 .../rtl-white-space-pre-wrap-expected.checksum     |    2 +-
 .../rtl-white-space-pre-wrap-expected.png          |  Bin 39678 -> 39676 bytes
 .../rtl-white-space-pre-wrap-expected.txt          |   22 +-
 .../text/textIteratorNilRenderer-expected.checksum |    2 +-
 .../fast/text/textIteratorNilRenderer-expected.png |  Bin 15616 -> 15718 bytes
 .../fast/text/textIteratorNilRenderer-expected.txt |   18 +-
 ...ransformed-focused-text-input-expected.checksum |    2 +-
 .../transformed-focused-text-input-expected.png    |  Bin 6501 -> 14282 bytes
 .../transformed-focused-text-input-expected.txt    |    6 +-
 .../tests/navigation/anchor-basic-expected.txt     |   66 +-
 .../tests/navigation/anchor-frames-expected.txt    |   66 +-
 .../navigation/anchor-goback-expected.checksum     |    2 +-
 .../tests/navigation/anchor-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../tests/navigation/anchor-goback-expected.txt    |   68 +-
 .../navigation/anchor-subframeload-expected.txt    |   66 +-
 .../javascriptlink-basic-expected.checksum         |    2 +-
 .../navigation/javascriptlink-basic-expected.png   |  Bin 83776 -> 83434 bytes
 .../navigation/javascriptlink-basic-expected.txt   |   64 +-
 .../javascriptlink-frames-expected.checksum        |    2 +-
 .../navigation/javascriptlink-frames-expected.png  |  Bin 85705 -> 85630 bytes
 .../navigation/javascriptlink-frames-expected.txt  |   66 +-
 .../javascriptlink-goback-expected.checksum        |    2 +-
 .../navigation/javascriptlink-goback-expected.png  |  Bin 82950 -> 82791 bytes
 .../navigation/javascriptlink-goback-expected.txt  |   68 +-
 .../javascriptlink-subframeload-expected.checksum  |    2 +-
 .../javascriptlink-subframeload-expected.png       |  Bin 85705 -> 85630 bytes
 .../javascriptlink-subframeload-expected.txt       |   64 +-
 .../metaredirect-basic-expected.checksum           |    2 +-
 .../navigation/metaredirect-basic-expected.png     |  Bin 83776 -> 83434 bytes
 .../navigation/metaredirect-basic-expected.txt     |   64 +-
 .../metaredirect-frames-expected.checksum          |    2 +-
 .../navigation/metaredirect-frames-expected.png    |  Bin 85705 -> 85630 bytes
 .../navigation/metaredirect-frames-expected.txt    |   64 +-
 .../metaredirect-goback-expected.checksum          |    2 +-
 .../navigation/metaredirect-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../navigation/metaredirect-goback-expected.txt    |   68 +-
 .../metaredirect-subframeload-expected.checksum    |    2 +-
 .../metaredirect-subframeload-expected.png         |  Bin 85705 -> 85630 bytes
 .../metaredirect-subframeload-expected.txt         |   64 +-
 .../navigation/post-goback2-expected.checksum      |    2 +-
 .../tests/navigation/post-goback2-expected.png     |  Bin 82950 -> 82791 bytes
 .../tests/navigation/post-goback2-expected.txt     |   68 +-
 .../postredirect-goback2-expected.checksum         |    2 +-
 .../navigation/postredirect-goback2-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/postredirect-goback2-expected.txt   |   68 +-
 .../navigation/redirect302-basic-expected.checksum |    2 +-
 .../navigation/redirect302-basic-expected.png      |  Bin 83776 -> 83434 bytes
 .../navigation/redirect302-basic-expected.txt      |   64 +-
 .../redirect302-frames-expected.checksum           |    2 +-
 .../navigation/redirect302-frames-expected.png     |  Bin 85705 -> 85630 bytes
 .../navigation/redirect302-frames-expected.txt     |   64 +-
 .../redirect302-goback-expected.checksum           |    2 +-
 .../navigation/redirect302-goback-expected.png     |  Bin 82950 -> 82791 bytes
 .../navigation/redirect302-goback-expected.txt     |   68 +-
 .../redirect302-subframeload-expected.checksum     |    2 +-
 .../redirect302-subframeload-expected.png          |  Bin 85705 -> 85630 bytes
 .../redirect302-subframeload-expected.txt          |   64 +-
 .../navigation/relativeanchor-basic-expected.txt   |   66 +-
 .../navigation/relativeanchor-frames-expected.txt  |   66 +-
 .../navigation/relativeanchor-goback-expected.txt  |   66 +-
 .../slowmetaredirect-basic-expected.checksum       |    2 +-
 .../navigation/slowmetaredirect-basic-expected.png |  Bin 83776 -> 83434 bytes
 .../navigation/slowmetaredirect-basic-expected.txt |   64 +-
 .../slowtimerredirect-basic-expected.checksum      |    2 +-
 .../slowtimerredirect-basic-expected.png           |  Bin 83776 -> 83434 bytes
 .../slowtimerredirect-basic-expected.txt           |   64 +-
 .../navigation/success200-basic-expected.checksum  |    2 +-
 .../tests/navigation/success200-basic-expected.png |  Bin 83776 -> 83434 bytes
 .../tests/navigation/success200-basic-expected.txt |   64 +-
 .../navigation/success200-frames-expected.checksum |    2 +-
 .../navigation/success200-frames-expected.png      |  Bin 85705 -> 85630 bytes
 .../navigation/success200-frames-expected.txt      |   64 +-
 .../success200-frames-loadsame-expected.checksum   |    2 +-
 .../success200-frames-loadsame-expected.png        |  Bin 85705 -> 85630 bytes
 .../success200-frames-loadsame-expected.txt        |   64 +-
 .../navigation/success200-goback-expected.checksum |    2 +-
 .../navigation/success200-goback-expected.png      |  Bin 82950 -> 82791 bytes
 .../navigation/success200-goback-expected.txt      |   68 +-
 .../success200-loadsame-expected.checksum          |    2 +-
 .../navigation/success200-loadsame-expected.png    |  Bin 83776 -> 83434 bytes
 .../navigation/success200-loadsame-expected.txt    |   64 +-
 .../navigation/success200-reload-expected.checksum |    2 +-
 .../navigation/success200-reload-expected.png      |  Bin 78245 -> 78117 bytes
 .../navigation/success200-reload-expected.txt      |   64 +-
 .../success200-subframeload-expected.checksum      |    2 +-
 .../success200-subframeload-expected.png           |  Bin 85705 -> 85630 bytes
 .../success200-subframeload-expected.txt           |   64 +-
 .../timerredirect-basic-expected.checksum          |    2 +-
 .../navigation/timerredirect-basic-expected.png    |  Bin 83776 -> 83434 bytes
 .../navigation/timerredirect-basic-expected.txt    |   64 +-
 .../timerredirect-frames-expected.checksum         |    2 +-
 .../navigation/timerredirect-frames-expected.png   |  Bin 85705 -> 85630 bytes
 .../navigation/timerredirect-frames-expected.txt   |   64 +-
 .../timerredirect-goback-expected.checksum         |    2 +-
 .../navigation/timerredirect-goback-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/timerredirect-goback-expected.txt   |   68 +-
 .../timerredirect-subframeload-expected.checksum   |    2 +-
 .../timerredirect-subframeload-expected.png        |  Bin 85705 -> 85630 bytes
 .../timerredirect-subframeload-expected.txt        |   64 +-
 .../svg/custom/inline-svg-in-xhtml-expected.txt    |    6 +-
 .../platform/mac/svg/hixie/mixed/003-expected.txt  |    6 +-
 .../tables/mozilla/bugs/bug1188-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug1188-expected.png   |  Bin 52876 -> 52877 bytes
 .../mac/tables/mozilla/bugs/bug1188-expected.txt   |   24 +-
 .../tables/mozilla/bugs/bug12384-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug12384-expected.png  |  Bin 11767 -> 11796 bytes
 .../mac/tables/mozilla/bugs/bug12384-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug18359-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug18359-expected.png  |  Bin 27904 -> 27931 bytes
 .../mac/tables/mozilla/bugs/bug18359-expected.txt  |   22 +-
 .../mozilla/bugs/bug194024-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug194024-expected.png |  Bin 41325 -> 41328 bytes
 .../mac/tables/mozilla/bugs/bug194024-expected.txt |  214 ++--
 .../tables/mozilla/bugs/bug24200-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug24200-expected.png  |  Bin 20965 -> 20970 bytes
 .../mac/tables/mozilla/bugs/bug24200-expected.txt  |   12 +-
 .../mozilla/bugs/bug2479-2-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-2-expected.png |  Bin 45669 -> 45663 bytes
 .../mac/tables/mozilla/bugs/bug2479-2-expected.txt |   70 +-
 .../mozilla/bugs/bug2479-3-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-3-expected.png |  Bin 93211 -> 93206 bytes
 .../mac/tables/mozilla/bugs/bug2479-3-expected.txt |    8 +-
 .../mac/tables/mozilla/bugs/bug2479-4-expected.txt |   14 +-
 .../tables/mozilla/bugs/bug28928-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug28928-expected.png  |  Bin 27374 -> 27356 bytes
 .../mac/tables/mozilla/bugs/bug28928-expected.txt  |   36 +-
 .../tables/mozilla/bugs/bug30559-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30559-expected.png  |  Bin 18415 -> 18425 bytes
 .../mac/tables/mozilla/bugs/bug30559-expected.txt  |   26 +-
 .../tables/mozilla/bugs/bug30692-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30692-expected.png  |  Bin 37249 -> 37255 bytes
 .../mac/tables/mozilla/bugs/bug30692-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug4382-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4382-expected.png   |  Bin 23533 -> 23455 bytes
 .../mac/tables/mozilla/bugs/bug4382-expected.txt   |   12 +-
 .../tables/mozilla/bugs/bug4527-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4527-expected.png   |  Bin 24681 -> 24682 bytes
 .../mac/tables/mozilla/bugs/bug4527-expected.txt   |   14 +-
 .../mozilla/bugs/bug46368-1-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-1-expected.png    |  Bin 39486 -> 39475 bytes
 .../tables/mozilla/bugs/bug46368-1-expected.txt    |    6 +-
 .../mozilla/bugs/bug46368-2-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-2-expected.png    |  Bin 24157 -> 24154 bytes
 .../tables/mozilla/bugs/bug46368-2-expected.txt    |    6 +-
 .../tables/mozilla/bugs/bug51037-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug51037-expected.png  |  Bin 21223 -> 21203 bytes
 .../mac/tables/mozilla/bugs/bug51037-expected.txt  |   12 +-
 .../tables/mozilla/bugs/bug55545-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug55545-expected.png  |  Bin 12938 -> 12853 bytes
 .../mac/tables/mozilla/bugs/bug55545-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug59354-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug59354-expected.png  |  Bin 23386 -> 23306 bytes
 .../mac/tables/mozilla/bugs/bug59354-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug7342-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug7342-expected.png   |  Bin 32097 -> 32084 bytes
 .../mac/tables/mozilla/bugs/bug7342-expected.txt   |   20 +-
 .../tables/mozilla/bugs/bug96334-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug96334-expected.png  |  Bin 32634 -> 32637 bytes
 .../mac/tables/mozilla/bugs/bug96334-expected.txt  |   14 +-
 .../tables/mozilla/bugs/bug99948-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug99948-expected.png  |  Bin 16498 -> 16497 bytes
 .../mac/tables/mozilla/bugs/bug99948-expected.txt  |   16 +-
 .../tables/mozilla/dom/tableDom-expected.checksum  |    2 +-
 .../mac/tables/mozilla/dom/tableDom-expected.png   |  Bin 19180 -> 19186 bytes
 .../mac/tables/mozilla/dom/tableDom-expected.txt   |   52 +-
 .../mozilla/other/move_row-expected.checksum       |    2 +-
 .../mac/tables/mozilla/other/move_row-expected.png |  Bin 19002 -> 18777 bytes
 .../mac/tables/mozilla/other/move_row-expected.txt |   22 +-
 .../bugs/bug2479-5-expected.txt                    |   14 +-
 .../bugs/bug92647-1-expected.checksum              |    2 +-
 .../bugs/bug92647-1-expected.png                   |  Bin 15375 -> 15377 bytes
 .../bugs/bug92647-1-expected.txt                   |   38 +-
 .../custom/resources/svg-fonts-in-text-controls.js |   20 +
 .../custom/svg-fonts-in-text-controls-expected.txt |   11 +
 .../svg/custom/svg-fonts-in-text-controls.html     |   13 +
 WebCore/ChangeLog                                  |   60 +
 WebCore/css/html4.css                              |    2 +
 WebCore/css/themeWin.css                           |    4 -
 WebCore/platform/graphics/SimpleFontData.cpp       |   70 +-
 WebCore/platform/graphics/SimpleFontData.h         |    7 +
 .../chromium/SimpleFontDataChromiumWin.cpp         |    5 +
 .../graphics/chromium/SimpleFontDataLinux.cpp      |    5 +
 WebCore/platform/graphics/mac/SimpleFontDataMac.mm |   21 +
 .../platform/graphics/win/SimpleFontDataCGWin.cpp  |    7 +
 .../graphics/win/SimpleFontDataCairoWin.cpp        |    7 +
 .../platform/graphics/win/SimpleFontDataWin.cpp    |    2 +
 WebCore/rendering/RenderTextControl.cpp            |    6 +-
 WebCore/rendering/RenderTextControlMultiLine.cpp   |    4 -
 WebCore/rendering/RenderTextControlSingleLine.cpp  |    4 +
 537 files changed, 4808 insertions(+), 4213 deletions(-)
Comment 37 Ojan Vafai 2009-03-31 17:44:10 PDT
Created attachment 29146 [details]
Make textarea metrics more closely match IEs.

 LayoutTests/ChangeLog                              |   23 +
 LayoutTests/fast/dom/tabindex-clamp-expected.txt   |    2 +-
 LayoutTests/fast/forms/drag-out-of-textarea.html   |    2 +-
 .../fast/forms/mailto/advanced-get-expected.txt    |    2 +-
 .../fast/forms/mailto/advanced-put-expected.txt    |    2 +-
 LayoutTests/fast/forms/resources/TEMPLATE.html     |   13 +
 .../fast/forms/resources/textarea-metrics.js       |  171 ++
 .../fast/forms/textarea-metrics-expected.txt       |  173 ++
 LayoutTests/fast/forms/textarea-metrics.html       |   13 +
 LayoutTests/fast/forms/textarea-width.html         |    5 +-
 .../replaced/table-percent-height-expected.txt     |   18 +-
 .../fast/replaced/table-percent-height.html        |   18 +-
 .../mac/editing/deleting/5168598-expected.checksum |    2 +-
 .../mac/editing/deleting/5168598-expected.png      |  Bin 27473 -> 27436 bytes
 .../mac/editing/deleting/5168598-expected.txt      |    6 +-
 .../editing/inserting/4960120-1-expected.checksum  |    2 +-
 .../mac/editing/inserting/4960120-1-expected.png   |  Bin 15987 -> 16812 bytes
 .../mac/editing/inserting/4960120-1-expected.txt   |   16 +-
 .../editing/inserting/5607069-2-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-2-expected.png   |  Bin 22947 -> 22933 bytes
 .../mac/editing/inserting/5607069-2-expected.txt   |   14 +-
 .../editing/inserting/5607069-3-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-3-expected.png   |  Bin 24465 -> 24461 bytes
 .../mac/editing/inserting/5607069-3-expected.txt   |   18 +-
 .../before-after-input-element-expected.checksum   |    2 +-
 .../before-after-input-element-expected.png        |  Bin 17707 -> 17696 bytes
 .../before-after-input-element-expected.txt        |   10 +-
 .../typing-tab-designmode-forms-expected.checksum  |    2 +-
 .../typing-tab-designmode-forms-expected.png       |  Bin 16680 -> 16842 bytes
 .../typing-tab-designmode-forms-expected.txt       |   24 +-
 .../editing/pasteboard/4806874-expected.checksum   |    2 +-
 .../mac/editing/pasteboard/4806874-expected.png    |  Bin 17925 -> 17931 bytes
 .../mac/editing/pasteboard/4806874-expected.txt    |   10 +-
 .../drop-text-without-selection-expected.checksum  |    2 +-
 .../drop-text-without-selection-expected.png       |  Bin 32837 -> 32891 bytes
 .../drop-text-without-selection-expected.txt       |   14 +-
 .../pasteboard/input-field-1-expected.checksum     |    2 +-
 .../editing/pasteboard/input-field-1-expected.png  |  Bin 16352 -> 16342 bytes
 .../editing/pasteboard/input-field-1-expected.txt  |   12 +-
 .../nested-blocks-with-text-area-expected.checksum |    2 +-
 .../nested-blocks-with-text-area-expected.png      |  Bin 24246 -> 24429 bytes
 .../nested-blocks-with-text-area-expected.txt      |   24 +-
 ...nested-blocks-with-text-field-expected.checksum |    2 +-
 .../nested-blocks-with-text-field-expected.png     |  Bin 24411 -> 24408 bytes
 .../nested-blocks-with-text-field-expected.txt     |   14 +-
 .../pasteboard/pasting-tabs-expected.checksum      |    2 +-
 .../editing/pasteboard/pasting-tabs-expected.png   |  Bin 22164 -> 22163 bytes
 .../editing/pasteboard/pasting-tabs-expected.txt   |   14 +-
 .../editing/selection/3690703-2-expected.checksum  |    2 +-
 .../mac/editing/selection/3690703-2-expected.png   |  Bin 33204 -> 33191 bytes
 .../mac/editing/selection/3690703-2-expected.txt   |   24 +-
 .../editing/selection/3690703-expected.checksum    |    2 +-
 .../mac/editing/selection/3690703-expected.png     |  Bin 33409 -> 33446 bytes
 .../mac/editing/selection/3690703-expected.txt     |   24 +-
 .../editing/selection/3690719-expected.checksum    |    2 +-
 .../mac/editing/selection/3690719-expected.png     |  Bin 33409 -> 33446 bytes
 .../mac/editing/selection/3690719-expected.txt     |   24 +-
 .../editing/selection/4895428-3-expected.checksum  |    2 +-
 .../mac/editing/selection/4895428-3-expected.png   |  Bin 29560 -> 29543 bytes
 .../mac/editing/selection/4895428-3-expected.txt   |    6 +-
 .../editing/selection/4975120-expected.checksum    |    2 +-
 .../mac/editing/selection/4975120-expected.png     |  Bin 24197 -> 24193 bytes
 .../mac/editing/selection/4975120-expected.txt     |    8 +-
 .../editing/selection/5136696-expected.checksum    |    2 +-
 .../mac/editing/selection/5136696-expected.png     |  Bin 26565 -> 26598 bytes
 .../mac/editing/selection/5136696-expected.txt     |    6 +-
 .../editing/selection/5213963-expected.checksum    |    2 +-
 .../mac/editing/selection/5213963-expected.png     |  Bin 23592 -> 23590 bytes
 .../mac/editing/selection/5213963-expected.txt     |    8 +-
 .../selection/drag-select-1-expected.checksum      |    2 +-
 .../editing/selection/drag-select-1-expected.png   |  Bin 16773 -> 16771 bytes
 .../editing/selection/drag-select-1-expected.txt   |    6 +-
 .../selection/drag-text-delay-expected.checksum    |    2 +-
 .../editing/selection/drag-text-delay-expected.png |  Bin 12773 -> 12829 bytes
 .../editing/selection/drag-text-delay-expected.txt |    6 +-
 ...elect-from-textfield-outwards-expected.checksum |    2 +-
 .../select-from-textfield-outwards-expected.png    |  Bin 59715 -> 59657 bytes
 .../select-from-textfield-outwards-expected.txt    |    6 +-
 .../fast/block/margin-collapse/103-expected.txt    |   64 +-
 .../mac/fast/css/line-height-expected.checksum     |    2 +-
 .../platform/mac/fast/css/line-height-expected.png |  Bin 27854 -> 27856 bytes
 .../platform/mac/fast/css/line-height-expected.txt |    6 +-
 .../css/resize-corner-tracking-expected.checksum   |    2 +-
 .../fast/css/resize-corner-tracking-expected.png   |  Bin 21083 -> 21151 bytes
 .../fast/css/resize-corner-tracking-expected.txt   |   18 +-
 .../reset-textarea-expected.checksum               |    2 +-
 .../reset-textarea-expected.png                    |  Bin 29075 -> 29090 bytes
 .../reset-textarea-expected.txt                    |   30 +-
 .../mac/fast/dom/isindex-002-expected.checksum     |    2 +-
 .../platform/mac/fast/dom/isindex-002-expected.png |  Bin 19769 -> 19780 bytes
 .../platform/mac/fast/dom/isindex-002-expected.txt |   12 +-
 .../mac/fast/dynamic/008-expected.checksum         |    2 +-
 .../platform/mac/fast/dynamic/008-expected.png     |  Bin 30135 -> 30083 bytes
 .../platform/mac/fast/dynamic/008-expected.txt     |   18 +-
 .../mac/fast/events/autoscroll-expected.checksum   |    2 +-
 .../mac/fast/events/autoscroll-expected.png        |  Bin 23996 -> 23991 bytes
 .../mac/fast/events/autoscroll-expected.txt        |    6 +-
 .../mac/fast/events/label-focus-expected.checksum  |    2 +-
 .../mac/fast/events/label-focus-expected.png       |  Bin 14891 -> 14888 bytes
 .../mac/fast/events/label-focus-expected.txt       |    8 +-
 .../fast/forms/basic-textareas-expected.checksum   |    2 +-
 .../mac/fast/forms/basic-textareas-expected.png    |  Bin 116809 -> 118460 bytes
 .../mac/fast/forms/basic-textareas-expected.txt    | 1757 ++++++++++----------
 .../forms/box-shadow-override-expected.checksum    |    2 +-
 .../fast/forms/box-shadow-override-expected.png    |  Bin 32657 -> 32680 bytes
 .../fast/forms/box-shadow-override-expected.txt    |   30 +-
 .../control-restrict-line-height-expected.checksum |    2 +-
 .../control-restrict-line-height-expected.png      |  Bin 27564 -> 27432 bytes
 .../control-restrict-line-height-expected.txt      |   10 +-
 .../mac/fast/forms/encoding-test-expected.checksum |    2 +-
 .../mac/fast/forms/encoding-test-expected.png      |  Bin 13755 -> 13763 bytes
 .../mac/fast/forms/encoding-test-expected.txt      |    6 +-
 .../fast/forms/fieldset-align-expected.checksum    |    2 +-
 .../mac/fast/forms/fieldset-align-expected.png     |  Bin 44796 -> 44797 bytes
 .../mac/fast/forms/fieldset-align-expected.txt     |   96 +-
 .../forms/form-element-geometry-expected.checksum  |    2 +-
 .../fast/forms/form-element-geometry-expected.png  |  Bin 89841 -> 89636 bytes
 .../fast/forms/form-element-geometry-expected.txt  |   82 +-
 .../mac/fast/forms/input-align-expected.checksum   |    2 +-
 .../mac/fast/forms/input-align-expected.png        |  Bin 24821 -> 24918 bytes
 .../mac/fast/forms/input-align-expected.txt        |   62 +-
 .../input-appearance-bkcolor-expected.checksum     |    2 +-
 .../forms/input-appearance-bkcolor-expected.png    |  Bin 19152 -> 18261 bytes
 .../forms/input-appearance-bkcolor-expected.txt    |   18 +-
 ...ut-appearance-default-bkcolor-expected.checksum |    2 +-
 .../input-appearance-default-bkcolor-expected.png  |  Bin 17571 -> 17577 bytes
 .../input-appearance-default-bkcolor-expected.txt  |    6 +-
 .../input-appearance-disabled-expected.checksum    |    2 +-
 .../forms/input-appearance-disabled-expected.png   |  Bin 16835 -> 16853 bytes
 .../forms/input-appearance-disabled-expected.txt   |    6 +-
 .../forms/input-appearance-focus-expected.checksum |    2 +-
 .../fast/forms/input-appearance-focus-expected.png |  Bin 31673 -> 31669 bytes
 .../fast/forms/input-appearance-focus-expected.txt |   16 +-
 .../input-appearance-height-expected.checksum      |    2 +-
 .../forms/input-appearance-height-expected.png     |  Bin 36689 -> 36742 bytes
 .../forms/input-appearance-height-expected.txt     |   58 +-
 ...put-appearance-preventDefault-expected.checksum |    2 +-
 .../input-appearance-preventDefault-expected.png   |  Bin 23799 -> 23785 bytes
 .../input-appearance-preventDefault-expected.txt   |    8 +-
 .../input-appearance-readonly-expected.checksum    |    2 +-
 .../forms/input-appearance-readonly-expected.png   |  Bin 17183 -> 17191 bytes
 .../forms/input-appearance-readonly-expected.txt   |    6 +-
 .../input-appearance-selection-expected.checksum   |    2 +-
 .../forms/input-appearance-selection-expected.png  |  Bin 54570 -> 54562 bytes
 .../forms/input-appearance-selection-expected.txt  |    6 +-
 .../input-appearance-visibility-expected.checksum  |    2 +-
 .../forms/input-appearance-visibility-expected.png |  Bin 17288 -> 17330 bytes
 .../forms/input-appearance-visibility-expected.txt |    6 +-
 .../forms/input-appearance-width-expected.checksum |    2 +-
 .../fast/forms/input-appearance-width-expected.png |  Bin 21419 -> 21502 bytes
 .../fast/forms/input-appearance-width-expected.txt |   24 +-
 .../fast/forms/input-baseline-expected.checksum    |    2 +-
 .../mac/fast/forms/input-baseline-expected.png     |  Bin 23472 -> 23479 bytes
 .../mac/fast/forms/input-baseline-expected.txt     |   22 +-
 .../forms/input-disabled-color-expected.checksum   |    2 +-
 .../fast/forms/input-disabled-color-expected.png   |  Bin 49110 -> 47649 bytes
 .../fast/forms/input-disabled-color-expected.txt   |  198 ++--
 ...ouble-click-selection-gap-bug-expected.checksum |    2 +-
 ...put-double-click-selection-gap-bug-expected.png |  Bin 18205 -> 18447 bytes
 ...put-double-click-selection-gap-bug-expected.txt |   28 +-
 .../fast/forms/input-paste-undo-expected.checksum  |    2 +-
 .../mac/fast/forms/input-paste-undo-expected.png   |  Bin 23103 -> 23091 bytes
 .../mac/fast/forms/input-paste-undo-expected.txt   |    6 +-
 .../input-readonly-autoscroll-expected.checksum    |    2 +-
 .../forms/input-readonly-autoscroll-expected.png   |  Bin 22927 -> 22900 bytes
 .../forms/input-readonly-autoscroll-expected.txt   |    8 +-
 .../forms/input-readonly-dimmed-expected.checksum  |    2 +-
 .../fast/forms/input-readonly-dimmed-expected.png  |  Bin 18116 -> 18028 bytes
 .../fast/forms/input-readonly-dimmed-expected.txt  |    6 +-
 .../forms/input-readonly-empty-expected.checksum   |    2 +-
 .../fast/forms/input-readonly-empty-expected.png   |  Bin 15766 -> 16578 bytes
 .../fast/forms/input-readonly-empty-expected.txt   |    6 +-
 .../mac/fast/forms/input-spaces-expected.checksum  |    2 +-
 .../mac/fast/forms/input-spaces-expected.png       |  Bin 20178 -> 19265 bytes
 .../mac/fast/forms/input-spaces-expected.txt       |    6 +-
 .../mac/fast/forms/input-table-expected.txt        |   18 +-
 .../input-text-click-inside-expected.checksum      |    2 +-
 .../forms/input-text-click-inside-expected.png     |  Bin 20522 -> 20529 bytes
 .../forms/input-text-click-inside-expected.txt     |    6 +-
 .../input-text-click-outside-expected.checksum     |    2 +-
 .../forms/input-text-click-outside-expected.png    |  Bin 20346 -> 20326 bytes
 .../forms/input-text-click-outside-expected.txt    |    6 +-
 .../input-text-double-click-expected.checksum      |    2 +-
 .../forms/input-text-double-click-expected.png     |  Bin 18494 -> 18473 bytes
 .../forms/input-text-double-click-expected.txt     |    6 +-
 .../forms/input-text-drag-down-expected.checksum   |    2 +-
 .../fast/forms/input-text-drag-down-expected.png   |  Bin 20125 -> 20101 bytes
 .../fast/forms/input-text-drag-down-expected.txt   |    6 +-
 .../forms/input-text-maxlength-expected.checksum   |    2 +-
 .../fast/forms/input-text-maxlength-expected.png   |  Bin 61128 -> 60988 bytes
 .../fast/forms/input-text-maxlength-expected.txt   |  172 +-
 .../input-text-option-delete-expected.checksum     |    2 +-
 .../forms/input-text-option-delete-expected.png    |  Bin 18162 -> 18150 bytes
 .../forms/input-text-option-delete-expected.txt    |    6 +-
 .../input-text-paste-maxlength-expected.checksum   |    2 +-
 .../forms/input-text-paste-maxlength-expected.png  |  Bin 51892 -> 51953 bytes
 .../forms/input-text-paste-maxlength-expected.txt  |  130 +-
 ...nput-text-scroll-left-on-blur-expected.checksum |    2 +-
 .../input-text-scroll-left-on-blur-expected.png    |  Bin 23523 -> 23400 bytes
 .../input-text-scroll-left-on-blur-expected.txt    |   30 +-
 ...nput-text-self-emptying-click-expected.checksum |    2 +-
 .../input-text-self-emptying-click-expected.png    |  Bin 19524 -> 19505 bytes
 .../input-text-self-emptying-click-expected.txt    |    6 +-
 .../forms/input-text-word-wrap-expected.checksum   |    2 +-
 .../fast/forms/input-text-word-wrap-expected.png   |  Bin 18699 -> 18760 bytes
 .../fast/forms/input-text-word-wrap-expected.txt   |    6 +-
 .../forms/input-type-change2-expected.checksum     |    2 +-
 .../mac/fast/forms/input-type-change2-expected.png |  Bin 23623 -> 23487 bytes
 .../mac/fast/forms/input-type-change2-expected.txt |    6 +-
 .../forms/input-type-text-min-width-expected.txt   |    6 +-
 .../mac/fast/forms/input-value-expected.checksum   |    2 +-
 .../mac/fast/forms/input-value-expected.png        |  Bin 87713 -> 87687 bytes
 .../mac/fast/forms/input-value-expected.txt        |   30 +-
 .../mac/fast/forms/input-width-expected.checksum   |    2 +-
 .../mac/fast/forms/input-width-expected.png        |  Bin 11310 -> 11474 bytes
 .../mac/fast/forms/input-width-expected.txt        |    6 +-
 ...-overflow-in-textarea-padding-expected.checksum |    2 +-
 ...nebox-overflow-in-textarea-padding-expected.png |  Bin 20931 -> 21109 bytes
 ...nebox-overflow-in-textarea-padding-expected.txt |   24 +-
 .../forms/negativeLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/negativeLineHeight-expected.png |  Bin 24377 -> 24387 bytes
 .../mac/fast/forms/negativeLineHeight-expected.txt |   22 +-
 .../forms/password-placeholder-expected.checksum   |    2 +-
 .../fast/forms/password-placeholder-expected.png   |  Bin 12333 -> 12140 bytes
 .../fast/forms/password-placeholder-expected.txt   |    6 +-
 ...ord-placeholder-text-security-expected.checksum |    2 +-
 ...password-placeholder-text-security-expected.png |  Bin 32293 -> 32291 bytes
 ...password-placeholder-text-security-expected.txt |   24 +-
 .../placeholder-pseudo-style-expected.checksum     |    2 +-
 .../forms/placeholder-pseudo-style-expected.png    |  Bin 21930 -> 21843 bytes
 .../forms/placeholder-pseudo-style-expected.txt    |   60 +-
 .../placeholder-set-attribute-expected.checksum    |    2 +-
 .../forms/placeholder-set-attribute-expected.png   |  Bin 17163 -> 17087 bytes
 .../forms/placeholder-set-attribute-expected.txt   |    6 +-
 .../forms/placeholder-set-value-expected.checksum  |    2 +-
 .../fast/forms/placeholder-set-value-expected.png  |  Bin 16450 -> 23538 bytes
 .../fast/forms/placeholder-set-value-expected.txt  |   10 +-
 ...h-cancel-button-style-sharing-expected.checksum |    2 +-
 ...search-cancel-button-style-sharing-expected.png |  Bin 17836 -> 17682 bytes
 ...search-cancel-button-style-sharing-expected.txt |   24 +-
 ...ch-display-none-cancel-button-expected.checksum |    2 +-
 .../search-display-none-cancel-button-expected.png |  Bin 17826 -> 17613 bytes
 .../search-display-none-cancel-button-expected.txt |    8 +-
 ...rch-placeholder-value-changed-expected.checksum |    2 +-
 .../search-placeholder-value-changed-expected.png  |  Bin 13192 -> 13002 bytes
 .../search-placeholder-value-changed-expected.txt  |   10 +-
 .../mac/fast/forms/search-rtl-expected.checksum    |    2 +-
 .../mac/fast/forms/search-rtl-expected.png         |  Bin 29068 -> 29018 bytes
 .../mac/fast/forms/search-rtl-expected.txt         |   62 +-
 .../forms/search-transformed-expected.checksum     |    2 +-
 .../mac/fast/forms/search-transformed-expected.png |  Bin 18634 -> 25994 bytes
 .../mac/fast/forms/search-transformed-expected.txt |   10 +-
 .../mac/fast/forms/search-zoomed-expected.checksum |    2 +-
 .../mac/fast/forms/search-zoomed-expected.png      |  Bin 28283 -> 28261 bytes
 .../mac/fast/forms/search-zoomed-expected.txt      |   10 +-
 .../forms/searchfield-heights-expected.checksum    |    2 +-
 .../fast/forms/searchfield-heights-expected.png    |  Bin 19095 -> 19092 bytes
 .../fast/forms/searchfield-heights-expected.txt    |   38 +-
 .../forms/tabbing-input-iframe-expected.checksum   |    2 +-
 .../fast/forms/tabbing-input-iframe-expected.png   |  Bin 19080 -> 19082 bytes
 .../fast/forms/tabbing-input-iframe-expected.txt   |   22 +-
 .../forms/textAreaLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/textAreaLineHeight-expected.png |  Bin 48117 -> 45936 bytes
 .../mac/fast/forms/textAreaLineHeight-expected.txt |  102 +-
 .../fast/forms/textarea-align-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-align-expected.png     |  Bin 28848 -> 28906 bytes
 .../mac/fast/forms/textarea-align-expected.txt     |   66 +-
 .../forms/textarea-rows-cols-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-rows-cols-expected.png |  Bin 46948 -> 65390 bytes
 .../mac/fast/forms/textarea-rows-cols-expected.txt |  252 ++--
 .../forms/textarea-scroll-height-expected.checksum |    2 +-
 .../fast/forms/textarea-scroll-height-expected.png |  Bin 30971 -> 30857 bytes
 .../fast/forms/textarea-scroll-height-expected.txt |   96 +-
 .../forms/textarea-scrollbar-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-scrollbar-expected.png |  Bin 20145 -> 20245 bytes
 .../mac/fast/forms/textarea-scrollbar-expected.txt |   60 +-
 .../forms/textarea-scrolled-type-expected.checksum |    2 +-
 .../fast/forms/textarea-scrolled-type-expected.png |  Bin 21736 -> 21968 bytes
 .../fast/forms/textarea-scrolled-type-expected.txt |  100 +-
 .../forms/textarea-setinnerhtml-expected.checksum  |    2 +-
 .../fast/forms/textarea-setinnerhtml-expected.png  |  Bin 12658 -> 12767 bytes
 .../fast/forms/textarea-setinnerhtml-expected.txt  |   10 +-
 .../fast/forms/textarea-width-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-width-expected.png     |  Bin 34699 -> 30783 bytes
 .../mac/fast/forms/textarea-width-expected.txt     |   28 +-
 .../textfield-drag-into-disabled-expected.checksum |    2 +-
 .../textfield-drag-into-disabled-expected.png      |  Bin 27697 -> 27604 bytes
 .../textfield-drag-into-disabled-expected.txt      |   18 +-
 .../fast/forms/textfield-outline-expected.checksum |    2 +-
 .../mac/fast/forms/textfield-outline-expected.png  |  Bin 18261 -> 18198 bytes
 .../mac/fast/forms/textfield-outline-expected.txt  |    6 +-
 .../forms/textfield-overflow-expected.checksum     |    2 +-
 .../mac/fast/forms/textfield-overflow-expected.png |  Bin 11728 -> 11059 bytes
 .../mac/fast/forms/textfield-overflow-expected.txt |    6 +-
 .../visual-hebrew-text-field-expected.checksum     |    2 +-
 .../forms/visual-hebrew-text-field-expected.png    |  Bin 29381 -> 29379 bytes
 .../forms/visual-hebrew-text-field-expected.txt    |    6 +-
 .../mac/fast/invalid/residual-style-expected.txt   |    8 +-
 .../lists/dynamic-marker-crash-expected.checksum   |    2 +-
 .../fast/lists/dynamic-marker-crash-expected.png   |  Bin 16214 -> 16247 bytes
 .../fast/lists/dynamic-marker-crash-expected.txt   |    6 +-
 .../fast/overflow/overflow-x-y-expected.checksum   |    2 +-
 .../mac/fast/overflow/overflow-x-y-expected.png    |  Bin 30889 -> 30863 bytes
 .../mac/fast/overflow/overflow-x-y-expected.txt    |   26 +-
 .../parser/comment-in-textarea-expected.checksum   |    2 +-
 .../fast/parser/comment-in-textarea-expected.png   |  Bin 15290 -> 15049 bytes
 .../fast/parser/comment-in-textarea-expected.txt   |   22 +-
 .../entity-comment-in-textarea-expected.checksum   |    2 +-
 .../parser/entity-comment-in-textarea-expected.png |  Bin 14901 -> 15050 bytes
 .../parser/entity-comment-in-textarea-expected.txt |   16 +-
 .../open-comment-in-textarea-expected.checksum     |    2 +-
 .../parser/open-comment-in-textarea-expected.png   |  Bin 16913 -> 16050 bytes
 .../parser/open-comment-in-textarea-expected.txt   |   26 +-
 ...-by-invalidateSelection-crash-expected.checksum |    2 +-
 ...ction-by-invalidateSelection-crash-expected.png |  Bin 11756 -> 11723 bytes
 ...ction-by-invalidateSelection-crash-expected.txt |    6 +-
 .../repaint/search-field-cancel-expected.checksum  |    2 +-
 .../fast/repaint/search-field-cancel-expected.png  |  Bin 14259 -> 21200 bytes
 .../fast/repaint/search-field-cancel-expected.txt  |   10 +-
 .../repaint/subtree-root-skipped-expected.checksum |    2 +-
 .../fast/repaint/subtree-root-skipped-expected.png |  Bin 13935 -> 13935 bytes
 .../fast/repaint/subtree-root-skipped-expected.txt |    6 +-
 .../replaced/replaced-breaking-expected.checksum   |    2 +-
 .../fast/replaced/replaced-breaking-expected.png   |  Bin 26204 -> 26190 bytes
 .../fast/replaced/replaced-breaking-expected.txt   |   12 +-
 .../replaced-breaking-mixture-expected.checksum    |    2 +-
 .../replaced-breaking-mixture-expected.png         |  Bin 18252 -> 18280 bytes
 .../replaced-breaking-mixture-expected.txt         |   12 +-
 .../width100percent-searchfield-expected.checksum  |    2 +-
 .../width100percent-searchfield-expected.png       |  Bin 18572 -> 18573 bytes
 .../width100percent-searchfield-expected.txt       |   44 +-
 .../width100percent-textarea-expected.checksum     |    2 +-
 .../replaced/width100percent-textarea-expected.png |  Bin 16709 -> 16303 bytes
 .../replaced/width100percent-textarea-expected.txt |  114 +-
 .../width100percent-textfield-expected.checksum    |    2 +-
 .../width100percent-textfield-expected.png         |  Bin 17012 -> 17013 bytes
 .../width100percent-textfield-expected.txt         |   36 +-
 .../platform/mac/fast/table/003-expected.checksum  |    2 +-
 .../platform/mac/fast/table/003-expected.png       |  Bin 38785 -> 38786 bytes
 .../platform/mac/fast/table/003-expected.txt       |   36 +-
 .../fast/table/colspanMinWidth-expected.checksum   |    2 +-
 .../mac/fast/table/colspanMinWidth-expected.png    |  Bin 11652 -> 10924 bytes
 .../mac/fast/table/colspanMinWidth-expected.txt    |   32 +-
 .../table/spanOverlapRepaint-expected.checksum     |    2 +-
 .../mac/fast/table/spanOverlapRepaint-expected.png |  Bin 12276 -> 12267 bytes
 .../mac/fast/table/spanOverlapRepaint-expected.txt |   30 +-
 .../table/text-field-baseline-expected.checksum    |    2 +-
 .../fast/table/text-field-baseline-expected.png    |  Bin 47879 -> 47877 bytes
 .../fast/table/text-field-baseline-expected.txt    |   50 +-
 .../rtl-white-space-pre-wrap-expected.checksum     |    2 +-
 .../rtl-white-space-pre-wrap-expected.png          |  Bin 39678 -> 39676 bytes
 .../rtl-white-space-pre-wrap-expected.txt          |   22 +-
 .../text/textIteratorNilRenderer-expected.checksum |    2 +-
 .../fast/text/textIteratorNilRenderer-expected.png |  Bin 15616 -> 15718 bytes
 .../fast/text/textIteratorNilRenderer-expected.txt |   18 +-
 ...ransformed-focused-text-input-expected.checksum |    2 +-
 .../transformed-focused-text-input-expected.png    |  Bin 6501 -> 14282 bytes
 .../transformed-focused-text-input-expected.txt    |    6 +-
 .../tests/navigation/anchor-basic-expected.txt     |   66 +-
 .../tests/navigation/anchor-frames-expected.txt    |   66 +-
 .../navigation/anchor-goback-expected.checksum     |    2 +-
 .../tests/navigation/anchor-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../tests/navigation/anchor-goback-expected.txt    |   68 +-
 .../navigation/anchor-subframeload-expected.txt    |   66 +-
 .../javascriptlink-basic-expected.checksum         |    2 +-
 .../navigation/javascriptlink-basic-expected.png   |  Bin 83776 -> 83434 bytes
 .../navigation/javascriptlink-basic-expected.txt   |   64 +-
 .../javascriptlink-frames-expected.checksum        |    2 +-
 .../navigation/javascriptlink-frames-expected.png  |  Bin 85705 -> 85630 bytes
 .../navigation/javascriptlink-frames-expected.txt  |   66 +-
 .../javascriptlink-goback-expected.checksum        |    2 +-
 .../navigation/javascriptlink-goback-expected.png  |  Bin 82950 -> 82791 bytes
 .../navigation/javascriptlink-goback-expected.txt  |   68 +-
 .../javascriptlink-subframeload-expected.checksum  |    2 +-
 .../javascriptlink-subframeload-expected.png       |  Bin 85705 -> 85630 bytes
 .../javascriptlink-subframeload-expected.txt       |   64 +-
 .../metaredirect-basic-expected.checksum           |    2 +-
 .../navigation/metaredirect-basic-expected.png     |  Bin 83776 -> 83434 bytes
 .../navigation/metaredirect-basic-expected.txt     |   64 +-
 .../metaredirect-frames-expected.checksum          |    2 +-
 .../navigation/metaredirect-frames-expected.png    |  Bin 85705 -> 85630 bytes
 .../navigation/metaredirect-frames-expected.txt    |   64 +-
 .../metaredirect-goback-expected.checksum          |    2 +-
 .../navigation/metaredirect-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../navigation/metaredirect-goback-expected.txt    |   68 +-
 .../metaredirect-subframeload-expected.checksum    |    2 +-
 .../metaredirect-subframeload-expected.png         |  Bin 85705 -> 85630 bytes
 .../metaredirect-subframeload-expected.txt         |   64 +-
 .../navigation/post-goback2-expected.checksum      |    2 +-
 .../tests/navigation/post-goback2-expected.png     |  Bin 82950 -> 82791 bytes
 .../tests/navigation/post-goback2-expected.txt     |   68 +-
 .../postredirect-goback2-expected.checksum         |    2 +-
 .../navigation/postredirect-goback2-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/postredirect-goback2-expected.txt   |   68 +-
 .../navigation/redirect302-basic-expected.checksum |    2 +-
 .../navigation/redirect302-basic-expected.png      |  Bin 83776 -> 83434 bytes
 .../navigation/redirect302-basic-expected.txt      |   64 +-
 .../redirect302-frames-expected.checksum           |    2 +-
 .../navigation/redirect302-frames-expected.png     |  Bin 85705 -> 85630 bytes
 .../navigation/redirect302-frames-expected.txt     |   64 +-
 .../redirect302-goback-expected.checksum           |    2 +-
 .../navigation/redirect302-goback-expected.png     |  Bin 82950 -> 82791 bytes
 .../navigation/redirect302-goback-expected.txt     |   68 +-
 .../redirect302-subframeload-expected.checksum     |    2 +-
 .../redirect302-subframeload-expected.png          |  Bin 85705 -> 85630 bytes
 .../redirect302-subframeload-expected.txt          |   64 +-
 .../navigation/relativeanchor-basic-expected.txt   |   66 +-
 .../navigation/relativeanchor-frames-expected.txt  |   66 +-
 .../navigation/relativeanchor-goback-expected.txt  |   66 +-
 .../slowmetaredirect-basic-expected.checksum       |    2 +-
 .../navigation/slowmetaredirect-basic-expected.png |  Bin 83776 -> 83434 bytes
 .../navigation/slowmetaredirect-basic-expected.txt |   64 +-
 .../slowtimerredirect-basic-expected.checksum      |    2 +-
 .../slowtimerredirect-basic-expected.png           |  Bin 83776 -> 83434 bytes
 .../slowtimerredirect-basic-expected.txt           |   64 +-
 .../navigation/success200-basic-expected.checksum  |    2 +-
 .../tests/navigation/success200-basic-expected.png |  Bin 83776 -> 83434 bytes
 .../tests/navigation/success200-basic-expected.txt |   64 +-
 .../navigation/success200-frames-expected.checksum |    2 +-
 .../navigation/success200-frames-expected.png      |  Bin 85705 -> 85630 bytes
 .../navigation/success200-frames-expected.txt      |   64 +-
 .../success200-frames-loadsame-expected.checksum   |    2 +-
 .../success200-frames-loadsame-expected.png        |  Bin 85705 -> 85630 bytes
 .../success200-frames-loadsame-expected.txt        |   64 +-
 .../navigation/success200-goback-expected.checksum |    2 +-
 .../navigation/success200-goback-expected.png      |  Bin 82950 -> 82791 bytes
 .../navigation/success200-goback-expected.txt      |   68 +-
 .../success200-loadsame-expected.checksum          |    2 +-
 .../navigation/success200-loadsame-expected.png    |  Bin 83776 -> 83434 bytes
 .../navigation/success200-loadsame-expected.txt    |   64 +-
 .../navigation/success200-reload-expected.checksum |    2 +-
 .../navigation/success200-reload-expected.png      |  Bin 78245 -> 78117 bytes
 .../navigation/success200-reload-expected.txt      |   64 +-
 .../success200-subframeload-expected.checksum      |    2 +-
 .../success200-subframeload-expected.png           |  Bin 85705 -> 85630 bytes
 .../success200-subframeload-expected.txt           |   64 +-
 .../timerredirect-basic-expected.checksum          |    2 +-
 .../navigation/timerredirect-basic-expected.png    |  Bin 83776 -> 83434 bytes
 .../navigation/timerredirect-basic-expected.txt    |   64 +-
 .../timerredirect-frames-expected.checksum         |    2 +-
 .../navigation/timerredirect-frames-expected.png   |  Bin 85705 -> 85630 bytes
 .../navigation/timerredirect-frames-expected.txt   |   64 +-
 .../timerredirect-goback-expected.checksum         |    2 +-
 .../navigation/timerredirect-goback-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/timerredirect-goback-expected.txt   |   68 +-
 .../timerredirect-subframeload-expected.checksum   |    2 +-
 .../timerredirect-subframeload-expected.png        |  Bin 85705 -> 85630 bytes
 .../timerredirect-subframeload-expected.txt        |   64 +-
 .../svg/custom/inline-svg-in-xhtml-expected.txt    |    6 +-
 .../platform/mac/svg/hixie/mixed/003-expected.txt  |    6 +-
 .../tables/mozilla/bugs/bug1188-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug1188-expected.png   |  Bin 52876 -> 52877 bytes
 .../mac/tables/mozilla/bugs/bug1188-expected.txt   |   24 +-
 .../tables/mozilla/bugs/bug12384-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug12384-expected.png  |  Bin 11767 -> 11796 bytes
 .../mac/tables/mozilla/bugs/bug12384-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug18359-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug18359-expected.png  |  Bin 27904 -> 27931 bytes
 .../mac/tables/mozilla/bugs/bug18359-expected.txt  |   22 +-
 .../mozilla/bugs/bug194024-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug194024-expected.png |  Bin 41325 -> 41328 bytes
 .../mac/tables/mozilla/bugs/bug194024-expected.txt |  214 ++--
 .../tables/mozilla/bugs/bug24200-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug24200-expected.png  |  Bin 20965 -> 20970 bytes
 .../mac/tables/mozilla/bugs/bug24200-expected.txt  |   12 +-
 .../mozilla/bugs/bug2479-2-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-2-expected.png |  Bin 45669 -> 45663 bytes
 .../mac/tables/mozilla/bugs/bug2479-2-expected.txt |   70 +-
 .../mozilla/bugs/bug2479-3-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-3-expected.png |  Bin 93211 -> 93206 bytes
 .../mac/tables/mozilla/bugs/bug2479-3-expected.txt |    8 +-
 .../mac/tables/mozilla/bugs/bug2479-4-expected.txt |   14 +-
 .../tables/mozilla/bugs/bug28928-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug28928-expected.png  |  Bin 27374 -> 27356 bytes
 .../mac/tables/mozilla/bugs/bug28928-expected.txt  |   36 +-
 .../tables/mozilla/bugs/bug30559-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30559-expected.png  |  Bin 18415 -> 18425 bytes
 .../mac/tables/mozilla/bugs/bug30559-expected.txt  |   26 +-
 .../tables/mozilla/bugs/bug30692-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30692-expected.png  |  Bin 37249 -> 37255 bytes
 .../mac/tables/mozilla/bugs/bug30692-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug4382-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4382-expected.png   |  Bin 23533 -> 23455 bytes
 .../mac/tables/mozilla/bugs/bug4382-expected.txt   |   12 +-
 .../tables/mozilla/bugs/bug4527-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4527-expected.png   |  Bin 24681 -> 24682 bytes
 .../mac/tables/mozilla/bugs/bug4527-expected.txt   |   14 +-
 .../mozilla/bugs/bug46368-1-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-1-expected.png    |  Bin 39486 -> 39475 bytes
 .../tables/mozilla/bugs/bug46368-1-expected.txt    |    6 +-
 .../mozilla/bugs/bug46368-2-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-2-expected.png    |  Bin 24157 -> 24154 bytes
 .../tables/mozilla/bugs/bug46368-2-expected.txt    |    6 +-
 .../tables/mozilla/bugs/bug51037-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug51037-expected.png  |  Bin 21223 -> 21203 bytes
 .../mac/tables/mozilla/bugs/bug51037-expected.txt  |   12 +-
 .../tables/mozilla/bugs/bug55545-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug55545-expected.png  |  Bin 12938 -> 12853 bytes
 .../mac/tables/mozilla/bugs/bug55545-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug59354-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug59354-expected.png  |  Bin 23386 -> 23306 bytes
 .../mac/tables/mozilla/bugs/bug59354-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug7342-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug7342-expected.png   |  Bin 32097 -> 32084 bytes
 .../mac/tables/mozilla/bugs/bug7342-expected.txt   |   20 +-
 .../tables/mozilla/bugs/bug96334-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug96334-expected.png  |  Bin 32634 -> 32637 bytes
 .../mac/tables/mozilla/bugs/bug96334-expected.txt  |   14 +-
 .../tables/mozilla/bugs/bug99948-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug99948-expected.png  |  Bin 16498 -> 16497 bytes
 .../mac/tables/mozilla/bugs/bug99948-expected.txt  |   16 +-
 .../tables/mozilla/dom/tableDom-expected.checksum  |    2 +-
 .../mac/tables/mozilla/dom/tableDom-expected.png   |  Bin 19180 -> 19186 bytes
 .../mac/tables/mozilla/dom/tableDom-expected.txt   |   52 +-
 .../mozilla/other/move_row-expected.checksum       |    2 +-
 .../mac/tables/mozilla/other/move_row-expected.png |  Bin 19002 -> 18777 bytes
 .../mac/tables/mozilla/other/move_row-expected.txt |   22 +-
 .../bugs/bug2479-5-expected.txt                    |   14 +-
 .../bugs/bug92647-1-expected.checksum              |    2 +-
 .../bugs/bug92647-1-expected.png                   |  Bin 15375 -> 15377 bytes
 .../bugs/bug92647-1-expected.txt                   |   38 +-
 .../custom/resources/svg-fonts-in-text-controls.js |   20 +
 .../custom/svg-fonts-in-text-controls-expected.txt |   11 +
 .../svg/custom/svg-fonts-in-text-controls.html     |   13 +
 WebCore/ChangeLog                                  |   60 +
 WebCore/css/html4.css                              |    2 +
 WebCore/css/themeWin.css                           |    4 -
 WebCore/platform/graphics/SimpleFontData.cpp       |   70 +-
 WebCore/platform/graphics/SimpleFontData.h         |    7 +
 .../chromium/SimpleFontDataChromiumWin.cpp         |    5 +
 .../graphics/chromium/SimpleFontDataLinux.cpp      |    5 +
 WebCore/platform/graphics/mac/SimpleFontDataMac.mm |   21 +
 .../platform/graphics/win/SimpleFontDataCGWin.cpp  |    7 +
 .../graphics/win/SimpleFontDataCairoWin.cpp        |    7 +
 .../platform/graphics/win/SimpleFontDataWin.cpp    |    2 +
 WebCore/rendering/RenderTextControl.cpp            |    6 +-
 WebCore/rendering/RenderTextControlMultiLine.cpp   |    4 -
 WebCore/rendering/RenderTextControlSingleLine.cpp  |    4 +
 538 files changed, 4809 insertions(+), 4214 deletions(-)
Comment 38 Ojan Vafai 2009-03-31 17:44:38 PDT
Comment on attachment 29140 [details]
Make textarea metrics more closely match IEs.

Obsoleted by next patch which fixes drag-out-of-textarea.html.
Comment 39 Ojan Vafai 2009-04-03 12:06:22 PDT
Created attachment 29235 [details]
Make textarea metrics more closely match IEs.

 LayoutTests/ChangeLog                              |   23 +
 LayoutTests/fast/dom/tabindex-clamp-expected.txt   |    2 +-
 LayoutTests/fast/forms/drag-out-of-textarea.html   |    2 +-
 .../fast/forms/mailto/advanced-get-expected.txt    |    2 +-
 .../fast/forms/mailto/advanced-put-expected.txt    |    2 +-
 LayoutTests/fast/forms/resources/TEMPLATE.html     |   13 +
 .../fast/forms/resources/textarea-metrics.js       |  171 ++
 .../fast/forms/textarea-metrics-expected.txt       |  173 ++
 LayoutTests/fast/forms/textarea-metrics.html       |   13 +
 LayoutTests/fast/forms/textarea-width.html         |    5 +-
 .../replaced/table-percent-height-expected.txt     |   18 +-
 .../fast/replaced/table-percent-height.html        |   18 +-
 .../mac/editing/deleting/5168598-expected.checksum |    2 +-
 .../mac/editing/deleting/5168598-expected.png      |  Bin 27473 -> 27436 bytes
 .../mac/editing/deleting/5168598-expected.txt      |    6 +-
 .../editing/inserting/4960120-1-expected.checksum  |    2 +-
 .../mac/editing/inserting/4960120-1-expected.png   |  Bin 15987 -> 16812 bytes
 .../mac/editing/inserting/4960120-1-expected.txt   |   16 +-
 .../editing/inserting/5607069-2-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-2-expected.png   |  Bin 22947 -> 22933 bytes
 .../mac/editing/inserting/5607069-2-expected.txt   |   14 +-
 .../editing/inserting/5607069-3-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-3-expected.png   |  Bin 24465 -> 24461 bytes
 .../mac/editing/inserting/5607069-3-expected.txt   |   18 +-
 .../before-after-input-element-expected.checksum   |    2 +-
 .../before-after-input-element-expected.png        |  Bin 17707 -> 17696 bytes
 .../before-after-input-element-expected.txt        |   10 +-
 .../typing-tab-designmode-forms-expected.checksum  |    2 +-
 .../typing-tab-designmode-forms-expected.png       |  Bin 16680 -> 16842 bytes
 .../typing-tab-designmode-forms-expected.txt       |   24 +-
 .../editing/pasteboard/4806874-expected.checksum   |    2 +-
 .../mac/editing/pasteboard/4806874-expected.png    |  Bin 17925 -> 17931 bytes
 .../mac/editing/pasteboard/4806874-expected.txt    |   10 +-
 .../drop-text-without-selection-expected.checksum  |    2 +-
 .../drop-text-without-selection-expected.png       |  Bin 32837 -> 32891 bytes
 .../drop-text-without-selection-expected.txt       |   14 +-
 .../pasteboard/input-field-1-expected.checksum     |    2 +-
 .../editing/pasteboard/input-field-1-expected.png  |  Bin 16352 -> 16342 bytes
 .../editing/pasteboard/input-field-1-expected.txt  |   12 +-
 .../nested-blocks-with-text-area-expected.checksum |    2 +-
 .../nested-blocks-with-text-area-expected.png      |  Bin 24246 -> 24429 bytes
 .../nested-blocks-with-text-area-expected.txt      |   24 +-
 ...nested-blocks-with-text-field-expected.checksum |    2 +-
 .../nested-blocks-with-text-field-expected.png     |  Bin 24411 -> 24408 bytes
 .../nested-blocks-with-text-field-expected.txt     |   14 +-
 .../pasteboard/pasting-tabs-expected.checksum      |    2 +-
 .../editing/pasteboard/pasting-tabs-expected.png   |  Bin 22164 -> 22163 bytes
 .../editing/pasteboard/pasting-tabs-expected.txt   |   14 +-
 .../editing/selection/3690703-2-expected.checksum  |    2 +-
 .../mac/editing/selection/3690703-2-expected.png   |  Bin 33204 -> 33191 bytes
 .../mac/editing/selection/3690703-2-expected.txt   |   24 +-
 .../editing/selection/3690703-expected.checksum    |    2 +-
 .../mac/editing/selection/3690703-expected.png     |  Bin 33409 -> 33446 bytes
 .../mac/editing/selection/3690703-expected.txt     |   24 +-
 .../editing/selection/3690719-expected.checksum    |    2 +-
 .../mac/editing/selection/3690719-expected.png     |  Bin 33409 -> 33446 bytes
 .../mac/editing/selection/3690719-expected.txt     |   24 +-
 .../editing/selection/4895428-3-expected.checksum  |    2 +-
 .../mac/editing/selection/4895428-3-expected.png   |  Bin 29560 -> 29543 bytes
 .../mac/editing/selection/4895428-3-expected.txt   |    6 +-
 .../editing/selection/4975120-expected.checksum    |    2 +-
 .../mac/editing/selection/4975120-expected.png     |  Bin 24197 -> 24193 bytes
 .../mac/editing/selection/4975120-expected.txt     |    8 +-
 .../editing/selection/5136696-expected.checksum    |    2 +-
 .../mac/editing/selection/5136696-expected.png     |  Bin 26565 -> 26598 bytes
 .../mac/editing/selection/5136696-expected.txt     |    6 +-
 .../editing/selection/5213963-expected.checksum    |    2 +-
 .../mac/editing/selection/5213963-expected.png     |  Bin 23592 -> 23590 bytes
 .../mac/editing/selection/5213963-expected.txt     |    8 +-
 .../selection/drag-select-1-expected.checksum      |    2 +-
 .../editing/selection/drag-select-1-expected.png   |  Bin 16773 -> 16771 bytes
 .../editing/selection/drag-select-1-expected.txt   |    6 +-
 .../selection/drag-text-delay-expected.checksum    |    2 +-
 .../editing/selection/drag-text-delay-expected.png |  Bin 12773 -> 12829 bytes
 .../editing/selection/drag-text-delay-expected.txt |    6 +-
 ...elect-from-textfield-outwards-expected.checksum |    2 +-
 .../select-from-textfield-outwards-expected.png    |  Bin 59715 -> 59657 bytes
 .../select-from-textfield-outwards-expected.txt    |    6 +-
 .../fast/block/margin-collapse/103-expected.txt    |   64 +-
 .../mac/fast/css/line-height-expected.checksum     |    2 +-
 .../platform/mac/fast/css/line-height-expected.png |  Bin 27854 -> 27856 bytes
 .../platform/mac/fast/css/line-height-expected.txt |    6 +-
 .../css/resize-corner-tracking-expected.checksum   |    2 +-
 .../fast/css/resize-corner-tracking-expected.png   |  Bin 21083 -> 21151 bytes
 .../fast/css/resize-corner-tracking-expected.txt   |   18 +-
 .../reset-textarea-expected.checksum               |    2 +-
 .../reset-textarea-expected.png                    |  Bin 29075 -> 29090 bytes
 .../reset-textarea-expected.txt                    |   30 +-
 .../mac/fast/dom/isindex-002-expected.checksum     |    2 +-
 .../platform/mac/fast/dom/isindex-002-expected.png |  Bin 19769 -> 19780 bytes
 .../platform/mac/fast/dom/isindex-002-expected.txt |   12 +-
 .../mac/fast/dynamic/008-expected.checksum         |    2 +-
 .../platform/mac/fast/dynamic/008-expected.png     |  Bin 30135 -> 30083 bytes
 .../platform/mac/fast/dynamic/008-expected.txt     |   18 +-
 .../mac/fast/events/autoscroll-expected.checksum   |    2 +-
 .../mac/fast/events/autoscroll-expected.png        |  Bin 23996 -> 23991 bytes
 .../mac/fast/events/autoscroll-expected.txt        |    6 +-
 .../mac/fast/events/label-focus-expected.checksum  |    2 +-
 .../mac/fast/events/label-focus-expected.png       |  Bin 14891 -> 14888 bytes
 .../mac/fast/events/label-focus-expected.txt       |    8 +-
 .../fast/forms/basic-textareas-expected.checksum   |    2 +-
 .../mac/fast/forms/basic-textareas-expected.png    |  Bin 116809 -> 118460 bytes
 .../mac/fast/forms/basic-textareas-expected.txt    | 1757 ++++++++++----------
 .../forms/box-shadow-override-expected.checksum    |    2 +-
 .../fast/forms/box-shadow-override-expected.png    |  Bin 32657 -> 32680 bytes
 .../fast/forms/box-shadow-override-expected.txt    |   30 +-
 .../control-restrict-line-height-expected.checksum |    2 +-
 .../control-restrict-line-height-expected.png      |  Bin 27564 -> 27432 bytes
 .../control-restrict-line-height-expected.txt      |   10 +-
 .../mac/fast/forms/encoding-test-expected.checksum |    2 +-
 .../mac/fast/forms/encoding-test-expected.png      |  Bin 13755 -> 13763 bytes
 .../mac/fast/forms/encoding-test-expected.txt      |    6 +-
 .../fast/forms/fieldset-align-expected.checksum    |    2 +-
 .../mac/fast/forms/fieldset-align-expected.png     |  Bin 44796 -> 44797 bytes
 .../mac/fast/forms/fieldset-align-expected.txt     |   96 +-
 .../forms/form-element-geometry-expected.checksum  |    2 +-
 .../fast/forms/form-element-geometry-expected.png  |  Bin 89841 -> 89636 bytes
 .../fast/forms/form-element-geometry-expected.txt  |   82 +-
 .../mac/fast/forms/input-align-expected.checksum   |    2 +-
 .../mac/fast/forms/input-align-expected.png        |  Bin 24821 -> 24918 bytes
 .../mac/fast/forms/input-align-expected.txt        |   62 +-
 .../input-appearance-bkcolor-expected.checksum     |    2 +-
 .../forms/input-appearance-bkcolor-expected.png    |  Bin 19152 -> 18261 bytes
 .../forms/input-appearance-bkcolor-expected.txt    |   18 +-
 ...ut-appearance-default-bkcolor-expected.checksum |    2 +-
 .../input-appearance-default-bkcolor-expected.png  |  Bin 17571 -> 17577 bytes
 .../input-appearance-default-bkcolor-expected.txt  |    6 +-
 .../input-appearance-disabled-expected.checksum    |    2 +-
 .../forms/input-appearance-disabled-expected.png   |  Bin 16835 -> 16853 bytes
 .../forms/input-appearance-disabled-expected.txt   |    6 +-
 .../forms/input-appearance-focus-expected.checksum |    2 +-
 .../fast/forms/input-appearance-focus-expected.png |  Bin 31673 -> 31669 bytes
 .../fast/forms/input-appearance-focus-expected.txt |   16 +-
 .../input-appearance-height-expected.checksum      |    2 +-
 .../forms/input-appearance-height-expected.png     |  Bin 36689 -> 36742 bytes
 .../forms/input-appearance-height-expected.txt     |   58 +-
 ...put-appearance-preventDefault-expected.checksum |    2 +-
 .../input-appearance-preventDefault-expected.png   |  Bin 23799 -> 23785 bytes
 .../input-appearance-preventDefault-expected.txt   |    8 +-
 .../input-appearance-readonly-expected.checksum    |    2 +-
 .../forms/input-appearance-readonly-expected.png   |  Bin 17183 -> 17191 bytes
 .../forms/input-appearance-readonly-expected.txt   |    6 +-
 .../input-appearance-selection-expected.checksum   |    2 +-
 .../forms/input-appearance-selection-expected.png  |  Bin 54570 -> 54562 bytes
 .../forms/input-appearance-selection-expected.txt  |    6 +-
 .../input-appearance-visibility-expected.checksum  |    2 +-
 .../forms/input-appearance-visibility-expected.png |  Bin 17288 -> 17330 bytes
 .../forms/input-appearance-visibility-expected.txt |    6 +-
 .../forms/input-appearance-width-expected.checksum |    2 +-
 .../fast/forms/input-appearance-width-expected.png |  Bin 21419 -> 21502 bytes
 .../fast/forms/input-appearance-width-expected.txt |   24 +-
 .../fast/forms/input-baseline-expected.checksum    |    2 +-
 .../mac/fast/forms/input-baseline-expected.png     |  Bin 23472 -> 23479 bytes
 .../mac/fast/forms/input-baseline-expected.txt     |   22 +-
 .../forms/input-disabled-color-expected.checksum   |    2 +-
 .../fast/forms/input-disabled-color-expected.png   |  Bin 49110 -> 47649 bytes
 .../fast/forms/input-disabled-color-expected.txt   |  198 ++--
 ...ouble-click-selection-gap-bug-expected.checksum |    2 +-
 ...put-double-click-selection-gap-bug-expected.png |  Bin 18205 -> 18447 bytes
 ...put-double-click-selection-gap-bug-expected.txt |   28 +-
 .../fast/forms/input-paste-undo-expected.checksum  |    2 +-
 .../mac/fast/forms/input-paste-undo-expected.png   |  Bin 23103 -> 23091 bytes
 .../mac/fast/forms/input-paste-undo-expected.txt   |    6 +-
 .../input-readonly-autoscroll-expected.checksum    |    2 +-
 .../forms/input-readonly-autoscroll-expected.png   |  Bin 22927 -> 22900 bytes
 .../forms/input-readonly-autoscroll-expected.txt   |    8 +-
 .../forms/input-readonly-dimmed-expected.checksum  |    2 +-
 .../fast/forms/input-readonly-dimmed-expected.png  |  Bin 18116 -> 18028 bytes
 .../fast/forms/input-readonly-dimmed-expected.txt  |    6 +-
 .../forms/input-readonly-empty-expected.checksum   |    2 +-
 .../fast/forms/input-readonly-empty-expected.png   |  Bin 15766 -> 16578 bytes
 .../fast/forms/input-readonly-empty-expected.txt   |    6 +-
 .../mac/fast/forms/input-spaces-expected.checksum  |    2 +-
 .../mac/fast/forms/input-spaces-expected.png       |  Bin 20178 -> 19265 bytes
 .../mac/fast/forms/input-spaces-expected.txt       |    6 +-
 .../mac/fast/forms/input-table-expected.txt        |   18 +-
 .../input-text-click-inside-expected.checksum      |    2 +-
 .../forms/input-text-click-inside-expected.png     |  Bin 20522 -> 20529 bytes
 .../forms/input-text-click-inside-expected.txt     |    6 +-
 .../input-text-click-outside-expected.checksum     |    2 +-
 .../forms/input-text-click-outside-expected.png    |  Bin 20346 -> 20326 bytes
 .../forms/input-text-click-outside-expected.txt    |    6 +-
 .../input-text-double-click-expected.checksum      |    2 +-
 .../forms/input-text-double-click-expected.png     |  Bin 18494 -> 18473 bytes
 .../forms/input-text-double-click-expected.txt     |    6 +-
 .../forms/input-text-drag-down-expected.checksum   |    2 +-
 .../fast/forms/input-text-drag-down-expected.png   |  Bin 20125 -> 20101 bytes
 .../fast/forms/input-text-drag-down-expected.txt   |    6 +-
 .../forms/input-text-maxlength-expected.checksum   |    2 +-
 .../fast/forms/input-text-maxlength-expected.png   |  Bin 61128 -> 60988 bytes
 .../fast/forms/input-text-maxlength-expected.txt   |  172 +-
 .../input-text-option-delete-expected.checksum     |    2 +-
 .../forms/input-text-option-delete-expected.png    |  Bin 18162 -> 18150 bytes
 .../forms/input-text-option-delete-expected.txt    |    6 +-
 .../input-text-paste-maxlength-expected.checksum   |    2 +-
 .../forms/input-text-paste-maxlength-expected.png  |  Bin 51892 -> 51953 bytes
 .../forms/input-text-paste-maxlength-expected.txt  |  130 +-
 ...nput-text-scroll-left-on-blur-expected.checksum |    2 +-
 .../input-text-scroll-left-on-blur-expected.png    |  Bin 23523 -> 23400 bytes
 .../input-text-scroll-left-on-blur-expected.txt    |   30 +-
 ...nput-text-self-emptying-click-expected.checksum |    2 +-
 .../input-text-self-emptying-click-expected.png    |  Bin 19524 -> 19505 bytes
 .../input-text-self-emptying-click-expected.txt    |    6 +-
 .../forms/input-text-word-wrap-expected.checksum   |    2 +-
 .../fast/forms/input-text-word-wrap-expected.png   |  Bin 18699 -> 18760 bytes
 .../fast/forms/input-text-word-wrap-expected.txt   |    6 +-
 .../forms/input-type-change2-expected.checksum     |    2 +-
 .../mac/fast/forms/input-type-change2-expected.png |  Bin 23623 -> 23487 bytes
 .../mac/fast/forms/input-type-change2-expected.txt |    6 +-
 .../forms/input-type-text-min-width-expected.txt   |    6 +-
 .../mac/fast/forms/input-value-expected.checksum   |    2 +-
 .../mac/fast/forms/input-value-expected.png        |  Bin 87713 -> 87687 bytes
 .../mac/fast/forms/input-value-expected.txt        |   30 +-
 .../mac/fast/forms/input-width-expected.checksum   |    2 +-
 .../mac/fast/forms/input-width-expected.png        |  Bin 11310 -> 11474 bytes
 .../mac/fast/forms/input-width-expected.txt        |    6 +-
 ...-overflow-in-textarea-padding-expected.checksum |    2 +-
 ...nebox-overflow-in-textarea-padding-expected.png |  Bin 20931 -> 21109 bytes
 ...nebox-overflow-in-textarea-padding-expected.txt |   24 +-
 .../forms/negativeLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/negativeLineHeight-expected.png |  Bin 24377 -> 24387 bytes
 .../mac/fast/forms/negativeLineHeight-expected.txt |   22 +-
 .../forms/password-placeholder-expected.checksum   |    2 +-
 .../fast/forms/password-placeholder-expected.png   |  Bin 12333 -> 12140 bytes
 .../fast/forms/password-placeholder-expected.txt   |    6 +-
 ...ord-placeholder-text-security-expected.checksum |    2 +-
 ...password-placeholder-text-security-expected.png |  Bin 32293 -> 32291 bytes
 ...password-placeholder-text-security-expected.txt |   24 +-
 .../placeholder-pseudo-style-expected.checksum     |    2 +-
 .../forms/placeholder-pseudo-style-expected.png    |  Bin 21930 -> 21843 bytes
 .../forms/placeholder-pseudo-style-expected.txt    |   60 +-
 .../placeholder-set-attribute-expected.checksum    |    2 +-
 .../forms/placeholder-set-attribute-expected.png   |  Bin 17163 -> 17087 bytes
 .../forms/placeholder-set-attribute-expected.txt   |    6 +-
 .../forms/placeholder-set-value-expected.checksum  |    2 +-
 .../fast/forms/placeholder-set-value-expected.png  |  Bin 16450 -> 23538 bytes
 .../fast/forms/placeholder-set-value-expected.txt  |   10 +-
 ...h-cancel-button-style-sharing-expected.checksum |    2 +-
 ...search-cancel-button-style-sharing-expected.png |  Bin 17836 -> 17682 bytes
 ...search-cancel-button-style-sharing-expected.txt |   24 +-
 ...ch-display-none-cancel-button-expected.checksum |    2 +-
 .../search-display-none-cancel-button-expected.png |  Bin 17826 -> 17613 bytes
 .../search-display-none-cancel-button-expected.txt |    8 +-
 ...rch-placeholder-value-changed-expected.checksum |    2 +-
 .../search-placeholder-value-changed-expected.png  |  Bin 13192 -> 13002 bytes
 .../search-placeholder-value-changed-expected.txt  |   10 +-
 .../mac/fast/forms/search-rtl-expected.checksum    |    2 +-
 .../mac/fast/forms/search-rtl-expected.png         |  Bin 29068 -> 29018 bytes
 .../mac/fast/forms/search-rtl-expected.txt         |   62 +-
 .../forms/search-transformed-expected.checksum     |    2 +-
 .../mac/fast/forms/search-transformed-expected.png |  Bin 18634 -> 25994 bytes
 .../mac/fast/forms/search-transformed-expected.txt |   10 +-
 .../mac/fast/forms/search-zoomed-expected.checksum |    2 +-
 .../mac/fast/forms/search-zoomed-expected.png      |  Bin 28283 -> 28261 bytes
 .../mac/fast/forms/search-zoomed-expected.txt      |   10 +-
 .../forms/searchfield-heights-expected.checksum    |    2 +-
 .../fast/forms/searchfield-heights-expected.png    |  Bin 19095 -> 19092 bytes
 .../fast/forms/searchfield-heights-expected.txt    |   38 +-
 .../forms/tabbing-input-iframe-expected.checksum   |    2 +-
 .../fast/forms/tabbing-input-iframe-expected.png   |  Bin 19080 -> 19082 bytes
 .../fast/forms/tabbing-input-iframe-expected.txt   |   22 +-
 .../forms/textAreaLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/textAreaLineHeight-expected.png |  Bin 48117 -> 45936 bytes
 .../mac/fast/forms/textAreaLineHeight-expected.txt |  102 +-
 .../fast/forms/textarea-align-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-align-expected.png     |  Bin 28848 -> 28906 bytes
 .../mac/fast/forms/textarea-align-expected.txt     |   66 +-
 .../forms/textarea-rows-cols-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-rows-cols-expected.png |  Bin 46948 -> 65390 bytes
 .../mac/fast/forms/textarea-rows-cols-expected.txt |  252 ++--
 .../forms/textarea-scroll-height-expected.checksum |    2 +-
 .../fast/forms/textarea-scroll-height-expected.png |  Bin 30971 -> 30857 bytes
 .../fast/forms/textarea-scroll-height-expected.txt |   96 +-
 .../forms/textarea-scrollbar-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-scrollbar-expected.png |  Bin 20145 -> 20245 bytes
 .../mac/fast/forms/textarea-scrollbar-expected.txt |   60 +-
 .../forms/textarea-scrolled-type-expected.checksum |    2 +-
 .../fast/forms/textarea-scrolled-type-expected.png |  Bin 21736 -> 21968 bytes
 .../fast/forms/textarea-scrolled-type-expected.txt |  100 +-
 .../forms/textarea-setinnerhtml-expected.checksum  |    2 +-
 .../fast/forms/textarea-setinnerhtml-expected.png  |  Bin 12658 -> 12767 bytes
 .../fast/forms/textarea-setinnerhtml-expected.txt  |   10 +-
 .../fast/forms/textarea-width-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-width-expected.png     |  Bin 34699 -> 30783 bytes
 .../mac/fast/forms/textarea-width-expected.txt     |   28 +-
 .../textfield-drag-into-disabled-expected.checksum |    2 +-
 .../textfield-drag-into-disabled-expected.png      |  Bin 27697 -> 27604 bytes
 .../textfield-drag-into-disabled-expected.txt      |   18 +-
 .../fast/forms/textfield-outline-expected.checksum |    2 +-
 .../mac/fast/forms/textfield-outline-expected.png  |  Bin 18261 -> 18198 bytes
 .../mac/fast/forms/textfield-outline-expected.txt  |    6 +-
 .../forms/textfield-overflow-expected.checksum     |    2 +-
 .../mac/fast/forms/textfield-overflow-expected.png |  Bin 11728 -> 11059 bytes
 .../mac/fast/forms/textfield-overflow-expected.txt |    6 +-
 .../visual-hebrew-text-field-expected.checksum     |    2 +-
 .../forms/visual-hebrew-text-field-expected.png    |  Bin 29381 -> 29379 bytes
 .../forms/visual-hebrew-text-field-expected.txt    |    6 +-
 .../mac/fast/invalid/residual-style-expected.txt   |    8 +-
 .../lists/dynamic-marker-crash-expected.checksum   |    2 +-
 .../fast/lists/dynamic-marker-crash-expected.png   |  Bin 16214 -> 16247 bytes
 .../fast/lists/dynamic-marker-crash-expected.txt   |    6 +-
 .../fast/overflow/overflow-x-y-expected.checksum   |    2 +-
 .../mac/fast/overflow/overflow-x-y-expected.png    |  Bin 30889 -> 30863 bytes
 .../mac/fast/overflow/overflow-x-y-expected.txt    |   26 +-
 .../parser/comment-in-textarea-expected.checksum   |    2 +-
 .../fast/parser/comment-in-textarea-expected.png   |  Bin 15290 -> 15049 bytes
 .../fast/parser/comment-in-textarea-expected.txt   |   22 +-
 .../entity-comment-in-textarea-expected.checksum   |    2 +-
 .../parser/entity-comment-in-textarea-expected.png |  Bin 14901 -> 15050 bytes
 .../parser/entity-comment-in-textarea-expected.txt |   16 +-
 .../open-comment-in-textarea-expected.checksum     |    2 +-
 .../parser/open-comment-in-textarea-expected.png   |  Bin 16913 -> 16050 bytes
 .../parser/open-comment-in-textarea-expected.txt   |   26 +-
 ...-by-invalidateSelection-crash-expected.checksum |    2 +-
 ...ction-by-invalidateSelection-crash-expected.png |  Bin 11756 -> 11723 bytes
 ...ction-by-invalidateSelection-crash-expected.txt |    6 +-
 .../repaint/search-field-cancel-expected.checksum  |    2 +-
 .../fast/repaint/search-field-cancel-expected.png  |  Bin 14259 -> 21200 bytes
 .../fast/repaint/search-field-cancel-expected.txt  |   10 +-
 .../repaint/subtree-root-skipped-expected.checksum |    2 +-
 .../fast/repaint/subtree-root-skipped-expected.png |  Bin 13935 -> 13935 bytes
 .../fast/repaint/subtree-root-skipped-expected.txt |    6 +-
 .../replaced/replaced-breaking-expected.checksum   |    2 +-
 .../fast/replaced/replaced-breaking-expected.png   |  Bin 26204 -> 26190 bytes
 .../fast/replaced/replaced-breaking-expected.txt   |   12 +-
 .../replaced-breaking-mixture-expected.checksum    |    2 +-
 .../replaced-breaking-mixture-expected.png         |  Bin 18252 -> 18280 bytes
 .../replaced-breaking-mixture-expected.txt         |   12 +-
 .../width100percent-searchfield-expected.checksum  |    2 +-
 .../width100percent-searchfield-expected.png       |  Bin 18572 -> 18573 bytes
 .../width100percent-searchfield-expected.txt       |   44 +-
 .../width100percent-textarea-expected.checksum     |    2 +-
 .../replaced/width100percent-textarea-expected.png |  Bin 16709 -> 16303 bytes
 .../replaced/width100percent-textarea-expected.txt |  114 +-
 .../width100percent-textfield-expected.checksum    |    2 +-
 .../width100percent-textfield-expected.png         |  Bin 17012 -> 17013 bytes
 .../width100percent-textfield-expected.txt         |   36 +-
 .../platform/mac/fast/table/003-expected.checksum  |    2 +-
 .../platform/mac/fast/table/003-expected.png       |  Bin 38785 -> 38786 bytes
 .../platform/mac/fast/table/003-expected.txt       |   36 +-
 .../fast/table/colspanMinWidth-expected.checksum   |    2 +-
 .../mac/fast/table/colspanMinWidth-expected.png    |  Bin 11652 -> 10924 bytes
 .../mac/fast/table/colspanMinWidth-expected.txt    |   32 +-
 .../table/spanOverlapRepaint-expected.checksum     |    2 +-
 .../mac/fast/table/spanOverlapRepaint-expected.png |  Bin 12276 -> 12267 bytes
 .../mac/fast/table/spanOverlapRepaint-expected.txt |   30 +-
 .../table/text-field-baseline-expected.checksum    |    2 +-
 .../fast/table/text-field-baseline-expected.png    |  Bin 47879 -> 47877 bytes
 .../fast/table/text-field-baseline-expected.txt    |   50 +-
 .../rtl-white-space-pre-wrap-expected.checksum     |    2 +-
 .../rtl-white-space-pre-wrap-expected.png          |  Bin 39678 -> 39676 bytes
 .../rtl-white-space-pre-wrap-expected.txt          |   22 +-
 .../text/textIteratorNilRenderer-expected.checksum |    2 +-
 .../fast/text/textIteratorNilRenderer-expected.png |  Bin 15616 -> 15718 bytes
 .../fast/text/textIteratorNilRenderer-expected.txt |   18 +-
 ...ransformed-focused-text-input-expected.checksum |    2 +-
 .../transformed-focused-text-input-expected.png    |  Bin 6501 -> 14282 bytes
 .../transformed-focused-text-input-expected.txt    |    6 +-
 .../tests/navigation/anchor-basic-expected.txt     |   66 +-
 .../tests/navigation/anchor-frames-expected.txt    |   66 +-
 .../navigation/anchor-goback-expected.checksum     |    2 +-
 .../tests/navigation/anchor-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../tests/navigation/anchor-goback-expected.txt    |   68 +-
 .../navigation/anchor-subframeload-expected.txt    |   66 +-
 .../javascriptlink-basic-expected.checksum         |    2 +-
 .../navigation/javascriptlink-basic-expected.png   |  Bin 83776 -> 83434 bytes
 .../navigation/javascriptlink-basic-expected.txt   |   64 +-
 .../javascriptlink-frames-expected.checksum        |    2 +-
 .../navigation/javascriptlink-frames-expected.png  |  Bin 85705 -> 85630 bytes
 .../navigation/javascriptlink-frames-expected.txt  |   66 +-
 .../javascriptlink-goback-expected.checksum        |    2 +-
 .../navigation/javascriptlink-goback-expected.png  |  Bin 82950 -> 82791 bytes
 .../navigation/javascriptlink-goback-expected.txt  |   68 +-
 .../javascriptlink-subframeload-expected.checksum  |    2 +-
 .../javascriptlink-subframeload-expected.png       |  Bin 85705 -> 85630 bytes
 .../javascriptlink-subframeload-expected.txt       |   64 +-
 .../metaredirect-basic-expected.checksum           |    2 +-
 .../navigation/metaredirect-basic-expected.png     |  Bin 83776 -> 83434 bytes
 .../navigation/metaredirect-basic-expected.txt     |   64 +-
 .../metaredirect-frames-expected.checksum          |    2 +-
 .../navigation/metaredirect-frames-expected.png    |  Bin 85705 -> 85630 bytes
 .../navigation/metaredirect-frames-expected.txt    |   64 +-
 .../metaredirect-goback-expected.checksum          |    2 +-
 .../navigation/metaredirect-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../navigation/metaredirect-goback-expected.txt    |   68 +-
 .../metaredirect-subframeload-expected.checksum    |    2 +-
 .../metaredirect-subframeload-expected.png         |  Bin 85705 -> 85630 bytes
 .../metaredirect-subframeload-expected.txt         |   64 +-
 .../navigation/post-goback2-expected.checksum      |    2 +-
 .../tests/navigation/post-goback2-expected.png     |  Bin 82950 -> 82791 bytes
 .../tests/navigation/post-goback2-expected.txt     |   68 +-
 .../postredirect-goback2-expected.checksum         |    2 +-
 .../navigation/postredirect-goback2-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/postredirect-goback2-expected.txt   |   68 +-
 .../navigation/redirect302-basic-expected.checksum |    2 +-
 .../navigation/redirect302-basic-expected.png      |  Bin 83776 -> 83434 bytes
 .../navigation/redirect302-basic-expected.txt      |   64 +-
 .../redirect302-frames-expected.checksum           |    2 +-
 .../navigation/redirect302-frames-expected.png     |  Bin 85705 -> 85630 bytes
 .../navigation/redirect302-frames-expected.txt     |   64 +-
 .../redirect302-goback-expected.checksum           |    2 +-
 .../navigation/redirect302-goback-expected.png     |  Bin 82950 -> 82791 bytes
 .../navigation/redirect302-goback-expected.txt     |   68 +-
 .../redirect302-subframeload-expected.checksum     |    2 +-
 .../redirect302-subframeload-expected.png          |  Bin 85705 -> 85630 bytes
 .../redirect302-subframeload-expected.txt          |   64 +-
 .../navigation/relativeanchor-basic-expected.txt   |   66 +-
 .../navigation/relativeanchor-frames-expected.txt  |   66 +-
 .../navigation/relativeanchor-goback-expected.txt  |   66 +-
 .../slowmetaredirect-basic-expected.checksum       |    2 +-
 .../navigation/slowmetaredirect-basic-expected.png |  Bin 83776 -> 83434 bytes
 .../navigation/slowmetaredirect-basic-expected.txt |   64 +-
 .../slowtimerredirect-basic-expected.checksum      |    2 +-
 .../slowtimerredirect-basic-expected.png           |  Bin 83776 -> 83434 bytes
 .../slowtimerredirect-basic-expected.txt           |   64 +-
 .../navigation/success200-basic-expected.checksum  |    2 +-
 .../tests/navigation/success200-basic-expected.png |  Bin 83776 -> 83434 bytes
 .../tests/navigation/success200-basic-expected.txt |   64 +-
 .../navigation/success200-frames-expected.checksum |    2 +-
 .../navigation/success200-frames-expected.png      |  Bin 85705 -> 85630 bytes
 .../navigation/success200-frames-expected.txt      |   64 +-
 .../success200-frames-loadsame-expected.checksum   |    2 +-
 .../success200-frames-loadsame-expected.png        |  Bin 85705 -> 85630 bytes
 .../success200-frames-loadsame-expected.txt        |   64 +-
 .../navigation/success200-goback-expected.checksum |    2 +-
 .../navigation/success200-goback-expected.png      |  Bin 82950 -> 82791 bytes
 .../navigation/success200-goback-expected.txt      |   68 +-
 .../success200-loadsame-expected.checksum          |    2 +-
 .../navigation/success200-loadsame-expected.png    |  Bin 83776 -> 83434 bytes
 .../navigation/success200-loadsame-expected.txt    |   64 +-
 .../navigation/success200-reload-expected.checksum |    2 +-
 .../navigation/success200-reload-expected.png      |  Bin 78245 -> 78117 bytes
 .../navigation/success200-reload-expected.txt      |   64 +-
 .../success200-subframeload-expected.checksum      |    2 +-
 .../success200-subframeload-expected.png           |  Bin 85705 -> 85630 bytes
 .../success200-subframeload-expected.txt           |   64 +-
 .../timerredirect-basic-expected.checksum          |    2 +-
 .../navigation/timerredirect-basic-expected.png    |  Bin 83776 -> 83434 bytes
 .../navigation/timerredirect-basic-expected.txt    |   64 +-
 .../timerredirect-frames-expected.checksum         |    2 +-
 .../navigation/timerredirect-frames-expected.png   |  Bin 85705 -> 85630 bytes
 .../navigation/timerredirect-frames-expected.txt   |   64 +-
 .../timerredirect-goback-expected.checksum         |    2 +-
 .../navigation/timerredirect-goback-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/timerredirect-goback-expected.txt   |   68 +-
 .../timerredirect-subframeload-expected.checksum   |    2 +-
 .../timerredirect-subframeload-expected.png        |  Bin 85705 -> 85630 bytes
 .../timerredirect-subframeload-expected.txt        |   64 +-
 .../svg/custom/inline-svg-in-xhtml-expected.txt    |    6 +-
 .../platform/mac/svg/hixie/mixed/003-expected.txt  |    6 +-
 .../tables/mozilla/bugs/bug1188-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug1188-expected.png   |  Bin 52876 -> 52877 bytes
 .../mac/tables/mozilla/bugs/bug1188-expected.txt   |   24 +-
 .../tables/mozilla/bugs/bug12384-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug12384-expected.png  |  Bin 11767 -> 11796 bytes
 .../mac/tables/mozilla/bugs/bug12384-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug18359-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug18359-expected.png  |  Bin 27904 -> 27931 bytes
 .../mac/tables/mozilla/bugs/bug18359-expected.txt  |   22 +-
 .../mozilla/bugs/bug194024-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug194024-expected.png |  Bin 41325 -> 41328 bytes
 .../mac/tables/mozilla/bugs/bug194024-expected.txt |  214 ++--
 .../tables/mozilla/bugs/bug24200-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug24200-expected.png  |  Bin 20965 -> 20970 bytes
 .../mac/tables/mozilla/bugs/bug24200-expected.txt  |   12 +-
 .../mozilla/bugs/bug2479-2-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-2-expected.png |  Bin 45669 -> 45663 bytes
 .../mac/tables/mozilla/bugs/bug2479-2-expected.txt |   70 +-
 .../mozilla/bugs/bug2479-3-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-3-expected.png |  Bin 93211 -> 93206 bytes
 .../mac/tables/mozilla/bugs/bug2479-3-expected.txt |    8 +-
 .../mac/tables/mozilla/bugs/bug2479-4-expected.txt |   14 +-
 .../tables/mozilla/bugs/bug28928-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug28928-expected.png  |  Bin 27374 -> 27356 bytes
 .../mac/tables/mozilla/bugs/bug28928-expected.txt  |   36 +-
 .../tables/mozilla/bugs/bug30559-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30559-expected.png  |  Bin 18415 -> 18425 bytes
 .../mac/tables/mozilla/bugs/bug30559-expected.txt  |   26 +-
 .../tables/mozilla/bugs/bug30692-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30692-expected.png  |  Bin 37249 -> 37255 bytes
 .../mac/tables/mozilla/bugs/bug30692-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug4382-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4382-expected.png   |  Bin 23533 -> 23455 bytes
 .../mac/tables/mozilla/bugs/bug4382-expected.txt   |   12 +-
 .../tables/mozilla/bugs/bug4527-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4527-expected.png   |  Bin 24681 -> 24682 bytes
 .../mac/tables/mozilla/bugs/bug4527-expected.txt   |   14 +-
 .../mozilla/bugs/bug46368-1-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-1-expected.png    |  Bin 39486 -> 39475 bytes
 .../tables/mozilla/bugs/bug46368-1-expected.txt    |    6 +-
 .../mozilla/bugs/bug46368-2-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-2-expected.png    |  Bin 24157 -> 24154 bytes
 .../tables/mozilla/bugs/bug46368-2-expected.txt    |    6 +-
 .../tables/mozilla/bugs/bug51037-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug51037-expected.png  |  Bin 21223 -> 21203 bytes
 .../mac/tables/mozilla/bugs/bug51037-expected.txt  |   12 +-
 .../tables/mozilla/bugs/bug55545-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug55545-expected.png  |  Bin 12938 -> 12853 bytes
 .../mac/tables/mozilla/bugs/bug55545-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug59354-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug59354-expected.png  |  Bin 23386 -> 23306 bytes
 .../mac/tables/mozilla/bugs/bug59354-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug7342-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug7342-expected.png   |  Bin 32097 -> 32084 bytes
 .../mac/tables/mozilla/bugs/bug7342-expected.txt   |   20 +-
 .../tables/mozilla/bugs/bug96334-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug96334-expected.png  |  Bin 32634 -> 32637 bytes
 .../mac/tables/mozilla/bugs/bug96334-expected.txt  |   14 +-
 .../tables/mozilla/bugs/bug99948-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug99948-expected.png  |  Bin 16498 -> 16497 bytes
 .../mac/tables/mozilla/bugs/bug99948-expected.txt  |   16 +-
 .../tables/mozilla/dom/tableDom-expected.checksum  |    2 +-
 .../mac/tables/mozilla/dom/tableDom-expected.png   |  Bin 19180 -> 19186 bytes
 .../mac/tables/mozilla/dom/tableDom-expected.txt   |   52 +-
 .../mozilla/other/move_row-expected.checksum       |    2 +-
 .../mac/tables/mozilla/other/move_row-expected.png |  Bin 19002 -> 18777 bytes
 .../mac/tables/mozilla/other/move_row-expected.txt |   22 +-
 .../bugs/bug2479-5-expected.txt                    |   14 +-
 .../bugs/bug92647-1-expected.checksum              |    2 +-
 .../bugs/bug92647-1-expected.png                   |  Bin 15375 -> 15377 bytes
 .../bugs/bug92647-1-expected.txt                   |   38 +-
 .../custom/resources/svg-fonts-in-text-controls.js |   20 +
 .../custom/svg-fonts-in-text-controls-expected.txt |   11 +
 .../svg/custom/svg-fonts-in-text-controls.html     |   13 +
 WebCore/ChangeLog                                  |   60 +
 WebCore/css/html4.css                              |    2 +
 WebCore/css/themeWin.css                           |    4 -
 WebCore/platform/graphics/SimpleFontData.cpp       |   70 +-
 WebCore/platform/graphics/SimpleFontData.h         |    7 +
 .../chromium/SimpleFontDataChromiumWin.cpp         |    5 +
 .../graphics/chromium/SimpleFontDataLinux.cpp      |    5 +
 WebCore/platform/graphics/mac/SimpleFontDataMac.mm |   21 +
 .../platform/graphics/win/SimpleFontDataCGWin.cpp  |    7 +
 .../graphics/win/SimpleFontDataCairoWin.cpp        |    7 +
 .../platform/graphics/win/SimpleFontDataWin.cpp    |    2 +
 WebCore/rendering/RenderTextControl.cpp            |    6 +-
 WebCore/rendering/RenderTextControlMultiLine.cpp   |    4 -
 WebCore/rendering/RenderTextControlSingleLine.cpp  |    4 +
 538 files changed, 4809 insertions(+), 4214 deletions(-)
Comment 40 Adele Peterson 2009-04-03 18:37:14 PDT
Comment on attachment 29235 [details]
Make textarea metrics more closely match IEs.

I think a better fallback would be to use the space glyph if there's no "0" or no "w".

 77         Vector<SVGGlyphIdentifier> numeralZeroGlyphs;
 78         associatedFontElement->getGlyphIdentifiersForString(String("0", 1), numeralZeroGlyphs);
 79         // FIXME: We should probably do something better than pick zero if there's no numeral 0.
 80         m_avgCharWidth = numeralZeroGlyphs.isEmpty() ? 0 : static_cast<float>(numeralZeroGlyphs.first().horizontalAdvanceX * scale);
 81 
 82         Vector<SVGGlyphIdentifier> letterWGlyphs;
 83         associatedFontElement->getGlyphIdentifiersForString(String("W", 1), letterWGlyphs);
 84         // FIXME: We should probably do something better than pick zero if there's no letter W.
 85         m_maxCharWidth = letterWGlyphs.isEmpty() ? 0 : static_cast<float>(letterWGlyphs.first().horizontalAdvanceX * scale);
 86 
 87         // FIXME: Should probably fill these in as we do above.
7288         m_spaceGlyph = 0;
7389         m_spaceWidth = 0;


It might be better to init m_avgCharWidth and other member variables all in one place.

 103 #if !PLATFORM(MAC) && !PLATFORM(CHROMIUM) && !PLATFORM(WIN)
 104 void SimpleFontData::platformCharWidthInit()
 105 {
 106     m_avgCharWidth = 0.0;


If there is a good OS/2 table, shouldn't we return early?  I tried this out, and got a weird value for m_avgCharWidth (-1003 or something).  Do you see that too?

 288         CFRelease(os2TableRef);
 289     }
 290 
 291     // if there was no OS/2 table or it was malformed, we (by definition) can't
 292     // match Windows metrics, so we fall back to the previous WebKit behavior of using
 293     // the width of the digit '0' as a reasonable estimate. This method also sets
 294     // m_maxCharWidth.
 295     initCharWidthsFromZeroAndW();

More comments to come in the next few days...
Comment 41 Ojan Vafai 2009-04-06 12:06:04 PDT
(In reply to comment #40)
> (From update of attachment 29235 [details] [review])
> I think a better fallback would be to use the space glyph if there's no "0" or
> no "w".

Seems reasonable to me. I'll add that. Is it safe to assume that every font has a space glyph?

>  77         Vector<SVGGlyphIdentifier> numeralZeroGlyphs;
>  78         associatedFontElement->getGlyphIdentifiersForString(String("0", 1),
> numeralZeroGlyphs);
>  79         // FIXME: We should probably do something better than pick zero if
> there's no numeral 0.
>  80         m_avgCharWidth = numeralZeroGlyphs.isEmpty() ? 0 :
> static_cast<float>(numeralZeroGlyphs.first().horizontalAdvanceX * scale);
>  81 
>  82         Vector<SVGGlyphIdentifier> letterWGlyphs;
>  83         associatedFontElement->getGlyphIdentifiersForString(String("W", 1),
> letterWGlyphs);
>  84         // FIXME: We should probably do something better than pick zero if
> there's no letter W.
>  85         m_maxCharWidth = letterWGlyphs.isEmpty() ? 0 :
> static_cast<float>(letterWGlyphs.first().horizontalAdvanceX * scale);
>  86 
>  87         // FIXME: Should probably fill these in as we do above.
> 7288         m_spaceGlyph = 0;
> 7389         m_spaceWidth = 0;
> 
> It might be better to init m_avgCharWidth and other member variables all in one
> place.
> 
>  103 #if !PLATFORM(MAC) && !PLATFORM(CHROMIUM) && !PLATFORM(WIN)
>  104 void SimpleFontData::platformCharWidthInit()
>  105 {
>  106     m_avgCharWidth = 0.0;
> 

Yeah, I'm not very happy with the current organization either.

Another option would be to not have a platformCharWidthInit method at all. Just inline this code into platformInit or platformGlyphInit for mac/windows and have the linux build break? Or I could take a stab at implementing this for every platform, but I don't have a linux machine, so I have no way of testing. I would leave initCharWidthsFromZeroAndW though so that Mac/Linux could continue to share it. Does that seem better to you?

> If there is a good OS/2 table, shouldn't we return early?  I tried this out,
> and got a weird value for m_avgCharWidth (-1003 or something).  Do you see that
> too?

We only init avgCharWidth from the OS/2 table. So, we still need to init maxCharWidth, which I'm told is not in the OS/2 table. If m_avgCharWidth has a non-positive value, then we over-write it with the width of a 0 in initCharWidthsFromZeroAndW. My understanding is that some fonts just have garbage values here. I didn't actually write the mac implementation here though. Amanda (cc'ed) wrote it. Amanda, can you comment on this bit?

>  288         CFRelease(os2TableRef);
>  289     }
>  290 
>  291     // if there was no OS/2 table or it was malformed, we (by definition)
> can't
>  292     // match Windows metrics, so we fall back to the previous WebKit
> behavior of using
>  293     // the width of the digit '0' as a reasonable estimate. This method
> also sets
>  294     // m_maxCharWidth.
>  295     initCharWidthsFromZeroAndW();
> 
> More comments to come in the next few days...
> 
Comment 42 Amanda Walker 2009-04-06 12:17:35 PDT
(In reply to comment #41)
> (In reply to comment #40)
> > If there is a good OS/2 table, shouldn't we return early?  I tried this out,
> > and got a weird value for m_avgCharWidth (-1003 or something).  Do you see that
> > too?
> 
> We only init avgCharWidth from the OS/2 table. So, we still need to init
> maxCharWidth, which I'm told is not in the OS/2 table. If m_avgCharWidth has a
> non-positive value, then we over-write it with the width of a 0 in
> initCharWidthsFromZeroAndW. My understanding is that some fonts just have
> garbage values here. I didn't actually write the mac implementation here
> though. Amanda (cc'ed) wrote it. Amanda, can you comment on this bit?

Yes.  There are a number of non-Windows fonts that have OS/2 tables but do not have valid data in the avgCharWidth field (several of Apple's system-supplied fonts, for example).  So as a sanity check, if the avgCharWidth from the table is clearly wrong, we discard it and fall through to the "compute a reasonable estimate" code path.  The other comments in this bug about how to better compute that estimate all look quite reasonable.  In the end, it's a judgement call anyway, since "number of characters wide" isn't actually a geometric measurement.
Comment 43 Adele Peterson 2009-04-06 23:47:46 PDT
(In reply to comment #41)
> (In reply to comment #40)
> > (From update of attachment 29235 [details] [review] [review])
> > I think a better fallback would be to use the space glyph if there's no "0" or
> > no "w".
> 
> Seems reasonable to me. I'll add that. Is it safe to assume that every font has
> a space glyph?

No, but for some fonts (like non-roman ones) its more likely they'll have a space than "0" or "w".

> Yeah, I'm not very happy with the current organization either.
> 
> Another option would be to not have a platformCharWidthInit method at all. Just
> inline this code into platformInit or platformGlyphInit for mac/windows and
> have the linux build break? Or I could take a stab at implementing this for
> every platform, but I don't have a linux machine, so I have no way of testing.
> I would leave initCharWidthsFromZeroAndW though so that Mac/Linux could
> continue to share it. Does that seem better to you?

I don't think it needs to be inline.  But the ifdef'd version of platformCharWidthInit is unnecessary.  Put this default implementation in the other platform files, even if you can't test.  Then you could file bugs for the other platforms for what you think might be missing implementation details.

A few more comments...

- Instead of using hardcoded constants in the OS/2 table code, it would be better to use descriptively named const ints.
- Use a RetainPtr for os2TableRef - then  you can avoid CFRetain and CFRelease here.
Comment 44 Adele Peterson 2009-04-06 23:50:47 PDT
(In reply to comment #42)
> (In reply to comment #41)
> > (In reply to comment #40)
> > > If there is a good OS/2 table, shouldn't we return early?  I tried this out,
> > > and got a weird value for m_avgCharWidth (-1003 or something).  Do you see that
> > > too?
> > 
> > We only init avgCharWidth from the OS/2 table. So, we still need to init
> > maxCharWidth, which I'm told is not in the OS/2 table. If m_avgCharWidth has a
> > non-positive value, then we over-write it with the width of a 0 in
> > initCharWidthsFromZeroAndW. My understanding is that some fonts just have
> > garbage values here. I didn't actually write the mac implementation here
> > though. Amanda (cc'ed) wrote it. Amanda, can you comment on this bit?
> 
> Yes.  There are a number of non-Windows fonts that have OS/2 tables but do not
> have valid data in the avgCharWidth field (several of Apple's system-supplied
> fonts, for example).  So as a sanity check, if the avgCharWidth from the table
> is clearly wrong, we discard it and fall through to the "compute a reasonable
> estimate" code path.  The other comments in this bug about how to better
> compute that estimate all look quite reasonable.  In the end, it's a judgement
> call anyway, since "number of characters wide" isn't actually a geometric
> measurement.
> 

Are there other indicators of invalid data from the OS/2 table?  Is checking for a negative number good enough?  For example, what if the avg is more than the maximum?
Comment 45 Ojan Vafai 2009-04-08 16:50:47 PDT
I've done all of the comments except the two below. I'm working through layout test changes now and will upload a new patch soonish.

(In reply to comment #43)
> - Use a RetainPtr for os2TableRef - then  you can avoid CFRetain and CFRelease
> here.

I declare n00b-dom here. I've never used CF apis or RetainPtr. I tried to hack it based off other RetainPtr usages in this file, but I really don't know what I'm doing and couldn't get it to compile. Mind showing me what this would look like?

(In reply to comment #44)
> (In reply to comment #42)
> > (In reply to comment #41)
> > > (In reply to comment #40)
> > > > If there is a good OS/2 table, shouldn't we return early?  I tried this out,
> > > > and got a weird value for m_avgCharWidth (-1003 or something).  Do you see that
> > > > too?
> > > 
> > > We only init avgCharWidth from the OS/2 table. So, we still need to init
> > > maxCharWidth, which I'm told is not in the OS/2 table. If m_avgCharWidth has a
> > > non-positive value, then we over-write it with the width of a 0 in
> > > initCharWidthsFromZeroAndW. My understanding is that some fonts just have
> > > garbage values here. I didn't actually write the mac implementation here
> > > though. Amanda (cc'ed) wrote it. Amanda, can you comment on this bit?
> > 
> > Yes.  There are a number of non-Windows fonts that have OS/2 tables but do not
> > have valid data in the avgCharWidth field (several of Apple's system-supplied
> > fonts, for example).  So as a sanity check, if the avgCharWidth from the table
> > is clearly wrong, we discard it and fall through to the "compute a reasonable
> > estimate" code path.  The other comments in this bug about how to better
> > compute that estimate all look quite reasonable.  In the end, it's a judgement
> > call anyway, since "number of characters wide" isn't actually a geometric
> > measurement.
> > 
> 
> Are there other indicators of invalid data from the OS/2 table?  Is checking
> for a negative number good enough?  For example, what if the avg is more than
> the maximum?

Amanda, any thoughts here? I don't have a strong opinion one way or the other here for the specific example. I think it's an edge-case we're unlikely to hit in practice. Seems reasonable to err on the safe side though and do something here. Maybe we should set avg to min(avg, max) at the end or set max to max(avg, max)? It's not clear to me which of those makes sense. Or maybe we should discard the values entirely and fallback to the initCharWidths code?
Comment 46 Amanda Walker 2009-04-08 16:58:13 PDT
(In reply to comment #45)
> Amanda, any thoughts here? I don't have a strong opinion one way or the other
> here for the specific example. I think it's an edge-case we're unlikely to hit
> in practice. Seems reasonable to err on the safe side though and do something
> here. Maybe we should set avg to min(avg, max) at the end or set max to
> max(avg, max)? It's not clear to me which of those makes sense. Or maybe we
> should discard the values entirely and fallback to the initCharWidths code?

Either of those would be reasonable--the only invalid values I've observed so far are negative values in Apple-supplied fonts; it does not seem to be a widespread problem (and no public docs give a valid interpretation of a negative value in that field).  Ideally, I'd like to know what the negative value is trying to indicate and interpret it appropriately, but that appears to require docs that are not in evidence on the web.

For the specific example of avg > max (that is, values that appear valid individually but are inconsistent), I'd prefer to avoid a bunch of ad hoc checks.  Since a more general "sanity check this font" capability would be useful for downloadable fonts as well as system fonts, I'd rather keep this patch as narrow as possible and open up a separate bug for the larger issue.

Comment 47 mitz 2009-04-08 17:08:57 PDT
(In reply to comment #46)
> (In reply to comment #45)
> > Amanda, any thoughts here? I don't have a strong opinion one way or the other
> > here for the specific example. I think it's an edge-case we're unlikely to hit
> > in practice. Seems reasonable to err on the safe side though and do something
> > here. Maybe we should set avg to min(avg, max) at the end or set max to
> > max(avg, max)? It's not clear to me which of those makes sense. Or maybe we
> > should discard the values entirely and fallback to the initCharWidths code?
> 
> Either of those would be reasonable--the only invalid values I've observed so
> far are negative values in Apple-supplied fonts; it does not seem to be a
> widespread problem (and no public docs give a valid interpretation of a
> negative value in that field).  Ideally, I'd like to know what the negative
> value is trying to indicate and interpret it appropriately, but that appears to
> require docs that are not in evidence on the web.

Is there another way you could tell the the value is invalid? For example, is the rest of the OS/2 table valid in the cases that you have observed? <http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6OS2.html> says that the first two bytes of a valid OS/2 table should be zeros. Do the tables that have a negative xAvgCharWidth still have zeros in their first two bytes? Are there any valid tables that have something other than zeros?
Comment 48 mitz 2009-04-08 17:14:14 PDT
(In reply to comment #45)
> > - Use a RetainPtr for os2TableRef - then  you can avoid CFRetain and CFRelease
> > here.
> 
> I declare n00b-dom here. I've never used CF apis or RetainPtr. I tried to hack
> it based off other RetainPtr usages in this file, but I really don't know what
> I'm doing and couldn't get it to compile. Mind showing me what this would look
> like?

Something like:

RetainPtr<CFDataRef> os2TableRef(AdoptCF, CGFontCopyTableForTag(m_font.cgFont(), 'OS/2'));
if (os2TableRef && CFDataGetLength(os2TableRef.get()) >= 68) {
        const UInt8* buffer = CFDataGetBytePtr(os2TableRef.get());
[...]
and *not* calling CFRelease, because the RetainPtr has ownership of the object and will release it when it goes out of scope.

I also notice that the mystery number 68 is still there in the most recent version of the patch. You should use a named constant for it.
Comment 49 Ojan Vafai 2009-04-08 17:25:31 PDT
(In reply to comment #48)
> Something like:
> 
> RetainPtr<CFDataRef> os2TableRef(AdoptCF,
> CGFontCopyTableForTag(m_font.cgFont(), 'OS/2'));
> if (os2TableRef && CFDataGetLength(os2TableRef.get()) >= 68) {
>         const UInt8* buffer = CFDataGetBytePtr(os2TableRef.get());
> [...]

That was it. Thanks. It's the AdoptCF bit I was missing.

> I also notice that the mystery number 68 is still there in the most recent
> version of the patch. You should use a named constant for it.

Yeah, don't look at the patch that's there now. I haven't uploaded a new one yet. Amanda did some more digging and the maxCharWidth we were getting was often too small. She gave me some new code to do it and I'm going through all the layout test results now. This now brings Mac Safari very close to the input metrics of Windows Safari / IE. 

I should have a complete patch in the next half an hour or so.

(In reply to comment #46)
> (In reply to comment #45)
> > Amanda, any thoughts here? I don't have a strong opinion one way or the other
> > here for the specific example. I think it's an edge-case we're unlikely to hit
> > in practice. Seems reasonable to err on the safe side though and do something
> > here. Maybe we should set avg to min(avg, max) at the end or set max to
> > max(avg, max)? It's not clear to me which of those makes sense. Or maybe we
> > should discard the values entirely and fallback to the initCharWidths code?
> 
> Either of those would be reasonable--the only invalid values I've observed so
> far are negative values in Apple-supplied fonts; it does not seem to be a
> widespread problem (and no public docs give a valid interpretation of a
> negative value in that field).  Ideally, I'd like to know what the negative
> value is trying to indicate and interpret it appropriately, but that appears to
> require docs that are not in evidence on the web.
> 
> For the specific example of avg > max (that is, values that appear valid
> individually but are inconsistent), I'd prefer to avoid a bunch of ad hoc
> checks.  Since a more general "sanity check this font" capability would be
> useful for downloadable fonts as well as system fonts, I'd rather keep this
> patch as narrow as possible and open up a separate bug for the larger issue.

Either approach here seems totally reasonable to me. Adele, Mitz, what are your thoughts?
Comment 50 Ojan Vafai 2009-04-08 18:38:39 PDT
Created attachment 29354 [details]
Make textarea metrics more closely match IEs.

 LayoutTests/ChangeLog                              |   23 +
 LayoutTests/fast/forms/drag-out-of-textarea.html   |    2 +-
 LayoutTests/fast/forms/resources/TEMPLATE.html     |   13 +
 .../fast/forms/resources/textarea-metrics.js       |  171 ++
 .../fast/forms/search-abs-pos-cancel-button.html   |    4 +-
 .../fast/forms/textarea-metrics-expected.txt       |  173 ++
 LayoutTests/fast/forms/textarea-metrics.html       |   13 +
 LayoutTests/fast/forms/textarea-width.html         |    5 +-
 .../replaced/table-percent-height-expected.txt     |   18 +-
 .../fast/replaced/table-percent-height.html        |   18 +-
 .../mac/editing/deleting/5168598-expected.checksum |    2 +-
 .../mac/editing/deleting/5168598-expected.png      |  Bin 27473 -> 27530 bytes
 .../mac/editing/deleting/5168598-expected.txt      |    6 +-
 .../editing/inserting/4960120-1-expected.checksum  |    2 +-
 .../mac/editing/inserting/4960120-1-expected.png   |  Bin 15987 -> 16812 bytes
 .../mac/editing/inserting/4960120-1-expected.txt   |   16 +-
 .../editing/inserting/5607069-2-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-2-expected.png   |  Bin 22947 -> 22952 bytes
 .../mac/editing/inserting/5607069-2-expected.txt   |   14 +-
 .../editing/inserting/5607069-3-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-3-expected.png   |  Bin 24465 -> 24462 bytes
 .../mac/editing/inserting/5607069-3-expected.txt   |   18 +-
 .../before-after-input-element-expected.checksum   |    2 +-
 .../before-after-input-element-expected.png        |  Bin 17707 -> 17705 bytes
 .../before-after-input-element-expected.txt        |   10 +-
 .../typing-tab-designmode-forms-expected.checksum  |    2 +-
 .../typing-tab-designmode-forms-expected.png       |  Bin 16680 -> 16884 bytes
 .../typing-tab-designmode-forms-expected.txt       |   24 +-
 .../editing/pasteboard/4806874-expected.checksum   |    2 +-
 .../mac/editing/pasteboard/4806874-expected.png    |  Bin 17925 -> 17932 bytes
 .../mac/editing/pasteboard/4806874-expected.txt    |   10 +-
 .../drop-text-without-selection-expected.checksum  |    2 +-
 .../drop-text-without-selection-expected.png       |  Bin 32837 -> 32763 bytes
 .../drop-text-without-selection-expected.txt       |   14 +-
 .../pasteboard/input-field-1-expected.checksum     |    2 +-
 .../editing/pasteboard/input-field-1-expected.png  |  Bin 16352 -> 16342 bytes
 .../editing/pasteboard/input-field-1-expected.txt  |   12 +-
 .../nested-blocks-with-text-area-expected.checksum |    2 +-
 .../nested-blocks-with-text-area-expected.png      |  Bin 24246 -> 24429 bytes
 .../nested-blocks-with-text-area-expected.txt      |   24 +-
 ...nested-blocks-with-text-field-expected.checksum |    2 +-
 .../nested-blocks-with-text-field-expected.png     |  Bin 24411 -> 24392 bytes
 .../nested-blocks-with-text-field-expected.txt     |   14 +-
 .../pasteboard/pasting-tabs-expected.checksum      |    2 +-
 .../editing/pasteboard/pasting-tabs-expected.png   |  Bin 22164 -> 22163 bytes
 .../editing/pasteboard/pasting-tabs-expected.txt   |   14 +-
 .../editing/selection/3690703-2-expected.checksum  |    2 +-
 .../mac/editing/selection/3690703-2-expected.png   |  Bin 33204 -> 33210 bytes
 .../mac/editing/selection/3690703-2-expected.txt   |   18 +-
 .../editing/selection/3690703-expected.checksum    |    2 +-
 .../mac/editing/selection/3690703-expected.png     |  Bin 33409 -> 33436 bytes
 .../mac/editing/selection/3690703-expected.txt     |   18 +-
 .../editing/selection/3690719-expected.checksum    |    2 +-
 .../mac/editing/selection/3690719-expected.png     |  Bin 33409 -> 33436 bytes
 .../mac/editing/selection/3690719-expected.txt     |   18 +-
 .../editing/selection/4895428-3-expected.checksum  |    2 +-
 .../mac/editing/selection/4895428-3-expected.png   |  Bin 29560 -> 29564 bytes
 .../mac/editing/selection/4895428-3-expected.txt   |    6 +-
 .../editing/selection/4975120-expected.checksum    |    2 +-
 .../mac/editing/selection/4975120-expected.png     |  Bin 24197 -> 24193 bytes
 .../mac/editing/selection/4975120-expected.txt     |    8 +-
 .../editing/selection/5136696-expected.checksum    |    2 +-
 .../mac/editing/selection/5136696-expected.png     |  Bin 26565 -> 26386 bytes
 .../mac/editing/selection/5136696-expected.txt     |    6 +-
 .../editing/selection/5213963-expected.checksum    |    2 +-
 .../mac/editing/selection/5213963-expected.png     |  Bin 23592 -> 23585 bytes
 .../mac/editing/selection/5213963-expected.txt     |    8 +-
 .../selection/drag-select-1-expected.checksum      |    2 +-
 .../editing/selection/drag-select-1-expected.png   |  Bin 16773 -> 16764 bytes
 .../editing/selection/drag-select-1-expected.txt   |    6 +-
 .../selection/drag-text-delay-expected.checksum    |    2 +-
 .../editing/selection/drag-text-delay-expected.png |  Bin 12773 -> 12911 bytes
 .../editing/selection/drag-text-delay-expected.txt |    6 +-
 ...elect-from-textfield-outwards-expected.checksum |    2 +-
 .../select-from-textfield-outwards-expected.png    |  Bin 59715 -> 59745 bytes
 .../select-from-textfield-outwards-expected.txt    |   24 +-
 .../fast/block/margin-collapse/103-expected.txt    |   64 +-
 .../mac/fast/css/line-height-expected.checksum     |    2 +-
 .../platform/mac/fast/css/line-height-expected.png |  Bin 27854 -> 27866 bytes
 .../platform/mac/fast/css/line-height-expected.txt |    6 +-
 .../css/resize-corner-tracking-expected.checksum   |    2 +-
 .../fast/css/resize-corner-tracking-expected.png   |  Bin 21083 -> 21151 bytes
 .../fast/css/resize-corner-tracking-expected.txt   |   18 +-
 .../reset-textarea-expected.checksum               |    2 +-
 .../reset-textarea-expected.png                    |  Bin 29075 -> 29090 bytes
 .../reset-textarea-expected.txt                    |   30 +-
 .../mac/fast/dom/isindex-002-expected.checksum     |    2 +-
 .../platform/mac/fast/dom/isindex-002-expected.png |  Bin 19769 -> 19776 bytes
 .../platform/mac/fast/dom/isindex-002-expected.txt |   12 +-
 .../mac/fast/dynamic/008-expected.checksum         |    2 +-
 .../platform/mac/fast/dynamic/008-expected.png     |  Bin 30135 -> 30083 bytes
 .../platform/mac/fast/dynamic/008-expected.txt     |   18 +-
 .../mac/fast/events/autoscroll-expected.checksum   |    2 +-
 .../mac/fast/events/autoscroll-expected.png        |  Bin 23996 -> 24002 bytes
 .../mac/fast/events/autoscroll-expected.txt        |    6 +-
 .../events/context-no-deselect-expected.checksum   |    2 +-
 .../fast/events/context-no-deselect-expected.png   |  Bin 13759 -> 13892 bytes
 .../fast/events/context-no-deselect-expected.txt   |    6 +-
 .../mac/fast/events/label-focus-expected.checksum  |    2 +-
 .../mac/fast/events/label-focus-expected.png       |  Bin 14891 -> 14888 bytes
 .../mac/fast/events/label-focus-expected.txt       |    8 +-
 .../fast/forms/basic-textareas-expected.checksum   |    2 +-
 .../mac/fast/forms/basic-textareas-expected.png    |  Bin 116809 -> 118460 bytes
 .../mac/fast/forms/basic-textareas-expected.txt    | 1757 ++++++++++----------
 .../forms/box-shadow-override-expected.checksum    |    2 +-
 .../fast/forms/box-shadow-override-expected.png    |  Bin 32657 -> 32670 bytes
 .../fast/forms/box-shadow-override-expected.txt    |   30 +-
 .../control-restrict-line-height-expected.checksum |    2 +-
 .../control-restrict-line-height-expected.png      |  Bin 27564 -> 27784 bytes
 .../control-restrict-line-height-expected.txt      |   10 +-
 .../mac/fast/forms/encoding-test-expected.checksum |    2 +-
 .../mac/fast/forms/encoding-test-expected.png      |  Bin 13755 -> 13764 bytes
 .../mac/fast/forms/encoding-test-expected.txt      |    6 +-
 .../fast/forms/fieldset-align-expected.checksum    |    2 +-
 .../mac/fast/forms/fieldset-align-expected.png     |  Bin 44796 -> 44672 bytes
 .../mac/fast/forms/fieldset-align-expected.txt     |   96 +-
 .../forms/form-element-geometry-expected.checksum  |    2 +-
 .../fast/forms/form-element-geometry-expected.png  |  Bin 89841 -> 89611 bytes
 .../fast/forms/form-element-geometry-expected.txt  |   82 +-
 .../mac/fast/forms/input-align-expected.checksum   |    2 +-
 .../mac/fast/forms/input-align-expected.png        |  Bin 24821 -> 24935 bytes
 .../mac/fast/forms/input-align-expected.txt        |   46 +-
 .../input-appearance-bkcolor-expected.checksum     |    2 +-
 .../forms/input-appearance-bkcolor-expected.png    |  Bin 19152 -> 19000 bytes
 .../forms/input-appearance-bkcolor-expected.txt    |   18 +-
 ...ut-appearance-default-bkcolor-expected.checksum |    2 +-
 .../input-appearance-default-bkcolor-expected.png  |  Bin 17571 -> 17442 bytes
 .../input-appearance-default-bkcolor-expected.txt  |    6 +-
 .../input-appearance-disabled-expected.checksum    |    2 +-
 .../forms/input-appearance-disabled-expected.png   |  Bin 16835 -> 16703 bytes
 .../forms/input-appearance-disabled-expected.txt   |    6 +-
 .../forms/input-appearance-focus-expected.checksum |    2 +-
 .../fast/forms/input-appearance-focus-expected.png |  Bin 31673 -> 31675 bytes
 .../fast/forms/input-appearance-focus-expected.txt |   16 +-
 .../input-appearance-height-expected.checksum      |    2 +-
 .../forms/input-appearance-height-expected.png     |  Bin 36689 -> 36638 bytes
 .../forms/input-appearance-height-expected.txt     |   58 +-
 ...put-appearance-preventDefault-expected.checksum |    2 +-
 .../input-appearance-preventDefault-expected.png   |  Bin 23799 -> 23805 bytes
 .../input-appearance-preventDefault-expected.txt   |    8 +-
 .../input-appearance-readonly-expected.checksum    |    2 +-
 .../forms/input-appearance-readonly-expected.png   |  Bin 17183 -> 17043 bytes
 .../forms/input-appearance-readonly-expected.txt   |    6 +-
 .../input-appearance-selection-expected.checksum   |    2 +-
 .../forms/input-appearance-selection-expected.png  |  Bin 54570 -> 54587 bytes
 .../forms/input-appearance-selection-expected.txt  |    6 +-
 .../input-appearance-visibility-expected.checksum  |    2 +-
 .../forms/input-appearance-visibility-expected.png |  Bin 17288 -> 17165 bytes
 .../forms/input-appearance-visibility-expected.txt |    6 +-
 .../forms/input-appearance-width-expected.checksum |    2 +-
 .../fast/forms/input-appearance-width-expected.png |  Bin 21419 -> 20779 bytes
 .../fast/forms/input-appearance-width-expected.txt |   24 +-
 .../fast/forms/input-baseline-expected.checksum    |    2 +-
 .../mac/fast/forms/input-baseline-expected.png     |  Bin 23472 -> 23629 bytes
 .../mac/fast/forms/input-baseline-expected.txt     |   22 +-
 .../forms/input-disabled-color-expected.checksum   |    2 +-
 .../fast/forms/input-disabled-color-expected.png   |  Bin 49110 -> 51011 bytes
 .../fast/forms/input-disabled-color-expected.txt   |  198 ++--
 ...ouble-click-selection-gap-bug-expected.checksum |    2 +-
 ...put-double-click-selection-gap-bug-expected.png |  Bin 18205 -> 18501 bytes
 ...put-double-click-selection-gap-bug-expected.txt |   28 +-
 .../fast/forms/input-paste-undo-expected.checksum  |    2 +-
 .../mac/fast/forms/input-paste-undo-expected.png   |  Bin 23103 -> 23094 bytes
 .../mac/fast/forms/input-paste-undo-expected.txt   |    6 +-
 .../input-readonly-autoscroll-expected.checksum    |    2 +-
 .../forms/input-readonly-autoscroll-expected.png   |  Bin 22927 -> 23063 bytes
 .../forms/input-readonly-autoscroll-expected.txt   |   12 +-
 .../forms/input-readonly-dimmed-expected.checksum  |    2 +-
 .../fast/forms/input-readonly-dimmed-expected.png  |  Bin 18116 -> 18139 bytes
 .../fast/forms/input-readonly-dimmed-expected.txt  |    6 +-
 .../forms/input-readonly-empty-expected.checksum   |    2 +-
 .../fast/forms/input-readonly-empty-expected.png   |  Bin 15766 -> 16627 bytes
 .../fast/forms/input-readonly-empty-expected.txt   |    6 +-
 .../mac/fast/forms/input-spaces-expected.checksum  |    2 +-
 .../mac/fast/forms/input-spaces-expected.png       |  Bin 20178 -> 19989 bytes
 .../mac/fast/forms/input-spaces-expected.txt       |    6 +-
 .../mac/fast/forms/input-table-expected.txt        |   18 +-
 .../input-text-click-inside-expected.checksum      |    2 +-
 .../forms/input-text-click-inside-expected.png     |  Bin 20522 -> 20551 bytes
 .../forms/input-text-click-inside-expected.txt     |    6 +-
 .../input-text-click-outside-expected.checksum     |    2 +-
 .../forms/input-text-click-outside-expected.png    |  Bin 20346 -> 20341 bytes
 .../forms/input-text-click-outside-expected.txt    |    6 +-
 .../input-text-double-click-expected.checksum      |    2 +-
 .../forms/input-text-double-click-expected.png     |  Bin 18494 -> 18508 bytes
 .../forms/input-text-double-click-expected.txt     |    6 +-
 .../forms/input-text-drag-down-expected.checksum   |    2 +-
 .../fast/forms/input-text-drag-down-expected.png   |  Bin 20125 -> 20128 bytes
 .../fast/forms/input-text-drag-down-expected.txt   |    6 +-
 .../forms/input-text-maxlength-expected.checksum   |    2 +-
 .../fast/forms/input-text-maxlength-expected.png   |  Bin 61128 -> 61287 bytes
 .../fast/forms/input-text-maxlength-expected.txt   |  172 +-
 .../input-text-option-delete-expected.checksum     |    2 +-
 .../forms/input-text-option-delete-expected.png    |  Bin 18162 -> 18174 bytes
 .../forms/input-text-option-delete-expected.txt    |    6 +-
 .../input-text-paste-maxlength-expected.checksum   |    2 +-
 .../forms/input-text-paste-maxlength-expected.png  |  Bin 51892 -> 51900 bytes
 .../forms/input-text-paste-maxlength-expected.txt  |  130 +-
 ...nput-text-scroll-left-on-blur-expected.checksum |    2 +-
 .../input-text-scroll-left-on-blur-expected.png    |  Bin 23523 -> 23419 bytes
 .../input-text-scroll-left-on-blur-expected.txt    |   30 +-
 ...nput-text-self-emptying-click-expected.checksum |    2 +-
 .../input-text-self-emptying-click-expected.png    |  Bin 19524 -> 19514 bytes
 .../input-text-self-emptying-click-expected.txt    |    6 +-
 .../forms/input-text-word-wrap-expected.checksum   |    2 +-
 .../fast/forms/input-text-word-wrap-expected.png   |  Bin 18699 -> 19015 bytes
 .../fast/forms/input-text-word-wrap-expected.txt   |    6 +-
 .../forms/input-type-change2-expected.checksum     |    2 +-
 .../mac/fast/forms/input-type-change2-expected.png |  Bin 23623 -> 23439 bytes
 .../mac/fast/forms/input-type-change2-expected.txt |    6 +-
 .../input-type-text-min-width-expected.checksum    |    2 +-
 .../forms/input-type-text-min-width-expected.png   |  Bin 24203 -> 24606 bytes
 .../forms/input-type-text-min-width-expected.txt   |    6 +-
 .../mac/fast/forms/input-value-expected.checksum   |    2 +-
 .../mac/fast/forms/input-value-expected.png        |  Bin 87713 -> 87712 bytes
 .../mac/fast/forms/input-value-expected.txt        |   30 +-
 .../mac/fast/forms/input-width-expected.checksum   |    2 +-
 .../mac/fast/forms/input-width-expected.png        |  Bin 11310 -> 11492 bytes
 .../mac/fast/forms/input-width-expected.txt        |    6 +-
 ...-overflow-in-textarea-padding-expected.checksum |    2 +-
 ...nebox-overflow-in-textarea-padding-expected.png |  Bin 20931 -> 21109 bytes
 ...nebox-overflow-in-textarea-padding-expected.txt |   24 +-
 .../forms/negativeLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/negativeLineHeight-expected.png |  Bin 24377 -> 24387 bytes
 .../mac/fast/forms/negativeLineHeight-expected.txt |   22 +-
 .../forms/password-placeholder-expected.checksum   |    2 +-
 .../fast/forms/password-placeholder-expected.png   |  Bin 12333 -> 12323 bytes
 .../fast/forms/password-placeholder-expected.txt   |    6 +-
 ...ord-placeholder-text-security-expected.checksum |    2 +-
 ...password-placeholder-text-security-expected.png |  Bin 32293 -> 32316 bytes
 ...password-placeholder-text-security-expected.txt |   24 +-
 .../placeholder-pseudo-style-expected.checksum     |    2 +-
 .../forms/placeholder-pseudo-style-expected.png    |  Bin 21930 -> 21422 bytes
 .../forms/placeholder-pseudo-style-expected.txt    |   60 +-
 .../placeholder-set-attribute-expected.checksum    |    2 +-
 .../forms/placeholder-set-attribute-expected.png   |  Bin 17163 -> 17165 bytes
 .../forms/placeholder-set-attribute-expected.txt   |    6 +-
 .../forms/placeholder-set-value-expected.checksum  |    2 +-
 .../fast/forms/placeholder-set-value-expected.png  |  Bin 16450 -> 23698 bytes
 .../fast/forms/placeholder-set-value-expected.txt  |   10 +-
 ...h-cancel-button-style-sharing-expected.checksum |    2 +-
 ...search-cancel-button-style-sharing-expected.png |  Bin 17836 -> 17679 bytes
 ...search-cancel-button-style-sharing-expected.txt |   24 +-
 ...ch-display-none-cancel-button-expected.checksum |    2 +-
 .../search-display-none-cancel-button-expected.png |  Bin 17826 -> 17794 bytes
 .../search-display-none-cancel-button-expected.txt |    8 +-
 ...rch-placeholder-value-changed-expected.checksum |    2 +-
 .../search-placeholder-value-changed-expected.png  |  Bin 13192 -> 13014 bytes
 .../search-placeholder-value-changed-expected.txt  |   10 +-
 .../mac/fast/forms/search-rtl-expected.checksum    |    2 +-
 .../mac/fast/forms/search-rtl-expected.png         |  Bin 29068 -> 29209 bytes
 .../mac/fast/forms/search-rtl-expected.txt         |   62 +-
 .../forms/search-transformed-expected.checksum     |    2 +-
 .../mac/fast/forms/search-transformed-expected.png |  Bin 18634 -> 25942 bytes
 .../mac/fast/forms/search-transformed-expected.txt |   14 +-
 .../mac/fast/forms/search-zoomed-expected.checksum |    2 +-
 .../mac/fast/forms/search-zoomed-expected.png      |  Bin 28283 -> 27378 bytes
 .../mac/fast/forms/search-zoomed-expected.txt      |   14 +-
 .../forms/searchfield-heights-expected.checksum    |    2 +-
 .../fast/forms/searchfield-heights-expected.png    |  Bin 19095 -> 19272 bytes
 .../fast/forms/searchfield-heights-expected.txt    |   38 +-
 .../forms/tabbing-input-iframe-expected.checksum   |    2 +-
 .../fast/forms/tabbing-input-iframe-expected.png   |  Bin 19080 -> 19072 bytes
 .../fast/forms/tabbing-input-iframe-expected.txt   |   22 +-
 .../forms/textAreaLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/textAreaLineHeight-expected.png |  Bin 48117 -> 45936 bytes
 .../mac/fast/forms/textAreaLineHeight-expected.txt |  102 +-
 .../fast/forms/textarea-align-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-align-expected.png     |  Bin 28848 -> 28906 bytes
 .../mac/fast/forms/textarea-align-expected.txt     |   66 +-
 .../forms/textarea-rows-cols-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-rows-cols-expected.png |  Bin 46948 -> 65390 bytes
 .../mac/fast/forms/textarea-rows-cols-expected.txt |  252 ++--
 .../forms/textarea-scroll-height-expected.checksum |    2 +-
 .../fast/forms/textarea-scroll-height-expected.png |  Bin 30971 -> 30857 bytes
 .../fast/forms/textarea-scroll-height-expected.txt |   96 +-
 .../forms/textarea-scrollbar-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-scrollbar-expected.png |  Bin 20145 -> 20245 bytes
 .../mac/fast/forms/textarea-scrollbar-expected.txt |   60 +-
 .../forms/textarea-scrolled-type-expected.checksum |    2 +-
 .../fast/forms/textarea-scrolled-type-expected.png |  Bin 21736 -> 21968 bytes
 .../fast/forms/textarea-scrolled-type-expected.txt |  100 +-
 .../forms/textarea-setinnerhtml-expected.checksum  |    2 +-
 .../fast/forms/textarea-setinnerhtml-expected.png  |  Bin 12658 -> 12767 bytes
 .../fast/forms/textarea-setinnerhtml-expected.txt  |   10 +-
 .../fast/forms/textarea-width-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-width-expected.png     |  Bin 34699 -> 30783 bytes
 .../mac/fast/forms/textarea-width-expected.txt     |   28 +-
 .../textfield-drag-into-disabled-expected.checksum |    2 +-
 .../textfield-drag-into-disabled-expected.png      |  Bin 27697 -> 27615 bytes
 .../textfield-drag-into-disabled-expected.txt      |   18 +-
 .../fast/forms/textfield-outline-expected.checksum |    2 +-
 .../mac/fast/forms/textfield-outline-expected.png  |  Bin 18261 -> 18100 bytes
 .../mac/fast/forms/textfield-outline-expected.txt  |    6 +-
 .../forms/textfield-overflow-expected.checksum     |    2 +-
 .../mac/fast/forms/textfield-overflow-expected.png |  Bin 11728 -> 11730 bytes
 .../mac/fast/forms/textfield-overflow-expected.txt |    6 +-
 .../visual-hebrew-text-field-expected.checksum     |    2 +-
 .../forms/visual-hebrew-text-field-expected.png    |  Bin 29381 -> 29385 bytes
 .../forms/visual-hebrew-text-field-expected.txt    |    6 +-
 .../mac/fast/invalid/residual-style-expected.txt   |    8 +-
 .../lists/dynamic-marker-crash-expected.checksum   |    2 +-
 .../fast/lists/dynamic-marker-crash-expected.png   |  Bin 16214 -> 16246 bytes
 .../fast/lists/dynamic-marker-crash-expected.txt   |    6 +-
 .../fast/overflow/overflow-x-y-expected.checksum   |    2 +-
 .../mac/fast/overflow/overflow-x-y-expected.png    |  Bin 30889 -> 30863 bytes
 .../mac/fast/overflow/overflow-x-y-expected.txt    |   26 +-
 .../parser/comment-in-textarea-expected.checksum   |    2 +-
 .../fast/parser/comment-in-textarea-expected.png   |  Bin 15290 -> 15049 bytes
 .../fast/parser/comment-in-textarea-expected.txt   |   22 +-
 .../entity-comment-in-textarea-expected.checksum   |    2 +-
 .../parser/entity-comment-in-textarea-expected.png |  Bin 14901 -> 15050 bytes
 .../parser/entity-comment-in-textarea-expected.txt |   16 +-
 .../open-comment-in-textarea-expected.checksum     |    2 +-
 .../parser/open-comment-in-textarea-expected.png   |  Bin 16913 -> 16050 bytes
 .../parser/open-comment-in-textarea-expected.txt   |   26 +-
 ...-by-invalidateSelection-crash-expected.checksum |    2 +-
 ...ction-by-invalidateSelection-crash-expected.png |  Bin 11756 -> 11863 bytes
 ...ction-by-invalidateSelection-crash-expected.txt |    6 +-
 .../repaint/search-field-cancel-expected.checksum  |    2 +-
 .../fast/repaint/search-field-cancel-expected.png  |  Bin 14259 -> 21240 bytes
 .../fast/repaint/search-field-cancel-expected.txt  |   10 +-
 .../repaint/subtree-root-skipped-expected.checksum |    2 +-
 .../fast/repaint/subtree-root-skipped-expected.png |  Bin 13935 -> 13943 bytes
 .../fast/repaint/subtree-root-skipped-expected.txt |    6 +-
 .../replaced/replaced-breaking-expected.checksum   |    2 +-
 .../fast/replaced/replaced-breaking-expected.png   |  Bin 26204 -> 26198 bytes
 .../fast/replaced/replaced-breaking-expected.txt   |   12 +-
 .../replaced-breaking-mixture-expected.checksum    |    2 +-
 .../replaced-breaking-mixture-expected.png         |  Bin 18252 -> 18262 bytes
 .../replaced-breaking-mixture-expected.txt         |   12 +-
 .../width100percent-searchfield-expected.checksum  |    2 +-
 .../width100percent-searchfield-expected.png       |  Bin 18572 -> 18576 bytes
 .../width100percent-searchfield-expected.txt       |   44 +-
 .../width100percent-textarea-expected.checksum     |    2 +-
 .../replaced/width100percent-textarea-expected.png |  Bin 16709 -> 16303 bytes
 .../replaced/width100percent-textarea-expected.txt |  114 +-
 .../width100percent-textfield-expected.checksum    |    2 +-
 .../width100percent-textfield-expected.png         |  Bin 17012 -> 16841 bytes
 .../width100percent-textfield-expected.txt         |   36 +-
 .../platform/mac/fast/table/003-expected.checksum  |    2 +-
 .../platform/mac/fast/table/003-expected.png       |  Bin 38785 -> 38785 bytes
 .../platform/mac/fast/table/003-expected.txt       |   36 +-
 .../fast/table/colspanMinWidth-expected.checksum   |    2 +-
 .../mac/fast/table/colspanMinWidth-expected.png    |  Bin 11652 -> 11666 bytes
 .../mac/fast/table/colspanMinWidth-expected.txt    |   32 +-
 .../table/spanOverlapRepaint-expected.checksum     |    2 +-
 .../mac/fast/table/spanOverlapRepaint-expected.png |  Bin 12276 -> 12278 bytes
 .../mac/fast/table/spanOverlapRepaint-expected.txt |   30 +-
 .../table/text-field-baseline-expected.checksum    |    2 +-
 .../fast/table/text-field-baseline-expected.png    |  Bin 47879 -> 47918 bytes
 .../fast/table/text-field-baseline-expected.txt    |   50 +-
 .../rtl-white-space-pre-wrap-expected.checksum     |    2 +-
 .../rtl-white-space-pre-wrap-expected.png          |  Bin 39678 -> 39676 bytes
 .../rtl-white-space-pre-wrap-expected.txt          |   22 +-
 .../text/textIteratorNilRenderer-expected.checksum |    2 +-
 .../fast/text/textIteratorNilRenderer-expected.png |  Bin 15616 -> 15372 bytes
 .../fast/text/textIteratorNilRenderer-expected.txt |   18 +-
 ...ransformed-focused-text-input-expected.checksum |    2 +-
 .../transformed-focused-text-input-expected.png    |  Bin 6501 -> 14405 bytes
 .../transformed-focused-text-input-expected.txt    |    6 +-
 .../navigation/anchor-basic-expected.checksum      |    2 +-
 .../tests/navigation/anchor-basic-expected.png     |  Bin 38378 -> 38334 bytes
 .../tests/navigation/anchor-basic-expected.txt     |   66 +-
 .../tests/navigation/anchor-frames-expected.txt    |   66 +-
 .../navigation/anchor-goback-expected.checksum     |    2 +-
 .../tests/navigation/anchor-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../tests/navigation/anchor-goback-expected.txt    |   68 +-
 .../navigation/anchor-subframeload-expected.txt    |   66 +-
 .../javascriptlink-basic-expected.checksum         |    2 +-
 .../navigation/javascriptlink-basic-expected.png   |  Bin 83776 -> 83581 bytes
 .../navigation/javascriptlink-basic-expected.txt   |   64 +-
 .../javascriptlink-frames-expected.checksum        |    2 +-
 .../navigation/javascriptlink-frames-expected.png  |  Bin 85705 -> 85769 bytes
 .../navigation/javascriptlink-frames-expected.txt  |   64 +-
 .../javascriptlink-goback-expected.checksum        |    2 +-
 .../navigation/javascriptlink-goback-expected.png  |  Bin 82950 -> 82791 bytes
 .../navigation/javascriptlink-goback-expected.txt  |   68 +-
 .../javascriptlink-subframeload-expected.checksum  |    2 +-
 .../javascriptlink-subframeload-expected.png       |  Bin 85705 -> 85769 bytes
 .../javascriptlink-subframeload-expected.txt       |   64 +-
 .../metaredirect-basic-expected.checksum           |    2 +-
 .../navigation/metaredirect-basic-expected.png     |  Bin 83776 -> 83581 bytes
 .../navigation/metaredirect-basic-expected.txt     |   64 +-
 .../metaredirect-frames-expected.checksum          |    2 +-
 .../navigation/metaredirect-frames-expected.png    |  Bin 85705 -> 85769 bytes
 .../navigation/metaredirect-frames-expected.txt    |   64 +-
 .../metaredirect-goback-expected.checksum          |    2 +-
 .../navigation/metaredirect-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../navigation/metaredirect-goback-expected.txt    |   68 +-
 .../metaredirect-subframeload-expected.checksum    |    2 +-
 .../metaredirect-subframeload-expected.png         |  Bin 85705 -> 85769 bytes
 .../metaredirect-subframeload-expected.txt         |   64 +-
 .../navigation/post-goback2-expected.checksum      |    2 +-
 .../tests/navigation/post-goback2-expected.png     |  Bin 82950 -> 82791 bytes
 .../tests/navigation/post-goback2-expected.txt     |   68 +-
 .../postredirect-goback2-expected.checksum         |    2 +-
 .../navigation/postredirect-goback2-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/postredirect-goback2-expected.txt   |   68 +-
 .../navigation/redirect302-basic-expected.checksum |    2 +-
 .../navigation/redirect302-basic-expected.png      |  Bin 83776 -> 83581 bytes
 .../navigation/redirect302-basic-expected.txt      |   64 +-
 .../redirect302-frames-expected.checksum           |    2 +-
 .../navigation/redirect302-frames-expected.png     |  Bin 85705 -> 85769 bytes
 .../navigation/redirect302-frames-expected.txt     |   64 +-
 .../redirect302-goback-expected.checksum           |    2 +-
 .../navigation/redirect302-goback-expected.png     |  Bin 82950 -> 82791 bytes
 .../navigation/redirect302-goback-expected.txt     |   68 +-
 .../redirect302-subframeload-expected.checksum     |    2 +-
 .../redirect302-subframeload-expected.png          |  Bin 85705 -> 85769 bytes
 .../redirect302-subframeload-expected.txt          |   64 +-
 .../relativeanchor-basic-expected.checksum         |    2 +-
 .../navigation/relativeanchor-basic-expected.png   |  Bin 38378 -> 38334 bytes
 .../navigation/relativeanchor-basic-expected.txt   |   66 +-
 .../navigation/relativeanchor-frames-expected.txt  |   66 +-
 .../relativeanchor-goback-expected.checksum        |    2 +-
 .../navigation/relativeanchor-goback-expected.png  |  Bin 38378 -> 38334 bytes
 .../navigation/relativeanchor-goback-expected.txt  |   66 +-
 .../slowmetaredirect-basic-expected.checksum       |    2 +-
 .../navigation/slowmetaredirect-basic-expected.png |  Bin 83776 -> 83581 bytes
 .../navigation/slowmetaredirect-basic-expected.txt |   64 +-
 .../slowtimerredirect-basic-expected.checksum      |    2 +-
 .../slowtimerredirect-basic-expected.png           |  Bin 83776 -> 83581 bytes
 .../slowtimerredirect-basic-expected.txt           |   64 +-
 .../navigation/success200-basic-expected.checksum  |    2 +-
 .../tests/navigation/success200-basic-expected.png |  Bin 83776 -> 83581 bytes
 .../tests/navigation/success200-basic-expected.txt |   64 +-
 .../navigation/success200-frames-expected.checksum |    2 +-
 .../navigation/success200-frames-expected.png      |  Bin 85705 -> 85769 bytes
 .../navigation/success200-frames-expected.txt      |   64 +-
 .../success200-frames-loadsame-expected.checksum   |    2 +-
 .../success200-frames-loadsame-expected.png        |  Bin 85705 -> 85769 bytes
 .../success200-frames-loadsame-expected.txt        |   64 +-
 .../navigation/success200-goback-expected.checksum |    2 +-
 .../navigation/success200-goback-expected.png      |  Bin 82950 -> 82791 bytes
 .../navigation/success200-goback-expected.txt      |   68 +-
 .../success200-loadsame-expected.checksum          |    2 +-
 .../navigation/success200-loadsame-expected.png    |  Bin 83776 -> 83581 bytes
 .../navigation/success200-loadsame-expected.txt    |   64 +-
 .../navigation/success200-reload-expected.checksum |    2 +-
 .../navigation/success200-reload-expected.png      |  Bin 78245 -> 78273 bytes
 .../navigation/success200-reload-expected.txt      |   64 +-
 .../success200-subframeload-expected.checksum      |    2 +-
 .../success200-subframeload-expected.png           |  Bin 85705 -> 85769 bytes
 .../success200-subframeload-expected.txt           |   64 +-
 .../timerredirect-basic-expected.checksum          |    2 +-
 .../navigation/timerredirect-basic-expected.png    |  Bin 83776 -> 83581 bytes
 .../navigation/timerredirect-basic-expected.txt    |   64 +-
 .../timerredirect-frames-expected.checksum         |    2 +-
 .../navigation/timerredirect-frames-expected.png   |  Bin 85705 -> 85769 bytes
 .../navigation/timerredirect-frames-expected.txt   |   64 +-
 .../timerredirect-goback-expected.checksum         |    2 +-
 .../navigation/timerredirect-goback-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/timerredirect-goback-expected.txt   |   68 +-
 .../timerredirect-subframeload-expected.checksum   |    2 +-
 .../timerredirect-subframeload-expected.png        |  Bin 85705 -> 85769 bytes
 .../timerredirect-subframeload-expected.txt        |   64 +-
 .../custom/inline-svg-in-xhtml-expected.checksum   |    2 +-
 .../svg/custom/inline-svg-in-xhtml-expected.png    |  Bin 320199 -> 316237 bytes
 .../svg/custom/inline-svg-in-xhtml-expected.txt    |    6 +-
 .../mac/svg/hixie/mixed/003-expected.checksum      |    2 +-
 .../platform/mac/svg/hixie/mixed/003-expected.png  |  Bin 20493 -> 20490 bytes
 .../platform/mac/svg/hixie/mixed/003-expected.txt  |    6 +-
 .../tables/mozilla/bugs/bug1188-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug1188-expected.png   |  Bin 52876 -> 52872 bytes
 .../mac/tables/mozilla/bugs/bug1188-expected.txt   |   24 +-
 .../tables/mozilla/bugs/bug12384-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug12384-expected.png  |  Bin 11767 -> 11809 bytes
 .../mac/tables/mozilla/bugs/bug12384-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug18359-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug18359-expected.png  |  Bin 27904 -> 27891 bytes
 .../mac/tables/mozilla/bugs/bug18359-expected.txt  |   22 +-
 .../mozilla/bugs/bug194024-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug194024-expected.png |  Bin 41325 -> 41328 bytes
 .../mac/tables/mozilla/bugs/bug194024-expected.txt |  214 ++--
 .../tables/mozilla/bugs/bug24200-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug24200-expected.png  |  Bin 20965 -> 20970 bytes
 .../mac/tables/mozilla/bugs/bug24200-expected.txt  |   12 +-
 .../mozilla/bugs/bug2479-2-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-2-expected.png |  Bin 45669 -> 45580 bytes
 .../mac/tables/mozilla/bugs/bug2479-2-expected.txt |   70 +-
 .../mozilla/bugs/bug2479-3-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-3-expected.png |  Bin 93211 -> 93214 bytes
 .../mac/tables/mozilla/bugs/bug2479-3-expected.txt |    8 +-
 .../mac/tables/mozilla/bugs/bug2479-4-expected.txt |   14 +-
 .../tables/mozilla/bugs/bug28928-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug28928-expected.png  |  Bin 27374 -> 27406 bytes
 .../mac/tables/mozilla/bugs/bug28928-expected.txt  |   36 +-
 .../tables/mozilla/bugs/bug30559-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30559-expected.png  |  Bin 18415 -> 18425 bytes
 .../mac/tables/mozilla/bugs/bug30559-expected.txt  |   26 +-
 .../tables/mozilla/bugs/bug30692-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30692-expected.png  |  Bin 37249 -> 37255 bytes
 .../mac/tables/mozilla/bugs/bug30692-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug4382-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4382-expected.png   |  Bin 23533 -> 23491 bytes
 .../mac/tables/mozilla/bugs/bug4382-expected.txt   |   12 +-
 .../tables/mozilla/bugs/bug4527-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4527-expected.png   |  Bin 24681 -> 24682 bytes
 .../mac/tables/mozilla/bugs/bug4527-expected.txt   |   14 +-
 .../mozilla/bugs/bug46368-1-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-1-expected.png    |  Bin 39486 -> 39494 bytes
 .../tables/mozilla/bugs/bug46368-1-expected.txt    |    6 +-
 .../mozilla/bugs/bug46368-2-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-2-expected.png    |  Bin 24157 -> 24159 bytes
 .../tables/mozilla/bugs/bug46368-2-expected.txt    |    6 +-
 .../tables/mozilla/bugs/bug51037-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug51037-expected.png  |  Bin 21223 -> 21214 bytes
 .../mac/tables/mozilla/bugs/bug51037-expected.txt  |   12 +-
 .../tables/mozilla/bugs/bug55545-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug55545-expected.png  |  Bin 12938 -> 12951 bytes
 .../mac/tables/mozilla/bugs/bug55545-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug59354-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug59354-expected.png  |  Bin 23386 -> 23444 bytes
 .../mac/tables/mozilla/bugs/bug59354-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug7342-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug7342-expected.png   |  Bin 32097 -> 32082 bytes
 .../mac/tables/mozilla/bugs/bug7342-expected.txt   |   50 +-
 .../tables/mozilla/bugs/bug96334-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug96334-expected.png  |  Bin 32634 -> 32645 bytes
 .../mac/tables/mozilla/bugs/bug96334-expected.txt  |   14 +-
 .../tables/mozilla/bugs/bug99948-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug99948-expected.png  |  Bin 16498 -> 16515 bytes
 .../mac/tables/mozilla/bugs/bug99948-expected.txt  |   16 +-
 .../tables/mozilla/dom/tableDom-expected.checksum  |    2 +-
 .../mac/tables/mozilla/dom/tableDom-expected.png   |  Bin 19180 -> 19182 bytes
 .../mac/tables/mozilla/dom/tableDom-expected.txt   |   52 +-
 .../mozilla/other/move_row-expected.checksum       |    2 +-
 .../mac/tables/mozilla/other/move_row-expected.png |  Bin 19002 -> 19591 bytes
 .../mac/tables/mozilla/other/move_row-expected.txt |   22 +-
 .../bugs/bug2479-5-expected.txt                    |   14 +-
 .../bugs/bug92647-1-expected.checksum              |    2 +-
 .../bugs/bug92647-1-expected.png                   |  Bin 15375 -> 15388 bytes
 .../bugs/bug92647-1-expected.txt                   |   38 +-
 .../custom/resources/svg-fonts-in-text-controls.js |   20 +
 .../custom/svg-fonts-in-text-controls-expected.txt |   11 +
 .../svg/custom/svg-fonts-in-text-controls.html     |   13 +
 WebCore/ChangeLog                                  |   62 +
 WebCore/css/html4.css                              |    2 +
 WebCore/css/themeWin.css                           |    4 -
 WebCore/platform/graphics/SimpleFontData.cpp       |   69 +-
 WebCore/platform/graphics/SimpleFontData.h         |    7 +
 .../chromium/SimpleFontDataChromiumWin.cpp         |    5 +
 .../graphics/chromium/SimpleFontDataLinux.cpp      |    5 +
 .../platform/graphics/gtk/SimpleFontDataGtk.cpp    |    7 +
 .../platform/graphics/gtk/SimpleFontDataPango.cpp  |    7 +
 WebCore/platform/graphics/mac/SimpleFontDataMac.mm |   30 +
 WebCore/platform/graphics/qt/SimpleFontDataQt.cpp  |    7 +
 .../platform/graphics/win/SimpleFontDataCGWin.cpp  |   10 +
 .../graphics/win/SimpleFontDataCairoWin.cpp        |    7 +
 .../platform/graphics/win/SimpleFontDataWin.cpp    |    2 +
 WebCore/platform/graphics/wx/SimpleFontDataWx.cpp  |    7 +
 WebCore/rendering/RenderTextControl.cpp            |    6 +-
 WebCore/rendering/RenderTextControlMultiLine.cpp   |    4 -
 WebCore/rendering/RenderTextControlSingleLine.cpp  |    4 +
 555 files changed, 4870 insertions(+), 4236 deletions(-)
Comment 51 Ojan Vafai 2009-04-08 18:43:23 PDT
OK. New patch is ready for review. The only thing I'm uncomfortable with is one of the results for layout tests that I'm unable to explain: http/tests/navigation/javascriptlink-frames.html. The change to the text input metrics in that test are correct, but somehow the back-forward list is different. I don't see how my change could cause that given that it only affects text control metrics, but I'm synced to head, have no other changes in this client and I don't see the test failing on the bot. I'll keep digging to see if I come up with anything.

> I think a better fallback would be to use the space glyph if there's no "0" or
> no "w".

I've made the avgCharWidth fallback to the space width. If there's no space glyph it falls back to the xHeight. I've made maxCharWidth fallback to the ascent (matches what we do in initCharWidths).

> It might be better to init m_avgCharWidth and other member variables all in one
> place.

Done.

> - Instead of using hardcoded constants in the OS/2 table code, it would be
> better to use descriptively named const ints.

Done. I left the 256 in there. I feel like the comment is pretty clear that it's there to deal with Endian-ness. Happy to add a constant or to do the bit-shifting differently if you prefer.
Comment 52 Ojan Vafai 2009-04-09 16:27:41 PDT
Any chance of getting another review of this today or tomorrow?
Comment 53 mitz 2009-04-10 08:44:13 PDT
Comment on attachment 29354 [details]
Make textarea metrics more closely match IEs.

+        (WebCore::SimpleFontData::initCharWidthsFromZeroAndW):

This is in the change log but no longer in the patch.

+        m_adjustedSpaceWidth = m_treatAsFixedPitch ? ceilf(m_spaceWidth) : roundf(m_spaceWidth);

Can an SVG font ever be treated as fixed pitch?

+        m_avgCharWidth = widthForGlyph(glyphPageZero->glyphDataForCharacter(digitZeroChar).glyph);

What if the '0' glyph is missing?

+        m_maxCharWidth = widthForGlyph(glyphPageZero->glyphDataForCharacter(letter4E00).glyph);

This is wrong. Code point U+4E00 is not in glyph page zero. It is in glyph page 0x4e00 / GlyphPage::size. It also doesn't check for the missing glyph case. I think you should come up with a way to get the width of the U+4E00, it if exists, without instantiating a glyph page.

+            m_maxCharWidth = widthForGlyph(glyphPageZero->glyphDataForCharacter(letterWChar).glyph);

Not checking for the missing glyph.

+const uint32 kOS2CompatibilityTable = 'OS/2';
+const int kOS2CompatibilityTableMinValidLength = 68;
+const int kOS2xAvgCharWidthOffset = 2;

We don't use the 'k' prefix for constants in WebCore. I think a better name for the first constant would be OS2CompatibilityTableTag. Since these are only used in platformCharWidthInit(), why not move them into that function?

+        // retrieve the (big-endian) average character width for this font

Sentence-like comments should have sentence capitalization and end with a period.

+        SInt16 iAvgWidth = buffer[kOS2xAvgCharWidthOffset] * 256 + buffer[kOS2xAvgCharWidthOffset + 1];
+        m_avgCharWidth = scaleEmToUnits(iAvgWidth, m_unitsPerEm) * m_font.m_size;

Given that iAvgWidth may be invalid, I think you should not leave it up to the cross-platform function to discover it. You should check the validity here. Then you can set m_avgCharWidth only if iAvgWidth is valid. Have you looked into making the validity check more robust by examining the OS/2 table version field?

+    // Compute the maximum width of a character in this font.
+    m_maxCharWidth = 0.f;
+    int numGlyphsInFont = CGFontGetNumberOfGlyphs(m_font.cgFont());
+    for (Glyph glyphNumber = 0; glyphNumber < numGlyphsInFont; glyphNumber++)
+        m_maxCharWidth = std::max(m_maxCharWidth, widthForGlyph(glyphNumber));

This looks very very expensive. In addition to taking a considerable amount of time, it will allocate many GlyphWidthPage instances in the glyph width map.

+    // if there was no OS/2 table or it was malformed, we (by definition) can't
+    // match Windows metrics, so we fall back to the previous WebKit behavior of using
+    // the width of the digit '0' as a reasonable estimate.

This comment is no long accurate, because you changed the behavior to consider glyphs other than '0'. It should also be written in sentence style.
Comment 54 Amanda Walker 2009-04-10 10:18:30 PDT
(In reply to comment #53)
> This looks very very expensive. In addition to taking a considerable amount of
> time, it will allocate many GlyphWidthPage instances in the glyph width map.

In practice, it does not seem very expensive, but it's pretty simple to trade off performance for accuracy here.  Since it's only used in one place to compute some extra padding for the text, an estimate (such as the font's ascent) is perfectly reasonable if we don't need to match Windows exactly (since unfortunately it does compute the real max character width).  But if we do want to match Windows metrics for the MS web fonts, and since CGFont doesn't provide this data, iterating over the glyphs appears to be the only way to compute it.  But we could indeed avoid the memory hit of creating GlyphWidthPages at this stage--good observation; I'll give ojan an updated implementation of that loop that just uses CGFont APIs.
Comment 55 Amanda Walker 2009-04-10 10:24:28 PDT
(In reply to comment #54)
> GlyphWidthPages at this stage--good observation; I'll give ojan an updated
> implementation of that loop that just uses CGFont APIs.

Scratch that--I'll have it pull pull the information straight out of the hhea/hmtx tables, which should be fast as well.  As long as we're looking directly at table data anyway, might as well go all out :-).

Comment 56 Ojan Vafai 2009-04-10 16:08:52 PDT
Created attachment 29405 [details]
Make textarea metrics more closely match IEs.

 LayoutTests/ChangeLog                              |  559 +++++++
 LayoutTests/fast/forms/drag-out-of-textarea.html   |    2 +-
 LayoutTests/fast/forms/resources/TEMPLATE.html     |   13 +
 .../resources/text-control-intrinsic-widths.js     |   30 +
 .../fast/forms/resources/textarea-metrics.js       |  171 ++
 .../fast/forms/search-abs-pos-cancel-button.html   |    4 +-
 .../text-control-intrinsic-widths-expected.txt     |  414 +++++
 .../fast/forms/text-control-intrinsic-widths.html  |   13 +
 .../fast/forms/textarea-metrics-expected.txt       |  173 ++
 LayoutTests/fast/forms/textarea-metrics.html       |   13 +
 LayoutTests/fast/forms/textarea-width.html         |    5 +-
 .../replaced/table-percent-height-expected.txt     |   18 +-
 .../fast/replaced/table-percent-height.html        |   18 +-
 .../mac/editing/deleting/5168598-expected.checksum |    2 +-
 .../mac/editing/deleting/5168598-expected.png      |  Bin 27473 -> 27530 bytes
 .../mac/editing/deleting/5168598-expected.txt      |    6 +-
 .../editing/inserting/4960120-1-expected.checksum  |    2 +-
 .../mac/editing/inserting/4960120-1-expected.png   |  Bin 15987 -> 16812 bytes
 .../mac/editing/inserting/4960120-1-expected.txt   |   16 +-
 .../editing/inserting/5607069-2-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-2-expected.png   |  Bin 22947 -> 22952 bytes
 .../mac/editing/inserting/5607069-2-expected.txt   |   14 +-
 .../editing/inserting/5607069-3-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-3-expected.png   |  Bin 24465 -> 24462 bytes
 .../mac/editing/inserting/5607069-3-expected.txt   |   18 +-
 .../before-after-input-element-expected.checksum   |    2 +-
 .../before-after-input-element-expected.png        |  Bin 17707 -> 17705 bytes
 .../before-after-input-element-expected.txt        |   10 +-
 .../typing-tab-designmode-forms-expected.checksum  |    2 +-
 .../typing-tab-designmode-forms-expected.png       |  Bin 16680 -> 16884 bytes
 .../typing-tab-designmode-forms-expected.txt       |   24 +-
 .../editing/pasteboard/4806874-expected.checksum   |    2 +-
 .../mac/editing/pasteboard/4806874-expected.png    |  Bin 17925 -> 17932 bytes
 .../mac/editing/pasteboard/4806874-expected.txt    |   10 +-
 .../drop-text-without-selection-expected.checksum  |    2 +-
 .../drop-text-without-selection-expected.png       |  Bin 32837 -> 32763 bytes
 .../drop-text-without-selection-expected.txt       |   14 +-
 .../pasteboard/input-field-1-expected.checksum     |    2 +-
 .../editing/pasteboard/input-field-1-expected.png  |  Bin 16352 -> 16342 bytes
 .../editing/pasteboard/input-field-1-expected.txt  |   12 +-
 .../nested-blocks-with-text-area-expected.checksum |    2 +-
 .../nested-blocks-with-text-area-expected.png      |  Bin 24246 -> 24429 bytes
 .../nested-blocks-with-text-area-expected.txt      |   24 +-
 ...nested-blocks-with-text-field-expected.checksum |    2 +-
 .../nested-blocks-with-text-field-expected.png     |  Bin 24411 -> 24392 bytes
 .../nested-blocks-with-text-field-expected.txt     |   14 +-
 .../pasteboard/pasting-tabs-expected.checksum      |    2 +-
 .../editing/pasteboard/pasting-tabs-expected.png   |  Bin 22164 -> 22163 bytes
 .../editing/pasteboard/pasting-tabs-expected.txt   |   14 +-
 .../editing/selection/3690703-2-expected.checksum  |    2 +-
 .../mac/editing/selection/3690703-2-expected.png   |  Bin 33204 -> 33210 bytes
 .../mac/editing/selection/3690703-2-expected.txt   |   18 +-
 .../editing/selection/3690703-expected.checksum    |    2 +-
 .../mac/editing/selection/3690703-expected.png     |  Bin 33409 -> 33436 bytes
 .../mac/editing/selection/3690703-expected.txt     |   18 +-
 .../editing/selection/3690719-expected.checksum    |    2 +-
 .../mac/editing/selection/3690719-expected.png     |  Bin 33409 -> 33436 bytes
 .../mac/editing/selection/3690719-expected.txt     |   18 +-
 .../editing/selection/4895428-3-expected.checksum  |    2 +-
 .../mac/editing/selection/4895428-3-expected.png   |  Bin 29560 -> 29564 bytes
 .../mac/editing/selection/4895428-3-expected.txt   |    6 +-
 .../editing/selection/4975120-expected.checksum    |    2 +-
 .../mac/editing/selection/4975120-expected.png     |  Bin 24197 -> 24193 bytes
 .../mac/editing/selection/4975120-expected.txt     |    8 +-
 .../editing/selection/5136696-expected.checksum    |    2 +-
 .../mac/editing/selection/5136696-expected.png     |  Bin 26565 -> 26386 bytes
 .../mac/editing/selection/5136696-expected.txt     |    6 +-
 .../editing/selection/5213963-expected.checksum    |    2 +-
 .../mac/editing/selection/5213963-expected.png     |  Bin 23592 -> 23585 bytes
 .../mac/editing/selection/5213963-expected.txt     |    8 +-
 .../selection/drag-select-1-expected.checksum      |    2 +-
 .../editing/selection/drag-select-1-expected.png   |  Bin 16773 -> 16764 bytes
 .../editing/selection/drag-select-1-expected.txt   |    6 +-
 .../selection/drag-text-delay-expected.checksum    |    2 +-
 .../editing/selection/drag-text-delay-expected.png |  Bin 12773 -> 12911 bytes
 .../editing/selection/drag-text-delay-expected.txt |    6 +-
 ...elect-from-textfield-outwards-expected.checksum |    2 +-
 .../select-from-textfield-outwards-expected.png    |  Bin 59715 -> 59745 bytes
 .../select-from-textfield-outwards-expected.txt    |   24 +-
 .../fast/block/margin-collapse/103-expected.txt    |   64 +-
 .../mac/fast/css/line-height-expected.checksum     |    2 +-
 .../platform/mac/fast/css/line-height-expected.png |  Bin 27854 -> 27866 bytes
 .../platform/mac/fast/css/line-height-expected.txt |    6 +-
 .../css/resize-corner-tracking-expected.checksum   |    2 +-
 .../fast/css/resize-corner-tracking-expected.png   |  Bin 21083 -> 21151 bytes
 .../fast/css/resize-corner-tracking-expected.txt   |   18 +-
 .../reset-textarea-expected.checksum               |    2 +-
 .../reset-textarea-expected.png                    |  Bin 29075 -> 29090 bytes
 .../reset-textarea-expected.txt                    |   30 +-
 .../mac/fast/dom/isindex-002-expected.checksum     |    2 +-
 .../platform/mac/fast/dom/isindex-002-expected.png |  Bin 19769 -> 19776 bytes
 .../platform/mac/fast/dom/isindex-002-expected.txt |   12 +-
 .../mac/fast/dynamic/008-expected.checksum         |    2 +-
 .../platform/mac/fast/dynamic/008-expected.png     |  Bin 30135 -> 30083 bytes
 .../platform/mac/fast/dynamic/008-expected.txt     |   18 +-
 .../mac/fast/events/autoscroll-expected.checksum   |    2 +-
 .../mac/fast/events/autoscroll-expected.png        |  Bin 23996 -> 24002 bytes
 .../mac/fast/events/autoscroll-expected.txt        |    6 +-
 .../events/context-no-deselect-expected.checksum   |    2 +-
 .../fast/events/context-no-deselect-expected.png   |  Bin 13759 -> 13892 bytes
 .../fast/events/context-no-deselect-expected.txt   |    6 +-
 .../mac/fast/events/label-focus-expected.checksum  |    2 +-
 .../mac/fast/events/label-focus-expected.png       |  Bin 14891 -> 14888 bytes
 .../mac/fast/events/label-focus-expected.txt       |    8 +-
 .../fast/forms/basic-textareas-expected.checksum   |    2 +-
 .../mac/fast/forms/basic-textareas-expected.png    |  Bin 116809 -> 118460 bytes
 .../mac/fast/forms/basic-textareas-expected.txt    | 1757 ++++++++++----------
 .../forms/box-shadow-override-expected.checksum    |    2 +-
 .../fast/forms/box-shadow-override-expected.png    |  Bin 32657 -> 32670 bytes
 .../fast/forms/box-shadow-override-expected.txt    |   30 +-
 .../control-restrict-line-height-expected.checksum |    2 +-
 .../control-restrict-line-height-expected.png      |  Bin 27564 -> 27784 bytes
 .../control-restrict-line-height-expected.txt      |   10 +-
 .../mac/fast/forms/encoding-test-expected.checksum |    2 +-
 .../mac/fast/forms/encoding-test-expected.png      |  Bin 13755 -> 13764 bytes
 .../mac/fast/forms/encoding-test-expected.txt      |    6 +-
 .../fast/forms/fieldset-align-expected.checksum    |    2 +-
 .../mac/fast/forms/fieldset-align-expected.png     |  Bin 44796 -> 44672 bytes
 .../mac/fast/forms/fieldset-align-expected.txt     |   96 +-
 .../forms/form-element-geometry-expected.checksum  |    2 +-
 .../fast/forms/form-element-geometry-expected.png  |  Bin 89841 -> 89611 bytes
 .../fast/forms/form-element-geometry-expected.txt  |   82 +-
 .../mac/fast/forms/input-align-expected.checksum   |    2 +-
 .../mac/fast/forms/input-align-expected.png        |  Bin 24821 -> 24935 bytes
 .../mac/fast/forms/input-align-expected.txt        |   46 +-
 .../input-appearance-bkcolor-expected.checksum     |    2 +-
 .../forms/input-appearance-bkcolor-expected.png    |  Bin 19152 -> 19000 bytes
 .../forms/input-appearance-bkcolor-expected.txt    |   18 +-
 ...ut-appearance-default-bkcolor-expected.checksum |    2 +-
 .../input-appearance-default-bkcolor-expected.png  |  Bin 17571 -> 17442 bytes
 .../input-appearance-default-bkcolor-expected.txt  |    6 +-
 .../input-appearance-disabled-expected.checksum    |    2 +-
 .../forms/input-appearance-disabled-expected.png   |  Bin 16835 -> 16703 bytes
 .../forms/input-appearance-disabled-expected.txt   |    6 +-
 .../forms/input-appearance-focus-expected.checksum |    2 +-
 .../fast/forms/input-appearance-focus-expected.png |  Bin 31673 -> 31675 bytes
 .../fast/forms/input-appearance-focus-expected.txt |   16 +-
 .../input-appearance-height-expected.checksum      |    2 +-
 .../forms/input-appearance-height-expected.png     |  Bin 36689 -> 36638 bytes
 .../forms/input-appearance-height-expected.txt     |   58 +-
 ...put-appearance-preventDefault-expected.checksum |    2 +-
 .../input-appearance-preventDefault-expected.png   |  Bin 23799 -> 23805 bytes
 .../input-appearance-preventDefault-expected.txt   |    8 +-
 .../input-appearance-readonly-expected.checksum    |    2 +-
 .../forms/input-appearance-readonly-expected.png   |  Bin 17183 -> 17043 bytes
 .../forms/input-appearance-readonly-expected.txt   |    6 +-
 .../input-appearance-selection-expected.checksum   |    2 +-
 .../forms/input-appearance-selection-expected.png  |  Bin 54570 -> 54587 bytes
 .../forms/input-appearance-selection-expected.txt  |    6 +-
 .../input-appearance-visibility-expected.checksum  |    2 +-
 .../forms/input-appearance-visibility-expected.png |  Bin 17288 -> 17165 bytes
 .../forms/input-appearance-visibility-expected.txt |    6 +-
 .../forms/input-appearance-width-expected.checksum |    2 +-
 .../fast/forms/input-appearance-width-expected.png |  Bin 21419 -> 20779 bytes
 .../fast/forms/input-appearance-width-expected.txt |   24 +-
 .../fast/forms/input-baseline-expected.checksum    |    2 +-
 .../mac/fast/forms/input-baseline-expected.png     |  Bin 23472 -> 23629 bytes
 .../mac/fast/forms/input-baseline-expected.txt     |   22 +-
 .../forms/input-disabled-color-expected.checksum   |    2 +-
 .../fast/forms/input-disabled-color-expected.png   |  Bin 49110 -> 51011 bytes
 .../fast/forms/input-disabled-color-expected.txt   |  198 ++--
 ...ouble-click-selection-gap-bug-expected.checksum |    2 +-
 ...put-double-click-selection-gap-bug-expected.png |  Bin 18205 -> 18501 bytes
 ...put-double-click-selection-gap-bug-expected.txt |   28 +-
 .../fast/forms/input-paste-undo-expected.checksum  |    2 +-
 .../mac/fast/forms/input-paste-undo-expected.png   |  Bin 23103 -> 23094 bytes
 .../mac/fast/forms/input-paste-undo-expected.txt   |    6 +-
 .../input-readonly-autoscroll-expected.checksum    |    2 +-
 .../forms/input-readonly-autoscroll-expected.png   |  Bin 22927 -> 23063 bytes
 .../forms/input-readonly-autoscroll-expected.txt   |   12 +-
 .../forms/input-readonly-dimmed-expected.checksum  |    2 +-
 .../fast/forms/input-readonly-dimmed-expected.png  |  Bin 18116 -> 18139 bytes
 .../fast/forms/input-readonly-dimmed-expected.txt  |    6 +-
 .../forms/input-readonly-empty-expected.checksum   |    2 +-
 .../fast/forms/input-readonly-empty-expected.png   |  Bin 15766 -> 16627 bytes
 .../fast/forms/input-readonly-empty-expected.txt   |    6 +-
 .../mac/fast/forms/input-spaces-expected.checksum  |    2 +-
 .../mac/fast/forms/input-spaces-expected.png       |  Bin 20178 -> 19989 bytes
 .../mac/fast/forms/input-spaces-expected.txt       |    6 +-
 .../mac/fast/forms/input-table-expected.txt        |   18 +-
 .../input-text-click-inside-expected.checksum      |    2 +-
 .../forms/input-text-click-inside-expected.png     |  Bin 20522 -> 20551 bytes
 .../forms/input-text-click-inside-expected.txt     |    6 +-
 .../input-text-click-outside-expected.checksum     |    2 +-
 .../forms/input-text-click-outside-expected.png    |  Bin 20346 -> 20341 bytes
 .../forms/input-text-click-outside-expected.txt    |    6 +-
 .../input-text-double-click-expected.checksum      |    2 +-
 .../forms/input-text-double-click-expected.png     |  Bin 18494 -> 18508 bytes
 .../forms/input-text-double-click-expected.txt     |    6 +-
 .../forms/input-text-drag-down-expected.checksum   |    2 +-
 .../fast/forms/input-text-drag-down-expected.png   |  Bin 20125 -> 20128 bytes
 .../fast/forms/input-text-drag-down-expected.txt   |    6 +-
 .../forms/input-text-maxlength-expected.checksum   |    2 +-
 .../fast/forms/input-text-maxlength-expected.png   |  Bin 61128 -> 61287 bytes
 .../fast/forms/input-text-maxlength-expected.txt   |  172 +-
 .../input-text-option-delete-expected.checksum     |    2 +-
 .../forms/input-text-option-delete-expected.png    |  Bin 18162 -> 18174 bytes
 .../forms/input-text-option-delete-expected.txt    |    6 +-
 .../input-text-paste-maxlength-expected.checksum   |    2 +-
 .../forms/input-text-paste-maxlength-expected.png  |  Bin 51892 -> 51900 bytes
 .../forms/input-text-paste-maxlength-expected.txt  |  130 +-
 ...nput-text-scroll-left-on-blur-expected.checksum |    2 +-
 .../input-text-scroll-left-on-blur-expected.png    |  Bin 23523 -> 23419 bytes
 .../input-text-scroll-left-on-blur-expected.txt    |   30 +-
 ...nput-text-self-emptying-click-expected.checksum |    2 +-
 .../input-text-self-emptying-click-expected.png    |  Bin 19524 -> 19514 bytes
 .../input-text-self-emptying-click-expected.txt    |    6 +-
 .../forms/input-text-word-wrap-expected.checksum   |    2 +-
 .../fast/forms/input-text-word-wrap-expected.png   |  Bin 18699 -> 19015 bytes
 .../fast/forms/input-text-word-wrap-expected.txt   |    6 +-
 .../forms/input-type-change2-expected.checksum     |    2 +-
 .../mac/fast/forms/input-type-change2-expected.png |  Bin 23623 -> 23439 bytes
 .../mac/fast/forms/input-type-change2-expected.txt |    6 +-
 .../input-type-text-min-width-expected.checksum    |    2 +-
 .../forms/input-type-text-min-width-expected.png   |  Bin 24203 -> 24606 bytes
 .../forms/input-type-text-min-width-expected.txt   |    6 +-
 .../mac/fast/forms/input-value-expected.checksum   |    2 +-
 .../mac/fast/forms/input-value-expected.png        |  Bin 87713 -> 87712 bytes
 .../mac/fast/forms/input-value-expected.txt        |   30 +-
 .../mac/fast/forms/input-width-expected.checksum   |    2 +-
 .../mac/fast/forms/input-width-expected.png        |  Bin 11310 -> 11492 bytes
 .../mac/fast/forms/input-width-expected.txt        |    6 +-
 ...-overflow-in-textarea-padding-expected.checksum |    2 +-
 ...nebox-overflow-in-textarea-padding-expected.png |  Bin 20931 -> 21109 bytes
 ...nebox-overflow-in-textarea-padding-expected.txt |   24 +-
 .../forms/negativeLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/negativeLineHeight-expected.png |  Bin 24377 -> 24387 bytes
 .../mac/fast/forms/negativeLineHeight-expected.txt |   22 +-
 .../forms/password-placeholder-expected.checksum   |    2 +-
 .../fast/forms/password-placeholder-expected.png   |  Bin 12333 -> 12323 bytes
 .../fast/forms/password-placeholder-expected.txt   |    6 +-
 ...ord-placeholder-text-security-expected.checksum |    2 +-
 ...password-placeholder-text-security-expected.png |  Bin 32293 -> 32316 bytes
 ...password-placeholder-text-security-expected.txt |   24 +-
 .../placeholder-pseudo-style-expected.checksum     |    2 +-
 .../forms/placeholder-pseudo-style-expected.png    |  Bin 21930 -> 21422 bytes
 .../forms/placeholder-pseudo-style-expected.txt    |   60 +-
 .../placeholder-set-attribute-expected.checksum    |    2 +-
 .../forms/placeholder-set-attribute-expected.png   |  Bin 17163 -> 17165 bytes
 .../forms/placeholder-set-attribute-expected.txt   |    6 +-
 .../forms/placeholder-set-value-expected.checksum  |    2 +-
 .../fast/forms/placeholder-set-value-expected.png  |  Bin 16450 -> 23698 bytes
 .../fast/forms/placeholder-set-value-expected.txt  |   10 +-
 ...h-cancel-button-style-sharing-expected.checksum |    2 +-
 ...search-cancel-button-style-sharing-expected.png |  Bin 17836 -> 17679 bytes
 ...search-cancel-button-style-sharing-expected.txt |   24 +-
 ...ch-display-none-cancel-button-expected.checksum |    2 +-
 .../search-display-none-cancel-button-expected.png |  Bin 17826 -> 17794 bytes
 .../search-display-none-cancel-button-expected.txt |    8 +-
 ...rch-placeholder-value-changed-expected.checksum |    2 +-
 .../search-placeholder-value-changed-expected.png  |  Bin 13192 -> 13014 bytes
 .../search-placeholder-value-changed-expected.txt  |   10 +-
 .../mac/fast/forms/search-rtl-expected.checksum    |    2 +-
 .../mac/fast/forms/search-rtl-expected.png         |  Bin 29068 -> 29209 bytes
 .../mac/fast/forms/search-rtl-expected.txt         |   62 +-
 .../forms/search-transformed-expected.checksum     |    2 +-
 .../mac/fast/forms/search-transformed-expected.png |  Bin 18634 -> 25942 bytes
 .../mac/fast/forms/search-transformed-expected.txt |   14 +-
 .../mac/fast/forms/search-zoomed-expected.checksum |    2 +-
 .../mac/fast/forms/search-zoomed-expected.png      |  Bin 28283 -> 27378 bytes
 .../mac/fast/forms/search-zoomed-expected.txt      |   14 +-
 .../forms/searchfield-heights-expected.checksum    |    2 +-
 .../fast/forms/searchfield-heights-expected.png    |  Bin 19095 -> 19272 bytes
 .../fast/forms/searchfield-heights-expected.txt    |   38 +-
 .../forms/tabbing-input-iframe-expected.checksum   |    2 +-
 .../fast/forms/tabbing-input-iframe-expected.png   |  Bin 19080 -> 19072 bytes
 .../fast/forms/tabbing-input-iframe-expected.txt   |   22 +-
 .../forms/textAreaLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/textAreaLineHeight-expected.png |  Bin 48117 -> 45936 bytes
 .../mac/fast/forms/textAreaLineHeight-expected.txt |  102 +-
 .../fast/forms/textarea-align-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-align-expected.png     |  Bin 28848 -> 28906 bytes
 .../mac/fast/forms/textarea-align-expected.txt     |   66 +-
 .../forms/textarea-rows-cols-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-rows-cols-expected.png |  Bin 46948 -> 65390 bytes
 .../mac/fast/forms/textarea-rows-cols-expected.txt |  252 ++--
 .../forms/textarea-scroll-height-expected.checksum |    2 +-
 .../fast/forms/textarea-scroll-height-expected.png |  Bin 30971 -> 30857 bytes
 .../fast/forms/textarea-scroll-height-expected.txt |   96 +-
 .../forms/textarea-scrollbar-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-scrollbar-expected.png |  Bin 20145 -> 20245 bytes
 .../mac/fast/forms/textarea-scrollbar-expected.txt |   60 +-
 .../forms/textarea-scrolled-type-expected.checksum |    2 +-
 .../fast/forms/textarea-scrolled-type-expected.png |  Bin 21736 -> 21968 bytes
 .../fast/forms/textarea-scrolled-type-expected.txt |  100 +-
 .../forms/textarea-setinnerhtml-expected.checksum  |    2 +-
 .../fast/forms/textarea-setinnerhtml-expected.png  |  Bin 12658 -> 12767 bytes
 .../fast/forms/textarea-setinnerhtml-expected.txt  |   10 +-
 .../fast/forms/textarea-width-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-width-expected.png     |  Bin 34699 -> 30783 bytes
 .../mac/fast/forms/textarea-width-expected.txt     |   28 +-
 .../textfield-drag-into-disabled-expected.checksum |    2 +-
 .../textfield-drag-into-disabled-expected.png      |  Bin 27697 -> 27615 bytes
 .../textfield-drag-into-disabled-expected.txt      |   18 +-
 .../fast/forms/textfield-outline-expected.checksum |    2 +-
 .../mac/fast/forms/textfield-outline-expected.png  |  Bin 18261 -> 18100 bytes
 .../mac/fast/forms/textfield-outline-expected.txt  |    6 +-
 .../forms/textfield-overflow-expected.checksum     |    2 +-
 .../mac/fast/forms/textfield-overflow-expected.png |  Bin 11728 -> 11730 bytes
 .../mac/fast/forms/textfield-overflow-expected.txt |    6 +-
 .../visual-hebrew-text-field-expected.checksum     |    2 +-
 .../forms/visual-hebrew-text-field-expected.png    |  Bin 29381 -> 29385 bytes
 .../forms/visual-hebrew-text-field-expected.txt    |    6 +-
 .../mac/fast/invalid/residual-style-expected.txt   |    8 +-
 .../lists/dynamic-marker-crash-expected.checksum   |    2 +-
 .../fast/lists/dynamic-marker-crash-expected.png   |  Bin 16214 -> 16246 bytes
 .../fast/lists/dynamic-marker-crash-expected.txt   |    6 +-
 .../fast/overflow/overflow-x-y-expected.checksum   |    2 +-
 .../mac/fast/overflow/overflow-x-y-expected.png    |  Bin 30889 -> 30863 bytes
 .../mac/fast/overflow/overflow-x-y-expected.txt    |   26 +-
 .../parser/comment-in-textarea-expected.checksum   |    2 +-
 .../fast/parser/comment-in-textarea-expected.png   |  Bin 15290 -> 15049 bytes
 .../fast/parser/comment-in-textarea-expected.txt   |   22 +-
 .../entity-comment-in-textarea-expected.checksum   |    2 +-
 .../parser/entity-comment-in-textarea-expected.png |  Bin 14901 -> 15050 bytes
 .../parser/entity-comment-in-textarea-expected.txt |   16 +-
 .../open-comment-in-textarea-expected.checksum     |    2 +-
 .../parser/open-comment-in-textarea-expected.png   |  Bin 16913 -> 16050 bytes
 .../parser/open-comment-in-textarea-expected.txt   |   26 +-
 ...-by-invalidateSelection-crash-expected.checksum |    2 +-
 ...ction-by-invalidateSelection-crash-expected.png |  Bin 11756 -> 11863 bytes
 ...ction-by-invalidateSelection-crash-expected.txt |    6 +-
 .../repaint/search-field-cancel-expected.checksum  |    2 +-
 .../fast/repaint/search-field-cancel-expected.png  |  Bin 14259 -> 21240 bytes
 .../fast/repaint/search-field-cancel-expected.txt  |   10 +-
 .../repaint/subtree-root-skipped-expected.checksum |    2 +-
 .../fast/repaint/subtree-root-skipped-expected.png |  Bin 13935 -> 13943 bytes
 .../fast/repaint/subtree-root-skipped-expected.txt |    6 +-
 .../replaced/replaced-breaking-expected.checksum   |    2 +-
 .../fast/replaced/replaced-breaking-expected.png   |  Bin 26204 -> 26198 bytes
 .../fast/replaced/replaced-breaking-expected.txt   |   12 +-
 .../replaced-breaking-mixture-expected.checksum    |    2 +-
 .../replaced-breaking-mixture-expected.png         |  Bin 18252 -> 18262 bytes
 .../replaced-breaking-mixture-expected.txt         |   12 +-
 .../width100percent-searchfield-expected.checksum  |    2 +-
 .../width100percent-searchfield-expected.png       |  Bin 18572 -> 18576 bytes
 .../width100percent-searchfield-expected.txt       |   44 +-
 .../width100percent-textarea-expected.checksum     |    2 +-
 .../replaced/width100percent-textarea-expected.png |  Bin 16709 -> 16303 bytes
 .../replaced/width100percent-textarea-expected.txt |  114 +-
 .../width100percent-textfield-expected.checksum    |    2 +-
 .../width100percent-textfield-expected.png         |  Bin 17012 -> 16841 bytes
 .../width100percent-textfield-expected.txt         |   36 +-
 .../platform/mac/fast/table/003-expected.checksum  |    2 +-
 .../platform/mac/fast/table/003-expected.png       |  Bin 38785 -> 38785 bytes
 .../platform/mac/fast/table/003-expected.txt       |   36 +-
 .../fast/table/colspanMinWidth-expected.checksum   |    2 +-
 .../mac/fast/table/colspanMinWidth-expected.png    |  Bin 11652 -> 11666 bytes
 .../mac/fast/table/colspanMinWidth-expected.txt    |   32 +-
 .../table/spanOverlapRepaint-expected.checksum     |    2 +-
 .../mac/fast/table/spanOverlapRepaint-expected.png |  Bin 12276 -> 12278 bytes
 .../mac/fast/table/spanOverlapRepaint-expected.txt |   30 +-
 .../table/text-field-baseline-expected.checksum    |    2 +-
 .../fast/table/text-field-baseline-expected.png    |  Bin 47879 -> 47918 bytes
 .../fast/table/text-field-baseline-expected.txt    |   50 +-
 .../rtl-white-space-pre-wrap-expected.checksum     |    2 +-
 .../rtl-white-space-pre-wrap-expected.png          |  Bin 39678 -> 39676 bytes
 .../rtl-white-space-pre-wrap-expected.txt          |   22 +-
 .../text/textIteratorNilRenderer-expected.checksum |    2 +-
 .../fast/text/textIteratorNilRenderer-expected.png |  Bin 15616 -> 15372 bytes
 .../fast/text/textIteratorNilRenderer-expected.txt |   18 +-
 ...ransformed-focused-text-input-expected.checksum |    2 +-
 .../transformed-focused-text-input-expected.png    |  Bin 6501 -> 14405 bytes
 .../transformed-focused-text-input-expected.txt    |    6 +-
 .../navigation/anchor-basic-expected.checksum      |    2 +-
 .../tests/navigation/anchor-basic-expected.png     |  Bin 38378 -> 38334 bytes
 .../tests/navigation/anchor-basic-expected.txt     |   66 +-
 .../tests/navigation/anchor-frames-expected.txt    |   66 +-
 .../navigation/anchor-goback-expected.checksum     |    2 +-
 .../tests/navigation/anchor-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../tests/navigation/anchor-goback-expected.txt    |   68 +-
 .../navigation/anchor-subframeload-expected.txt    |   66 +-
 .../javascriptlink-basic-expected.checksum         |    2 +-
 .../navigation/javascriptlink-basic-expected.png   |  Bin 83776 -> 83581 bytes
 .../navigation/javascriptlink-basic-expected.txt   |   64 +-
 .../javascriptlink-frames-expected.checksum        |    2 +-
 .../navigation/javascriptlink-frames-expected.png  |  Bin 85705 -> 85769 bytes
 .../navigation/javascriptlink-frames-expected.txt  |   64 +-
 .../javascriptlink-goback-expected.checksum        |    2 +-
 .../navigation/javascriptlink-goback-expected.png  |  Bin 82950 -> 82791 bytes
 .../navigation/javascriptlink-goback-expected.txt  |   68 +-
 .../javascriptlink-subframeload-expected.checksum  |    2 +-
 .../javascriptlink-subframeload-expected.png       |  Bin 85705 -> 85769 bytes
 .../javascriptlink-subframeload-expected.txt       |   64 +-
 .../metaredirect-basic-expected.checksum           |    2 +-
 .../navigation/metaredirect-basic-expected.png     |  Bin 83776 -> 83581 bytes
 .../navigation/metaredirect-basic-expected.txt     |   64 +-
 .../metaredirect-frames-expected.checksum          |    2 +-
 .../navigation/metaredirect-frames-expected.png    |  Bin 85705 -> 85769 bytes
 .../navigation/metaredirect-frames-expected.txt    |   64 +-
 .../metaredirect-goback-expected.checksum          |    2 +-
 .../navigation/metaredirect-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../navigation/metaredirect-goback-expected.txt    |   68 +-
 .../metaredirect-subframeload-expected.checksum    |    2 +-
 .../metaredirect-subframeload-expected.png         |  Bin 85705 -> 85769 bytes
 .../metaredirect-subframeload-expected.txt         |   64 +-
 .../navigation/post-goback2-expected.checksum      |    2 +-
 .../tests/navigation/post-goback2-expected.png     |  Bin 82950 -> 82791 bytes
 .../tests/navigation/post-goback2-expected.txt     |   68 +-
 .../postredirect-goback2-expected.checksum         |    2 +-
 .../navigation/postredirect-goback2-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/postredirect-goback2-expected.txt   |   68 +-
 .../navigation/redirect302-basic-expected.checksum |    2 +-
 .../navigation/redirect302-basic-expected.png      |  Bin 83776 -> 83581 bytes
 .../navigation/redirect302-basic-expected.txt      |   64 +-
 .../redirect302-frames-expected.checksum           |    2 +-
 .../navigation/redirect302-frames-expected.png     |  Bin 85705 -> 85769 bytes
 .../navigation/redirect302-frames-expected.txt     |   64 +-
 .../redirect302-goback-expected.checksum           |    2 +-
 .../navigation/redirect302-goback-expected.png     |  Bin 82950 -> 82791 bytes
 .../navigation/redirect302-goback-expected.txt     |   68 +-
 .../redirect302-subframeload-expected.checksum     |    2 +-
 .../redirect302-subframeload-expected.png          |  Bin 85705 -> 85769 bytes
 .../redirect302-subframeload-expected.txt          |   64 +-
 .../relativeanchor-basic-expected.checksum         |    2 +-
 .../navigation/relativeanchor-basic-expected.png   |  Bin 38378 -> 38334 bytes
 .../navigation/relativeanchor-basic-expected.txt   |   66 +-
 .../navigation/relativeanchor-frames-expected.txt  |   66 +-
 .../relativeanchor-goback-expected.checksum        |    2 +-
 .../navigation/relativeanchor-goback-expected.png  |  Bin 38378 -> 38334 bytes
 .../navigation/relativeanchor-goback-expected.txt  |   66 +-
 .../slowmetaredirect-basic-expected.checksum       |    2 +-
 .../navigation/slowmetaredirect-basic-expected.png |  Bin 83776 -> 83581 bytes
 .../navigation/slowmetaredirect-basic-expected.txt |   64 +-
 .../slowtimerredirect-basic-expected.checksum      |    2 +-
 .../slowtimerredirect-basic-expected.png           |  Bin 83776 -> 83581 bytes
 .../slowtimerredirect-basic-expected.txt           |   64 +-
 .../navigation/success200-basic-expected.checksum  |    2 +-
 .../tests/navigation/success200-basic-expected.png |  Bin 83776 -> 83581 bytes
 .../tests/navigation/success200-basic-expected.txt |   64 +-
 .../navigation/success200-frames-expected.checksum |    2 +-
 .../navigation/success200-frames-expected.png      |  Bin 85705 -> 85769 bytes
 .../navigation/success200-frames-expected.txt      |   64 +-
 .../success200-frames-loadsame-expected.checksum   |    2 +-
 .../success200-frames-loadsame-expected.png        |  Bin 85705 -> 85769 bytes
 .../success200-frames-loadsame-expected.txt        |   64 +-
 .../navigation/success200-goback-expected.checksum |    2 +-
 .../navigation/success200-goback-expected.png      |  Bin 82950 -> 82791 bytes
 .../navigation/success200-goback-expected.txt      |   68 +-
 .../success200-loadsame-expected.checksum          |    2 +-
 .../navigation/success200-loadsame-expected.png    |  Bin 83776 -> 83581 bytes
 .../navigation/success200-loadsame-expected.txt    |   64 +-
 .../navigation/success200-reload-expected.checksum |    2 +-
 .../navigation/success200-reload-expected.png      |  Bin 78245 -> 78273 bytes
 .../navigation/success200-reload-expected.txt      |   64 +-
 .../success200-subframeload-expected.checksum      |    2 +-
 .../success200-subframeload-expected.png           |  Bin 85705 -> 85769 bytes
 .../success200-subframeload-expected.txt           |   64 +-
 .../timerredirect-basic-expected.checksum          |    2 +-
 .../navigation/timerredirect-basic-expected.png    |  Bin 83776 -> 83581 bytes
 .../navigation/timerredirect-basic-expected.txt    |   64 +-
 .../timerredirect-frames-expected.checksum         |    2 +-
 .../navigation/timerredirect-frames-expected.png   |  Bin 85705 -> 85769 bytes
 .../navigation/timerredirect-frames-expected.txt   |   64 +-
 .../timerredirect-goback-expected.checksum         |    2 +-
 .../navigation/timerredirect-goback-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/timerredirect-goback-expected.txt   |   68 +-
 .../timerredirect-subframeload-expected.checksum   |    2 +-
 .../timerredirect-subframeload-expected.png        |  Bin 85705 -> 85769 bytes
 .../timerredirect-subframeload-expected.txt        |   64 +-
 .../custom/inline-svg-in-xhtml-expected.checksum   |    2 +-
 .../svg/custom/inline-svg-in-xhtml-expected.png    |  Bin 320199 -> 316237 bytes
 .../svg/custom/inline-svg-in-xhtml-expected.txt    |    6 +-
 .../mac/svg/hixie/mixed/003-expected.checksum      |    2 +-
 .../platform/mac/svg/hixie/mixed/003-expected.png  |  Bin 20493 -> 20490 bytes
 .../platform/mac/svg/hixie/mixed/003-expected.txt  |    6 +-
 .../tables/mozilla/bugs/bug1188-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug1188-expected.png   |  Bin 52876 -> 52872 bytes
 .../mac/tables/mozilla/bugs/bug1188-expected.txt   |   24 +-
 .../tables/mozilla/bugs/bug12384-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug12384-expected.png  |  Bin 11767 -> 11809 bytes
 .../mac/tables/mozilla/bugs/bug12384-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug18359-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug18359-expected.png  |  Bin 27904 -> 27891 bytes
 .../mac/tables/mozilla/bugs/bug18359-expected.txt  |   22 +-
 .../mozilla/bugs/bug194024-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug194024-expected.png |  Bin 41325 -> 41328 bytes
 .../mac/tables/mozilla/bugs/bug194024-expected.txt |  214 ++--
 .../tables/mozilla/bugs/bug24200-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug24200-expected.png  |  Bin 20965 -> 20970 bytes
 .../mac/tables/mozilla/bugs/bug24200-expected.txt  |   12 +-
 .../mozilla/bugs/bug2479-2-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-2-expected.png |  Bin 45669 -> 45580 bytes
 .../mac/tables/mozilla/bugs/bug2479-2-expected.txt |   70 +-
 .../mozilla/bugs/bug2479-3-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-3-expected.png |  Bin 93211 -> 93214 bytes
 .../mac/tables/mozilla/bugs/bug2479-3-expected.txt |    8 +-
 .../mac/tables/mozilla/bugs/bug2479-4-expected.txt |   14 +-
 .../tables/mozilla/bugs/bug28928-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug28928-expected.png  |  Bin 27374 -> 27406 bytes
 .../mac/tables/mozilla/bugs/bug28928-expected.txt  |   36 +-
 .../tables/mozilla/bugs/bug30559-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30559-expected.png  |  Bin 18415 -> 18425 bytes
 .../mac/tables/mozilla/bugs/bug30559-expected.txt  |   26 +-
 .../tables/mozilla/bugs/bug30692-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30692-expected.png  |  Bin 37249 -> 37255 bytes
 .../mac/tables/mozilla/bugs/bug30692-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug4382-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4382-expected.png   |  Bin 23533 -> 23491 bytes
 .../mac/tables/mozilla/bugs/bug4382-expected.txt   |   12 +-
 .../tables/mozilla/bugs/bug4527-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4527-expected.png   |  Bin 24681 -> 24682 bytes
 .../mac/tables/mozilla/bugs/bug4527-expected.txt   |   14 +-
 .../mozilla/bugs/bug46368-1-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-1-expected.png    |  Bin 39486 -> 39494 bytes
 .../tables/mozilla/bugs/bug46368-1-expected.txt    |    6 +-
 .../mozilla/bugs/bug46368-2-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-2-expected.png    |  Bin 24157 -> 24159 bytes
 .../tables/mozilla/bugs/bug46368-2-expected.txt    |    6 +-
 .../tables/mozilla/bugs/bug51037-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug51037-expected.png  |  Bin 21223 -> 21214 bytes
 .../mac/tables/mozilla/bugs/bug51037-expected.txt  |   12 +-
 .../tables/mozilla/bugs/bug55545-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug55545-expected.png  |  Bin 12938 -> 12951 bytes
 .../mac/tables/mozilla/bugs/bug55545-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug59354-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug59354-expected.png  |  Bin 23386 -> 23444 bytes
 .../mac/tables/mozilla/bugs/bug59354-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug7342-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug7342-expected.png   |  Bin 32097 -> 32082 bytes
 .../mac/tables/mozilla/bugs/bug7342-expected.txt   |   50 +-
 .../tables/mozilla/bugs/bug96334-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug96334-expected.png  |  Bin 32634 -> 32645 bytes
 .../mac/tables/mozilla/bugs/bug96334-expected.txt  |   14 +-
 .../tables/mozilla/bugs/bug99948-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug99948-expected.png  |  Bin 16498 -> 16515 bytes
 .../mac/tables/mozilla/bugs/bug99948-expected.txt  |   16 +-
 .../tables/mozilla/dom/tableDom-expected.checksum  |    2 +-
 .../mac/tables/mozilla/dom/tableDom-expected.png   |  Bin 19180 -> 19182 bytes
 .../mac/tables/mozilla/dom/tableDom-expected.txt   |   52 +-
 .../mozilla/other/move_row-expected.checksum       |    2 +-
 .../mac/tables/mozilla/other/move_row-expected.png |  Bin 19002 -> 19591 bytes
 .../mac/tables/mozilla/other/move_row-expected.txt |   22 +-
 .../bugs/bug2479-5-expected.txt                    |   14 +-
 .../bugs/bug92647-1-expected.checksum              |    2 +-
 .../bugs/bug92647-1-expected.png                   |  Bin 15375 -> 15388 bytes
 .../bugs/bug92647-1-expected.txt                   |   38 +-
 .../custom/resources/svg-fonts-in-text-controls.js |   20 +
 .../custom/svg-fonts-in-text-controls-expected.txt |   11 +
 .../svg/custom/svg-fonts-in-text-controls.html     |   13 +
 WebCore/ChangeLog                                  |   70 +
 WebCore/css/html4.css                              |    2 +
 WebCore/css/themeWin.css                           |    4 -
 WebCore/platform/graphics/SimpleFontData.cpp       |   53 +-
 WebCore/platform/graphics/SimpleFontData.h         |    7 +
 .../chromium/SimpleFontDataChromiumWin.cpp         |    5 +
 .../graphics/chromium/SimpleFontDataLinux.cpp      |    5 +
 .../platform/graphics/gtk/SimpleFontDataGtk.cpp    |    7 +
 .../platform/graphics/gtk/SimpleFontDataPango.cpp  |    7 +
 WebCore/platform/graphics/mac/SimpleFontDataMac.mm |   27 +
 WebCore/platform/graphics/qt/SimpleFontDataQt.cpp  |    7 +
 .../platform/graphics/win/SimpleFontDataCGWin.cpp  |   10 +
 .../graphics/win/SimpleFontDataCairoWin.cpp        |    7 +
 .../platform/graphics/win/SimpleFontDataWin.cpp    |    2 +
 WebCore/platform/graphics/wx/SimpleFontDataWx.cpp  |    7 +
 WebCore/rendering/RenderTextControl.cpp            |    6 +-
 WebCore/rendering/RenderTextControlMultiLine.cpp   |    4 -
 WebCore/rendering/RenderTextControlSingleLine.cpp  |    4 +
 558 files changed, 5852 insertions(+), 4236 deletions(-)
Comment 57 Ojan Vafai 2009-04-10 16:09:58 PDT
(In reply to comment #53)
> (From update of attachment 29354 [details] [review])
> +        (WebCore::SimpleFontData::initCharWidthsFromZeroAndW):
> 
> This is in the change log but no longer in the patch.

Sorry, I'm still not used to manually maintained changelogs as a concept. Fixed.

> +        m_adjustedSpaceWidth = m_treatAsFixedPitch ? ceilf(m_spaceWidth) :
> roundf(m_spaceWidth);
> 
> Can an SVG font ever be treated as fixed pitch?

Heh, no. Fixed.

> +        m_avgCharWidth =
> widthForGlyph(glyphPageZero->glyphDataForCharacter(digitZeroChar).glyph);
> 
> What if the '0' glyph is missing?

Fixed.

> +        m_maxCharWidth =
> widthForGlyph(glyphPageZero->glyphDataForCharacter(letter4E00).glyph);
> 
> This is wrong. Code point U+4E00 is not in glyph page zero. It is in glyph page
> 0x4e00 / GlyphPage::size. It also doesn't check for the missing glyph case. I
> think you should come up with a way to get the width of the U+4E00, it if
> exists, without instantiating a glyph page.
> 
> +            m_maxCharWidth =
> widthForGlyph(glyphPageZero->glyphDataForCharacter(letterWChar).glyph);
> 
> Not checking for the missing glyph.

Got rid of both of these fallbacks. Now we just grab the max of the avgCharWidth and the ascent, which I'm told should be roughly equal to the width of a CJK character.

> +const uint32 kOS2CompatibilityTable = 'OS/2';
> +const int kOS2CompatibilityTableMinValidLength = 68;
> +const int kOS2xAvgCharWidthOffset = 2;
> 
> We don't use the 'k' prefix for constants in WebCore. I think a better name for
> the first constant would be OS2CompatibilityTableTag. Since these are only used
> in platformCharWidthInit(), why not move them into that function?
> 
> +        // retrieve the (big-endian) average character width for this font
> 
> Sentence-like comments should have sentence capitalization and end with a
> period.

Fixed.

> +        SInt16 iAvgWidth = buffer[kOS2xAvgCharWidthOffset] * 256 +
> buffer[kOS2xAvgCharWidthOffset + 1];
> +        m_avgCharWidth = scaleEmToUnits(iAvgWidth, m_unitsPerEm) *
> m_font.m_size;
> 
> Given that iAvgWidth may be invalid, I think you should not leave it up to the
> cross-platform function to discover it. You should check the validity here.
> Then you can set m_avgCharWidth only if iAvgWidth is valid. Have you looked
> into making the validity check more robust by examining the OS/2 table version
> field?

I added the obvious check of making sure that iAvgWidth is positive. WRT doing something more complicated, here was Amanda's response on #webkit:

awalker: Well, all documented versions of the table are supersets of previous versions, and put the value we're picking out in the same place.  As I noted in the bug, I don't want to put a whole chain of ad hoc sanity checks into this routine, though I think there's a place for an overall "sanity check this font" capability (see some of the stuff agl has been experimenting with)
awalker: But I think that should be a separate bug.  I mean, if it's going to block landing the fix, we can add some, but we specifically *don't* need to check "version number < foo" as the table is currently documented.
awalker: IMO, anyway :-).
awalker: That said, it sure would be nice to know what those negative values of xAvgCharWidth are trying to tell us :-).

> +    // Compute the maximum width of a character in this font.
> +    m_maxCharWidth = 0.f;
> +    int numGlyphsInFont = CGFontGetNumberOfGlyphs(m_font.cgFont());
> +    for (Glyph glyphNumber = 0; glyphNumber < numGlyphsInFont; glyphNumber++)
> +        m_maxCharWidth = std::max(m_maxCharWidth, widthForGlyph(glyphNumber));
> 
> This looks very very expensive. In addition to taking a considerable amount of
> time, it will allocate many GlyphWidthPage instances in the glyph width map.

Replaced this whole chunk. The new code gives exactly the same value as the above code for all the fonts I tested, except for a couple Mac fonts where it gave a value 1px larger, which seems fine.

I also added a test-case with a bunch of different fonts so that we better track the expected behavior. Looking at the test-case, we still don't match IE metrics on the Mac. The value we get for maxCharWidth is often ~10px smaller than on Windows. In either case, this patch brings us closer to matching IE metrics on the Mac, so it's still a considerable improvement.

I'm CCing Adam, who has succeeded in matching Windows metrics here in Chromium's Linux port. Maybe we want to do the same here for Mac? Adam, can you comment on what you do on Linux in order to grab the values of avgCharWidth and maxCharWidth? In either case, if we decide to do this, I'd prefer to do so in a followup patch.

> +    // if there was no OS/2 table or it was malformed, we (by definition)
> can't
> +    // match Windows metrics, so we fall back to the previous WebKit behavior
> of using
> +    // the width of the digit '0' as a reasonable estimate.
> 
> This comment is no long accurate, because you changed the behavior to consider
> glyphs other than '0'. It should also be written in sentence style.

Updated the comment.
Comment 58 Ojan Vafai 2009-04-10 16:56:52 PDT
Comment on attachment 29405 [details]
Make textarea metrics more closely match IEs.

WebCore/ChangeLog is out of date. git confused me. Correct patch coming in 20 seconds. :)
Comment 59 Ojan Vafai 2009-04-10 16:57:12 PDT
Created attachment 29410 [details]
Make textarea metrics more closely match IEs.

 LayoutTests/ChangeLog                              |  559 +++++++
 LayoutTests/fast/forms/drag-out-of-textarea.html   |    2 +-
 LayoutTests/fast/forms/resources/TEMPLATE.html     |   13 +
 .../resources/text-control-intrinsic-widths.js     |   30 +
 .../fast/forms/resources/textarea-metrics.js       |  171 ++
 .../fast/forms/search-abs-pos-cancel-button.html   |    4 +-
 .../text-control-intrinsic-widths-expected.txt     |  414 +++++
 .../fast/forms/text-control-intrinsic-widths.html  |   13 +
 .../fast/forms/textarea-metrics-expected.txt       |  173 ++
 LayoutTests/fast/forms/textarea-metrics.html       |   13 +
 LayoutTests/fast/forms/textarea-width.html         |    5 +-
 .../replaced/table-percent-height-expected.txt     |   18 +-
 .../fast/replaced/table-percent-height.html        |   18 +-
 .../mac/editing/deleting/5168598-expected.checksum |    2 +-
 .../mac/editing/deleting/5168598-expected.png      |  Bin 27473 -> 27530 bytes
 .../mac/editing/deleting/5168598-expected.txt      |    6 +-
 .../editing/inserting/4960120-1-expected.checksum  |    2 +-
 .../mac/editing/inserting/4960120-1-expected.png   |  Bin 15987 -> 16812 bytes
 .../mac/editing/inserting/4960120-1-expected.txt   |   16 +-
 .../editing/inserting/5607069-2-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-2-expected.png   |  Bin 22947 -> 22952 bytes
 .../mac/editing/inserting/5607069-2-expected.txt   |   14 +-
 .../editing/inserting/5607069-3-expected.checksum  |    2 +-
 .../mac/editing/inserting/5607069-3-expected.png   |  Bin 24465 -> 24462 bytes
 .../mac/editing/inserting/5607069-3-expected.txt   |   18 +-
 .../before-after-input-element-expected.checksum   |    2 +-
 .../before-after-input-element-expected.png        |  Bin 17707 -> 17705 bytes
 .../before-after-input-element-expected.txt        |   10 +-
 .../typing-tab-designmode-forms-expected.checksum  |    2 +-
 .../typing-tab-designmode-forms-expected.png       |  Bin 16680 -> 16884 bytes
 .../typing-tab-designmode-forms-expected.txt       |   24 +-
 .../editing/pasteboard/4806874-expected.checksum   |    2 +-
 .../mac/editing/pasteboard/4806874-expected.png    |  Bin 17925 -> 17932 bytes
 .../mac/editing/pasteboard/4806874-expected.txt    |   10 +-
 .../drop-text-without-selection-expected.checksum  |    2 +-
 .../drop-text-without-selection-expected.png       |  Bin 32837 -> 32763 bytes
 .../drop-text-without-selection-expected.txt       |   14 +-
 .../pasteboard/input-field-1-expected.checksum     |    2 +-
 .../editing/pasteboard/input-field-1-expected.png  |  Bin 16352 -> 16342 bytes
 .../editing/pasteboard/input-field-1-expected.txt  |   12 +-
 .../nested-blocks-with-text-area-expected.checksum |    2 +-
 .../nested-blocks-with-text-area-expected.png      |  Bin 24246 -> 24429 bytes
 .../nested-blocks-with-text-area-expected.txt      |   24 +-
 ...nested-blocks-with-text-field-expected.checksum |    2 +-
 .../nested-blocks-with-text-field-expected.png     |  Bin 24411 -> 24392 bytes
 .../nested-blocks-with-text-field-expected.txt     |   14 +-
 .../pasteboard/pasting-tabs-expected.checksum      |    2 +-
 .../editing/pasteboard/pasting-tabs-expected.png   |  Bin 22164 -> 22163 bytes
 .../editing/pasteboard/pasting-tabs-expected.txt   |   14 +-
 .../editing/selection/3690703-2-expected.checksum  |    2 +-
 .../mac/editing/selection/3690703-2-expected.png   |  Bin 33204 -> 33210 bytes
 .../mac/editing/selection/3690703-2-expected.txt   |   18 +-
 .../editing/selection/3690703-expected.checksum    |    2 +-
 .../mac/editing/selection/3690703-expected.png     |  Bin 33409 -> 33436 bytes
 .../mac/editing/selection/3690703-expected.txt     |   18 +-
 .../editing/selection/3690719-expected.checksum    |    2 +-
 .../mac/editing/selection/3690719-expected.png     |  Bin 33409 -> 33436 bytes
 .../mac/editing/selection/3690719-expected.txt     |   18 +-
 .../editing/selection/4895428-3-expected.checksum  |    2 +-
 .../mac/editing/selection/4895428-3-expected.png   |  Bin 29560 -> 29564 bytes
 .../mac/editing/selection/4895428-3-expected.txt   |    6 +-
 .../editing/selection/4975120-expected.checksum    |    2 +-
 .../mac/editing/selection/4975120-expected.png     |  Bin 24197 -> 24193 bytes
 .../mac/editing/selection/4975120-expected.txt     |    8 +-
 .../editing/selection/5136696-expected.checksum    |    2 +-
 .../mac/editing/selection/5136696-expected.png     |  Bin 26565 -> 26386 bytes
 .../mac/editing/selection/5136696-expected.txt     |    6 +-
 .../editing/selection/5213963-expected.checksum    |    2 +-
 .../mac/editing/selection/5213963-expected.png     |  Bin 23592 -> 23585 bytes
 .../mac/editing/selection/5213963-expected.txt     |    8 +-
 .../selection/drag-select-1-expected.checksum      |    2 +-
 .../editing/selection/drag-select-1-expected.png   |  Bin 16773 -> 16764 bytes
 .../editing/selection/drag-select-1-expected.txt   |    6 +-
 .../selection/drag-text-delay-expected.checksum    |    2 +-
 .../editing/selection/drag-text-delay-expected.png |  Bin 12773 -> 12911 bytes
 .../editing/selection/drag-text-delay-expected.txt |    6 +-
 ...elect-from-textfield-outwards-expected.checksum |    2 +-
 .../select-from-textfield-outwards-expected.png    |  Bin 59715 -> 59745 bytes
 .../select-from-textfield-outwards-expected.txt    |   24 +-
 .../fast/block/margin-collapse/103-expected.txt    |   64 +-
 .../mac/fast/css/line-height-expected.checksum     |    2 +-
 .../platform/mac/fast/css/line-height-expected.png |  Bin 27854 -> 27866 bytes
 .../platform/mac/fast/css/line-height-expected.txt |    6 +-
 .../css/resize-corner-tracking-expected.checksum   |    2 +-
 .../fast/css/resize-corner-tracking-expected.png   |  Bin 21083 -> 21151 bytes
 .../fast/css/resize-corner-tracking-expected.txt   |   18 +-
 .../reset-textarea-expected.checksum               |    2 +-
 .../reset-textarea-expected.png                    |  Bin 29075 -> 29090 bytes
 .../reset-textarea-expected.txt                    |   30 +-
 .../mac/fast/dom/isindex-002-expected.checksum     |    2 +-
 .../platform/mac/fast/dom/isindex-002-expected.png |  Bin 19769 -> 19776 bytes
 .../platform/mac/fast/dom/isindex-002-expected.txt |   12 +-
 .../mac/fast/dynamic/008-expected.checksum         |    2 +-
 .../platform/mac/fast/dynamic/008-expected.png     |  Bin 30135 -> 30083 bytes
 .../platform/mac/fast/dynamic/008-expected.txt     |   18 +-
 .../mac/fast/events/autoscroll-expected.checksum   |    2 +-
 .../mac/fast/events/autoscroll-expected.png        |  Bin 23996 -> 24002 bytes
 .../mac/fast/events/autoscroll-expected.txt        |    6 +-
 .../events/context-no-deselect-expected.checksum   |    2 +-
 .../fast/events/context-no-deselect-expected.png   |  Bin 13759 -> 13892 bytes
 .../fast/events/context-no-deselect-expected.txt   |    6 +-
 .../mac/fast/events/label-focus-expected.checksum  |    2 +-
 .../mac/fast/events/label-focus-expected.png       |  Bin 14891 -> 14888 bytes
 .../mac/fast/events/label-focus-expected.txt       |    8 +-
 .../fast/forms/basic-textareas-expected.checksum   |    2 +-
 .../mac/fast/forms/basic-textareas-expected.png    |  Bin 116809 -> 118460 bytes
 .../mac/fast/forms/basic-textareas-expected.txt    | 1757 ++++++++++----------
 .../forms/box-shadow-override-expected.checksum    |    2 +-
 .../fast/forms/box-shadow-override-expected.png    |  Bin 32657 -> 32670 bytes
 .../fast/forms/box-shadow-override-expected.txt    |   30 +-
 .../control-restrict-line-height-expected.checksum |    2 +-
 .../control-restrict-line-height-expected.png      |  Bin 27564 -> 27784 bytes
 .../control-restrict-line-height-expected.txt      |   10 +-
 .../mac/fast/forms/encoding-test-expected.checksum |    2 +-
 .../mac/fast/forms/encoding-test-expected.png      |  Bin 13755 -> 13764 bytes
 .../mac/fast/forms/encoding-test-expected.txt      |    6 +-
 .../fast/forms/fieldset-align-expected.checksum    |    2 +-
 .../mac/fast/forms/fieldset-align-expected.png     |  Bin 44796 -> 44672 bytes
 .../mac/fast/forms/fieldset-align-expected.txt     |   96 +-
 .../forms/form-element-geometry-expected.checksum  |    2 +-
 .../fast/forms/form-element-geometry-expected.png  |  Bin 89841 -> 89611 bytes
 .../fast/forms/form-element-geometry-expected.txt  |   82 +-
 .../mac/fast/forms/input-align-expected.checksum   |    2 +-
 .../mac/fast/forms/input-align-expected.png        |  Bin 24821 -> 24935 bytes
 .../mac/fast/forms/input-align-expected.txt        |   46 +-
 .../input-appearance-bkcolor-expected.checksum     |    2 +-
 .../forms/input-appearance-bkcolor-expected.png    |  Bin 19152 -> 19000 bytes
 .../forms/input-appearance-bkcolor-expected.txt    |   18 +-
 ...ut-appearance-default-bkcolor-expected.checksum |    2 +-
 .../input-appearance-default-bkcolor-expected.png  |  Bin 17571 -> 17442 bytes
 .../input-appearance-default-bkcolor-expected.txt  |    6 +-
 .../input-appearance-disabled-expected.checksum    |    2 +-
 .../forms/input-appearance-disabled-expected.png   |  Bin 16835 -> 16703 bytes
 .../forms/input-appearance-disabled-expected.txt   |    6 +-
 .../forms/input-appearance-focus-expected.checksum |    2 +-
 .../fast/forms/input-appearance-focus-expected.png |  Bin 31673 -> 31675 bytes
 .../fast/forms/input-appearance-focus-expected.txt |   16 +-
 .../input-appearance-height-expected.checksum      |    2 +-
 .../forms/input-appearance-height-expected.png     |  Bin 36689 -> 36638 bytes
 .../forms/input-appearance-height-expected.txt     |   58 +-
 ...put-appearance-preventDefault-expected.checksum |    2 +-
 .../input-appearance-preventDefault-expected.png   |  Bin 23799 -> 23805 bytes
 .../input-appearance-preventDefault-expected.txt   |    8 +-
 .../input-appearance-readonly-expected.checksum    |    2 +-
 .../forms/input-appearance-readonly-expected.png   |  Bin 17183 -> 17043 bytes
 .../forms/input-appearance-readonly-expected.txt   |    6 +-
 .../input-appearance-selection-expected.checksum   |    2 +-
 .../forms/input-appearance-selection-expected.png  |  Bin 54570 -> 54587 bytes
 .../forms/input-appearance-selection-expected.txt  |    6 +-
 .../input-appearance-visibility-expected.checksum  |    2 +-
 .../forms/input-appearance-visibility-expected.png |  Bin 17288 -> 17165 bytes
 .../forms/input-appearance-visibility-expected.txt |    6 +-
 .../forms/input-appearance-width-expected.checksum |    2 +-
 .../fast/forms/input-appearance-width-expected.png |  Bin 21419 -> 20779 bytes
 .../fast/forms/input-appearance-width-expected.txt |   24 +-
 .../fast/forms/input-baseline-expected.checksum    |    2 +-
 .../mac/fast/forms/input-baseline-expected.png     |  Bin 23472 -> 23629 bytes
 .../mac/fast/forms/input-baseline-expected.txt     |   22 +-
 .../forms/input-disabled-color-expected.checksum   |    2 +-
 .../fast/forms/input-disabled-color-expected.png   |  Bin 49110 -> 51011 bytes
 .../fast/forms/input-disabled-color-expected.txt   |  198 ++--
 ...ouble-click-selection-gap-bug-expected.checksum |    2 +-
 ...put-double-click-selection-gap-bug-expected.png |  Bin 18205 -> 18501 bytes
 ...put-double-click-selection-gap-bug-expected.txt |   28 +-
 .../fast/forms/input-paste-undo-expected.checksum  |    2 +-
 .../mac/fast/forms/input-paste-undo-expected.png   |  Bin 23103 -> 23094 bytes
 .../mac/fast/forms/input-paste-undo-expected.txt   |    6 +-
 .../input-readonly-autoscroll-expected.checksum    |    2 +-
 .../forms/input-readonly-autoscroll-expected.png   |  Bin 22927 -> 23063 bytes
 .../forms/input-readonly-autoscroll-expected.txt   |   12 +-
 .../forms/input-readonly-dimmed-expected.checksum  |    2 +-
 .../fast/forms/input-readonly-dimmed-expected.png  |  Bin 18116 -> 18139 bytes
 .../fast/forms/input-readonly-dimmed-expected.txt  |    6 +-
 .../forms/input-readonly-empty-expected.checksum   |    2 +-
 .../fast/forms/input-readonly-empty-expected.png   |  Bin 15766 -> 16627 bytes
 .../fast/forms/input-readonly-empty-expected.txt   |    6 +-
 .../mac/fast/forms/input-spaces-expected.checksum  |    2 +-
 .../mac/fast/forms/input-spaces-expected.png       |  Bin 20178 -> 19989 bytes
 .../mac/fast/forms/input-spaces-expected.txt       |    6 +-
 .../mac/fast/forms/input-table-expected.txt        |   18 +-
 .../input-text-click-inside-expected.checksum      |    2 +-
 .../forms/input-text-click-inside-expected.png     |  Bin 20522 -> 20551 bytes
 .../forms/input-text-click-inside-expected.txt     |    6 +-
 .../input-text-click-outside-expected.checksum     |    2 +-
 .../forms/input-text-click-outside-expected.png    |  Bin 20346 -> 20341 bytes
 .../forms/input-text-click-outside-expected.txt    |    6 +-
 .../input-text-double-click-expected.checksum      |    2 +-
 .../forms/input-text-double-click-expected.png     |  Bin 18494 -> 18508 bytes
 .../forms/input-text-double-click-expected.txt     |    6 +-
 .../forms/input-text-drag-down-expected.checksum   |    2 +-
 .../fast/forms/input-text-drag-down-expected.png   |  Bin 20125 -> 20128 bytes
 .../fast/forms/input-text-drag-down-expected.txt   |    6 +-
 .../forms/input-text-maxlength-expected.checksum   |    2 +-
 .../fast/forms/input-text-maxlength-expected.png   |  Bin 61128 -> 61287 bytes
 .../fast/forms/input-text-maxlength-expected.txt   |  172 +-
 .../input-text-option-delete-expected.checksum     |    2 +-
 .../forms/input-text-option-delete-expected.png    |  Bin 18162 -> 18174 bytes
 .../forms/input-text-option-delete-expected.txt    |    6 +-
 .../input-text-paste-maxlength-expected.checksum   |    2 +-
 .../forms/input-text-paste-maxlength-expected.png  |  Bin 51892 -> 51900 bytes
 .../forms/input-text-paste-maxlength-expected.txt  |  130 +-
 ...nput-text-scroll-left-on-blur-expected.checksum |    2 +-
 .../input-text-scroll-left-on-blur-expected.png    |  Bin 23523 -> 23419 bytes
 .../input-text-scroll-left-on-blur-expected.txt    |   30 +-
 ...nput-text-self-emptying-click-expected.checksum |    2 +-
 .../input-text-self-emptying-click-expected.png    |  Bin 19524 -> 19514 bytes
 .../input-text-self-emptying-click-expected.txt    |    6 +-
 .../forms/input-text-word-wrap-expected.checksum   |    2 +-
 .../fast/forms/input-text-word-wrap-expected.png   |  Bin 18699 -> 19015 bytes
 .../fast/forms/input-text-word-wrap-expected.txt   |    6 +-
 .../forms/input-type-change2-expected.checksum     |    2 +-
 .../mac/fast/forms/input-type-change2-expected.png |  Bin 23623 -> 23439 bytes
 .../mac/fast/forms/input-type-change2-expected.txt |    6 +-
 .../input-type-text-min-width-expected.checksum    |    2 +-
 .../forms/input-type-text-min-width-expected.png   |  Bin 24203 -> 24606 bytes
 .../forms/input-type-text-min-width-expected.txt   |    6 +-
 .../mac/fast/forms/input-value-expected.checksum   |    2 +-
 .../mac/fast/forms/input-value-expected.png        |  Bin 87713 -> 87712 bytes
 .../mac/fast/forms/input-value-expected.txt        |   30 +-
 .../mac/fast/forms/input-width-expected.checksum   |    2 +-
 .../mac/fast/forms/input-width-expected.png        |  Bin 11310 -> 11492 bytes
 .../mac/fast/forms/input-width-expected.txt        |    6 +-
 ...-overflow-in-textarea-padding-expected.checksum |    2 +-
 ...nebox-overflow-in-textarea-padding-expected.png |  Bin 20931 -> 21109 bytes
 ...nebox-overflow-in-textarea-padding-expected.txt |   24 +-
 .../forms/negativeLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/negativeLineHeight-expected.png |  Bin 24377 -> 24387 bytes
 .../mac/fast/forms/negativeLineHeight-expected.txt |   22 +-
 .../forms/password-placeholder-expected.checksum   |    2 +-
 .../fast/forms/password-placeholder-expected.png   |  Bin 12333 -> 12323 bytes
 .../fast/forms/password-placeholder-expected.txt   |    6 +-
 ...ord-placeholder-text-security-expected.checksum |    2 +-
 ...password-placeholder-text-security-expected.png |  Bin 32293 -> 32316 bytes
 ...password-placeholder-text-security-expected.txt |   24 +-
 .../placeholder-pseudo-style-expected.checksum     |    2 +-
 .../forms/placeholder-pseudo-style-expected.png    |  Bin 21930 -> 21422 bytes
 .../forms/placeholder-pseudo-style-expected.txt    |   60 +-
 .../placeholder-set-attribute-expected.checksum    |    2 +-
 .../forms/placeholder-set-attribute-expected.png   |  Bin 17163 -> 17165 bytes
 .../forms/placeholder-set-attribute-expected.txt   |    6 +-
 .../forms/placeholder-set-value-expected.checksum  |    2 +-
 .../fast/forms/placeholder-set-value-expected.png  |  Bin 16450 -> 23698 bytes
 .../fast/forms/placeholder-set-value-expected.txt  |   10 +-
 ...h-cancel-button-style-sharing-expected.checksum |    2 +-
 ...search-cancel-button-style-sharing-expected.png |  Bin 17836 -> 17679 bytes
 ...search-cancel-button-style-sharing-expected.txt |   24 +-
 ...ch-display-none-cancel-button-expected.checksum |    2 +-
 .../search-display-none-cancel-button-expected.png |  Bin 17826 -> 17794 bytes
 .../search-display-none-cancel-button-expected.txt |    8 +-
 ...rch-placeholder-value-changed-expected.checksum |    2 +-
 .../search-placeholder-value-changed-expected.png  |  Bin 13192 -> 13014 bytes
 .../search-placeholder-value-changed-expected.txt  |   10 +-
 .../mac/fast/forms/search-rtl-expected.checksum    |    2 +-
 .../mac/fast/forms/search-rtl-expected.png         |  Bin 29068 -> 29209 bytes
 .../mac/fast/forms/search-rtl-expected.txt         |   62 +-
 .../forms/search-transformed-expected.checksum     |    2 +-
 .../mac/fast/forms/search-transformed-expected.png |  Bin 18634 -> 25942 bytes
 .../mac/fast/forms/search-transformed-expected.txt |   14 +-
 .../mac/fast/forms/search-zoomed-expected.checksum |    2 +-
 .../mac/fast/forms/search-zoomed-expected.png      |  Bin 28283 -> 27378 bytes
 .../mac/fast/forms/search-zoomed-expected.txt      |   14 +-
 .../forms/searchfield-heights-expected.checksum    |    2 +-
 .../fast/forms/searchfield-heights-expected.png    |  Bin 19095 -> 19272 bytes
 .../fast/forms/searchfield-heights-expected.txt    |   38 +-
 .../forms/tabbing-input-iframe-expected.checksum   |    2 +-
 .../fast/forms/tabbing-input-iframe-expected.png   |  Bin 19080 -> 19072 bytes
 .../fast/forms/tabbing-input-iframe-expected.txt   |   22 +-
 .../forms/textAreaLineHeight-expected.checksum     |    2 +-
 .../mac/fast/forms/textAreaLineHeight-expected.png |  Bin 48117 -> 45936 bytes
 .../mac/fast/forms/textAreaLineHeight-expected.txt |  102 +-
 .../fast/forms/textarea-align-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-align-expected.png     |  Bin 28848 -> 28906 bytes
 .../mac/fast/forms/textarea-align-expected.txt     |   66 +-
 .../forms/textarea-rows-cols-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-rows-cols-expected.png |  Bin 46948 -> 65390 bytes
 .../mac/fast/forms/textarea-rows-cols-expected.txt |  252 ++--
 .../forms/textarea-scroll-height-expected.checksum |    2 +-
 .../fast/forms/textarea-scroll-height-expected.png |  Bin 30971 -> 30857 bytes
 .../fast/forms/textarea-scroll-height-expected.txt |   96 +-
 .../forms/textarea-scrollbar-expected.checksum     |    2 +-
 .../mac/fast/forms/textarea-scrollbar-expected.png |  Bin 20145 -> 20245 bytes
 .../mac/fast/forms/textarea-scrollbar-expected.txt |   60 +-
 .../forms/textarea-scrolled-type-expected.checksum |    2 +-
 .../fast/forms/textarea-scrolled-type-expected.png |  Bin 21736 -> 21968 bytes
 .../fast/forms/textarea-scrolled-type-expected.txt |  100 +-
 .../forms/textarea-setinnerhtml-expected.checksum  |    2 +-
 .../fast/forms/textarea-setinnerhtml-expected.png  |  Bin 12658 -> 12767 bytes
 .../fast/forms/textarea-setinnerhtml-expected.txt  |   10 +-
 .../fast/forms/textarea-width-expected.checksum    |    2 +-
 .../mac/fast/forms/textarea-width-expected.png     |  Bin 34699 -> 30783 bytes
 .../mac/fast/forms/textarea-width-expected.txt     |   28 +-
 .../textfield-drag-into-disabled-expected.checksum |    2 +-
 .../textfield-drag-into-disabled-expected.png      |  Bin 27697 -> 27615 bytes
 .../textfield-drag-into-disabled-expected.txt      |   18 +-
 .../fast/forms/textfield-outline-expected.checksum |    2 +-
 .../mac/fast/forms/textfield-outline-expected.png  |  Bin 18261 -> 18100 bytes
 .../mac/fast/forms/textfield-outline-expected.txt  |    6 +-
 .../forms/textfield-overflow-expected.checksum     |    2 +-
 .../mac/fast/forms/textfield-overflow-expected.png |  Bin 11728 -> 11730 bytes
 .../mac/fast/forms/textfield-overflow-expected.txt |    6 +-
 .../visual-hebrew-text-field-expected.checksum     |    2 +-
 .../forms/visual-hebrew-text-field-expected.png    |  Bin 29381 -> 29385 bytes
 .../forms/visual-hebrew-text-field-expected.txt    |    6 +-
 .../mac/fast/invalid/residual-style-expected.txt   |    8 +-
 .../lists/dynamic-marker-crash-expected.checksum   |    2 +-
 .../fast/lists/dynamic-marker-crash-expected.png   |  Bin 16214 -> 16246 bytes
 .../fast/lists/dynamic-marker-crash-expected.txt   |    6 +-
 .../fast/overflow/overflow-x-y-expected.checksum   |    2 +-
 .../mac/fast/overflow/overflow-x-y-expected.png    |  Bin 30889 -> 30863 bytes
 .../mac/fast/overflow/overflow-x-y-expected.txt    |   26 +-
 .../parser/comment-in-textarea-expected.checksum   |    2 +-
 .../fast/parser/comment-in-textarea-expected.png   |  Bin 15290 -> 15049 bytes
 .../fast/parser/comment-in-textarea-expected.txt   |   22 +-
 .../entity-comment-in-textarea-expected.checksum   |    2 +-
 .../parser/entity-comment-in-textarea-expected.png |  Bin 14901 -> 15050 bytes
 .../parser/entity-comment-in-textarea-expected.txt |   16 +-
 .../open-comment-in-textarea-expected.checksum     |    2 +-
 .../parser/open-comment-in-textarea-expected.png   |  Bin 16913 -> 16050 bytes
 .../parser/open-comment-in-textarea-expected.txt   |   26 +-
 ...-by-invalidateSelection-crash-expected.checksum |    2 +-
 ...ction-by-invalidateSelection-crash-expected.png |  Bin 11756 -> 11863 bytes
 ...ction-by-invalidateSelection-crash-expected.txt |    6 +-
 .../repaint/search-field-cancel-expected.checksum  |    2 +-
 .../fast/repaint/search-field-cancel-expected.png  |  Bin 14259 -> 21240 bytes
 .../fast/repaint/search-field-cancel-expected.txt  |   10 +-
 .../repaint/subtree-root-skipped-expected.checksum |    2 +-
 .../fast/repaint/subtree-root-skipped-expected.png |  Bin 13935 -> 13943 bytes
 .../fast/repaint/subtree-root-skipped-expected.txt |    6 +-
 .../replaced/replaced-breaking-expected.checksum   |    2 +-
 .../fast/replaced/replaced-breaking-expected.png   |  Bin 26204 -> 26198 bytes
 .../fast/replaced/replaced-breaking-expected.txt   |   12 +-
 .../replaced-breaking-mixture-expected.checksum    |    2 +-
 .../replaced-breaking-mixture-expected.png         |  Bin 18252 -> 18262 bytes
 .../replaced-breaking-mixture-expected.txt         |   12 +-
 .../width100percent-searchfield-expected.checksum  |    2 +-
 .../width100percent-searchfield-expected.png       |  Bin 18572 -> 18576 bytes
 .../width100percent-searchfield-expected.txt       |   44 +-
 .../width100percent-textarea-expected.checksum     |    2 +-
 .../replaced/width100percent-textarea-expected.png |  Bin 16709 -> 16303 bytes
 .../replaced/width100percent-textarea-expected.txt |  114 +-
 .../width100percent-textfield-expected.checksum    |    2 +-
 .../width100percent-textfield-expected.png         |  Bin 17012 -> 16841 bytes
 .../width100percent-textfield-expected.txt         |   36 +-
 .../platform/mac/fast/table/003-expected.checksum  |    2 +-
 .../platform/mac/fast/table/003-expected.png       |  Bin 38785 -> 38785 bytes
 .../platform/mac/fast/table/003-expected.txt       |   36 +-
 .../fast/table/colspanMinWidth-expected.checksum   |    2 +-
 .../mac/fast/table/colspanMinWidth-expected.png    |  Bin 11652 -> 11666 bytes
 .../mac/fast/table/colspanMinWidth-expected.txt    |   32 +-
 .../table/spanOverlapRepaint-expected.checksum     |    2 +-
 .../mac/fast/table/spanOverlapRepaint-expected.png |  Bin 12276 -> 12278 bytes
 .../mac/fast/table/spanOverlapRepaint-expected.txt |   30 +-
 .../table/text-field-baseline-expected.checksum    |    2 +-
 .../fast/table/text-field-baseline-expected.png    |  Bin 47879 -> 47918 bytes
 .../fast/table/text-field-baseline-expected.txt    |   50 +-
 .../rtl-white-space-pre-wrap-expected.checksum     |    2 +-
 .../rtl-white-space-pre-wrap-expected.png          |  Bin 39678 -> 39676 bytes
 .../rtl-white-space-pre-wrap-expected.txt          |   22 +-
 .../text/textIteratorNilRenderer-expected.checksum |    2 +-
 .../fast/text/textIteratorNilRenderer-expected.png |  Bin 15616 -> 15372 bytes
 .../fast/text/textIteratorNilRenderer-expected.txt |   18 +-
 ...ransformed-focused-text-input-expected.checksum |    2 +-
 .../transformed-focused-text-input-expected.png    |  Bin 6501 -> 14405 bytes
 .../transformed-focused-text-input-expected.txt    |    6 +-
 .../navigation/anchor-basic-expected.checksum      |    2 +-
 .../tests/navigation/anchor-basic-expected.png     |  Bin 38378 -> 38334 bytes
 .../tests/navigation/anchor-basic-expected.txt     |   66 +-
 .../tests/navigation/anchor-frames-expected.txt    |   66 +-
 .../navigation/anchor-goback-expected.checksum     |    2 +-
 .../tests/navigation/anchor-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../tests/navigation/anchor-goback-expected.txt    |   68 +-
 .../navigation/anchor-subframeload-expected.txt    |   66 +-
 .../javascriptlink-basic-expected.checksum         |    2 +-
 .../navigation/javascriptlink-basic-expected.png   |  Bin 83776 -> 83581 bytes
 .../navigation/javascriptlink-basic-expected.txt   |   64 +-
 .../javascriptlink-frames-expected.checksum        |    2 +-
 .../navigation/javascriptlink-frames-expected.png  |  Bin 85705 -> 85769 bytes
 .../navigation/javascriptlink-frames-expected.txt  |   64 +-
 .../javascriptlink-goback-expected.checksum        |    2 +-
 .../navigation/javascriptlink-goback-expected.png  |  Bin 82950 -> 82791 bytes
 .../navigation/javascriptlink-goback-expected.txt  |   68 +-
 .../javascriptlink-subframeload-expected.checksum  |    2 +-
 .../javascriptlink-subframeload-expected.png       |  Bin 85705 -> 85769 bytes
 .../javascriptlink-subframeload-expected.txt       |   64 +-
 .../metaredirect-basic-expected.checksum           |    2 +-
 .../navigation/metaredirect-basic-expected.png     |  Bin 83776 -> 83581 bytes
 .../navigation/metaredirect-basic-expected.txt     |   64 +-
 .../metaredirect-frames-expected.checksum          |    2 +-
 .../navigation/metaredirect-frames-expected.png    |  Bin 85705 -> 85769 bytes
 .../navigation/metaredirect-frames-expected.txt    |   64 +-
 .../metaredirect-goback-expected.checksum          |    2 +-
 .../navigation/metaredirect-goback-expected.png    |  Bin 82950 -> 82791 bytes
 .../navigation/metaredirect-goback-expected.txt    |   68 +-
 .../metaredirect-subframeload-expected.checksum    |    2 +-
 .../metaredirect-subframeload-expected.png         |  Bin 85705 -> 85769 bytes
 .../metaredirect-subframeload-expected.txt         |   64 +-
 .../navigation/post-goback2-expected.checksum      |    2 +-
 .../tests/navigation/post-goback2-expected.png     |  Bin 82950 -> 82791 bytes
 .../tests/navigation/post-goback2-expected.txt     |   68 +-
 .../postredirect-goback2-expected.checksum         |    2 +-
 .../navigation/postredirect-goback2-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/postredirect-goback2-expected.txt   |   68 +-
 .../navigation/redirect302-basic-expected.checksum |    2 +-
 .../navigation/redirect302-basic-expected.png      |  Bin 83776 -> 83581 bytes
 .../navigation/redirect302-basic-expected.txt      |   64 +-
 .../redirect302-frames-expected.checksum           |    2 +-
 .../navigation/redirect302-frames-expected.png     |  Bin 85705 -> 85769 bytes
 .../navigation/redirect302-frames-expected.txt     |   64 +-
 .../redirect302-goback-expected.checksum           |    2 +-
 .../navigation/redirect302-goback-expected.png     |  Bin 82950 -> 82791 bytes
 .../navigation/redirect302-goback-expected.txt     |   68 +-
 .../redirect302-subframeload-expected.checksum     |    2 +-
 .../redirect302-subframeload-expected.png          |  Bin 85705 -> 85769 bytes
 .../redirect302-subframeload-expected.txt          |   64 +-
 .../relativeanchor-basic-expected.checksum         |    2 +-
 .../navigation/relativeanchor-basic-expected.png   |  Bin 38378 -> 38334 bytes
 .../navigation/relativeanchor-basic-expected.txt   |   66 +-
 .../navigation/relativeanchor-frames-expected.txt  |   66 +-
 .../relativeanchor-goback-expected.checksum        |    2 +-
 .../navigation/relativeanchor-goback-expected.png  |  Bin 38378 -> 38334 bytes
 .../navigation/relativeanchor-goback-expected.txt  |   66 +-
 .../slowmetaredirect-basic-expected.checksum       |    2 +-
 .../navigation/slowmetaredirect-basic-expected.png |  Bin 83776 -> 83581 bytes
 .../navigation/slowmetaredirect-basic-expected.txt |   64 +-
 .../slowtimerredirect-basic-expected.checksum      |    2 +-
 .../slowtimerredirect-basic-expected.png           |  Bin 83776 -> 83581 bytes
 .../slowtimerredirect-basic-expected.txt           |   64 +-
 .../navigation/success200-basic-expected.checksum  |    2 +-
 .../tests/navigation/success200-basic-expected.png |  Bin 83776 -> 83581 bytes
 .../tests/navigation/success200-basic-expected.txt |   64 +-
 .../navigation/success200-frames-expected.checksum |    2 +-
 .../navigation/success200-frames-expected.png      |  Bin 85705 -> 85769 bytes
 .../navigation/success200-frames-expected.txt      |   64 +-
 .../success200-frames-loadsame-expected.checksum   |    2 +-
 .../success200-frames-loadsame-expected.png        |  Bin 85705 -> 85769 bytes
 .../success200-frames-loadsame-expected.txt        |   64 +-
 .../navigation/success200-goback-expected.checksum |    2 +-
 .../navigation/success200-goback-expected.png      |  Bin 82950 -> 82791 bytes
 .../navigation/success200-goback-expected.txt      |   68 +-
 .../success200-loadsame-expected.checksum          |    2 +-
 .../navigation/success200-loadsame-expected.png    |  Bin 83776 -> 83581 bytes
 .../navigation/success200-loadsame-expected.txt    |   64 +-
 .../navigation/success200-reload-expected.checksum |    2 +-
 .../navigation/success200-reload-expected.png      |  Bin 78245 -> 78273 bytes
 .../navigation/success200-reload-expected.txt      |   64 +-
 .../success200-subframeload-expected.checksum      |    2 +-
 .../success200-subframeload-expected.png           |  Bin 85705 -> 85769 bytes
 .../success200-subframeload-expected.txt           |   64 +-
 .../timerredirect-basic-expected.checksum          |    2 +-
 .../navigation/timerredirect-basic-expected.png    |  Bin 83776 -> 83581 bytes
 .../navigation/timerredirect-basic-expected.txt    |   64 +-
 .../timerredirect-frames-expected.checksum         |    2 +-
 .../navigation/timerredirect-frames-expected.png   |  Bin 85705 -> 85769 bytes
 .../navigation/timerredirect-frames-expected.txt   |   64 +-
 .../timerredirect-goback-expected.checksum         |    2 +-
 .../navigation/timerredirect-goback-expected.png   |  Bin 82950 -> 82791 bytes
 .../navigation/timerredirect-goback-expected.txt   |   68 +-
 .../timerredirect-subframeload-expected.checksum   |    2 +-
 .../timerredirect-subframeload-expected.png        |  Bin 85705 -> 85769 bytes
 .../timerredirect-subframeload-expected.txt        |   64 +-
 .../custom/inline-svg-in-xhtml-expected.checksum   |    2 +-
 .../svg/custom/inline-svg-in-xhtml-expected.png    |  Bin 320199 -> 316237 bytes
 .../svg/custom/inline-svg-in-xhtml-expected.txt    |    6 +-
 .../mac/svg/hixie/mixed/003-expected.checksum      |    2 +-
 .../platform/mac/svg/hixie/mixed/003-expected.png  |  Bin 20493 -> 20490 bytes
 .../platform/mac/svg/hixie/mixed/003-expected.txt  |    6 +-
 .../tables/mozilla/bugs/bug1188-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug1188-expected.png   |  Bin 52876 -> 52872 bytes
 .../mac/tables/mozilla/bugs/bug1188-expected.txt   |   24 +-
 .../tables/mozilla/bugs/bug12384-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug12384-expected.png  |  Bin 11767 -> 11809 bytes
 .../mac/tables/mozilla/bugs/bug12384-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug18359-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug18359-expected.png  |  Bin 27904 -> 27891 bytes
 .../mac/tables/mozilla/bugs/bug18359-expected.txt  |   22 +-
 .../mozilla/bugs/bug194024-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug194024-expected.png |  Bin 41325 -> 41328 bytes
 .../mac/tables/mozilla/bugs/bug194024-expected.txt |  214 ++--
 .../tables/mozilla/bugs/bug24200-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug24200-expected.png  |  Bin 20965 -> 20970 bytes
 .../mac/tables/mozilla/bugs/bug24200-expected.txt  |   12 +-
 .../mozilla/bugs/bug2479-2-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-2-expected.png |  Bin 45669 -> 45580 bytes
 .../mac/tables/mozilla/bugs/bug2479-2-expected.txt |   70 +-
 .../mozilla/bugs/bug2479-3-expected.checksum       |    2 +-
 .../mac/tables/mozilla/bugs/bug2479-3-expected.png |  Bin 93211 -> 93214 bytes
 .../mac/tables/mozilla/bugs/bug2479-3-expected.txt |    8 +-
 .../mac/tables/mozilla/bugs/bug2479-4-expected.txt |   14 +-
 .../tables/mozilla/bugs/bug28928-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug28928-expected.png  |  Bin 27374 -> 27406 bytes
 .../mac/tables/mozilla/bugs/bug28928-expected.txt  |   36 +-
 .../tables/mozilla/bugs/bug30559-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30559-expected.png  |  Bin 18415 -> 18425 bytes
 .../mac/tables/mozilla/bugs/bug30559-expected.txt  |   26 +-
 .../tables/mozilla/bugs/bug30692-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug30692-expected.png  |  Bin 37249 -> 37255 bytes
 .../mac/tables/mozilla/bugs/bug30692-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug4382-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4382-expected.png   |  Bin 23533 -> 23491 bytes
 .../mac/tables/mozilla/bugs/bug4382-expected.txt   |   12 +-
 .../tables/mozilla/bugs/bug4527-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug4527-expected.png   |  Bin 24681 -> 24682 bytes
 .../mac/tables/mozilla/bugs/bug4527-expected.txt   |   14 +-
 .../mozilla/bugs/bug46368-1-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-1-expected.png    |  Bin 39486 -> 39494 bytes
 .../tables/mozilla/bugs/bug46368-1-expected.txt    |    6 +-
 .../mozilla/bugs/bug46368-2-expected.checksum      |    2 +-
 .../tables/mozilla/bugs/bug46368-2-expected.png    |  Bin 24157 -> 24159 bytes
 .../tables/mozilla/bugs/bug46368-2-expected.txt    |    6 +-
 .../tables/mozilla/bugs/bug51037-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug51037-expected.png  |  Bin 21223 -> 21214 bytes
 .../mac/tables/mozilla/bugs/bug51037-expected.txt  |   12 +-
 .../tables/mozilla/bugs/bug55545-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug55545-expected.png  |  Bin 12938 -> 12951 bytes
 .../mac/tables/mozilla/bugs/bug55545-expected.txt  |   22 +-
 .../tables/mozilla/bugs/bug59354-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug59354-expected.png  |  Bin 23386 -> 23444 bytes
 .../mac/tables/mozilla/bugs/bug59354-expected.txt  |   38 +-
 .../tables/mozilla/bugs/bug7342-expected.checksum  |    2 +-
 .../mac/tables/mozilla/bugs/bug7342-expected.png   |  Bin 32097 -> 32082 bytes
 .../mac/tables/mozilla/bugs/bug7342-expected.txt   |   50 +-
 .../tables/mozilla/bugs/bug96334-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug96334-expected.png  |  Bin 32634 -> 32645 bytes
 .../mac/tables/mozilla/bugs/bug96334-expected.txt  |   14 +-
 .../tables/mozilla/bugs/bug99948-expected.checksum |    2 +-
 .../mac/tables/mozilla/bugs/bug99948-expected.png  |  Bin 16498 -> 16515 bytes
 .../mac/tables/mozilla/bugs/bug99948-expected.txt  |   16 +-
 .../tables/mozilla/dom/tableDom-expected.checksum  |    2 +-
 .../mac/tables/mozilla/dom/tableDom-expected.png   |  Bin 19180 -> 19182 bytes
 .../mac/tables/mozilla/dom/tableDom-expected.txt   |   52 +-
 .../mozilla/other/move_row-expected.checksum       |    2 +-
 .../mac/tables/mozilla/other/move_row-expected.png |  Bin 19002 -> 19591 bytes
 .../mac/tables/mozilla/other/move_row-expected.txt |   22 +-
 .../bugs/bug2479-5-expected.txt                    |   14 +-
 .../bugs/bug92647-1-expected.checksum              |    2 +-
 .../bugs/bug92647-1-expected.png                   |  Bin 15375 -> 15388 bytes
 .../bugs/bug92647-1-expected.txt                   |   38 +-
 .../custom/resources/svg-fonts-in-text-controls.js |   20 +
 .../custom/svg-fonts-in-text-controls-expected.txt |   11 +
 .../svg/custom/svg-fonts-in-text-controls.html     |   13 +
 WebCore/ChangeLog                                  |   68 +
 WebCore/css/html4.css                              |    2 +
 WebCore/css/themeWin.css                           |    4 -
 WebCore/platform/graphics/SimpleFontData.cpp       |   53 +-
 WebCore/platform/graphics/SimpleFontData.h         |    7 +
 .../chromium/SimpleFontDataChromiumWin.cpp         |    5 +
 .../graphics/chromium/SimpleFontDataLinux.cpp      |    5 +
 .../platform/graphics/gtk/SimpleFontDataGtk.cpp    |    7 +
 .../platform/graphics/gtk/SimpleFontDataPango.cpp  |    7 +
 WebCore/platform/graphics/mac/SimpleFontDataMac.mm |   27 +
 WebCore/platform/graphics/qt/SimpleFontDataQt.cpp  |    7 +
 .../platform/graphics/win/SimpleFontDataCGWin.cpp  |   10 +
 .../graphics/win/SimpleFontDataCairoWin.cpp        |    7 +
 .../platform/graphics/win/SimpleFontDataWin.cpp    |    2 +
 WebCore/platform/graphics/wx/SimpleFontDataWx.cpp  |    7 +
 WebCore/rendering/RenderTextControl.cpp            |    6 +-
 WebCore/rendering/RenderTextControlMultiLine.cpp   |    4 -
 WebCore/rendering/RenderTextControlSingleLine.cpp  |    4 +
 558 files changed, 5850 insertions(+), 4236 deletions(-)
Comment 60 mitz 2009-04-15 13:58:05 PDT
(In reply to comment #59)
> Created an attachment (id=29410) [review]
> Make textarea metrics more closely match IEs.
> 
>  LayoutTests/ChangeLog                              |  559 +++++++

[Another 558 lines like the above]

>  WebCore/rendering/RenderTextControlSingleLine.cpp  |    4 +
>  558 files changed, 5850 insertions(+), 4236 deletions(-)

What is the purpose of posting this information on Bugzilla?
Comment 61 Ojan Vafai 2009-04-15 14:01:24 PDT
Sorry about that. I was just using the git-send-bugzilla script. I'll look into whether the script as an option to not include all the diff junk.
Comment 62 mitz 2009-04-17 14:37:50 PDT
Comment on attachment 29410 [details]
Make textarea metrics more closely match IEs.

+#include "String.h"
 #include "SVGFontData.h"
+#include "SVGFontElement.h"
 #include "SVGFontFaceElement.h"
+#include "SVGGlyphElement.h"

These should be in ASCII order, so String.h should come last in the group.

+    if (m_maxCharWidth <= 0.f)
+        m_maxCharWidth = std::max(m_avgCharWidth, float(m_ascent));

Can m_ascent be negative? If not, then the max() is superfluous.

+        SInt16 iAvgWidth = buffer[OS2xAvgCharWidthOffset] * 256 + buffer[OS2xAvgCharWidthOffset + 1];
+        if (iAvgWidth > 0.f)

iAvgWidth is an integer. I think the above forces a costly conversion and float comparison. Even if it does not, you should just compare with integer 0.

As I have said before, this seems risky. You should retrieve the version field and proceed only if it is one of the versions known to contain the average width field. The result of ignoring an unknown version is not as bad as the result of misinterpreting it.

+    // Compute the maximum width of a character in this font.
+    m_maxCharWidth = [m_font.font() maximumAdvancement].width;

maximumAdvancement returns an NSSize, so it is not okay to send it to nil and use the result. m_font.font() can be nil if this is a CSS3 Web Font.
Comment 63 Ojan Vafai 2009-04-17 15:32:40 PDT
A couple questions before I upload a new patch...

(In reply to comment #62)
> +    if (m_maxCharWidth <= 0.f)
> +        m_maxCharWidth = std::max(m_avgCharWidth, float(m_ascent));
> 
> Can m_ascent be negative? If not, then the max() is superfluous.

Do we know that m_ascent >= m_avgCharWidth? Please excuse my ignorance, I don't much about fonts.

> +        SInt16 iAvgWidth = buffer[OS2xAvgCharWidthOffset] * 256 +
> buffer[OS2xAvgCharWidthOffset + 1];
> +        if (iAvgWidth > 0.f)
> 
> iAvgWidth is an integer. I think the above forces a costly conversion and float
> comparison. Even if it does not, you should just compare with integer 0.
> 
> As I have said before, this seems risky. You should retrieve the version field
> and proceed only if it is one of the versions known to contain the average
> width field. The result of ignoring an unknown version is not as bad as the
> result of misinterpreting it.

Sorry, I wasn't ignoring your previous statement. I didn't include another comment Amanda had made, which is that every version ought to have the average character width field. So checking the version number would not help in identifying the ones giving a bad result. Why some fonts give a negative value is still unclear.
Comment 64 mitz 2009-04-17 17:15:33 PDT
(In reply to comment #63)
> A couple questions before I upload a new patch...
> 
> (In reply to comment #62)
> > +    if (m_maxCharWidth <= 0.f)
> > +        m_maxCharWidth = std::max(m_avgCharWidth, float(m_ascent));
> > 
> > Can m_ascent be negative? If not, then the max() is superfluous.
> 
> Do we know that m_ascent >= m_avgCharWidth? Please excuse my ignorance, I don't
> much about fonts.

Ignore that comment, I misread the code. I have a different comment instead:
You should just add "using namespace std;" at the top of the file, and use unqualified max here. Don't use a C-style cast to float. Either use a static_cast<float>, or use an explicit max<float>(m_avgCharWidth, m_ascent);

> > +        SInt16 iAvgWidth = buffer[OS2xAvgCharWidthOffset] * 256 +
> > buffer[OS2xAvgCharWidthOffset + 1];
> > +        if (iAvgWidth > 0.f)
> > 
> > iAvgWidth is an integer. I think the above forces a costly conversion and float
> > comparison. Even if it does not, you should just compare with integer 0.
> > 
> > As I have said before, this seems risky. You should retrieve the version field
> > and proceed only if it is one of the versions known to contain the average
> > width field. The result of ignoring an unknown version is not as bad as the
> > result of misinterpreting it.
> 
> Sorry, I wasn't ignoring your previous statement. I didn't include another
> comment Amanda had made, which is that every version ought to have the average
> character width field. So checking the version number would not help in
> identifying the ones giving a bad result. Why some fonts give a negative value
> is still unclear.

Do those fonts that give a negative value have a valid ("known", "documented") version number? My understanding was that they have "garbage" in the version number field.
Comment 65 Amanda Walker 2009-04-20 11:33:45 PDT
(In reply to comment #64)
> Do those fonts that give a negative value have a valid ("known", "documented")
> version number? My understanding was that they have "garbage" in the version
> number field.

Unfortunately, no.  For example, Lucida Grande (at least the version shipped with Mac OS X 10.5.6) has a version number of 0002 and an xAvgCharWidth value of FC15.  This was the font that prompted this patch, in fact, since it's the default font used for unstyled text fields in western languages.
Comment 66 mitz 2009-04-20 11:38:57 PDT
(In reply to comment #65)
> (In reply to comment #64)
> > Do those fonts that give a negative value have a valid ("known", "documented")
> > version number? My understanding was that they have "garbage" in the version
> > number field.
> 
> Unfortunately, no.  For example, Lucida Grande (at least the version shipped
> with Mac OS X 10.5.6) has a version number of 0002 and an xAvgCharWidth value
> of FC15.  This was the font that prompted this patch, in fact, since it's the
> default font used for unstyled text fields in western languages.

I see. Thank you.
Comment 67 Ojan Vafai 2009-04-20 11:41:36 PDT
Comment on attachment 29410 [details]
Make textarea metrics more closely match IEs.

new patch coming in a sec...
Comment 68 Ojan Vafai 2009-04-20 11:41:58 PDT
Created attachment 29618 [details]
Make textarea metrics more closely match IEs.

 556 files changed, 5861 insertions(+), 4235 deletions(-)
Comment 69 Eric Seidel (no email) 2009-04-20 12:51:07 PDT
Ojan probably has some cleanup left, but this is now in as:
Committed r42678
Comment 70 Geoffrey Garen 2009-04-20 22:18:46 PDT
In r42698, I used svn merge to roll out revisions 42678, 42690, 42694, 42697 because they broke the Tiger and Windows buildbots. Reopening.
Comment 71 Geoffrey Garen 2009-04-20 22:26:40 PDT
Created attachment 29640 [details]
rolled out code

Attaching the patch you get from svn di -r 42698:42697. In theory, you can apply this to r 42697 to return your tree to the state it was in tonight: patch for this bug rolled in; windows tests failing but added to a skipped list; tiger unable to build.
Comment 72 Ojan Vafai 2009-04-21 11:43:48 PDT
OK. So, to get this working on tiger we could do something like the following:
#if USE(ATSUI) && !defined(__LP64__)
    if (m_atsuFontID) {
        ATSFontMetrics horizMetrics;
        ATSFontRef atsFont = FMGetATSFontRefFromFont(m_atsuFontID);
        ATSFontGetHorizontalMetrics(atsFont, kATSOptionFlagsDefault, &horizMetrics);
        m_avgCharWidth = horizMetrics.avgAdvanceWidth * pointSize;
        m_maxCharWidth = horizMetrics.maxAdvanceWidth * pointSize;
        return;
    }
#else
    ... OS/2 table code as before ...
#endif

We're not sure yet whether that returns the same values as digging into the OS/2 table though. It would be great if we could just use the ATSUI version on all platforms, but FMGetATSFontRefFromFont is a 32bit only API (according to http://developer.apple.com/DOCUMENTATION/Carbon/Reference/Font_Manager/Reference/reference.html#//apple_ref/c/func/FMGetATSFontRefFromFont) .

Is there another API we could use that does something similar and is available to 64 bit? Mitz, do you know by any chance?
Comment 73 Ojan Vafai 2009-04-23 16:27:00 PDT
Grabbed more data. Including it at the bottom, but here's the summary:
-The OS/2 Table and the ATSUI tables match exactly for maxCharWidth on my Leopard machine. Presumably these are the same values you'd get out of the Tiger ATSUI tables.
-The ATSUI table *never* returns avgCharWidth, the OS/2 table does ~50% of the time.
-Computing the avgCharWidth according to http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6OS2.html, which involves a weighted average over 27 specific glyphs returns numbers that are very close to the OS/2 numbers.

So, I propose the following that will get consistent rendering on Tiger and Leopard:
if (TIGER)
  maxCharWidth = maxCharWidth out of the ATSUI table
else
  maxCharWidth = maxCharWidth out of the OS/2 table
avgCharWidth = weighted avg according to http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6OS2.html
//fallback to cross-platform initCharWidths() code if either value is not positive

I'll post a patch with this code soon. If it's OK, I'd like to leave out the layout test expected results until the code itself is approved as I'll need to generate windows expected results as well.

This will still leave us still not matching Windows metrics because Windows gets considerably (~2x) larger maxCharWidths for most fonts and is slightly different for avgCharWidth on some fonts. This does get us closer though.

Values are for fonts below are in the following order: Lucida Grande, Courier, Helvetica, Monaco, Times, Andale Mono, Arial, Comic Sans, Courier New, Georgia, Impact, Times New Roman, Trebuchet, Verdana, Webdings.

Uses:
-CGFontCopyTableForTag, then grabbing avgCharWidth out of the OS/2 Table
-m_maxCharWidth = [m_font.font() maximumAdvancement].width;

OS2. avg: 0.000000, max: 19.250000
OS2. avg: 0.000000, max: 27.539062
OS2. avg: 0.000000, max: 28.843750
OS2. avg: 0.000000, max: 9.055664
OS2. avg: 0.000000, max: 16.505371
OS2. avg: 0.000000, max: 6.670898
OS2. avg: 0.000000, max: 18.933105
OS2. avg: 6.601074, max: 6.601074
OS2. avg: 4.855469, max: 22.000000
OS2. avg: 6.601074, max: 6.977051
OS2. avg: 4.839355, max: 13.427734
OS2. avg: 4.500977, max: 14.125977
OS2. avg: 4.409668, max: 22.000000
OS2. avg: 5.591309, max: 16.736328
OS2. avg: 10.683105, max: 14.206543

Uses:
ATSFontGetHorizontalMetrics(atsFont, kATSOptionFlagsDefault, &horizMetrics);
m_avgCharWidth = horizMetrics.avgAdvanceWidth * m_font.m_size;
m_maxCharWidth = horizMetrics.maxAdvanceWidth * m_font.m_size;

ATSUI. avg: 0.000000, max: 19.250000
ATSUI. avg: 0.000000, max: 27.539062
ATSUI. avg: 0.000000, max: 28.843750
ATSUI. avg: 0.000000, max: 9.055664
ATSUI. avg: 0.000000, max: 16.505371
ATSUI. avg: 0.000000, max: 6.670898
ATSUI. avg: 0.000000, max: 18.933105
ATSUI. avg: 0.000000, max: 6.601074
ATSUI. avg: 0.000000, max: 22.000000
ATSUI. avg: 0.000000, max: 6.977051
ATSUI. avg: 0.000000, max: 13.427734
ATSUI. avg: 0.000000, max: 14.125977
ATSUI. avg: 0.000000, max: 22.000000
ATSUI. avg: 0.000000, max: 16.736328
ATSUI. avg: 0.000000, max: 14.206543

Computed according to http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6OS2.html.
COMPUTE WEIGHTED. avg: 5.757157, max: 19.250000
COMPUTE WEIGHTED. avg: 6.288000, max: 28.000000
COMPUTE WEIGHTED. avg: 6.749000, max: 29.000000
COMPUTE WEIGHTED. avg: 7.000000, max: 9.000000
COMPUTE WEIGHTED. avg: 4.823000, max: 17.000000
COMPUTE WEIGHTED. avg: 7.000000, max: 7.000000
COMPUTE WEIGHTED. avg: 4.639000, max: 19.000000
COMPUTE WEIGHTED. avg: 7.000000, max: 7.000000
COMPUTE WEIGHTED. avg: 4.823000, max: 22.000000
COMPUTE WEIGHTED. avg: 7.000000, max: 7.000000
COMPUTE WEIGHTED. avg: 4.871000, max: 13.000000
COMPUTE WEIGHTED. avg: 4.596000, max: 14.000000
COMPUTE WEIGHTED. avg: 4.639000, max: 22.000000
COMPUTE WEIGHTED. avg: 5.761000, max: 17.000000
COMPUTE WEIGHTED. avg: 10.070000, max: 14.000000
Comment 74 Ojan Vafai 2009-04-24 14:24:21 PDT
Created attachment 29763 [details]
WebCore side of patch.

 18 files changed, 215 insertions(+), 19 deletions(-)
Comment 75 Ojan Vafai 2009-04-24 14:26:24 PDT
Created attachment 29764 [details]
WebCore side of patch.

 18 files changed, 215 insertions(+), 19 deletions(-)
Comment 76 Ojan Vafai 2009-04-24 14:37:40 PDT
Mitz, I assume you'll be reviewing this again. I'd like to get the code reviewed before uploading the patch for the LayoutTests if that's OK as the review very well might change the test results anyways. The LayoutTests changed slightly because the metrics we compute now are slightly different. No other changes from the previous patch. That said, if you want me to upload the test results as well, I can do that.

This patch is the same as the previous one, except in how it calculates m_avgCharWidth and m_maxCharWidth in SimpleFontDataMac.mm. The old method, looking at the OS/2 table via CGFontCopyTableForTag, doesn't work in Tiger and using ATSUI doesn't work no 64-bit.

The new code should work the same on Tiger and Leopard. I don't have Tiger, so I wasn't able to run the tests, but Amanda confirmed for me that the APIs we're now using all exist on Tiger and give the same results as they do in Leopard.
Comment 77 Ojan Vafai 2009-04-28 16:14:37 PDT
*** Bug 7505 has been marked as a duplicate of this bug. ***
Comment 78 Ojan Vafai 2009-04-28 19:01:25 PDT
Created attachment 29875 [details]
Mac LayoutTests side of patch. Run on Tiger and Leopard.

 545 files changed, 5760 insertions(+), 4231 deletions(-)
Comment 79 Ojan Vafai 2009-04-28 19:03:51 PDT
Any chance of getting this reviewed soon?
Comment 80 Ojan Vafai 2009-04-28 21:21:39 PDT
Created attachment 29879 [details]
LayoutTests side of patch. Run on Windows, Tiger and Leopard.

 711 files changed, 17317 insertions(+), 4402 deletions(-)
Comment 81 Ojan Vafai 2009-04-28 21:22:36 PDT
OK. This patch is really, really ready for review. I've run the tests on Tiger, Leopard and Windows.
Comment 82 mitz 2009-04-28 21:33:10 PDT
Comment on attachment 29764 [details]
WebCore side of patch.

> +    if (glyphPageZero) {
> +        static int weights[] = { 64, 14, 27, 35, 100, 20, 14, 42, 63, 3, 6, 35, 20, 56, 56, 17, 4, 49, 56, 71, 31, 10, 18, 3, 18, 2, 166 };
> +        float sum = 0.f;
> +        int numGlyphs = 27;
> +        ASSERT(numGlyphs == sizeof(weights)/sizeof(int));

Please add spaces around the / sign.

> +        // Compute the weighted sum of the space character and the lowercase letters in the Latin alphabet.
> +        for (int i = 0; i < numGlyphs; i++) {
> +            Glyph glyph = glyphPageZero->glyphDataForCharacter((i < 26 ? i + 'a' : ' ')).glyph;
> +            if (glyph)
> +                sum += widthForGlyph(glyph) * weights[i];
> +        }
> +        m_avgCharWidth = sum / 1000;

It may be better to add up the total weight of found glyphs and divide by that instead of 1000. Consider a font that contains a space glyph but no Latin (Geeza Pro is an example, if I remember correctly).

r=me , but I suggest making the above change before landing the patch.
Comment 83 mitz 2009-04-28 21:36:20 PDT
Comment on attachment 29879 [details]
LayoutTests side of patch. Run on Windows, Tiger and Leopard.

> +        On Windows, I'm not 100% confident in some of the rebaselines. Specifically, the
> +        following editing ones are missing editing callbacks in the new results

A well-kept secret of Windows DumpRenderTree is that it does not dump editing delegate callback (even though it looks like most of the code to do that appears to be there). run-webkit-tests masks the difference when running the tests on Windows with Mac results.

We usually omit the long list of updated results from the change log in cases like this.
Comment 84 Ojan Vafai 2009-04-29 11:02:39 PDT
Created attachment 29882 [details]
WebCore side of patch with final review comments implemented.

 18 files changed, 219 insertions(+), 19 deletions(-)
Comment 85 mitz 2009-04-29 11:10:54 PDT
Comment on attachment 29882 [details]
WebCore side of patch with final review comments implemented.

> +        if (sum > 0.f && totalWeight > 0)
> +            m_avgCharWidth = sum / 1000;

You should divide by totalWeight!
Comment 86 Ojan Vafai 2009-04-29 11:27:54 PDT
Comment on attachment 29882 [details]
WebCore side of patch with final review comments implemented.

Ugh. Sorry about that. Thanks for being thorough mitz. Testing with the actual correct code now. Will upload a patch soon...
Comment 87 Ojan Vafai 2009-04-29 11:45:50 PDT
Created attachment 29884 [details]
LayoutTests side of patch. Run on Windows, Tiger and Leopard.

 711 files changed, 16587 insertions(+), 4402 deletions(-)
Comment 88 Ojan Vafai 2009-04-29 11:45:53 PDT
Created attachment 29885 [details]
WebCore side of patch with final review comments implemented.

 18 files changed, 219 insertions(+), 19 deletions(-)
Comment 89 Ojan Vafai 2009-04-29 11:49:25 PDT
Created attachment 29886 [details]
git format-patch version of WebCore side for easy landing...
Comment 90 Ojan Vafai 2009-04-29 13:33:55 PDT
Committed in http://trac.webkit.org/changeset/43007
Comment 91 Ojan Vafai 2009-04-29 15:58:38 PDT
Created attachment 29897 [details]
New expected results.wq

 3 files changed, 405 insertions(+), 3 deletions(-)
Comment 92 Eric Seidel (no email) 2009-04-29 16:02:01 PDT
Comment on attachment 29897 [details]
New expected results.wq

As discussed over IRC, lets do the windows fix separately.  r=me on the tiger fix.
Comment 93 Ojan Vafai 2009-04-29 16:27:11 PDT
Committed tiger fix as http://trac.webkit.org/changeset/43023 and http://trac.webkit.org/changeset/43024