| Index: trunk/src/ports/SkFontHost_FreeType.cpp
|
| ===================================================================
|
| --- trunk/src/ports/SkFontHost_FreeType.cpp (revision 8295)
|
| +++ trunk/src/ports/SkFontHost_FreeType.cpp (working copy)
|
| @@ -260,7 +260,8 @@
|
|
|
| // Will return 0 on failure
|
| // Caller must lock gFTMutex before calling this function.
|
| -static SkFaceRec* ref_ft_face(uint32_t fontID) {
|
| +static SkFaceRec* ref_ft_face(const SkTypeface* typeface) {
|
| + const SkFontID fontID = typeface->uniqueID();
|
| SkFaceRec* rec = gFaceRecHead;
|
| while (rec) {
|
| if (rec->fFontID == fontID) {
|
| @@ -271,10 +272,10 @@
|
| rec = rec->fNext;
|
| }
|
|
|
| - SkStream* strm = SkFontHost::OpenStream(fontID);
|
| + int face_index;
|
| + SkStream* strm = typeface->openStream(&face_index);
|
| if (NULL == strm) {
|
| - SkDEBUGF(("SkFontHost::OpenStream failed opening %x\n", fontID));
|
| - return 0;
|
| + return NULL;
|
| }
|
|
|
| // this passes ownership of strm to the rec
|
| @@ -295,15 +296,11 @@
|
| args.stream = &rec->fFTStream;
|
| }
|
|
|
| - int face_index;
|
| - int length = SkFontHost::GetFileName(fontID, NULL, 0, &face_index);
|
| - FT_Error err = FT_Open_Face(gFTLibrary, &args, length ? face_index : 0,
|
| - &rec->fFace);
|
| -
|
| + FT_Error err = FT_Open_Face(gFTLibrary, &args, face_index, &rec->fFace);
|
| if (err) { // bad filename, try the default font
|
| fprintf(stderr, "ERROR: unable to open font '%x'\n", fontID);
|
| SkDELETE(rec);
|
| - return 0;
|
| + return NULL;
|
| } else {
|
| SkASSERT(rec->fFace);
|
| //fprintf(stderr, "Opened font '%s'\n", filename.c_str());
|
| @@ -462,7 +459,7 @@
|
| libInit = gFTLibrary;
|
| }
|
| SkAutoTCallIProc<struct FT_LibraryRec_, FT_Done_FreeType> ftLib(libInit);
|
| - SkFaceRec* rec = ref_ft_face(this->uniqueID());
|
| + SkFaceRec* rec = ref_ft_face(this);
|
| if (NULL == rec)
|
| return NULL;
|
| FT_Face face = rec->fFace;
|
| @@ -707,7 +704,7 @@
|
| libInit = gFTLibrary;
|
| }
|
| SkAutoTCallIProc<struct FT_LibraryRec_, FT_Done_FreeType> ftLib(libInit);
|
| - SkFaceRec *rec = ref_ft_face(this->uniqueID());
|
| + SkFaceRec *rec = ref_ft_face(this);
|
| int unitsPerEm = 0;
|
|
|
| if (rec != NULL && rec->fFace != NULL) {
|
| @@ -733,7 +730,7 @@
|
| // load the font file
|
| fFTSize = NULL;
|
| fFace = NULL;
|
| - fFaceRec = ref_ft_face(fRec.fFontID);
|
| + fFaceRec = ref_ft_face(typeface);
|
| if (NULL == fFaceRec) {
|
| return;
|
| }
|
|
|