* src/sfnt/sfobjs.c (sfnt_face_load): fixed silly bug that
    prevented embedded bitmaps from being correctly listed and used

    * src/pfr/pfrsbit.c: fixed handling of character advances
diff --git a/ChangeLog b/ChangeLog
index ad87fee..b7791bc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-02-21  David Turner  <david@freetype.org>
+
+    * src/sfnt/sfobjs.c (sfnt_face_load): fixed silly bug that
+    prevented embedded bitmaps from being correctly listed and used
+
+    * src/pfr/pfrsbit.c: fixed handling of character advances
+
 2006-02-20  David Turner  <david@freetype.org>
 
 	Support binary compatibility with the X.Org server's Xfont library. 
diff --git a/src/pfr/pfrsbit.c b/src/pfr/pfrsbit.c
index da8fdba..9c42fca 100644
--- a/src/pfr/pfrsbit.c
+++ b/src/pfr/pfrsbit.c
@@ -605,12 +605,21 @@
       FT_Byte*  p;
 
 
-      advance = FT_MulDiv( size->root.metrics.x_ppem << 8,
+      /* compute linear advance */
+      advance = character->advance;
+      if ( phys->metrics_resolution != phys->outline_resolution )
+        advance = FT_MulDiv( advance,
+                             phys->outline_resolution,
+                             phys->metrics_resolution );
+
+      glyph->root.linearHoriAdvance = advance;
+
+      /* compute default advance, i.e. scaled advance. This can be overriden */
+      /* in the bitmap header of certain glyphs...                           */
+      advance = FT_MulDiv( (FT_Fixed)size->root.metrics.x_ppem << 8,
                            character->advance,
                            phys->metrics_resolution );
 
-      /* XXX: handle linearHoriAdvance correctly! */
-
       if ( FT_STREAM_SEEK( face->header.gps_section_offset + gps_offset ) ||
            FT_FRAME_ENTER( gps_size )                                     )
         goto Exit;
diff --git a/src/sfnt/sfobjs.c b/src/sfnt/sfobjs.c
index b79685d..6b780e3 100644
--- a/src/sfnt/sfobjs.c
+++ b/src/sfnt/sfobjs.c
@@ -915,7 +915,7 @@
         FT_UInt  i, count;
 
 
-#ifdef FT_OPTIMIZE_MEMORY
+#if defined FT_OPTIMIZE_MEMORY && !defined FT_CONFIG_OPTION_OLD_INTERNALS
         count = face->sbit_num_strikes;
 #else
         count = (FT_UInt)face->num_sbit_strikes;