Index: src/ports/SkFontHost_FreeType.cpp |
diff --git a/src/ports/SkFontHost_FreeType.cpp b/src/ports/SkFontHost_FreeType.cpp |
index 58d2999c64e69a938e7a7c1ecaaa13df4f99f68a..ba0ce14560a53666a5c1b491c24a9253d15f7533 100644 |
--- a/src/ports/SkFontHost_FreeType.cpp |
+++ b/src/ports/SkFontHost_FreeType.cpp |
@@ -1669,26 +1669,20 @@ |
/////////////////////////////////////////////////////////////////////////////// |
/////////////////////////////////////////////////////////////////////////////// |
- |
-SkTypeface_FreeType::Scanner::Scanner() { |
- if (FT_Init_FreeType(&fLibrary)) { |
- fLibrary = NULL; |
- } |
-} |
-SkTypeface_FreeType::Scanner::~Scanner() { |
- FT_Done_FreeType(fLibrary); |
-} |
- |
-FT_Face SkTypeface_FreeType::Scanner::openFace(SkStream* stream, int ttcIndex) const { |
- if (fLibrary == NULL) { |
- return NULL; |
- } |
- |
- FT_Open_Args args; |
+#include "SkTSearch.h" |
+/*static*/ bool SkTypeface_FreeType::ScanFont( |
+ SkStream* stream, int ttcIndex, SkString* name, SkFontStyle* style, bool* isFixedPitch) |
+{ |
+ FT_Library library; |
+ if (FT_Init_FreeType(&library)) { |
+ return false; |
+ } |
+ |
+ FT_Open_Args args; |
memset(&args, 0, sizeof(args)); |
const void* memoryBase = stream->getMemoryBase(); |
- FT_StreamRec streamRec; |
+ FT_StreamRec streamRec; |
if (memoryBase) { |
args.flags = FT_OPEN_MEMORY; |
@@ -1706,30 +1700,8 @@ |
} |
FT_Face face; |
- if (FT_Open_Face(fLibrary, &args, ttcIndex, &face)) { |
- return NULL; |
- } |
- return face; |
-} |
- |
-bool SkTypeface_FreeType::Scanner::recognizedFont(SkStream* stream, int* numFaces) const { |
- FT_Face face = this->openFace(stream, -1); |
- if (NULL == face) { |
- return false; |
- } |
- |
- *numFaces = face->num_faces; |
- |
- FT_Done_Face(face); |
- return true; |
-} |
- |
-#include "SkTSearch.h" |
-bool SkTypeface_FreeType::Scanner::scanFont( |
- SkStream* stream, int ttcIndex, SkString* name, SkFontStyle* style, bool* isFixedPitch) const |
-{ |
- FT_Face face = this->openFace(stream, ttcIndex); |
- if (NULL == face) { |
+ if (FT_Open_Face(library, &args, ttcIndex, &face)) { |
+ FT_Done_FreeType(library); |
return false; |
} |
@@ -1759,19 +1731,14 @@ |
{ "book", (SkFontStyle::kNormal_Weight + SkFontStyle::kLight_Weight)/2 }, |
{ "demi", SkFontStyle::kSemiBold_Weight }, |
{ "demibold", SkFontStyle::kSemiBold_Weight }, |
- { "extra", SkFontStyle::kExtraBold_Weight }, |
{ "extrabold", SkFontStyle::kExtraBold_Weight }, |
{ "extralight", SkFontStyle::kExtraLight_Weight }, |
- { "hairline", SkFontStyle::kThin_Weight }, |
{ "heavy", SkFontStyle::kBlack_Weight }, |
{ "light", SkFontStyle::kLight_Weight }, |
{ "medium", SkFontStyle::kMedium_Weight }, |
{ "normal", SkFontStyle::kNormal_Weight }, |
- { "plain", SkFontStyle::kNormal_Weight }, |
{ "regular", SkFontStyle::kNormal_Weight }, |
- { "roman", SkFontStyle::kNormal_Weight }, |
{ "semibold", SkFontStyle::kSemiBold_Weight }, |
- { "standard", SkFontStyle::kNormal_Weight }, |
{ "thin", SkFontStyle::kThin_Weight }, |
{ "ultra", SkFontStyle::kExtraBold_Weight }, |
{ "ultrablack", 1000 }, |
@@ -1784,7 +1751,7 @@ |
if (index >= 0) { |
weight = commonWeights[index].weight; |
} else { |
- SkDEBUGF(("Do not know weight for: %s (%s) \n", face->family_name, psFontInfo.weight)); |
+ SkDEBUGF(("Do not know weight for: %s\n", psFontInfo.weight)); |
} |
} |
@@ -1799,5 +1766,6 @@ |
} |
FT_Done_Face(face); |
+ FT_Done_FreeType(library); |
return true; |
} |