Index: src/ports/SkFontHost_linux.cpp |
diff --git a/src/ports/SkFontHost_linux.cpp b/src/ports/SkFontHost_linux.cpp |
index d6a020067be9ec0d833947197cc28a511619e70e..498d69ffe03f64f5d3fc31a83e52c60bf03057f8 100644 |
--- a/src/ports/SkFontHost_linux.cpp |
+++ b/src/ports/SkFontHost_linux.cpp |
@@ -25,15 +25,12 @@ |
# define SK_FONT_FILE_PREFIX "/usr/share/fonts/truetype/" |
#endif |
-bool find_name_and_attributes(SkStream* stream, SkString* name, |
- SkTypeface::Style* style, bool* isFixedPitch); |
- |
/////////////////////////////////////////////////////////////////////////////// |
/** The base SkTypeface implementation for the custom font manager. */ |
class SkTypeface_Custom : public SkTypeface_FreeType { |
public: |
- SkTypeface_Custom(Style style, bool sysFont, bool isFixedPitch, const SkString familyName) |
+ SkTypeface_Custom(Style style, bool isFixedPitch, bool sysFont, const SkString familyName) |
: INHERITED(style, SkTypefaceCache::NewFontID(), isFixedPitch) |
, fIsSysFont(sysFont), fFamilyName(familyName) |
{ } |
@@ -61,7 +58,7 @@ private: |
*/ |
class SkTypeface_Empty : public SkTypeface_Custom { |
public: |
- SkTypeface_Empty() : INHERITED(SkTypeface::kNormal, true, false, SkString()) {} |
+ SkTypeface_Empty() : INHERITED(SkTypeface::kNormal, false, true, SkString()) {} |
virtual const char* getUniqueString() const SK_OVERRIDE { return NULL; } |
@@ -75,10 +72,10 @@ private: |
/** The stream SkTypeface implementation for the custom font manager. */ |
class SkTypeface_Stream : public SkTypeface_Custom { |
public: |
- SkTypeface_Stream(Style style, bool sysFont, SkStream* stream, |
- bool isFixedPitch, const SkString familyName) |
- : INHERITED(style, sysFont, isFixedPitch, familyName) |
- , fStream(SkRef(stream)) |
+ SkTypeface_Stream(Style style, bool isFixedPitch, bool sysFont, const SkString familyName, |
+ SkStream* stream, int ttcIndex) |
+ : INHERITED(style, isFixedPitch, sysFont, familyName) |
+ , fStream(SkRef(stream)), fTtcIndex(ttcIndex) |
{ } |
virtual const char* getUniqueString() const SK_OVERRIDE { return NULL; } |
@@ -91,6 +88,7 @@ protected: |
private: |
SkAutoTUnref<SkStream> fStream; |
+ int fTtcIndex; |
typedef SkTypeface_Custom INHERITED; |
}; |
@@ -98,9 +96,9 @@ private: |
/** The file SkTypeface implementation for the custom font manager. */ |
class SkTypeface_File : public SkTypeface_Custom { |
public: |
- SkTypeface_File(Style style, bool sysFont, const char path[], |
- bool isFixedPitch, const SkString familyName) |
- : INHERITED(style, sysFont, isFixedPitch, familyName) |
+ SkTypeface_File(Style style, bool isFixedPitch, bool sysFont, const SkString familyName, |
+ const char path[]) |
+ : INHERITED(style, isFixedPitch, sysFont, familyName) |
, fPath(path) |
{ } |
@@ -269,8 +267,9 @@ protected: |
bool isFixedPitch; |
SkTypeface::Style style; |
SkString name; |
- if (find_name_and_attributes(stream, &name, &style, &isFixedPitch)) { |
- return SkNEW_ARGS(SkTypeface_Stream, (style, false, stream, isFixedPitch, name)); |
+ if (SkTypeface_FreeType::ScanFont(stream, ttcIndex, &name, &style, &isFixedPitch)) { |
+ return SkNEW_ARGS(SkTypeface_Stream, (style, isFixedPitch, false, name, |
+ stream, ttcIndex)); |
} else { |
return NULL; |
} |
@@ -311,7 +310,7 @@ private: |
SkTypeface::Style* style, bool* isFixedPitch) { |
SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path)); |
if (stream.get()) { |
- return find_name_and_attributes(stream, name, style, isFixedPitch); |
+ return SkTypeface_FreeType::ScanFont(stream, 0, name, style, isFixedPitch); |
} else { |
SkDebugf("---- failed to open <%s> as a font\n", path); |
return false; |
@@ -337,10 +336,10 @@ private: |
SkTypeface_Custom* tf = SkNEW_ARGS(SkTypeface_File, ( |
style, |
- true, // system-font (cannot delete) |
- filename.c_str(), |
isFixedPitch, |
- realname)); |
+ true, // system-font (cannot delete) |
+ realname, |
+ filename.c_str())); |
SkFontStyleSet_Custom* addTo = this->onMatchFamily(realname.c_str()); |
if (NULL == addTo) { |