Fix <rdar://5108390> Feed title is too low in blue banner
authoraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Dec 2007 22:11:37 +0000 (22:11 +0000)
committeraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Dec 2007 22:11:37 +0000 (22:11 +0000)
WebCore:

        Fix <rdar://5108390> Feed title is too low in blue banner

        Way back in r23069 we started applying the same font ascent hack that
        Mac WebKit applies to Helvetica, Times, and Courier. We did this so
        that those fonts would match the Mac metrics when we run the
        regression tests. However, this hack was applying to Arial on Windows
        when a site would specify the Helvetica font face because Windows will
        alias the font names. Instead of removing the hack entirely, we
        turn it off by default but provide some SPI so that DumpRenderTree can
        turn it on.

        Reviewed by Hyatt.

        All tests pass.

        * platform/graphics/FontData.h: Add a new static method to turn on the
        hack on Windows only.
        * platform/graphics/win/FontDataWin.cpp:
        (WebCore::FontData::setShouldApplyMacAscentHack): Added.
        (WebCore::FontData::platformInit): Only perform the hack if
        shouldApplyMacAscentHack is true.

WebKit/win:

        Add SPI so that DumpRenderTree can turn on the Mac font ascent hack

        Reviewed by Hyatt.

        * Interfaces/IWebViewPrivate.idl: Added new method declaration.
        * WebView.cpp:
        (WebView::setShouldApplyMacFontAscentHack): Added. Just calls down to
        FontData.
        * WebView.h:

WebKitTools:

        Explicitly turn on the Mac font ascent hack on Windows

        This keeps our font metrics matching those from Mac.

        Reviewed by Hyatt.

        * DumpRenderTree/win/DumpRenderTree.cpp:
        (main):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@28498 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/platform/graphics/FontData.h
WebCore/platform/graphics/win/FontDataWin.cpp
WebKit/win/ChangeLog
WebKit/win/Interfaces/IWebViewPrivate.idl
WebKit/win/WebView.cpp
WebKit/win/WebView.h
WebKitTools/ChangeLog
WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp

index f0bcadd2c8f0b34e4bd1a33102a52b4d7ac04885..e4f17ea25dc5f16bb695c02822b1c853acd71249 100644 (file)
@@ -1,3 +1,27 @@
+2007-12-06  Adam Roben  <aroben@apple.com>
+
+        Fix <rdar://5108390> Feed title is too low in blue banner
+
+        Way back in r23069 we started applying the same font ascent hack that
+        Mac WebKit applies to Helvetica, Times, and Courier. We did this so
+        that those fonts would match the Mac metrics when we run the
+        regression tests. However, this hack was applying to Arial on Windows
+        when a site would specify the Helvetica font face because Windows will
+        alias the font names. Instead of removing the hack entirely, we
+        turn it off by default but provide some SPI so that DumpRenderTree can
+        turn it on.
+
+        Reviewed by Hyatt.
+
+        All tests pass.
+
+        * platform/graphics/FontData.h: Add a new static method to turn on the
+        hack on Windows only.
+        * platform/graphics/win/FontDataWin.cpp:
+        (WebCore::FontData::setShouldApplyMacAscentHack): Added.
+        (WebCore::FontData::platformInit): Only perform the hack if
+        shouldApplyMacAscentHack is true.
+
 2007-12-06  Geoffrey Garen  <ggaren@apple.com>
 
         Reviewed by Sam Weinig.
index 0cb8984b0f380a0cfb2c20c64866b3e4382d2bf0..55e63fe4cf410c4cc654d3f5c5456de9fd3fa351 100644 (file)
@@ -92,6 +92,8 @@ public:
     bool isSystemFont() const { return m_isSystemFont; }
     SCRIPT_FONTPROPERTIES* scriptFontProperties() const;
     SCRIPT_CACHE* scriptCache() const { return &m_scriptCache; }
+
+    static void setShouldApplyMacAscentHack(bool);
 #endif
 
 #if PLATFORM(GTK)
index 93092feb7e9e17ca45ebf5a2f92a6b72e9216567..17a43d320845cc8eaed09007cacae77c48842798 100644 (file)
@@ -47,8 +47,15 @@ using std::max;
 
 const float cSmallCapsFontSizeMultiplier = 0.7f;
 
+static bool shouldApplyMacAscentHack;
+
 static inline float scaleEmToUnits(float x, unsigned unitsPerEm) { return unitsPerEm ? x / (float)unitsPerEm : x; }
 
+void FontData::setShouldApplyMacAscentHack(bool b)
+{
+    shouldApplyMacAscentHack = b;
+}
+
 void FontData::platformInit()
 {    
     m_syntheticBoldOffset = m_font.syntheticBold() ? 1.0f : 0.f;
@@ -74,13 +81,17 @@ void FontData::platformInit()
         SelectObject(dc, oldFont);
         ReleaseDC(0, dc);
 
-        // We need to adjust Times, Helvetica, and Courier to closely match the
-        // vertical metrics of their Microsoft counterparts that are the de facto
-        // web standard. The AppKit adjustment of 20% is too big and is
-        // incorrectly added to line spacing, so we use a 15% adjustment instead
-        // and add it to the ascent.
-        if (!_tcscmp(faceName.data(), _T("Times")) || !_tcscmp(faceName.data(), _T("Helvetica")) || !_tcscmp(faceName.data(), _T("Courier")))
-            fAscent += floorf(((fAscent + fDescent) * 0.15f) + 0.5f);
+        if (shouldApplyMacAscentHack) {
+            // This code comes from FontDataMac.mm. We only ever do this when running regression tests so that our metrics will match Mac.
+
+            // We need to adjust Times, Helvetica, and Courier to closely match the
+            // vertical metrics of their Microsoft counterparts that are the de facto
+            // web standard. The AppKit adjustment of 20% is too big and is
+            // incorrectly added to line spacing, so we use a 15% adjustment instead
+            // and add it to the ascent.
+            if (!_tcscmp(faceName.data(), _T("Times")) || !_tcscmp(faceName.data(), _T("Helvetica")) || !_tcscmp(faceName.data(), _T("Courier")))
+                fAscent += floorf(((fAscent + fDescent) * 0.15f) + 0.5f);
+        }
     }
 
     m_ascent = lroundf(fAscent);
index 134f9761efacbd789b130c4b68296d21769f41bf..b715d89bbc3f0f2cdd2a0a513b800acd609655d1 100644 (file)
@@ -1,3 +1,15 @@
+2007-12-06  Adam Roben  <aroben@apple.com>
+
+        Add SPI so that DumpRenderTree can turn on the Mac font ascent hack
+
+        Reviewed by Hyatt.
+
+        * Interfaces/IWebViewPrivate.idl: Added new method declaration.
+        * WebView.cpp:
+        (WebView::setShouldApplyMacFontAscentHack): Added. Just calls down to
+        FontData.
+        * WebView.h:
+
 2007-12-06  Ada Chan  <adachan@apple.com>
 
         Build fix.
index e74d6c99e75c00c219634cc22486e5a9bd686440..76ab95857cb23616a8e89aa3372b2f9fb73120a4 100644 (file)
@@ -124,4 +124,7 @@ interface IWebViewPrivate : IUnknown
     HRESULT clearUndoRedoOperations();
 
     HRESULT setProhibitsMainFrameScrolling([in] BOOL prohibits);
+
+    // SPI for DumpRenderTree. This is global to all WebViews.
+    HRESULT setShouldApplyMacFontAscentHack([in] BOOL shouldApply);
 }
index a064feacaf29adfb6a0ab5b93b8be10ef3dff3c6..b66ead42978a42006b7a0b7e712f797024b07f45 100644 (file)
@@ -64,6 +64,7 @@
 #include <WebCore/EventHandler.h>
 #include <WebCore/FileSystem.h>
 #include <WebCore/FocusController.h>
+#include <WebCore/FontData.h>
 #include <WebCore/FrameLoader.h>
 #include <WebCore/FrameTree.h>
 #include <WebCore/FrameView.h>
@@ -4164,6 +4165,12 @@ HRESULT WebView::setProhibitsMainFrameScrolling(BOOL b)
     return S_OK;
 }
 
+HRESULT WebView::setShouldApplyMacFontAscentHack(BOOL b)
+{
+    FontData::setShouldApplyMacAscentHack(b);
+    return S_OK;
+}
+
 class IMMDict {
     typedef HIMC (CALLBACK *getContextPtr)(HWND);
     typedef BOOL (CALLBACK *releaseContextPtr)(HWND, HIMC);
index de756f0442e5b2afa794ae5e0f50acb4e2342648..0095a813f5fdd1c4eca690f0bdd031404037d947 100644 (file)
@@ -621,6 +621,7 @@ public:
     virtual HRESULT STDMETHODCALLTYPE clearUndoRedoOperations( void);
 
     virtual HRESULT STDMETHODCALLTYPE setProhibitsMainFrameScrolling(BOOL);
+    virtual HRESULT STDMETHODCALLTYPE setShouldApplyMacFontAscentHack(BOOL);
 
     // WebView
     WebCore::Page* page();
index 97a13e7f489576aa602857cb146edc9019a6c6ec..dee845a601f9469a39202494212dfd20e4120a24 100644 (file)
@@ -1,3 +1,14 @@
+2007-12-06  Adam Roben  <aroben@apple.com>
+
+        Explicitly turn on the Mac font ascent hack on Windows
+
+        This keeps our font metrics matching those from Mac.
+
+        Reviewed by Hyatt.
+
+        * DumpRenderTree/win/DumpRenderTree.cpp:
+        (main):
+
 2007-12-06  Anders Carlsson  <andersca@apple.com>
 
         Rename main.c to main.cpp here too.
index 9c2efa5336d5d6817762bbab6c8ae593a03e249c..a04dd44d8c70f948e9f155fd5f68e52877b18c5a 100644 (file)
@@ -884,6 +884,7 @@ int main(int argc, char* argv[])
         return -1;
     webView->Release();
 
+    viewPrivate->setShouldApplyMacFontAscentHack(TRUE);
 
     BSTR pluginPath = SysAllocStringLen(0, exePath().length() + _tcslen(TestPluginDir));
     _tcscpy(pluginPath, exePath().c_str());