diff -uN mozilla/gfx/idl/nsIFreeType2.idl.ORG mozilla/gfx/idl/nsIFreeType2.idl
--- mozilla/gfx/idl/nsIFreeType2.idl.ORG	Fri Apr 16 08:30:02 2004
+++ mozilla/gfx/idl/nsIFreeType2.idl	Tue Dec 30 15:50:59 2008
@@ -76,10 +76,11 @@
 native FT_Sfnt_Tag(FT_Sfnt_Tag);
 native FT_Size(FT_Size);
 
-[ptr] native FTC_Image_Desc_p(FTC_Image_Desc);
+[ptr] native FTC_ImageType_p(FTC_ImageType);
 native FTC_Face_Requester(FTC_Face_Requester);
 native FTC_Font(FTC_Font);
-native FTC_Image_Cache(FTC_Image_Cache);
+native FTC_FaceID(FTC_FaceID);
+native FTC_ImageCache(FTC_ImageCache);
 native FTC_Manager(FTC_Manager);
 
 // #ifdef MOZ_SVG
@@ -99,7 +100,7 @@
 
     readonly attribute FT_Library library;
     readonly attribute FTC_Manager FTCacheManager;
-    readonly attribute FTC_Image_Cache ImageCache;
+    readonly attribute FTC_ImageCache ImageCache;
 
     void    doneFace(in FT_Face face);
     void    doneFreeType(in FT_Library lib);
@@ -115,16 +116,16 @@
     void    outlineDecompose(in FT_Outline_p outline,
                              in const_FT_Outline_Funcs_p funcs, in voidPtr p);
     void    setCharmap(in FT_Face face, in FT_CharMap charmap);
-    void    imageCacheLookup(in FTC_Image_Cache cache, in FTC_Image_Desc_p desc,
+    void    imageCacheLookup(in FTC_ImageCache cache, in FTC_ImageType_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    managerLookupFace(in FTC_Manager manager, in FTC_FaceID face_id,
+                              out FT_Face face);
     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);
+    void    imageCacheNew(in FTC_Manager manager, out FTC_ImageCache cache);
 /* #ifdef MOZ_SVG */
     void glyphTransform(in FT_Glyph glyph, in FT_Matrix_p matrix,
                         in FT_Vector_p delta);
diff -uN mozilla/gfx/src/freetype/nsFreeType.h.ORG mozilla/gfx/src/freetype/nsFreeType.h
--- mozilla/gfx/src/freetype/nsFreeType.h.ORG	Mon May  2 02:36:19 2005
+++ mozilla/gfx/src/freetype/nsFreeType.h	Tue Dec 30 15:54:53 2008
@@ -120,13 +120,13 @@
 typedef FT_Error (*FT_New_Face_t)(FT_Library, const char*, FT_Long, FT_Face*);
 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*);
+                      (FTC_ImageCache, FTC_ImageType*, FT_UInt, FT_Glyph*);
+typedef FT_Error (*FTC_Manager_LookupFace_t)
+                      (FTC_Manager, FTC_FaceID, FT_Face*);
 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*);
+typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_ImageCache*);
 // #ifdef MOZ_SVG
 typedef FT_Error (*FT_Glyph_Transform_t)(FT_Glyph, FT_Matrix*, FT_Vector*);
 typedef FT_Error (*FT_Get_Kerning_t)
@@ -181,7 +181,7 @@
   FT_Outline_Decompose_t    nsFT_Outline_Decompose;
   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_LookupFace_t  nsFTC_Manager_LookupFace;
   FTC_Manager_Done_t        nsFTC_Manager_Done;
   FTC_Manager_New_t         nsFTC_Manager_New;
   FTC_Image_Cache_New_t     nsFTC_Image_Cache_New;
@@ -229,7 +229,7 @@
   PRLibrary      *mSharedLib;
   FT_Library      mFreeTypeLibrary;
   FTC_Manager     mFTCacheManager;
-  FTC_Image_Cache mImageCache;
+  FTC_ImageCache  mImageCache;
 
   static nsHashtable   *sFontFamilies;
   static nsHashtable   *sRange1CharSetNames;
diff -uN mozilla/gfx/src/freetype/nsFreeType.cpp.ORG mozilla/gfx/src/freetype/nsFreeType.cpp
--- mozilla/gfx/src/freetype/nsFreeType.cpp.ORG	Thu Jul 14 03:21:10 2005
+++ mozilla/gfx/src/freetype/nsFreeType.cpp	Tue Dec 30 15:53:05 2008
@@ -111,7 +111,7 @@
   {"FT_Outline_Decompose",    NS_FT2_OFFSET(nsFT_Outline_Decompose),    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_LookupFace",  NS_FT2_OFFSET(nsFTC_Manager_LookupFace),  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},
@@ -288,7 +288,7 @@
 } 
  
 NS_IMETHODIMP
-nsFreeType2::ImageCacheLookup(FTC_Image_Cache cache, FTC_Image_Desc *desc,
+nsFreeType2::ImageCacheLookup(FTC_ImageCache cache, FTC_ImageType *desc,
                               FT_UInt glyphID, FT_Glyph *glyph)
 { 
   // call the FreeType2 function via the function pointer
@@ -297,11 +297,11 @@
 } 
  
 NS_IMETHODIMP
-nsFreeType2::ManagerLookupSize(FTC_Manager manager, FTC_Font font,
-                               FT_Face *face, FT_Size *size)
+nsFreeType2::ManagerLookupFace(FTC_Manager manager, FTC_FaceID face_id,
+                               FT_Face *face)
 { 
   // call the FreeType2 function via the function pointer
-  FT_Error error = nsFTC_Manager_Lookup_Size(manager, font, face, size);
+  FT_Error error = nsFTC_Manager_LookupFace(manager, face_id, face);
   return error ? NS_ERROR_FAILURE : NS_OK;
 } 
  
@@ -326,7 +326,7 @@
 } 
  
 NS_IMETHODIMP
-nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_Image_Cache *cache)
+nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_ImageCache *cache)
 { 
   // call the FreeType2 function via the function pointer
   FT_Error error = nsFTC_Image_Cache_New(manager, cache);
@@ -395,7 +395,7 @@
 } 
  
 NS_IMETHODIMP
-nsFreeType2::GetImageCache(FTC_Image_Cache *aCache)
+nsFreeType2::GetImageCache(FTC_ImageCache *aCache)
 {
   *aCache = mImageCache;
   return NS_OK;
diff -uN mozilla/gfx/src/ps/nsFontMetricsPS.h.ORG mozilla/gfx/src/ps/nsFontMetricsPS.h
--- mozilla/gfx/src/ps/nsFontMetricsPS.h.ORG	Wed Jun 29 03:29:10 2005
+++ mozilla/gfx/src/ps/nsFontMetricsPS.h	Tue Dec 30 15:11:03 2008
@@ -424,7 +424,7 @@
   nsCOMPtr<nsITrueTypeFontCatalogEntry> mFaceID;
   nsCOMPtr<nsIFreeType2> mFt2;
   PRUint16        mPixelSize;
-  FTC_Image_Desc  mImageDesc;
+  FTC_ImageType   mImageDesc;
   nsCString       mFontNameBase;   // the base name of type 1 (sub) fonts
   nscoord         mHeight; 
 
@@ -493,7 +493,7 @@
 protected:
   nsCOMPtr<nsITrueTypeFontCatalogEntry> mEntry;
   nsCOMPtr<nsIFreeType2> mFt2;
-  FTC_Image_Desc  mImageDesc;
+  FTC_ImageType mImageDesc;
 };
 #endif   // MOZ_ENABLE_FREETYPE2
 #endif   // MOZ_ENABLE_XFT
diff -uN mozilla/gfx/src/ps/nsFontMetricsPS.cpp.ORG mozilla/gfx/src/ps/nsFontMetricsPS.cpp
--- mozilla/gfx/src/ps/nsFontMetricsPS.cpp.ORG	Thu Nov 30 11:17:21 2006
+++ mozilla/gfx/src/ps/nsFontMetricsPS.cpp	Tue Dec 30 16:05:39 2008
@@ -1870,10 +1870,10 @@
   
   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;
+  mImageDesc->face_id = (FTC_FaceID)&mEntry;
+  mImageDesc->width   = mPixelSize;
+  mImageDesc->height  = mPixelSize;
+  mImageDesc->flags   = 0;
 
   nsresult rv;
   mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv);
@@ -1907,7 +1907,7 @@
   if (!face)
     return 0;
 
-  FTC_Image_Cache iCache;
+  FTC_ImageCache iCache;
   nsresult rv = mFt2->GetImageCache(&iCache);
   if (NS_FAILED(rv)) {
     NS_ERROR("Failed to get Image Cache");
@@ -1945,8 +1945,8 @@
   
   FTC_Manager cManager;
   mFt2->GetFTCacheManager(&cManager);
-  nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
-                                        &face, nsnull);
+  nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
+                                        &face);
   NS_ASSERTION(rv==0, "failed to get face/size");
   if (rv)
     return nsnull;
@@ -2392,16 +2392,16 @@
   mEntry->GetFamilyName(fontName);
   mEntry->GetStyleName(styleName);
   
-  mImageDesc.font.face_id    = (void*)mEntry;
+  mImageDesc->face_id = (FTC_FaceID)&mEntry;
   // TT glyph has no relation to size
-  mImageDesc.font.pix_width  = 16;
-  mImageDesc.font.pix_height = 16;
-  mImageDesc.image_type = 0;
+  mImageDesc->width   = 16;
+  mImageDesc->height  = 16;
+  mImageDesc->flags   = 0;
   FT_Face face = nsnull;
   FTC_Manager cManager;
   mFt2->GetFTCacheManager(&cManager);
-  nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
-                                        &face, nsnull);
+  nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
+                                        &face);
   if (NS_FAILED(rv))
     return;
  
diff -uN mozilla/gfx/src/x11shared/nsFontFreeType.h.ORG mozilla/gfx/src/x11shared/nsFontFreeType.h
--- mozilla/gfx/src/x11shared/nsFontFreeType.h.ORG	Sun Apr 18 06:52:34 2004
+++ mozilla/gfx/src/x11shared/nsFontFreeType.h	Tue Dec 30 15:20:39 2008
@@ -110,7 +110,7 @@
   XImage *GetXImage(PRUint32 width, PRUint32 height);
   nsITrueTypeFontCatalogEntry *mFaceID;
   PRUint16        mPixelSize;
-  FTC_Image_Desc  mImageDesc;
+  FTC_ImageType   mImageDesc;
   nsCOMPtr<nsIFreeType2> mFt2;
 };
 
diff -uN mozilla/gfx/src/x11shared/nsFontFreeType.cpp.ORG mozilla/gfx/src/x11shared/nsFontFreeType.cpp
--- mozilla/gfx/src/x11shared/nsFontFreeType.cpp.ORG	Sun Apr 18 06:52:34 2004
+++ mozilla/gfx/src/x11shared/nsFontFreeType.cpp	Tue Dec 30 15:57:50 2008
@@ -177,7 +177,7 @@
   FTC_Manager mgr;
   nsresult rv;
   mFt2->GetFTCacheManager(&mgr);
-  rv = mFt2->ManagerLookupSize(mgr, &mImageDesc.font, &face, nsnull);
+  rv = mFt2->ManagerLookupFace(mgr, mImageDesc->face_id, &face);
   NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get face/size");
   if (NS_FAILED(rv))
     return nsnull;
@@ -191,21 +191,25 @@
   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;
+  mImageDesc->face_id = (FTC_FaceID)&mFaceID;
+  mImageDesc->width   = aPixelSize;
+  mImageDesc->height  = aPixelSize;
+  mImageDesc->flags   = 0;
 
   if (aPixelSize < nsFreeType2::gAntiAliasMinimum) {
+#if 0
     mImageDesc.image_type |= ftc_image_mono;
+#endif
     anti_alias = PR_FALSE;
   }
 
+#if 0
   if (nsFreeType2::gFreeType2Autohinted)
     mImageDesc.image_type |= ftc_image_flag_autohinted;
 
   if (nsFreeType2::gFreeType2Unhinted)
     mImageDesc.image_type |= ftc_image_flag_unhinted;
+#endif
 
   PRUint32  num_embedded_bitmaps, i;
   PRInt32*  embedded_bitmapheights;
@@ -218,7 +222,9 @@
         if (embedded_bitmapheights[i] == aPixelSize) {
           embedded_bimap = PR_TRUE;
           // unhinted must be set for embedded bitmaps to be used
+#if 0
           mImageDesc.image_type |= ftc_image_flag_unhinted;
+#endif
           break;
         }
       }
@@ -312,7 +318,7 @@
   if (!face)
     return NS_ERROR_FAILURE;
 
-  FTC_Image_Cache icache;
+  FTC_ImageCache icache;
   mFt2->GetImageCache(&icache);
   if (!icache)
     return NS_ERROR_FAILURE;
@@ -401,7 +407,7 @@
   if (!face)
     return 0;
 
-  FTC_Image_Cache icache;
+  FTC_ImageCache icache;
   mFt2->GetImageCache(&icache);
   if (!icache)
     return 0;
@@ -723,7 +729,7 @@
     if (y%4==0) (*blendPixelFunc)(sub_image, y, ascent-1, black, 255/2);
 #endif
 
-  FTC_Image_Cache icache;
+  FTC_ImageCache icache;
   mFt2->GetImageCache(&icache);
   if (!icache)
     return 0;
