Reviewed by Steve.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 27 Sep 2006 00:56:36 +0000 (00:56 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 27 Sep 2006 00:56:36 +0000 (00:56 +0000)
        - clean up options for font code path

        * platform/Font.h:
        * platform/Font.cpp:
        (WebCore::Font::setCodePath): Added. Replaces boolean version.
        (WebCore::Font::canUseGlyphCache): Update to handle "never use complex" case too.

        * platform/mac/WebCoreTextRenderer.mm:
        (WebCoreSetAlwaysUseATSU): Change to call setCodePath.

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

WebCore/ChangeLog
WebCore/platform/Font.cpp
WebCore/platform/Font.h
WebCore/platform/mac/WebCoreTextRenderer.mm

index a39c73a749c955cbf24eb1e39d0c0252000e0d20..e8ae5f4e2a7966fbbb2392a9e64409d07b66722e 100644 (file)
@@ -1,3 +1,17 @@
+2006-09-26  Darin Adler  <darin@apple.com>
+
+        Reviewed by Steve.
+
+        - clean up options for font code path
+
+        * platform/Font.h:
+        * platform/Font.cpp:
+        (WebCore::Font::setCodePath): Added. Replaces boolean version.
+        (WebCore::Font::canUseGlyphCache): Update to handle "never use complex" case too.
+
+        * platform/mac/WebCoreTextRenderer.mm:
+        (WebCoreSetAlwaysUseATSU): Change to call setCodePath.
+
 2006-09-26  John Sullivan  <sullivan@apple.com>
 
         Reviewed by Darin
index 7d0f789777dd7cc637f4415dc7bb0874062b15a7..061d4d70f35d32b534effada5359dbacdfac8eac 100644 (file)
@@ -52,6 +52,8 @@ const uint8_t Font::gRoundingHackCharacterTable[256] = {
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 };
 
+Font::CodePath Font::codePath = Auto;
+
 struct WidthIterator {
     WidthIterator(const Font* font, const TextRun& run, const TextStyle& style, const FontData* substituteFontData = 0);
 
@@ -410,17 +412,21 @@ bool Font::isFixedPitch() const
     return m_fontList->isFixedPitch(this);
 }
 
-// FIXME: These methods will eventually be cross-platform, but to keep Windows compiling we'll make this Apple-only for now.
-bool Font::gAlwaysUseComplexPath = false;
-void Font::setAlwaysUseComplexPath(bool alwaysUse)
+void Font::setCodePath(CodePath p)
 {
-    gAlwaysUseComplexPath = alwaysUse;
+    codePath = p;
 }
 
 bool Font::canUseGlyphCache(const TextRun& run) const
 {
-    if (gAlwaysUseComplexPath)
-        return false;
+    switch (codePath) {
+        case Auto:
+            break;
+        case Simple:
+            return true;
+        case Complex:
+            return false;
+    }
     
     // Start from 0 since drawing and highlighting also measure the characters before run->from
     for (int i = 0; i < run.to(); i++) {
index 693c64087ed29650e630048d9f40bb319dc4af37..c702103cc6b6a39868497abedeeb7c424011acf6 100644 (file)
@@ -166,10 +166,11 @@ private:
 
     friend struct WidthIterator;
     
-    // Useful for debugging the complex font rendering code path.
+    // Useful for debugging the different font rendering code paths.
 public:
-    static void setAlwaysUseComplexPath(bool);
-    static bool gAlwaysUseComplexPath;
+    enum CodePath { Auto, Simple, Complex };
+    static void setCodePath(CodePath);
+    static CodePath codePath;
     
     static const uint8_t gRoundingHackCharacterTable[256];
     static bool treatAsSpace(UChar c) { return c == ' ' || c == '\t' || c == '\n' || c == 0x00A0; }
index ccbea19a9f56ef7ebbe2a49df7270ce91f5ca993..0bb6fdfc82c03be21f24c8b95b276ce291fa05a3 100644 (file)
@@ -82,7 +82,7 @@ bool WebCoreShouldUseFontSmoothing()
 
 void WebCoreSetAlwaysUseATSU(bool useATSU)
 {
-    Font::setAlwaysUseComplexPath(useATSU);
+    Font::setCodePath(useATSU ? Font::Complex : Font::Auto);
 }
 
 NSFont* WebCoreFindFont(NSString* familyName, NSFontTraitMask traits, int size)