summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/tab_contents
diff options
context:
space:
mode:
authorfalken@chromium.org <falken@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-31 06:19:23 +0000
committerfalken@chromium.org <falken@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-31 06:19:23 +0000
commitfb06c7ceb4f0cc2035fe2e280951e8ea00b24e5a (patch)
treefed3c2dcf44a486145c607f989380e4aa56c6ecc /chrome/browser/ui/tab_contents
parent26d674d77132a1e9f26308faa026ac0d809daa94 (diff)
downloadchromium_src-fb06c7ceb4f0cc2035fe2e280951e8ea00b24e5a.zip
chromium_src-fb06c7ceb4f0cc2035fe2e280951e8ea00b24e5a.tar.gz
chromium_src-fb06c7ceb4f0cc2035fe2e280951e8ea00b24e5a.tar.bz2
Add default per-script CJK fonts on Windows.
BUG=94217,2685 TEST=view a page that uses CSS property --webkit-locale and verify that the font is the desired default Review URL: http://codereview.chromium.org/7748014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98928 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/tab_contents')
-rw-r--r--chrome/browser/ui/tab_contents/tab_contents_wrapper.cc143
1 files changed, 93 insertions, 50 deletions
diff --git a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc b/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
index 5a27fac..6aa7603 100644
--- a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
+++ b/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
@@ -118,6 +118,89 @@ void RegisterFontFamilyMap(PrefService* prefs, const char* map_name) {
}
}
+struct PrefResource {
+ const char* pref_name;
+ int resource_id;
+};
+
+// Per-script font pref defaults. The prefs that have defaults vary by
+// platform, since not all platforms have fonts for all scripts for all generic
+// families.
+// TODO(falken): add proper defaults when possible for all
+// platforms/scripts/generic families.
+const PrefResource kPerScriptFontDefaults[] = {
+#if defined(OS_CHROMEOS)
+ { prefs::kWebKitStandardFontFamilyArabic, IDS_STANDARD_FONT_FAMILY_ARABIC },
+ { prefs::kWebKitSerifFontFamilyArabic, IDS_SERIF_FONT_FAMILY_ARABIC },
+ { prefs::kWebKitSansSerifFontFamilyArabic,
+ IDS_SANS_SERIF_FONT_FAMILY_ARABIC },
+ { prefs::kWebKitStandardFontFamilyJapanese,
+ IDS_STANDARD_FONT_FAMILY_JAPANESE },
+ { prefs::kWebKitFixedFontFamilyJapanese, IDS_FIXED_FONT_FAMILY_JAPANESE },
+ { prefs::kWebKitSerifFontFamilyJapanese, IDS_SERIF_FONT_FAMILY_JAPANESE },
+ { prefs::kWebKitSansSerifFontFamilyJapanese,
+ IDS_SANS_SERIF_FONT_FAMILY_JAPANESE },
+ { prefs::kWebKitStandardFontFamilyKorean, IDS_STANDARD_FONT_FAMILY_KOREAN },
+ { prefs::kWebKitFixedFontFamilyKorean, IDS_FIXED_FONT_FAMILY_KOREAN },
+ { prefs::kWebKitSerifFontFamilyKorean, IDS_SERIF_FONT_FAMILY_KOREAN },
+ { prefs::kWebKitSansSerifFontFamilyKorean,
+ IDS_SANS_SERIF_FONT_FAMILY_KOREAN },
+ { prefs::kWebKitStandardFontFamilySimplifiedHan,
+ IDS_STANDARD_FONT_FAMILY_SIMPLIFIED_HAN },
+ { prefs::kWebKitFixedFontFamilySimplifiedHan,
+ IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN },
+ { prefs::kWebKitSerifFontFamilySimplifiedHan,
+ IDS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN },
+ { prefs::kWebKitSansSerifFontFamilySimplifiedHan,
+ IDS_SANS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN },
+ { prefs::kWebKitStandardFontFamilyTraditionalHan,
+ IDS_STANDARD_FONT_FAMILY_TRADITIONAL_HAN },
+ { prefs::kWebKitFixedFontFamilyTraditionalHan,
+ IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN },
+ { prefs::kWebKitSerifFontFamilyTraditionalHan,
+ IDS_SERIF_FONT_FAMILY_TRADITIONAL_HAN },
+ { prefs::kWebKitSansSerifFontFamilyTraditionalHan,
+ IDS_SANS_SERIF_FONT_FAMILY_TRADITIONAL_HAN }
+#elif defined(OS_WIN)
+ { prefs::kWebKitStandardFontFamilyJapanese,
+ IDS_STANDARD_FONT_FAMILY_JAPANESE },
+ { prefs::kWebKitFixedFontFamilyJapanese, IDS_FIXED_FONT_FAMILY_JAPANESE },
+ { prefs::kWebKitSerifFontFamilyJapanese, IDS_SERIF_FONT_FAMILY_JAPANESE },
+ { prefs::kWebKitSansSerifFontFamilyJapanese,
+ IDS_SANS_SERIF_FONT_FAMILY_JAPANESE },
+ { prefs::kWebKitStandardFontFamilyKorean, IDS_STANDARD_FONT_FAMILY_KOREAN },
+ { prefs::kWebKitFixedFontFamilyKorean, IDS_FIXED_FONT_FAMILY_KOREAN },
+ { prefs::kWebKitSerifFontFamilyKorean, IDS_SERIF_FONT_FAMILY_KOREAN },
+ { prefs::kWebKitSansSerifFontFamilyKorean,
+ IDS_SANS_SERIF_FONT_FAMILY_KOREAN },
+ { prefs::kWebKitCursiveFontFamilyKorean, IDS_CURSIVE_FONT_FAMILY_KOREAN },
+ { prefs::kWebKitStandardFontFamilySimplifiedHan,
+ IDS_STANDARD_FONT_FAMILY_SIMPLIFIED_HAN },
+ { prefs::kWebKitFixedFontFamilySimplifiedHan,
+ IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN },
+ { prefs::kWebKitSerifFontFamilySimplifiedHan,
+ IDS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN },
+ { prefs::kWebKitSansSerifFontFamilySimplifiedHan,
+ IDS_SANS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN },
+ { prefs::kWebKitStandardFontFamilyTraditionalHan,
+ IDS_STANDARD_FONT_FAMILY_TRADITIONAL_HAN },
+ { prefs::kWebKitFixedFontFamilyTraditionalHan,
+ IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN },
+ { prefs::kWebKitSerifFontFamilyTraditionalHan,
+ IDS_SERIF_FONT_FAMILY_TRADITIONAL_HAN },
+ { prefs::kWebKitSansSerifFontFamilyTraditionalHan,
+ IDS_SANS_SERIF_FONT_FAMILY_TRADITIONAL_HAN }
+#endif
+};
+
+#if defined(OS_CHROMEOS) || defined(OS_WIN)
+// To avoid Clang warning, only define kPerScriptFontDefaultsLength when it is
+// non-zero. When it is zero, code like
+// for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i)
+// causes a warning due to comparison of unsigned expression < 0.
+const size_t kPerScriptFontDefaultsLength = arraysize(kPerScriptFontDefaults);
+#endif
+
} // namespace
////////////////////////////////////////////////////////////////////////////////
@@ -301,58 +384,18 @@ void TabContentsWrapper::RegisterUserPrefs(PrefService* prefs) {
IDS_FANTASY_FONT_FAMILY,
PrefService::UNSYNCABLE_PREF);
- // Register per-script font prefs that have defaults. Currently defaults are
- // defined only for some scripts and only on Chrome OS to begin with (it is
- // the easiest since we readily know what fonts are available there).
- // TODO(falken): add defaults for all platforms and for scripts that should
- // have defaults.
-#if defined(OS_CHROMEOS)
- prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamilyArabic,
- IDS_STANDARD_FONT_FAMILY_ARABIC, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamilyArabic,
- IDS_SERIF_FONT_FAMILY_ARABIC, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamilyArabic,
- IDS_SANS_SERIF_FONT_FAMILY_ARABIC, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamilyJapanese,
- IDS_STANDARD_FONT_FAMILY_JAPANESE, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamilyJapanese,
- IDS_FIXED_FONT_FAMILY_JAPANESE, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamilyJapanese,
- IDS_SERIF_FONT_FAMILY_JAPANESE, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamilyJapanese,
- IDS_SANS_SERIF_FONT_FAMILY_JAPANESE, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamilyKorean,
- IDS_STANDARD_FONT_FAMILY_KOREAN, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamilyKorean,
- IDS_FIXED_FONT_FAMILY_KOREAN, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamilyKorean,
- IDS_SERIF_FONT_FAMILY_KOREAN, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamilyKorean,
- IDS_SANS_SERIF_FONT_FAMILY_KOREAN, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(
- prefs::kWebKitStandardFontFamilySimplifiedHan,
- IDS_STANDARD_FONT_FAMILY_SIMPLIFIED_HAN, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamilySimplifiedHan,
- IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamilySimplifiedHan,
- IDS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(
- prefs::kWebKitSansSerifFontFamilySimplifiedHan,
- IDS_SANS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(
- prefs::kWebKitStandardFontFamilyTraditionalHan,
- IDS_STANDARD_FONT_FAMILY_TRADITIONAL_HAN, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(
- prefs::kWebKitFixedFontFamilyTraditionalHan,
- IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(
- prefs::kWebKitSerifFontFamilyTraditionalHan,
- IDS_SERIF_FONT_FAMILY_TRADITIONAL_HAN, PrefService::UNSYNCABLE_PREF);
- prefs->RegisterLocalizedStringPref(
- prefs::kWebKitSansSerifFontFamilyTraditionalHan,
- IDS_SANS_SERIF_FONT_FAMILY_TRADITIONAL_HAN, PrefService::UNSYNCABLE_PREF);
+ // Register per-script font prefs that have defaults.
+#if defined(OS_CHROMEOS) || defined(OS_WIN)
+ // As explained by its definition, kPerScriptFontDefaultsLength is only
+ // defined for platforms where it would be non-zero.
+ for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i) {
+ prefs->RegisterLocalizedStringPref(kPerScriptFontDefaults[i].pref_name,
+ kPerScriptFontDefaults[i].resource_id,
+ PrefService::UNSYNCABLE_PREF);
+ }
#endif
+ // Register the rest of the per-script font prefs.
RegisterFontFamilyMap(prefs, prefs::kWebKitStandardFontFamilyMap);
RegisterFontFamilyMap(prefs, prefs::kWebKitFixedFontFamilyMap);
RegisterFontFamilyMap(prefs, prefs::kWebKitSerifFontFamilyMap);