* 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;