This patch is from https://bugzilla.mozilla.org/show_bug.cgi?id=234035#c65 to enable linking against freetype-2.1.8+. It disables the experimental freetype caching. I modified this patch slightly to apply to 1.7.3; some things had moved around in the files since the original patch. Note this is the same patch as we apply to mozilla-firefox-1.0 15 Nov 2004 agriffis --- gfx/idl/nsIFreeType2.idl.agriffis 2004-04-15 21:09:33.000000000 -0400 +++ gfx/idl/nsIFreeType2.idl 2004-11-15 13:29:05.120343408 -0500 @@ -98,8 +98,6 @@ { readonly attribute FT_Library library; - readonly attribute FTC_Manager FTCacheManager; - readonly attribute FTC_Image_Cache ImageCache; void doneFace(in FT_Face face); void doneFreeType(in FT_Library lib); @@ -114,17 +112,8 @@ in FT_Long face_num, out FT_Face face); void outlineDecompose(in FT_Outline_p outline, in const_FT_Outline_Funcs_p funcs, in voidPtr p); + void setPixelSizes(in FT_Face face, in FT_UInt width, in FT_UInt height); void setCharmap(in FT_Face face, in FT_CharMap charmap); - void imageCacheLookup(in FTC_Image_Cache cache, in FTC_Image_Desc_p desc, - in FT_UInt gindex, out FT_Glyph glyph); - void managerLookupSize(in FTC_Manager manager, in FTC_Font font, - out FT_Face face, out FT_Size size); - void managerDone(in FTC_Manager manager); - void managerNew(in FT_Library lib, in FT_UInt max_faces, - in FT_UInt max_sizes, in FT_ULong max_bytes, - in FTC_Face_Requester requester, in FT_Pointer req_data, - out FTC_Manager manager); - void imageCacheNew(in FTC_Manager manager, out FTC_Image_Cache cache); /* #ifdef MOZ_SVG */ void glyphTransform(in FT_Glyph glyph, in FT_Matrix_p matrix, in FT_Vector_p delta); --- gfx/src/ps/nsFontMetricsPS.h.agriffis 2003-04-22 12:25:09.000000000 -0400 +++ gfx/src/ps/nsFontMetricsPS.h 2004-11-15 13:37:58.431267824 -0500 @@ -320,7 +320,8 @@ nsCOMPtr mFaceID; nsCOMPtr mFt2; PRUint16 mPixelSize; - FTC_Image_Desc mImageDesc; + FT_Face mFace; + FT_Library mFreeTypeLibrary; static PRBool AddUserPref(nsIAtom *aLang, const nsFont& aFont, @@ -363,7 +364,8 @@ protected: nsCOMPtr mEntry; nsCOMPtr mFt2; - FTC_Image_Desc mImageDesc; + FT_Face mFace; + FT_Library mFreeTypeLibrary; }; #endif --- gfx/src/ps/nsFontMetricsPS.cpp.agriffis 2004-02-04 20:57:05.000000000 -0500 +++ gfx/src/ps/nsFontMetricsPS.cpp 2004-11-15 13:29:05.123342952 -0500 @@ -1141,21 +1141,26 @@ mPixelSize = NSToIntRound(app2dev * mFont->size); - mImageDesc.font.face_id = (void*)mEntry; - mImageDesc.font.pix_width = mPixelSize; - mImageDesc.font.pix_height = mPixelSize; - mImageDesc.image_type = 0; - nsresult rv; mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv); if (NS_FAILED(rv)) { + NS_ERROR("failed to get ft2 service"); + return NS_ERROR_FAILURE; + } + + if (NS_FAILED(mFt2->GetLibrary(&mFreeTypeLibrary))) { + NS_ERROR("failed to get ft2 library"); return NS_ERROR_FAILURE; } + + mFace = nsnull; return NS_OK; } nsFontPSFreeType::~nsFontPSFreeType() { + if (mFace) + mFt2->DoneFace(mFace); mEntry = nsnull; } @@ -1180,32 +1185,26 @@ nscoord nsFontPSFreeType::GetWidth(const PRUnichar* aString, PRUint32 aLength) { - FT_UInt glyph_index; - FT_Glyph glyph; - double origin_x = 0; - // get the face/size from the FreeType cache FT_Face face = getFTFace(); NS_ASSERTION(face, "failed to get face/size"); if (!face) return 0; - FTC_Image_Cache iCache; - nsresult rv = mFt2->GetImageCache(&iCache); - if (NS_FAILED(rv)) { - NS_ERROR("Failed to get Image Cache"); - return 0; - } + FT_UInt glyph_index; + FT_Glyph glyph; + double origin_x = 0; + // XXX : we might need some caching here for (PRUint32 i=0; iGetCharIndex((FT_Face)face, aString[i], &glyph_index); - nsresult rv = mFt2->ImageCacheLookup(iCache, &mImageDesc, - glyph_index, &glyph); - if (NS_FAILED(rv)) { + mFt2->GetCharIndex(face, aString[i], &glyph_index); + if (NS_FAILED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) || + NS_FAILED(mFt2->GetGlyph(face->glyph, &glyph))) { origin_x += FT_REG_TO_16_16(face->size->metrics.x_ppem/2 + 2); continue; } origin_x += glyph->advance.x; + mFt2->DoneGlyph(glyph); } NS_ENSURE_TRUE(mFontMetrics, 0); @@ -1224,16 +1223,26 @@ FT_Face nsFontPSFreeType::getFTFace() { - FT_Face face = nsnull; - - FTC_Manager cManager; - mFt2->GetFTCacheManager(&cManager); - nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font, - &face, nsnull); + if (mFace) return mFace; + + nsCAutoString fileName; + PRInt16 faceIndex; + mEntry->GetFileName(fileName); + mEntry->GetFaceIndex(&faceIndex); + + nsresult rv = + mFt2->NewFace(mFreeTypeLibrary, fileName.get(), faceIndex, &mFace); + NS_ASSERTION(rv==0, "failed to get face/size"); - if (rv) - return nsnull; - return face; + if (NS_FAILED(rv)) { + return nsnull; + } + + if (NS_FAILED(mFt2->SetPixelSizes(mFace, mPixelSize, 0))) { + return nsnull; + } + + return mFace; } nscoord @@ -1618,26 +1627,23 @@ void nsFT2Type8Generator::GeneratePSFont(FILE* aFile) { - nsCAutoString fontName, styleName; - mEntry->GetFamilyName(fontName); - mEntry->GetStyleName(styleName); - - mImageDesc.font.face_id = (void*)mEntry; - // TT glyph has no relation to size - mImageDesc.font.pix_width = 16; - mImageDesc.font.pix_height = 16; - mImageDesc.image_type = 0; - FT_Face face = nsnull; - FTC_Manager cManager; - mFt2->GetFTCacheManager(&cManager); - nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font, - &face, nsnull); - if (NS_FAILED(rv)) - return; + if (mFace == nsnull) { + nsCAutoString fileName; + PRInt16 faceIndex; + + mEntry->GetFileName(fileName); + mEntry->GetFaceIndex(&faceIndex); + if (NS_FAILED(mFt2-> + NewFace(mFreeTypeLibrary, fileName.get(), faceIndex, &mFace))) { + return; + } + NS_ASSERTION(mFace != nsnull, "mFace is null"); + } + int wmode = 0; if (!mSubset.IsEmpty()) - FT2SubsetToType8(face, mSubset.get(), mSubset.Length(), wmode, aFile); + FT2SubsetToType8(mFace, mSubset.get(), mSubset.Length(), wmode, aFile); } #endif //MOZ_ENABLE_FREETYPE2 --- gfx/src/x11shared/nsFontFreeType.cpp.agriffis 2003-12-25 03:24:52.000000000 -0500 +++ gfx/src/x11shared/nsFontFreeType.cpp 2004-11-15 13:29:05.125342648 -0500 @@ -173,15 +173,22 @@ FT_Face nsFreeTypeFont::getFTFace() { - FT_Face face = nsnull; - FTC_Manager mgr; + if (mFace) return mFace; + + nsCAutoString fileName; + PRInt16 faceIndex; + mFaceID->GetFileName(fileName); + mFaceID->GetFaceIndex(&faceIndex); + nsresult rv; - mFt2->GetFTCacheManager(&mgr); - rv = mFt2->ManagerLookupSize(mgr, &mImageDesc.font, &face, nsnull); + rv = mFt2->NewFace(mFreeTypeLibrary, fileName.get(), faceIndex, &mFace); NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get face/size"); if (NS_FAILED(rv)) return nsnull; - return face; + rv = mFt2->SetPixelSizes(mFace, mPixelSize, 0); + if (NS_FAILED(rv)) + return nsnull; + return mFace; } nsFreeTypeFont::nsFreeTypeFont(nsITrueTypeFontCatalogEntry *aFaceID, @@ -191,21 +198,20 @@ PRBool embedded_bimap = PR_FALSE; mFaceID = aFaceID; mPixelSize = aPixelSize; - mImageDesc.font.face_id = (void*)mFaceID; - mImageDesc.font.pix_width = aPixelSize; - mImageDesc.font.pix_height = aPixelSize; - mImageDesc.image_type = 0; +//mLoadFlag = FT_LOAD_RENDER; + mLoadFlag = 0; + mFace = nsnull; if (aPixelSize < nsFreeType2::gAntiAliasMinimum) { - mImageDesc.image_type |= ftc_image_mono; + mLoadFlag |= FT_LOAD_MONOCHROME; anti_alias = PR_FALSE; } if (nsFreeType2::gFreeType2Autohinted) - mImageDesc.image_type |= ftc_image_flag_autohinted; + mLoadFlag |= FT_LOAD_FORCE_AUTOHINT; if (nsFreeType2::gFreeType2Unhinted) - mImageDesc.image_type |= ftc_image_flag_unhinted; + mLoadFlag |= FT_LOAD_NO_HINTING; PRUint32 num_embedded_bitmaps, i; PRInt32* embedded_bitmapheights; @@ -218,7 +224,7 @@ if (embedded_bitmapheights[i] == aPixelSize) { embedded_bimap = PR_TRUE; // unhinted must be set for embedded bitmaps to be used - mImageDesc.image_type |= ftc_image_flag_unhinted; + mLoadFlag |= FT_LOAD_NO_HINTING; break; } } @@ -230,6 +236,11 @@ mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv); NS_ASSERTION(NS_SUCCEEDED(rv), "failed to find FreeType routines"); + if (mFt2) { + rv = mFt2->GetLibrary(&mFreeTypeLibrary); + NS_ASSERTION(NS_SUCCEEDED(rv), "failed to find FreeType library"); + } + FREETYPE_FONT_PRINTF(("anti_alias=%d, embedded_bitmap=%d, " "AutoHinted=%d, gFreeType2Unhinted = %d, " "size=%dpx, \"%s\"", @@ -288,8 +299,6 @@ PRInt32* aDescent, PRInt32* aWidth) { - nsresult rv; - *aLeftBearing = 0; *aRightBearing = 0; *aAscent = 0; @@ -312,11 +321,6 @@ if (!face) return NS_ERROR_FAILURE; - FTC_Image_Cache icache; - mFt2->GetImageCache(&icache); - if (!icache) - return NS_ERROR_FAILURE; - // get the text size PRUint32 i, extraSurrogateLength; for (i=0; iGetCharIndex(face, code_point, &glyph_index); - //NS_ASSERTION(glyph_index,"failed to get glyph"); - if (glyph_index) { - rv = mFt2->ImageCacheLookup(icache, &mImageDesc, glyph_index, &glyph); - NS_ASSERTION(NS_SUCCEEDED(rv),"error loading glyph"); - } - if ((glyph_index) && (NS_SUCCEEDED(rv))) { + // XXX : we need some caching here + if (glyph_index && + NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, mLoadFlag)) && +// NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) && + NS_SUCCEEDED(mFt2->GetGlyph(face->glyph, &glyph))) { mFt2->GlyphGetCBox(glyph, ft_glyph_bbox_pixels, &glyph_bbox); advance = FT_16_16_TO_REG(glyph->advance.x); + mFt2->DoneGlyph(glyph); } else { + NS_ERROR("failed to get or load glyph"); // allocate space to draw an empty box in GetFallbackGlyphMetrics(&glyph_bbox, face); advance = glyph_bbox.xMax + 1; @@ -401,11 +406,6 @@ if (!face) return 0; - FTC_Image_Cache icache; - mFt2->GetImageCache(&icache); - if (!icache) - return 0; - PRUint32 i, extraSurrogateLength; for (i=0; iGetCharIndex((FT_Face)face, code_point, &glyph_index); - nsresult rv; - rv = mFt2->ImageCacheLookup(icache, &mImageDesc, glyph_index, &glyph); - NS_ASSERTION(NS_SUCCEEDED(rv),"error loading glyph"); - if (NS_FAILED(rv)) { + if (NS_FAILED(mFt2->LoadGlyph(face, glyph_index, mLoadFlag)) || +// if (NS_FAILED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) || + NS_FAILED(mFt2->GetGlyph(face->glyph, &glyph))) { + NS_ERROR("error loading glyph"); origin_x += face->size->metrics.x_ppem/2 + 2; continue; } origin_x += FT_16_16_TO_REG(glyph->advance.x); + mFt2->DoneGlyph(glyph); } return origin_x; @@ -723,11 +726,6 @@ if (y%4==0) (*blendPixelFunc)(sub_image, y, ascent-1, black, 255/2); #endif - FTC_Image_Cache icache; - mFt2->GetImageCache(&icache); - if (!icache) - return 0; - // // Get aa glyphs and blend with background // @@ -736,7 +734,6 @@ for (i=0; iGetCharIndex(face, code_point, &glyph_index); - if (glyph_index) { - rv = mFt2->ImageCacheLookup(icache, &mImageDesc, glyph_index, &glyph); - } - if ((glyph_index) && (NS_SUCCEEDED(rv))) { + if (glyph_index && + NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, mLoadFlag)) && +// NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) && + NS_SUCCEEDED(mFt2->GetGlyph(face->glyph, &glyph))) { mFt2->GlyphGetCBox(glyph, ft_glyph_bbox_pixels, &glyph_bbox); } else { @@ -775,13 +773,26 @@ continue; } - FT_BitmapGlyph slot = (FT_BitmapGlyph)glyph; + FT_BitmapGlyph slot; + + if (glyph->format != FT_GLYPH_FORMAT_BITMAP) + { + if (mFt2->GlyphToBitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1)) { + NS_ERROR("failed to convert outline to bitmap "); + XDestroyImage(sub_image); + mFt2->DoneGlyph(glyph); + return 0; + } + } + + slot = (FT_BitmapGlyph)glyph; nsAntiAliasedGlyph aaglyph(glyph_bbox.xMax-glyph_bbox.xMin, glyph_bbox.yMax-glyph_bbox.yMin, 0); PRUint8 buf[IMAGE_BUFFER_SIZE]; // try to use the stack for data if (!aaglyph.WrapFreeType(&glyph_bbox, slot, buf, IMAGE_BUFFER_SIZE)) { NS_ERROR("failed to wrap freetype image"); XDestroyImage(sub_image); + mFt2->DoneGlyph(glyph); return 0; } @@ -815,6 +826,7 @@ x_pos + aaglyph.GetLBearing(), ascent-glyph_bbox.yMax); x_pos += aaglyph.GetAdvance(); + mFt2->DoneGlyph(glyph); } // --- gfx/src/x11shared/nsFontFreeType.h.agriffis 2003-04-22 12:25:13.000000000 -0400 +++ gfx/src/x11shared/nsFontFreeType.h 2004-11-15 13:29:05.125342648 -0500 @@ -110,8 +110,10 @@ XImage *GetXImage(PRUint32 width, PRUint32 height); nsITrueTypeFontCatalogEntry *mFaceID; PRUint16 mPixelSize; - FTC_Image_Desc mImageDesc; nsCOMPtr mFt2; + FT_Face mFace; + FT_Int32 mLoadFlag; + FT_Library mFreeTypeLibrary; }; void WeightTableInitCorrection(PRUint8*, PRUint8, double); --- gfx/src/freetype/nsFreeType.cpp.agriffis 2004-02-07 10:22:30.000000000 -0500 +++ gfx/src/freetype/nsFreeType.cpp 2004-11-15 13:29:05.121343256 -0500 @@ -109,12 +109,8 @@ {"FT_Load_Glyph", NS_FT2_OFFSET(nsFT_Load_Glyph), PR_TRUE}, {"FT_New_Face", NS_FT2_OFFSET(nsFT_New_Face), PR_TRUE}, {"FT_Outline_Decompose", NS_FT2_OFFSET(nsFT_Outline_Decompose), PR_TRUE}, + {"FT_Set_Pixel_Sizes", NS_FT2_OFFSET(nsFT_Set_Pixel_Sizes), PR_TRUE}, {"FT_Set_Charmap", NS_FT2_OFFSET(nsFT_Set_Charmap), PR_TRUE}, - {"FTC_Image_Cache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE}, - {"FTC_Manager_Lookup_Size", NS_FT2_OFFSET(nsFTC_Manager_Lookup_Size), PR_TRUE}, - {"FTC_Manager_Done", NS_FT2_OFFSET(nsFTC_Manager_Done), PR_TRUE}, - {"FTC_Manager_New", NS_FT2_OFFSET(nsFTC_Manager_New), PR_TRUE}, - {"FTC_Image_Cache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE}, // #ifdef MOZ_SVG {"FT_Glyph_Transform", NS_FT2_OFFSET(nsFT_Glyph_Transform), PR_TRUE}, {"FT_Get_Kerning", NS_FT2_OFFSET(nsFT_Get_Kerning), PR_TRUE}, @@ -274,59 +270,21 @@ } NS_IMETHODIMP -nsFreeType2::SetCharmap(FT_Face face, FT_CharMap charmap) -{ - // call the FreeType2 function via the function pointer - FT_Error error = nsFT_Set_Charmap(face, charmap); - return error ? NS_ERROR_FAILURE : NS_OK; -} - -NS_IMETHODIMP -nsFreeType2::ImageCacheLookup(FTC_Image_Cache cache, FTC_Image_Desc *desc, - FT_UInt glyphID, FT_Glyph *glyph) -{ - // call the FreeType2 function via the function pointer - FT_Error error = nsFTC_Image_Cache_Lookup(cache, desc, glyphID, glyph); - return error ? NS_ERROR_FAILURE : NS_OK; -} - -NS_IMETHODIMP -nsFreeType2::ManagerLookupSize(FTC_Manager manager, FTC_Font font, - FT_Face *face, FT_Size *size) +nsFreeType2::SetPixelSizes(FT_Face face, FT_UInt width, FT_UInt height) { // call the FreeType2 function via the function pointer - FT_Error error = nsFTC_Manager_Lookup_Size(manager, font, face, size); + FT_Error error = nsFT_Set_Pixel_Sizes(face, width, height); return error ? NS_ERROR_FAILURE : NS_OK; } - -NS_IMETHODIMP -nsFreeType2::ManagerDone(FTC_Manager manager) -{ - // call the FreeType2 function via the function pointer - nsFTC_Manager_Done(manager); - return NS_OK; -} - + NS_IMETHODIMP -nsFreeType2::ManagerNew(FT_Library library, FT_UInt max_faces, - FT_UInt max_sizes, FT_ULong max_bytes, - FTC_Face_Requester requester, FT_Pointer req_data, - FTC_Manager *manager) +nsFreeType2::SetCharmap(FT_Face face, FT_CharMap charmap) { // call the FreeType2 function via the function pointer - FT_Error error = nsFTC_Manager_New(library, max_faces, max_sizes, max_bytes, - requester, req_data, manager); + FT_Error error = nsFT_Set_Charmap(face, charmap); return error ? NS_ERROR_FAILURE : NS_OK; } -NS_IMETHODIMP -nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_Image_Cache *cache) -{ - // call the FreeType2 function via the function pointer - FT_Error error = nsFTC_Image_Cache_New(manager, cache); - return error ? NS_ERROR_FAILURE : NS_OK; -} - // #ifdef MOZ_SVG NS_IMETHODIMP nsFreeType2::GlyphTransform(FT_Glyph glyph, FT_Matrix * matrix, FT_Vector * delta) @@ -389,20 +347,6 @@ } NS_IMETHODIMP -nsFreeType2::GetImageCache(FTC_Image_Cache *aCache) -{ - *aCache = mImageCache; - return NS_OK; -} - -NS_IMETHODIMP -nsFreeType2::GetFTCacheManager(FTC_Manager *aManager) -{ - *aManager = mFTCacheManager; - return NS_OK; -} - -NS_IMETHODIMP nsFreeType2::GetLibrary(FT_Library *aLibrary) { *aLibrary = mFreeTypeLibrary; @@ -425,8 +369,6 @@ { mSharedLib = nsnull; mFreeTypeLibrary = nsnull; - mFTCacheManager = nsnull; - mImageCache = nsnull; } // I would like to make this a static member function but the compilier @@ -456,12 +398,6 @@ delete gFreeTypeFaces; gFreeTypeFaces = nsnull; } - // mImageCache released by cache manager - if (mFTCacheManager) { - // use "this->" to make sure it is obivious we are calling the member func - this->ManagerDone(mFTCacheManager); - mFTCacheManager = nsnull; - } if (mFreeTypeLibrary) { // use "this->" to make sure it is obivious we are calling the member func this->DoneFreeType(mFreeTypeLibrary); @@ -658,17 +594,6 @@ mFreeTypeLibrary = nsnull; goto cleanup_and_return; } - // use "this->" to make sure it is obivious we are calling the member func - rv = this->ManagerNew(mFreeTypeLibrary, 0, 0, 0, nsFreeTypeFaceRequester, - this, &mFTCacheManager); - NS_ASSERTION(NS_SUCCEEDED(rv), "failed to create FreeType Cache manager"); - if (NS_FAILED(rv)) - goto cleanup_and_return; - // use "this->" to make sure it is obivious we are calling the member func - rv = this->ImageCacheNew(mFTCacheManager, &mImageCache); - NS_ASSERTION(NS_SUCCEEDED(rv), "failed to create FreeType image cache"); - if (NS_FAILED(rv)) - goto cleanup_and_return; return PR_TRUE; cleanup_and_return: --- gfx/src/freetype/nsFreeType.h.agriffis 2004-04-16 17:31:42.000000000 -0400 +++ gfx/src/freetype/nsFreeType.h 2004-11-15 13:29:05.122343104 -0500 @@ -102,15 +102,8 @@ typedef FT_Error (*FT_Outline_Decompose_t) (FT_Outline*, const FT_Outline_Funcs*, void*); typedef FT_Error (*FT_New_Face_t)(FT_Library, const char*, FT_Long, FT_Face*); +typedef FT_Error (*FT_Set_Pixel_Sizes_t)(FT_Face face, FT_UInt, FT_UInt); typedef FT_Error (*FT_Set_Charmap_t)(FT_Face face, FT_CharMap charmap); -typedef FT_Error (*FTC_Image_Cache_Lookup_t) - (FTC_Image_Cache, FTC_Image_Desc*, FT_UInt, FT_Glyph*); -typedef FT_Error (*FTC_Manager_Lookup_Size_t) - (FTC_Manager, FTC_Font, FT_Face*, FT_Size*); -typedef FT_Error (*FTC_Manager_Done_t)(FTC_Manager); -typedef FT_Error (*FTC_Manager_New_t)(FT_Library, FT_UInt, FT_UInt, FT_ULong, - FTC_Face_Requester, FT_Pointer, FTC_Manager*); -typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_Image_Cache*); // #ifdef MOZ_SVG typedef FT_Error (*FT_Glyph_Transform_t)(FT_Glyph, FT_Matrix*, FT_Vector*); typedef FT_Error (*FT_Get_Kerning_t) @@ -163,12 +156,8 @@ FT_Load_Glyph_t nsFT_Load_Glyph; FT_New_Face_t nsFT_New_Face; FT_Outline_Decompose_t nsFT_Outline_Decompose; + FT_Set_Pixel_Sizes_t nsFT_Set_Pixel_Sizes; FT_Set_Charmap_t nsFT_Set_Charmap; - FTC_Image_Cache_Lookup_t nsFTC_Image_Cache_Lookup; - FTC_Manager_Lookup_Size_t nsFTC_Manager_Lookup_Size; - FTC_Manager_Done_t nsFTC_Manager_Done; - FTC_Manager_New_t nsFTC_Manager_New; - FTC_Image_Cache_New_t nsFTC_Image_Cache_New; // #ifdef MOZ_SVG FT_Glyph_Transform_t nsFT_Glyph_Transform; FT_Get_Kerning_t nsFT_Get_Kerning; @@ -181,9 +170,9 @@ // this array needs to be big enough to hold all the function pointers // plus one extra for the null at the end // #ifdef MOZ_SVG - static FtFuncList FtFuncs[24]; + static FtFuncList FtFuncs[20]; // #else -// static FtFuncList FtFuncs[20]; +// static FtFuncList FtFuncs[17]; // #endif protected: @@ -212,8 +201,6 @@ PRLibrary *mSharedLib; FT_Library mFreeTypeLibrary; - FTC_Manager mFTCacheManager; - FTC_Image_Cache mImageCache; static nsHashtable *sFontFamilies; static nsHashtable *sRange1CharSetNames;