Index: src/ports/SkFontMgr_android.cpp |
diff --git a/src/ports/SkFontMgr_android.cpp b/src/ports/SkFontMgr_android.cpp |
index 1facb537096b53d7c50b7f4e7bcf51d732a8ed5d..2bae9ca0e51a62409f61c51839ddccc3c0368316 100644 |
--- a/src/ports/SkFontMgr_android.cpp |
+++ b/src/ports/SkFontMgr_android.cpp |
@@ -120,7 +120,7 @@ void get_path_for_sys_fonts(SkString* full, const SkString& name) { |
class SkFontStyleSet_Android : public SkFontStyleSet { |
public: |
- explicit SkFontStyleSet_Android(FontFamily* family) : fFontFamily(family) { |
+ explicit SkFontStyleSet_Android(FontFamily* family) { |
// TODO? make this lazy |
for (int i = 0; i < family->fFontFiles.count(); ++i) { |
const SkString& fileName = family->fFontFiles[i].fFileName; |
@@ -134,17 +134,18 @@ public: |
continue; |
} |
+ const int ttcIndex = family->fFontFiles[i].fIndex; |
SkString fontName; |
SkTypeface::Style style; |
bool isFixedWidth; |
- if (!SkTypeface_FreeType::ScanFont(stream.get(), family->fFontFiles[i].fIndex, |
+ if (!SkTypeface_FreeType::ScanFont(stream.get(), ttcIndex, |
&fontName, &style, &isFixedWidth)) { |
DEBUG_FONT(("---- SystemFonts[%d] file=%s (INVALID)", i, fileName.c_str())); |
continue; |
} |
fStyles.push_back().reset(SkNEW_ARGS(SkTypeface_AndroidSystem, |
- (pathName, 0, |
+ (pathName, ttcIndex, |
style, isFixedWidth, fontName))); |
} |
} |
@@ -212,8 +213,6 @@ private: |
return score; |
} |
- |
- FontFamily* fFontFamily; |
SkTArray<SkAutoTUnref<SkTypeface>, true> fStyles; |
friend struct NameToFamily; |
@@ -329,20 +328,15 @@ protected: |
oldStyle & SkTypeface::kItalic |
? SkFontStyle::kItalic_Slant |
: SkFontStyle::kUpright_Slant); |
- SkTypeface* tf = NULL; |
if (NULL != familyName) { |
// On Android, we must return NULL when we can't find the requested |
// named typeface so that the system/app can provide their own recovery |
// mechanism. On other platforms we'd provide a typeface from the |
// default family instead. |
- tf = this->onMatchFamilyStyle(familyName, style); |
- } else { |
- tf = fDefaultFamily->matchStyle(style); |
+ return this->onMatchFamilyStyle(familyName, style); |
} |
- |
- // TODO: double ref? qv matchStyle() |
- return SkSafeRef(tf); |
+ return fDefaultFamily->matchStyle(style); |
} |