summaryrefslogtreecommitdiffstats
path: root/Source/WebCore
diff options
context:
space:
mode:
authorVictoria Lease <violets@google.com>2012-06-21 10:07:17 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-06-21 10:07:17 -0700
commit64aae1063d9f749754f9479f51672fc1dcf9ea67 (patch)
tree647ef07e14aa094ab23f0b68eb9f900f8c710dd4 /Source/WebCore
parent61c9acd3854647ff64348468adf8d7aa1275df2d (diff)
parent2abcb264d55635f9592eae8ec33a42a26e566de0 (diff)
downloadexternal_webkit-64aae1063d9f749754f9479f51672fc1dcf9ea67.zip
external_webkit-64aae1063d9f749754f9479f51672fc1dcf9ea67.tar.gz
external_webkit-64aae1063d9f749754f9479f51672fc1dcf9ea67.tar.bz2
Merge "Use Elegant fonts for Webkit, Compact fonts for Textview"
Diffstat (limited to 'Source/WebCore')
-rw-r--r--Source/WebCore/platform/graphics/android/fonts/FontAndroid.cpp73
1 files changed, 11 insertions, 62 deletions
diff --git a/Source/WebCore/platform/graphics/android/fonts/FontAndroid.cpp b/Source/WebCore/platform/graphics/android/fonts/FontAndroid.cpp
index 869c7b6..d59674b 100644
--- a/Source/WebCore/platform/graphics/android/fonts/FontAndroid.cpp
+++ b/Source/WebCore/platform/graphics/android/fonts/FontAndroid.cpp
@@ -463,8 +463,7 @@ public:
private:
void setupFontForScriptRun();
- const FontPlatformData* setupComplexFont(FallbackScripts script,
- const FontPlatformData& platformData);
+ const FontPlatformData* setupComplexFont(HB_Script script, const FontPlatformData& platformData);
HB_FontRec* allocHarfbuzzFont();
void deleteGlyphArrays();
void createGlyphArrays(int);
@@ -660,8 +659,7 @@ void TextRunWalker::setWordAndLetterSpacing(int wordSpacingAdjustment,
}
const FontPlatformData* TextRunWalker::setupComplexFont(
- FallbackScripts script,
- const FontPlatformData& platformData)
+ HB_Script script, const FontPlatformData& platformData)
{
static FallbackHash fallbackPlatformData;
@@ -671,15 +669,19 @@ const FontPlatformData* TextRunWalker::setupComplexFont(
// italic, then bold italic. additional fake style bits can be added.
int scriptStyleIndex = script;
if (platformData.isFakeBold())
- scriptStyleIndex += kFallbackScriptNumber;
+ scriptStyleIndex += HB_ScriptCount;
if (platformData.isFakeItalic())
- scriptStyleIndex += kFallbackScriptNumber << 1;
+ scriptStyleIndex += HB_ScriptCount << 1;
FallbackFontKey key(scriptStyleIndex, platformData.size());
FontPlatformData* newPlatformData = 0;
if (!fallbackPlatformData.contains(key)) {
- SkTypeface* typeface = SkCreateTypefaceForScript(script);
+ SkTypeface::Style currentStyle = SkTypeface::kNormal;
+ if (platformData.typeface())
+ currentStyle = platformData.typeface()->style();
+ SkTypeface* typeface = SkCreateTypefaceForScript(script, currentStyle,
+ SkPaint::kElegant_Variant);
newPlatformData = new FontPlatformData(platformData, typeface);
SkSafeUnref(typeface);
fallbackPlatformData.set(key, newPlatformData);
@@ -697,61 +699,8 @@ void TextRunWalker::setupFontForScriptRun()
const FontData* fontData = m_font->glyphDataForCharacter(m_run[0], false).fontData;
const FontPlatformData& platformData =
fontData->fontDataForCharacter(' ')->platformData();
- const FontPlatformData* complexPlatformData = &platformData;
-
- switch (m_item.item.script) {
- case HB_Script_Bengali:
- complexPlatformData = setupComplexFont(kBengali_FallbackScript, platformData);
- break;
- case HB_Script_Devanagari:
- complexPlatformData = setupComplexFont(kDevanagari_FallbackScript, platformData);
- break;
- case HB_Script_Hebrew:
- switch (platformData.typeface()->style()) {
- case SkTypeface::kBold:
- case SkTypeface::kBoldItalic:
- complexPlatformData = setupComplexFont(kHebrewBold_FallbackScript, platformData);
- break;
- case SkTypeface::kNormal:
- case SkTypeface::kItalic:
- default:
- complexPlatformData = setupComplexFont(kHebrewRegular_FallbackScript, platformData);
- break;
- }
- break;
- case HB_Script_Kannada:
- complexPlatformData = setupComplexFont(kKannada_FallbackScript, platformData);
- break;
- case HB_Script_Malayalam:
- complexPlatformData = setupComplexFont(kMalayalam_FallbackScript, platformData);
- break;
- case HB_Script_Arabic:
- complexPlatformData = setupComplexFont(kArabic_FallbackScript, platformData);
- break;
- case HB_Script_Tamil:
- switch (platformData.typeface()->style()) {
- case SkTypeface::kBold:
- case SkTypeface::kBoldItalic:
- complexPlatformData = setupComplexFont(kTamilBold_FallbackScript, platformData);
- break;
- case SkTypeface::kNormal:
- case SkTypeface::kItalic:
- default:
- complexPlatformData = setupComplexFont(kTamilRegular_FallbackScript, platformData);
- break;
- }
- break;
- case HB_Script_Telugu:
- complexPlatformData = setupComplexFont(kTelugu_FallbackScript, platformData);
- break;
- case HB_Script_Thai:
- complexPlatformData = setupComplexFont(kThai_FallbackScript, platformData);
- break;
- default:
- // HB_Script_Common; includes Ethiopic
- complexPlatformData = &platformData;
- break;
- }
+ const FontPlatformData* complexPlatformData = setupComplexFont(m_item.item.script, platformData);
+
m_item.face = complexPlatformData->harfbuzzFace();
m_item.font->userData = const_cast<FontPlatformData*>(complexPlatformData);