summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform
diff options
context:
space:
mode:
authorRussell Brenner <russellbrenner@google.com>2011-08-18 11:21:29 -0700
committerRussell Brenner <russellbrenner@google.com>2011-08-18 11:24:57 -0700
commit1db0d82059cab3136dc026590c1f0da81b84bb35 (patch)
treed485bec6bb5e7f528c9deefb415e632c2799d795 /Source/WebCore/platform
parentb3676d1d75c8159c6cf8621ef840e7694685efd7 (diff)
downloadexternal_webkit-1db0d82059cab3136dc026590c1f0da81b84bb35.zip
external_webkit-1db0d82059cab3136dc026590c1f0da81b84bb35.tar.gz
external_webkit-1db0d82059cab3136dc026590c1f0da81b84bb35.tar.bz2
Revert "Add Harfbuzz support for system fallback fonts"
On large pages, too many font file references are open for mmap streaming. Rolling back this feature while I add caching. This reverts commit cfcbe02678eabf19b6b904be61d9991d4515ecb6. Bug: 5179817 Change-Id: I689db7794c945d548a90006b9484467b784d4b11
Diffstat (limited to 'Source/WebCore/platform')
-rw-r--r--Source/WebCore/platform/graphics/android/FontAndroid.cpp47
-rw-r--r--Source/WebCore/platform/graphics/android/FontPlatformData.h2
-rw-r--r--Source/WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp11
3 files changed, 5 insertions, 55 deletions
diff --git a/Source/WebCore/platform/graphics/android/FontAndroid.cpp b/Source/WebCore/platform/graphics/android/FontAndroid.cpp
index 332e571..b56e37c 100644
--- a/Source/WebCore/platform/graphics/android/FontAndroid.cpp
+++ b/Source/WebCore/platform/graphics/android/FontAndroid.cpp
@@ -427,7 +427,6 @@ public:
private:
void setupFontForScriptRun();
- void setupComplexFont(const char* fontName, const FontPlatformData& platformData);
HB_FontRec* allocHarfbuzzFont();
void deleteGlyphArrays();
void createGlyphArrays(int);
@@ -466,7 +465,6 @@ private:
// each word break we accumulate error. This is the
// number of pixels that we are behind so far.
unsigned m_letterSpacing; // pixels to be added after each glyph.
- FontPlatformData* m_complexPlatformData;
};
@@ -481,7 +479,6 @@ TextRunWalker::TextRunWalker(const TextRun& run, unsigned startingX, const Font*
, m_padPerWordBreak(0)
, m_padError(0)
, m_letterSpacing(0)
- , m_complexPlatformData(0)
{
// Do not use |run| inside this constructor. Use |m_run| instead.
@@ -510,7 +507,6 @@ TextRunWalker::~TextRunWalker()
fastFree(m_item.font);
deleteGlyphArrays();
delete[] m_item.log_clusters;
- delete m_complexPlatformData;
}
bool TextRunWalker::isWordBreak(unsigned index, bool isRTL)
@@ -624,48 +620,15 @@ void TextRunWalker::setWordAndLetterSpacing(int wordSpacingAdjustment,
setLetterSpacingAdjustment(letterSpacingAdjustment);
}
-void TextRunWalker::setupComplexFont(const char* filename,
- const FontPlatformData& platformData)
-{
- delete m_complexPlatformData;
-
- SkTypeface* typeface = SkTypeface::CreateFromFile(filename);
- m_complexPlatformData = new FontPlatformData(platformData, typeface);
- SkSafeUnref(typeface);
- m_item.face = m_complexPlatformData->harfbuzzFace();
- m_item.font->userData = m_complexPlatformData;
-}
-
void TextRunWalker::setupFontForScriptRun()
{
- const FontData* fontData = m_font->glyphDataForCharacter(m_run[0], false).fontData;
+ const FontData* fontData = m_font->glyphDataForCharacter(
+ m_item.string[m_item.item.pos], false).fontData;
const FontPlatformData& platformData =
fontData->fontDataForCharacter(' ')->platformData();
-
- if (m_item.item.script == HB_Script_Devanagari) {
- setupComplexFont("/system/fonts/Lohit_Hindi.ttf", platformData);
- } else if (m_item.item.script == HB_Script_Thai) {
- setupComplexFont("/system/fonts/DroidSansThai.ttf", platformData);
- } else if (m_item.item.script == HB_Script_Arabic) {
- setupComplexFont("/system/fonts/DroidNaskh-Regular.ttf", platformData);
- } else if (m_item.item.script == HB_Script_Hebrew) {
- switch (platformData.typeface()->style()) {
- case SkTypeface::kBold:
- case SkTypeface::kBoldItalic:
- setupComplexFont("/system/fonts/DroidSansHebrew-Bold.ttf", platformData);
- break;
- case SkTypeface::kNormal:
- case SkTypeface::kItalic:
- default:
- setupComplexFont("/system/fonts/DroidSansHebrew-Regular.ttf", platformData);
- break;
- }
- } else {
- // HB_Script_Common; includes Ethiopic
- m_item.face = platformData.harfbuzzFace();
- void* opaquePlatformData = const_cast<FontPlatformData*>(&platformData);
- m_item.font->userData = opaquePlatformData;
- }
+ m_item.face = platformData.harfbuzzFace();
+ void* opaquePlatformData = const_cast<FontPlatformData*>(&platformData);
+ m_item.font->userData = opaquePlatformData;
}
HB_FontRec* TextRunWalker::allocHarfbuzzFont()
diff --git a/Source/WebCore/platform/graphics/android/FontPlatformData.h b/Source/WebCore/platform/graphics/android/FontPlatformData.h
index 56ce6e9..3313aca 100644
--- a/Source/WebCore/platform/graphics/android/FontPlatformData.h
+++ b/Source/WebCore/platform/graphics/android/FontPlatformData.h
@@ -55,7 +55,6 @@ public:
FontPlatformData(SkTypeface*, float textSize, bool fakeBold, bool fakeItalic);
FontPlatformData(const FontPlatformData& src, float textSize);
FontPlatformData(float size, bool syntheticBold, bool syntheticOblique);
- FontPlatformData(const FontPlatformData& src, SkTypeface* typeface);
~FontPlatformData();
@@ -88,7 +87,6 @@ public:
#endif
HB_FaceRec_* harfbuzzFace() const;
- SkTypeface* typeface() const { return mTypeface; }
private:
class RefCountedHarfbuzzFace : public RefCounted<RefCountedHarfbuzzFace> {
diff --git a/Source/WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp b/Source/WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp
index 1c3c5d9..337a94d 100644
--- a/Source/WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp
+++ b/Source/WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp
@@ -127,17 +127,6 @@ FontPlatformData::FontPlatformData(float size, bool bold, bool oblique)
trace(5);
}
-FontPlatformData::FontPlatformData(const FontPlatformData& src, SkTypeface* tf)
- : mTypeface(tf), mTextSize(src.mTextSize), mFakeBold(src.mFakeBold), mFakeItalic(src.mFakeItalic)
-{
- if (hashTableDeletedFontValue() != mTypeface) {
- SkSafeRef(mTypeface);
- }
-
- inc_count();
- trace(6);
-}
-
FontPlatformData::~FontPlatformData()
{
dec_count();