Index: ui/base/resource/resource_bundle.cc |
diff --git a/ui/base/resource/resource_bundle.cc b/ui/base/resource/resource_bundle.cc |
index dab50974e70011c7a0f1dfba03e3215e260fdd10..a2aee87af4dd85594e49884c7f032c9654df6730 100644 |
--- a/ui/base/resource/resource_bundle.cc |
+++ b/ui/base/resource/resource_bundle.cc |
@@ -17,6 +17,7 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "base/synchronization/lock.h" |
#include "build/build_config.h" |
+#include "grit/app_locale_settings.h" |
#include "net/base/big_endian.h" |
#include "skia/ext/image_operations.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
@@ -457,34 +458,38 @@ string16 ResourceBundle::GetLocalizedString(int message_id) { |
return msg; |
} |
-const gfx::Font& ResourceBundle::GetFont(FontStyle style) { |
+const gfx::FontList& ResourceBundle::GetFontList(FontStyle style) { |
{ |
base::AutoLock lock_scope(*images_and_fonts_lock_); |
LoadFontsIfNecessary(); |
} |
switch (style) { |
case BoldFont: |
- return *bold_font_; |
+ return *bold_font_list_; |
case SmallFont: |
- return *small_font_; |
+ return *small_font_list_; |
case MediumFont: |
- return *medium_font_; |
+ return *medium_font_list_; |
case SmallBoldFont: |
- return *small_bold_font_; |
+ return *small_bold_font_list_; |
case MediumBoldFont: |
- return *medium_bold_font_; |
+ return *medium_bold_font_list_; |
case LargeFont: |
- return *large_font_; |
+ return *large_font_list_; |
case LargeBoldFont: |
- return *large_bold_font_; |
+ return *large_bold_font_list_; |
default: |
- return *base_font_; |
+ return *base_font_list_; |
} |
} |
+const gfx::Font& ResourceBundle::GetFont(FontStyle style) { |
+ return GetFontList(style).GetPrimaryFont(); |
+} |
+ |
void ResourceBundle::ReloadFonts() { |
base::AutoLock lock_scope(*images_and_fonts_lock_); |
- base_font_.reset(); |
+ base_font_list_.reset(); |
LoadFontsIfNecessary(); |
} |
@@ -539,60 +544,70 @@ void ResourceBundle::AddDataPack(DataPack* data_pack) { |
void ResourceBundle::LoadFontsIfNecessary() { |
images_and_fonts_lock_->AssertAcquired(); |
- if (!base_font_.get()) { |
+ if (!base_font_list_.get()) { |
if (delegate_) { |
- base_font_.reset(delegate_->GetFont(BaseFont).release()); |
- bold_font_.reset(delegate_->GetFont(BoldFont).release()); |
- small_font_.reset(delegate_->GetFont(SmallFont).release()); |
- small_bold_font_.reset(delegate_->GetFont(SmallBoldFont).release()); |
- medium_font_.reset(delegate_->GetFont(MediumFont).release()); |
- medium_bold_font_.reset(delegate_->GetFont(MediumBoldFont).release()); |
- large_font_.reset(delegate_->GetFont(LargeFont).release()); |
- large_bold_font_.reset(delegate_->GetFont(LargeBoldFont).release()); |
+ base_font_list_.reset(delegate_->GetFontList(BaseFont).release()); |
+ bold_font_list_.reset(delegate_->GetFontList(BoldFont).release()); |
+ small_font_list_.reset(delegate_->GetFontList(SmallFont).release()); |
+ small_bold_font_list_.reset( |
+ delegate_->GetFontList(SmallBoldFont).release()); |
+ medium_font_list_.reset(delegate_->GetFontList(MediumFont).release()); |
+ medium_bold_font_list_.reset( |
+ delegate_->GetFontList(MediumBoldFont).release()); |
+ large_font_list_.reset(delegate_->GetFontList(LargeFont).release()); |
+ large_bold_font_list_.reset( |
+ delegate_->GetFontList(LargeBoldFont).release()); |
} |
- if (!base_font_.get()) |
- base_font_.reset(new gfx::Font()); |
+ if (!base_font_list_.get()) { |
+#if defined(OS_CHROMEOS) |
+ base_font_list_.reset(new gfx::FontList( |
+ l10n_util::GetStringUTF8(IDS_UI_FONT_FAMILY_CROS))); |
+#else |
+ base_font_list_.reset(new gfx::FontList()); |
+#endif |
+ } |
- if (!bold_font_.get()) { |
- bold_font_.reset(new gfx::Font()); |
- *bold_font_ = |
- base_font_->DeriveFont(0, base_font_->GetStyle() | gfx::Font::BOLD); |
+ if (!bold_font_list_.get()) { |
+ bold_font_list_.reset(new gfx::FontList()); |
+ *bold_font_list_ = base_font_list_->DeriveFontList( |
+ base_font_list_->GetFontStyle() | gfx::Font::BOLD); |
} |
- if (!small_font_.get()) { |
- small_font_.reset(new gfx::Font()); |
- *small_font_ = base_font_->DeriveFont(kSmallFontSizeDelta); |
+ if (!small_font_list_.get()) { |
+ small_font_list_.reset(new gfx::FontList()); |
+ *small_font_list_ = base_font_list_->DeriveFontListWithSize( |
+ base_font_list_->GetFontSize() + kSmallFontSizeDelta); |
} |
- if (!small_bold_font_.get()) { |
- small_bold_font_.reset(new gfx::Font()); |
- *small_bold_font_ = base_font_->DeriveFont( |
- kSmallFontSizeDelta, base_font_->GetStyle() | gfx::Font::BOLD); |
+ if (!small_bold_font_list_.get()) { |
+ small_bold_font_list_.reset(new gfx::FontList()); |
+ *small_bold_font_list_ = small_font_list_->DeriveFontList( |
+ small_font_list_->GetFontStyle() | gfx::Font::BOLD); |
} |
- if (!medium_font_.get()) { |
- medium_font_.reset(new gfx::Font()); |
- *medium_font_ = base_font_->DeriveFont(kMediumFontSizeDelta); |
+ if (!medium_font_list_.get()) { |
+ medium_font_list_.reset(new gfx::FontList()); |
+ *medium_font_list_ = base_font_list_->DeriveFontListWithSize( |
+ base_font_list_->GetFontSize() + kMediumFontSizeDelta); |
} |
- if (!medium_bold_font_.get()) { |
- medium_bold_font_.reset(new gfx::Font()); |
- *medium_bold_font_ = |
- base_font_->DeriveFont(kMediumFontSizeDelta, |
- base_font_->GetStyle() | gfx::Font::BOLD); |
+ if (!medium_bold_font_list_.get()) { |
+ medium_bold_font_list_.reset(new gfx::FontList()); |
+ *medium_bold_font_list_ = medium_font_list_->DeriveFontList( |
+ medium_font_list_->GetFontStyle() | gfx::Font::BOLD); |
} |
- if (!large_font_.get()) { |
- large_font_.reset(new gfx::Font()); |
- *large_font_ = base_font_->DeriveFont(kLargeFontSizeDelta); |
+ if (!large_font_list_.get()) { |
+ large_font_list_.reset(new gfx::FontList()); |
+ *large_font_list_ = base_font_list_->DeriveFontListWithSize( |
+ base_font_list_->GetFontSize() + kLargeFontSizeDelta); |
} |
- if (!large_bold_font_.get()) { |
- large_bold_font_.reset(new gfx::Font()); |
- *large_bold_font_ = |
- base_font_->DeriveFont(kLargeFontSizeDelta, |
- base_font_->GetStyle() | gfx::Font::BOLD); |
+ if (!large_bold_font_list_.get()) { |
+ large_bold_font_list_.reset(new gfx::FontList()); |
+ *large_bold_font_list_ = large_font_list_->DeriveFontList( |
+ large_font_list_->GetFontStyle() | gfx::Font::BOLD); |
} |
} |
} |