Commit fb06c7ce authored by falken@chromium.org's avatar falken@chromium.org

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
parent 26d674d7
......@@ -216,6 +216,108 @@
Impact
</message>
<!-- The default value for |WebPreference::standard_font_family_map| for
Japanese script on Windows. -->
<message name="IDS_STANDARD_FONT_FAMILY_JAPANESE" use_name_for_id="true">
MS PGothic
</message>
<!-- The default value for |WebPreference::fixed_font_family_map| for
Japanese script. -->
<message name="IDS_FIXED_FONT_FAMILY_JAPANESE" use_name_for_id="true">
MS Gothic
</message>
<!-- The default value for |WebPreference::serif_font_family_map| for
Japanese script. -->
<message name="IDS_SERIF_FONT_FAMILY_JAPANESE" use_name_for_id="true">
MS PMincho
</message>
<!-- The default value for |WebPreference::sans_serif_font_family_map| for
Japanese script. -->
<message name="IDS_SANS_SERIF_FONT_FAMILY_JAPANESE" use_name_for_id="true">
MS PGothic
</message>
<!-- The default value for |WebPreference::standard_font_family_map| for
Korean script. -->
<message name="IDS_STANDARD_FONT_FAMILY_KOREAN" use_name_for_id="true">
Gulim
</message>
<!-- The default value for |WebPreference::fixed_font_family_map| for
Korean script. -->
<message name="IDS_FIXED_FONT_FAMILY_KOREAN" use_name_for_id="true">
Gulimche
</message>
<!-- The default value for |WebPreference::serif_font_family_map| for
Korean script. -->
<message name="IDS_SERIF_FONT_FAMILY_KOREAN" use_name_for_id="true">
Batang
</message>
<!-- The default value for |WebPreference::sans_serif_font_family_map| for
Korean script. -->
<message name="IDS_SANS_SERIF_FONT_FAMILY_KOREAN" use_name_for_id="true">
Gulim
</message>
<!-- The default value for |WebPreference::cursive_font_family_map| for
Korean script. -->
<message name="IDS_CURSIVE_FONT_FAMILY_KOREAN" use_name_for_id="true">
Gungsuh
</message>
<!-- The default value for |WebPreference::standard_font_family_map| for
Simplified Chinese script. -->
<message name="IDS_STANDARD_FONT_FAMILY_SIMPLIFIED_HAN" use_name_for_id="true">
Simsun
</message>
<!-- The default value for |WebPreference::fixed_font_family_map| for
Simplified Chinese script. -->
<message name="IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN" use_name_for_id="true">
NSimsun
</message>
<!-- The default value for |WebPreference::serif_font_family_map| for
Simplified Chinese script. -->
<message name="IDS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN" use_name_for_id="true">
Simsun
</message>
<!-- The default value for |WebPreference::sans_serif_font_family_map| for
Simplified Chinese script. -->
<message name="IDS_SANS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN" use_name_for_id="true">
Simsun
</message>
<!-- The default value for |WebPreference::standard_font_family_map| for
Traditional Chinese script. -->
<message name="IDS_STANDARD_FONT_FAMILY_TRADITIONAL_HAN" use_name_for_id="true">
PMingLiU
</message>
<!-- The default value for |WebPreference::fixed_font_family_map| for
Traditional Chinese script. -->
<message name="IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN" use_name_for_id="true">
MingLiU
</message>
<!-- The default value for |WebPreference::serif_font_family_map| for
Traditional Chinese script. -->
<message name="IDS_SERIF_FONT_FAMILY_TRADITIONAL_HAN" use_name_for_id="true">
PMingLiU
</message>
<!-- The default value for |WebPreference::sans_serif_font_family_map| for
Traditional Chinese script. -->
<message name="IDS_SANS_SERIF_FONT_FAMILY_TRADITIONAL_HAN" use_name_for_id="true">
PMingLiU
</message>
<!-- The default value for |WebPreference::default_font_size| -->
<message name="IDS_DEFAULT_FONT_SIZE" use_name_for_id="true">
16
......
......@@ -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);
......
......@@ -155,6 +155,8 @@ const char kWebKitSerifFontFamilyKorean[] =
"webkit.webprefs.fonts.serif.Hang";
const char kWebKitSansSerifFontFamilyKorean[] =
"webkit.webprefs.fonts.sansserif.Hang";
const char kWebKitCursiveFontFamilyKorean[] =
"webkit.webprefs.fonts.cursive.Hang";
const char kWebKitStandardFontFamilySimplifiedHan[] =
"webkit.webprefs.fonts.standard.Hans";
const char kWebKitFixedFontFamilySimplifiedHan[] =
......
......@@ -72,6 +72,7 @@ extern const char kWebKitStandardFontFamilyKorean[];
extern const char kWebKitFixedFontFamilyKorean[];
extern const char kWebKitSerifFontFamilyKorean[];
extern const char kWebKitSansSerifFontFamilyKorean[];
extern const char kWebKitCursiveFontFamilyKorean[];
extern const char kWebKitStandardFontFamilySimplifiedHan[];
extern const char kWebKitFixedFontFamilySimplifiedHan[];
extern const char kWebKitSerifFontFamilySimplifiedHan[];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment