summaryrefslogtreecommitdiffstats
path: root/Source/WebCore
diff options
context:
space:
mode:
authorBilly Hewlett <billyh@google.com>2012-06-15 10:31:39 -0700
committerBilly Hewlett <billyh@google.com>2012-06-18 14:46:57 -0700
commit923ddf3b72d64d0ed87d7132fba048dcafcaa498 (patch)
tree0f3fca5cafd9874bfeceb993688ffe0d9c5af734 /Source/WebCore
parent11940b97c9773c0c5dc1dd97a5fa841ea2ea6f8f (diff)
downloadexternal_webkit-923ddf3b72d64d0ed87d7132fba048dcafcaa498.zip
external_webkit-923ddf3b72d64d0ed87d7132fba048dcafcaa498.tar.gz
external_webkit-923ddf3b72d64d0ed87d7132fba048dcafcaa498.tar.bz2
Use Elegant fonts for Webkit, Compact fonts for Textview
Fonts can be marked with elegant or compact in fallback_fonts.xml. Webkit uses elegant fonts, Textview uses compact fonts (the default), unmarked fonts are used by both. Bug: 6649136 Change-Id: Ib131a4279fb3c13a44ff37d45b2b736274fa5042
Diffstat (limited to 'Source/WebCore')
-rw-r--r--Source/WebCore/platform/graphics/android/fonts/FontAndroid.cpp72
1 files changed, 10 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..5f47215 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,18 @@ 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, true);
newPlatformData = new FontPlatformData(platformData, typeface);
SkSafeUnref(typeface);
fallbackPlatformData.set(key, newPlatformData);
@@ -697,61 +698,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);