WebCore:
authormitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 17 Jan 2008 09:04:20 +0000 (09:04 +0000)
committermitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 17 Jan 2008 09:04:20 +0000 (09:04 +0000)
        Reviewed by Dave Hyatt.

        - fix determinePitch for segmented fonts

        Covered by and existing test.

        * platform/graphics/FontFallbackList.cpp:
        (WebCore::FontFallbackList::determinePitch): If the primary font is
        segmented, treat as fixed pitch only if it has only one segment
        and that segment is fixed-pitch.

LayoutTests:

        Reviewed by Dave Hyatt.

        - update results for fixing determinePitch for segmented fonts

        * platform/mac/fast/css/font-face-implicit-local-font-expected.txt:

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

LayoutTests/ChangeLog
LayoutTests/platform/mac/fast/css/font-face-implicit-local-font-expected.txt
WebCore/ChangeLog
WebCore/platform/graphics/FontFallbackList.cpp

index 39d1d6fdbe90c65bfff853c2833f30eac6400f18..d1356564c90739f616258e1acc3b548487af4000 100644 (file)
@@ -1,3 +1,11 @@
+2008-01-17  Dan Bernstein  <mitz@apple.com>
+
+        Reviewed by Dave Hyatt.
+
+        - update results for fixing determinePitch for segmented fonts
+
+        * platform/mac/fast/css/font-face-implicit-local-font-expected.txt:
+
 2008-01-16  David Hyatt  <hyatt@apple.com>
 
        Fix for http://bugs.webkit.org/show_bug.cgi?id=16611
index 037130fc71d1891764c2913ee22222890fe9ee69..9fa65935069b606bb3e83d9a574e2becd9fbcfe1 100644 (file)
@@ -14,7 +14,7 @@ layer at (0,0) size 800x600
           text run at (0,0) width 444: "In the next line, the digits should be in Times, but the letters should be "
           text run at (444,0) width 68: "in Courier."
       RenderBlock (anonymous) at (0,86) size 784x28
-        RenderInline {SPAN} at (0,0) size 294x28
-          RenderText {#text} at (0,0) size 294x28
-            text run at (0,0) width 294: "ABCDEFGHIJ 1234567890"
+        RenderInline {SPAN} at (0,0) size 274x28
+          RenderText {#text} at (0,0) size 274x28
+            text run at (0,0) width 274: "ABCDEFGHIJ 1234567890"
         RenderText {#text} at (0,0) size 0x0
index 39104ecbcbcb5d822b0bf096ce4a70389e0305f9..adb21b8c3491975d6b39ecdd1aff199fe17e31c5 100644 (file)
@@ -1,3 +1,16 @@
+2008-01-17  Dan Bernstein  <mitz@apple.com>
+
+        Reviewed by Dave Hyatt.
+
+        - fix determinePitch for segmented fonts
+
+        Covered by and existing test.
+
+        * platform/graphics/FontFallbackList.cpp:
+        (WebCore::FontFallbackList::determinePitch): If the primary font is
+        segmented, treat as fixed pitch only if it has only one segment
+        and that segment is fixed-pitch.
+
 2008-01-16  David Hyatt  <hyatt@apple.com>
 
         Fix for http://bugs.webkit.org/show_bug.cgi?id=16611
index 5edc9286b51185673b089e5ed3a578c24375a9d4..049cf7fd531915d8a0cb8517aa70774cc45790e4 100644 (file)
@@ -31,6 +31,7 @@
 
 #include "Font.h"
 #include "FontCache.h"
+#include "SegmentedFontData.h"
 
 namespace WebCore {
 
@@ -53,7 +54,17 @@ void FontFallbackList::invalidate(PassRefPtr<FontSelector> fontSelector)
 
 void FontFallbackList::determinePitch(const Font* font) const
 {
-    m_pitch = primaryFont(font)->fontDataForCharacter(' ')->pitch();
+    const FontData* fontData = primaryFont(font);
+    if (!fontData->isSegmented())
+        m_pitch = static_cast<const SimpleFontData*>(fontData)->pitch();
+    else {
+        const SegmentedFontData* segmentedFontData = static_cast<const SegmentedFontData*>(fontData);
+        unsigned numRanges = segmentedFontData->numRanges();
+        if (numRanges == 1)
+            m_pitch = segmentedFontData->rangeAt(0).fontData()->pitch();
+        else
+            m_pitch = VariablePitch;
+    }
 }
 
 const FontData* FontFallbackList::fontDataAt(const Font* font, unsigned realizedFontIndex) const