diff -ru ft2demos-2.1.4/src/ftstring.c ft2demos/src/ftstring.c --- ft2demos-2.1.4/src/ftstring.c 2003-04-08 10:13:55.000000000 +0200 +++ ft2demos/src/ftstring.c 2003-07-03 02:25:21.000000000 +0200 @@ -282,7 +282,7 @@ FT_UInt load_flags; FT_UInt num_grays; FT_UInt prev_index = 0; - + FT_Pos prev_right_err = 0; load_flags = FT_LOAD_DEFAULT; if ( !hinted ) @@ -296,6 +296,7 @@ for ( n = 0; n < num_glyphs; n++, glyph++ ) { +#if 0 /* compute glyph origin */ if ( kerning ) { @@ -312,10 +313,7 @@ } prev_index = glyph->glyph_index; } - - origin.x = origin_x; - origin.y = 0; - +#endif /* clear existing image if there is one */ if ( glyph->image ) FT_Done_Glyph( glyph->image ); @@ -326,6 +324,20 @@ if ( error ) continue; + if ( n && kerning ) { + + if ( prev_right_err - face->glyph->metrics.kern_left_err >= 32 ) + origin_x -= 64; + + else if ( prev_right_err - face->glyph->metrics.kern_left_err < -32 ) + origin_x += 64; + } + + origin.x = origin_x; + origin.y = 0; + + prev_right_err = face->glyph->metrics.kern_right_err; + error = FT_Get_Glyph ( face->glyph, &glyph->image ); if ( error ) continue;