tools: Don't try to use FT_Load_Sfnt_Table unless FreeType has it.

This commit is contained in:
Huw Davies 2006-04-12 12:14:27 +01:00 committed by Alexandre Julliard
parent 0216c404dc
commit 35bca77f47
4 changed files with 118 additions and 2 deletions

104
configure vendored
View File

@ -10699,6 +10699,110 @@ _ACEOF
fi fi
ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $FREETYPELIBS"
for ac_func in FT_Load_Sfnt_Table
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
For example, HP-UX 11i <limits.h> declares gettimeofday. */
#define $ac_func innocuous_$ac_func
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef $ac_func
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
{
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char $ac_func ();
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
char (*f) () = $ac_func;
#endif
#ifdef __cplusplus
}
#endif
int
main ()
{
return f != $ac_func;
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<_ACEOF
#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
fi
done
CFLAGS="$ac_save_CFLAGS"
CPPFLAGS="$ac_save_CPPFLAGS" CPPFLAGS="$ac_save_CPPFLAGS"
if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes" if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes"
then then

View File

@ -657,6 +657,10 @@ else
wine_cv_fttrigon=yes], wine_cv_fttrigon=yes],
wine_cv_fttrigon=no) wine_cv_fttrigon=no)
AC_CHECK_TYPES(FT_TrueTypeEngineType,,,[#include <freetype/ftmodapi.h>]) AC_CHECK_TYPES(FT_TrueTypeEngineType,,,[#include <freetype/ftmodapi.h>])
ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $FREETYPELIBS"
AC_CHECK_FUNCS(FT_Load_Sfnt_Table)
CFLAGS="$ac_save_CFLAGS"
CPPFLAGS="$ac_save_CPPFLAGS" CPPFLAGS="$ac_save_CPPFLAGS"
dnl Check that we have at least freetype/freetype.h dnl Check that we have at least freetype/freetype.h
if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes" if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes"

View File

@ -149,6 +149,9 @@
/* Define to 1 if you have the `ftruncate' function. */ /* Define to 1 if you have the `ftruncate' function. */
#undef HAVE_FTRUNCATE #undef HAVE_FTRUNCATE
/* Define to 1 if you have the `FT_Load_Sfnt_Table' function. */
#undef HAVE_FT_LOAD_SFNT_TABLE
/* Define to 1 if the system has the type `FT_TrueTypeEngineType'. */ /* Define to 1 if the system has the type `FT_TrueTypeEngineType'. */
#undef HAVE_FT_TRUETYPEENGINETYPE #undef HAVE_FT_TRUETYPEENGINETYPE

View File

@ -202,10 +202,13 @@ static void fill_fontinfo(FT_Face face, int enc, FILE *fp, int dpi, unsigned cha
const union cptable *cptable; const union cptable *cptable;
FT_SfntName sfntname; FT_SfntName sfntname;
TT_OS2 *os2; TT_OS2 *os2;
#ifdef HAVE_FT_LOAD_SFNT_TABLE
FT_ULong needed; FT_ULong needed;
eblcHeader_t *eblc; eblcHeader_t *eblc;
bitmapSizeTable_t *size_table; bitmapSizeTable_t *size_table;
int num_sizes; int num_sizes;
#endif
cptable = wine_cp_get_table(enc); cptable = wine_cp_get_table(enc);
if(!cptable) if(!cptable)
@ -220,6 +223,7 @@ static void fill_fontinfo(FT_Face face, int enc, FILE *fp, int dpi, unsigned cha
ppem = face->size->metrics.y_ppem; ppem = face->size->metrics.y_ppem;
#ifdef HAVE_FT_LOAD_SFNT_TABLE
needed = 0; needed = 0;
if(FT_Load_Sfnt_Table(face, TTAG_EBLC, 0, NULL, &needed)) if(FT_Load_Sfnt_Table(face, TTAG_EBLC, 0, NULL, &needed))
error("Can't find EBLC table\n"); error("Can't find EBLC table\n");
@ -241,6 +245,9 @@ static void fill_fontinfo(FT_Face face, int enc, FILE *fp, int dpi, unsigned cha
size_table++; size_table++;
} }
free(eblc);
#endif
/* Versions of fontforge prior to early 2006 have incorrect /* Versions of fontforge prior to early 2006 have incorrect
ascender values in the eblc table, so we won't find the ascender values in the eblc table, so we won't find the
correct bitmapSizeTable. In this case use the height of correct bitmapSizeTable. In this case use the height of
@ -253,8 +260,6 @@ static void fill_fontinfo(FT_Face face, int enc, FILE *fp, int dpi, unsigned cha
descent = ppem - ascent; descent = ppem - ascent;
} }
free(eblc);
start = sizeof(FNT_HEADER) + sizeof(FONTINFO16); start = sizeof(FNT_HEADER) + sizeof(FONTINFO16);
if(FT_Load_Char(face, 'M', FT_LOAD_DEFAULT)) if(FT_Load_Char(face, 'M', FT_LOAD_DEFAULT))