From 1ae134a2337b4a9adb06478cd444d79569e37767 Mon Sep 17 00:00:00 2001 From: David Turner Date: Tue, 21 Feb 2006 16:50:17 +0000 Subject: [PATCH] * 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 --- ChangeLog | 7 +++++++ src/pfr/pfrsbit.c | 15 ++++++++++++--- src/sfnt/sfobjs.c | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index ad87feeb5..b7791bc37 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-02-21 David Turner + + * 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 Support binary compatibility with the X.Org server's Xfont library. diff --git a/src/pfr/pfrsbit.c b/src/pfr/pfrsbit.c index da8fdba33..9c42fcaa0 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 b79685dcc..6b780e309 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;