Index: configure.in =================================================================== RCS file: /cvs/cairo/cairo/configure.in,v retrieving revision 1.115 diff -p -u -r1.115 configure.in --- configure.in 28 Jul 2005 19:45:26 -0000 1.115 +++ configure.in 31 Jul 2005 17:46:44 -0000 @@ -273,6 +273,20 @@ if test "x$use_freetype" = "xyes"; then AC_SUBST(FREETYPE_CFLAGS) AC_SUBST(FREETYPE_LIBS) AC_SUBST(FREETYPE_REQUIRES) + + temp_save_libs="$LIBS" + temp_save_cflags="$CFLAGS" + LIBS="$LIBS $FREETYPE_LIBS" + CFLAGS="$CFLAGS $FREETYPE_CFLAGS" + AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem, + HAVE_FT_BITMAP_SIZE_Y_PPEM=1, + HAVE_FT_BITMAP_SIZE_Y_PPEM=0, + [#include + #include FT_FREETYPE_H]) + AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM, + [FT_Bitmap_Size structure includes y_ppem field]) + LIBS="$temp_save_libs" + CFLAGS="$temp_save_cflags" fi CAIRO_CFLAGS="$CAIRO_CFLAGS $FREETYPE_CFLAGS" Index: src/cairo-ft-font.c =================================================================== RCS file: /cvs/cairo/cairo/src/cairo-ft-font.c,v retrieving revision 1.84 diff -p -u -r1.84 cairo-ft-font.c --- src/cairo-ft-font.c 29 Jul 2005 19:45:01 -0000 1.84 +++ src/cairo-ft-font.c 31 Jul 2005 17:46:44 -0000 @@ -528,7 +528,11 @@ _ft_unscaled_font_set_scale (ft_unscaled pixel_width = pixel_height = 0; for (i = 0; i < unscaled->face->num_fixed_sizes; i++) { +#if !HAVE_FT_BITMAP_SIZE_Y_PPEM + double size = unscaled->face->available_sizes[i].height; +#else double size = unscaled->face->available_sizes[i].y_ppem / 64.; +#endif double distance = fabs (size - sf.y_scale); if (distance <= min_distance) { @@ -536,11 +540,13 @@ _ft_unscaled_font_set_scale (ft_unscaled best_i = i; } } +#if HAVE_FT_BITMAP_SIZE_Y_PPEM error = FT_Set_Char_Size (unscaled->face, unscaled->face->available_sizes[best_i].x_ppem, unscaled->face->available_sizes[best_i].y_ppem, 0, 0); - if (error ) + if (error) +#endif error = FT_Set_Pixel_Sizes (unscaled->face, unscaled->face->available_sizes[best_i].width, unscaled->face->available_sizes[best_i].height);