Index: src/core/SkTypeface.cpp |
diff --git a/src/core/SkTypeface.cpp b/src/core/SkTypeface.cpp |
index cc60ca1809189b95667ee843b7b8f1dcebad6998..361f5a99436677ebe57e4ae7d5819a21ea87df9c 100644 |
--- a/src/core/SkTypeface.cpp |
+++ b/src/core/SkTypeface.cpp |
@@ -37,21 +37,23 @@ SkTypeface::~SkTypeface() { |
/////////////////////////////////////////////////////////////////////////////// |
-SkTypeface* SkTypeface::GetDefaultTypeface() { |
+SkTypeface* SkTypeface::GetDefaultTypeface(Style style) { |
// we keep a reference to this guy for all time, since if we return its |
// fontID, the font cache may later on ask to resolve that back into a |
// typeface object. |
- static SkTypeface* gDefaultTypeface; |
+ static const int FONT_STYLE_COUNT = 4; |
+ static SkTypeface* gDefaultTypefaces[FONT_STYLE_COUNT] = {0}; |
reed1
2013/06/05 13:23:57
nit: don't need {0} as it will automatically be ze
djsollen
2013/06/05 13:51:59
Done.
|
+ SkASSERT(FONT_STYLE_COUNT > style); |
reed1
2013/06/05 13:23:57
nit: I think I always see this compare the other w
djsollen
2013/06/05 13:51:59
Done.
|
- if (NULL == gDefaultTypeface) { |
- gDefaultTypeface = |
- SkFontHost::CreateTypeface(NULL, NULL, SkTypeface::kNormal); |
+ if (NULL == gDefaultTypefaces[style]) { |
+ gDefaultTypefaces[style] = |
+ SkFontHost::CreateTypeface(NULL, NULL, style); |
} |
- return gDefaultTypeface; |
+ return gDefaultTypefaces[style]; |
} |
-SkTypeface* SkTypeface::RefDefault() { |
- return SkRef(GetDefaultTypeface()); |
+SkTypeface* SkTypeface::RefDefault(Style style) { |
+ return SkRef(GetDefaultTypeface(style)); |
} |
uint32_t SkTypeface::UniqueID(const SkTypeface* face) { |
@@ -68,6 +70,9 @@ bool SkTypeface::Equal(const SkTypeface* facea, const SkTypeface* faceb) { |
/////////////////////////////////////////////////////////////////////////////// |
SkTypeface* SkTypeface::CreateFromName(const char name[], Style style) { |
+ if (NULL == name) { |
+ return RefDefault(style); |
+ } |
return SkFontHost::CreateTypeface(NULL, name, style); |
} |