summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--skia/SConscript2
-rw-r--r--skia/ports/SkFontHost_FreeType.cpp8
-rw-r--r--skia/ports/SkFontHost_fontconfig.cpp6
-rw-r--r--skia/ports/SkFontHost_gamma_none.cpp35
-rw-r--r--webkit/port/platform/graphics/chromium/FontPlatformDataLinux.cpp4
-rw-r--r--webkit/tools/test_shell/test_shell_gtk.cc38
6 files changed, 86 insertions, 7 deletions
diff --git a/skia/SConscript b/skia/SConscript
index 8dfd26a..386a219 100644
--- a/skia/SConscript
+++ b/skia/SConscript
@@ -160,7 +160,7 @@ if env['PLATFORM'] == 'posix':
input_files.remove('ports/SkFontHost_none.cpp')
input_files.append('sgl/SkTypeface.cpp')
input_files.append('ports/SkFontHost_FreeType.cpp')
- input_files.append('ports/SkFontHost_gamma.cpp')
+ input_files.append('ports/SkFontHost_gamma_none.cpp')
input_files.append('ports/SkFontHost_fontconfig.cpp')
input_files.append('images/SkMMapStream.cpp')
diff --git a/skia/ports/SkFontHost_FreeType.cpp b/skia/ports/SkFontHost_FreeType.cpp
index 6430d2d..c10415d 100644
--- a/skia/ports/SkFontHost_FreeType.cpp
+++ b/skia/ports/SkFontHost_FreeType.cpp
@@ -329,7 +329,13 @@ SkScalerContext_FreeType::SkScalerContext_FreeType(const SkDescriptor* desc)
#endif
break;
case kNormal_Hints:
- flags |= FT_LOAD_FORCE_AUTOHINT;
+ // Uncommenting the following line disables the font's hinting
+ // tables. For test_shell we want font hinting on so that we can
+ // generate baselines that look at little like Firefox. It's
+ // expected that Mike Reed will rework this code sometime soon so
+ // we don't wish to make more extensive changes.
+
+ // flags |= FT_LOAD_FORCE_AUTOHINT;
break;
}
diff --git a/skia/ports/SkFontHost_fontconfig.cpp b/skia/ports/SkFontHost_fontconfig.cpp
index 2836db3..cb95a60 100644
--- a/skia/ports/SkFontHost_fontconfig.cpp
+++ b/skia/ports/SkFontHost_fontconfig.cpp
@@ -206,7 +206,7 @@ SkTypeface* SkFontHost::FindTypeface(const SkTypeface* familyFace,
FC_WEIGHT_BOLD : FC_WEIGHT_NORMAL;
const int italic = style & SkTypeface::kItalic ?
FC_SLANT_ITALIC : FC_SLANT_ROMAN;
- FcPattern* match = FontMatch(FC_FULLNAME, FcTypeString, resolved_family_name,
+ FcPattern* match = FontMatch(FC_FAMILY, FcTypeString, resolved_family_name,
FC_WEIGHT, FcTypeInteger, bold,
FC_SLANT, FcTypeInteger, italic,
NULL);
@@ -301,14 +301,14 @@ SkScalerContext* SkFontHost::CreateFallbackScalerContext
SkAutoDescriptor ad(sizeof(rec) + SkDescriptor::ComputeOverhead(1));
SkDescriptor* desc = ad.getDesc();
-
+
desc->init();
SkScalerContext::Rec* newRec =
(SkScalerContext::Rec*)desc->addEntry(kRec_SkDescriptorTag,
sizeof(rec), &rec);
newRec->fFontID = id;
desc->computeChecksum();
-
+
return SkFontHost::CreateScalerContext(desc);
}
diff --git a/skia/ports/SkFontHost_gamma_none.cpp b/skia/ports/SkFontHost_gamma_none.cpp
new file mode 100644
index 0000000..cdc507a
--- /dev/null
+++ b/skia/ports/SkFontHost_gamma_none.cpp
@@ -0,0 +1,35 @@
+/* Copyright 2008, Google Inc.
+**
+** Licensed under the Apache License, Version 2.0 (the "License");·
+** you may not use this file except in compliance with the License.·
+** You may obtain a copy of the License at·
+**
+** http://www.apache.org/licenses/LICENSE-2.0·
+**
+** Unless required by applicable law or agreed to in writing, software·
+** distributed under the License is distributed on an "AS IS" BASIS,·
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.·
+** See the License for the specific language governing permissions and·
+** limitations under the License.
+*/
+
+// -----------------------------------------------------------------------------
+// This is a noop gamma implementation for systems where gamma is already
+// corrected, or dealt with in a system wide fashion. For example, on X windows
+// one uses the xgamma utility to set the server-wide gamma correction value.
+// -----------------------------------------------------------------------------
+
+#include "SkFontHost.h"
+#include <math.h>
+
+void SkFontHost::GetGammaTables(const uint8_t* tables[2])
+{
+ tables[0] = NULL;
+ tables[1] = NULL;
+}
+
+int SkFontHost::ComputeGammaFlag(const SkPaint& paint)
+{
+ return 0;
+}
+
diff --git a/webkit/port/platform/graphics/chromium/FontPlatformDataLinux.cpp b/webkit/port/platform/graphics/chromium/FontPlatformDataLinux.cpp
index 0dba7f2..b047cb334 100644
--- a/webkit/port/platform/graphics/chromium/FontPlatformDataLinux.cpp
+++ b/webkit/port/platform/graphics/chromium/FontPlatformDataLinux.cpp
@@ -50,10 +50,10 @@ FontPlatformData& FontPlatformData::operator=(const FontPlatformData& src)
m_textSize = src.m_textSize;
m_fakeBold = src.m_fakeBold;
m_fakeItalic = src.m_fakeItalic;
-
+
return *this;
}
-
+
void FontPlatformData::setupPaint(SkPaint* paint) const
{
const float ts = m_textSize > 0 ? m_textSize : 12;
diff --git a/webkit/tools/test_shell/test_shell_gtk.cc b/webkit/tools/test_shell/test_shell_gtk.cc
index 3d62e88..b8dab9a 100644
--- a/webkit/tools/test_shell/test_shell_gtk.cc
+++ b/webkit/tools/test_shell/test_shell_gtk.cc
@@ -6,6 +6,7 @@
#include <errno.h>
#include <fcntl.h>
+#include <fontconfig/fontconfig.h>
#include <gtk/gtk.h>
#include <unistd.h>
@@ -31,6 +32,43 @@ void TestShell::InitializeTestShell(bool interactive) {
window_list_ = new WindowList;
web_prefs_ = new WebPreferences;
interactive_ = interactive;
+
+ // We wish to make the layout tests reproducable with respect to fonts. Skia
+ // uses fontconfig to resolve font family names from WebKit into actual font
+ // files found on the current system. This means that fonts vary based on the
+ // system and also on the fontconfig configuration.
+ //
+ // To avoid this we initialise fontconfig here and install a configuration
+ // which only knows about a few, select, fonts.
+
+ // This is the list of fonts that fontconfig will know about. It will try its
+ // best to match based only on the fonts here in. The paths are where these
+ // fonts are found on our Ubuntu boxes.
+ static const char *const fonts[] = {
+ "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf",
+ "/usr/share/fonts/truetype/msttcorefonts/Arial_Bold.ttf",
+ "/usr/share/fonts/truetype/msttcorefonts/Arial_Italic.ttf",
+ "/usr/share/fonts/truetype/msttcorefonts/Arial_Bold_Italic.ttf",
+ "/usr/share/fonts/truetype/msttcorefonts/Courier_New.ttf",
+ "/usr/share/fonts/truetype/msttcorefonts/Courier_New_Italic.ttf",
+ "/usr/share/fonts/truetype/msttcorefonts/Courier_New_Bold.ttf",
+ "/usr/share/fonts/truetype/msttcorefonts/Courier_New_Bold_Italic.ttf",
+ "/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman.ttf",
+ "/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman_Bold.ttf",
+ "/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman_Italic.ttf",
+ "/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman_Bold_Italic.ttf",
+ NULL
+ };
+
+ FcInit();
+ FcConfig* fontcfg = FcConfigCreate();
+ for (unsigned i = 0; fonts[i]; ++i) {
+ if (!FcConfigAppFontAddFile(fontcfg, (FcChar8 *) fonts[i]))
+ LOG(FATAL) << "Failed to load font " << fonts[i];
+ }
+
+ if (!FcConfigSetCurrent(fontcfg))
+ LOG(FATAL) << "Failed to set the default font configuration";
}
// static