Index: src/ports/SkFontMgr_win_dw.cpp |
diff --git a/src/ports/SkFontMgr_win_dw.cpp b/src/ports/SkFontMgr_win_dw.cpp |
index 585d809406a765454dbc85f3850b303c8ba05561..1bb5d996f9256e42653037e9d54efe56fdaf8832 100644 |
--- a/src/ports/SkFontMgr_win_dw.cpp |
+++ b/src/ports/SkFontMgr_win_dw.cpp |
@@ -1067,7 +1067,8 @@ SkTypeface* SkFontStyleSet_DirectWrite::matchStyle(const SkFontStyle& pattern) { |
//////////////////////////////////////////////////////////////////////////////// |
#include "SkTypeface_win.h" |
-SK_API SkFontMgr* SkFontMgr_New_DirectWrite(IDWriteFactory* factory) { |
+SK_API SkFontMgr* SkFontMgr_New_DirectWrite(IDWriteFactory* factory, |
+ IDWriteFontCollection* collection) { |
if (nullptr == factory) { |
factory = sk_get_dwrite_factory(); |
if (nullptr == factory) { |
@@ -1075,9 +1076,14 @@ SK_API SkFontMgr* SkFontMgr_New_DirectWrite(IDWriteFactory* factory) { |
} |
} |
- SkTScopedComPtr<IDWriteFontCollection> sysFontCollection; |
- HRNM(factory->GetSystemFontCollection(&sysFontCollection, FALSE), |
- "Could not get system font collection."); |
+ SkTScopedComPtr<IDWriteFontCollection> fontCollection; |
+ if (collection != nullptr) { |
+ fontCollection.swap(SkTScopedComPtr<IDWriteFontCollection>(collection)); |
+ } |
+ else { |
+ HRNM(factory->GetSystemFontCollection(&fontCollection, FALSE), |
+ "Could not get system font collection."); |
+ } |
bungeman-skia
2016/01/29 20:12:29
I would write this whole block as
SkTScopedComPtr
Ilya Kulshin
2016/01/29 22:10:15
Done. While looking at it I also noticed that SkTS
|
WCHAR localeNameStorage[LOCALE_NAME_MAX_LENGTH]; |
WCHAR* localeName = nullptr; |
@@ -1095,7 +1101,7 @@ SK_API SkFontMgr* SkFontMgr_New_DirectWrite(IDWriteFactory* factory) { |
}; |
} |
- return new SkFontMgr_DirectWrite(factory, sysFontCollection.get(), localeName, localeNameLen); |
+ return new SkFontMgr_DirectWrite(factory, fontCollection.get(), localeName, localeNameLen); |
} |
#include "SkFontMgr_indirect.h" |