diff options
author | falken@chromium.org <falken@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-31 06:19:23 +0000 |
---|---|---|
committer | falken@chromium.org <falken@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-31 06:19:23 +0000 |
commit | fb06c7ceb4f0cc2035fe2e280951e8ea00b24e5a (patch) | |
tree | fed3c2dcf44a486145c607f989380e4aa56c6ecc /chrome/browser/ui/tab_contents | |
parent | 26d674d77132a1e9f26308faa026ac0d809daa94 (diff) | |
download | chromium_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.cc | 143 |
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); |