Require freetype >= 2.8.1

2.8.0 had a bad bug with loading 'avar' table.  Let's update requirement and cleanup
fifteen years of ifdefs!
This commit is contained in:
Behdad Esfahbod 2017-09-28 19:49:05 -04:00
parent 1580593ecc
commit f504b2d6a1
2 changed files with 3 additions and 79 deletions

View File

@ -298,49 +298,16 @@ AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
#
# Checks for FreeType
#
PKG_CHECK_MODULES(FREETYPE, freetype2)
dnl See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT for versioning in freetype
PKG_CHECK_MODULES(FREETYPE, freetype2 >= 21.0.15)
PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2"
AC_SUBST(FREETYPE_LIBS)
AC_SUBST(FREETYPE_CFLAGS)
fontconfig_save_libs="$LIBS"
fontconfig_save_cflags="$CFLAGS"
LIBS="$LIBS $FREETYPE_LIBS"
CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
dnl See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT for versioning in freetype
dnl
dnl The outcome of the family property has been changed in freetype-2.7.1.
dnl Our test cases relies on it and need to update the dependency to get it success.
dnl However it isn't exactly required to run fontconfig itself.
dnl so adding another test here for compatibility. it might be simplified in the future.
PKG_CHECK_EXISTS([freetype2 = 19.0.13], [have_freetype_2_7_1=yes], [have_freetype_2_7_1=no])
PKG_CHECK_EXISTS([freetype2 >= 20.0.14],
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <ft2build.h>
#include FT_CONFIG_OPTIONS_H
#ifndef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES
# error "No pcf long family names support"
#endif
]])], [have_pcf_long_family_names=yes], [have_pcf_long_family_names=no])],
[have_pcf_long_family_names=no])
AM_CONDITIONAL(FREETYPE_PCF_LONG_FAMILY_NAMES, test "x$have_freetype_2_7_1" = xyes -o "x$have_pcf_long_family_names" = xyes)
AC_CHECK_FUNCS(FT_Get_Next_Char FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format FT_Select_Size)
AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
[#include <ft2build.h>
#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])
AC_CHECK_MEMBERS([TT_OS2.usLowerOpticalPointSize, TT_OS2.usUpperOpticalPointSize], [], [], [[
#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_TRUETYPE_TABLES_H]])
CFLAGS="$fontconfig_save_cflags"
AC_CHECK_FUNCS(FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format)
LIBS="$fontconfig_save_libs"
#

View File

@ -67,16 +67,6 @@
#include "ftglue.h"
#if HAVE_WARNING_CPP_DIRECTIVE
#if !HAVE_FT_GET_BDF_PROPERTY
#warning "No FT_Get_BDF_Property: Please install freetype 2.1.4 or later"
#endif
#if !HAVE_FT_GET_PS_FONT_INFO
#warning "No FT_Get_PS_Font_Info: Please install freetype 2.1.1 or later"
#endif
#endif
/*
* Keep Han languages separated by eliminating languages
* that the codePageRange bits says aren't supported
@ -386,12 +376,7 @@ static const FcFtLanguage fcFtLanguage[] = {
{ TT_PLATFORM_MICROSOFT, TT_MS_LANGID_LATVIAN_LATVIA, "lv" },
{ TT_PLATFORM_MICROSOFT, TT_MS_LANGID_LITHUANIAN_LITHUANIA, "lt" },
{ TT_PLATFORM_MICROSOFT, TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA,"lt" },
#ifdef TT_MS_LANGID_MAORI_NEW_ZELAND
/* this seems to be an error that have been dropped */
{ TT_PLATFORM_MICROSOFT, TT_MS_LANGID_MAORI_NEW_ZEALAND, "mi" },
#endif
{ TT_PLATFORM_MICROSOFT, TT_MS_LANGID_FARSI_IRAN, "fa" },
{ TT_PLATFORM_MICROSOFT, TT_MS_LANGID_VIETNAMESE_VIET_NAM, "vi" },
{ TT_PLATFORM_MICROSOFT, TT_MS_LANGID_ARMENIAN_ARMENIA, "hy" },
@ -1112,11 +1097,7 @@ FcGetPixelSize (FT_Face face, int i)
return (double) prop.u.integer;
}
#endif
#if HAVE_FT_BITMAP_SIZE_Y_PPEM
return (double) face->available_sizes[i].y_ppem / 64.0;
#else
return (double) face->available_sizes[i].height;
#endif
}
static FcBool
@ -1141,16 +1122,12 @@ static const FT_UShort platform_order[] = {
#define NUM_PLATFORM_ORDER (sizeof (platform_order) / sizeof (platform_order[0]))
static const FT_UShort nameid_order[] = {
#ifdef TT_NAME_ID_WWS_FAMILY
TT_NAME_ID_WWS_FAMILY,
#endif
TT_NAME_ID_PREFERRED_FAMILY,
TT_NAME_ID_FONT_FAMILY,
TT_NAME_ID_MAC_FULL_NAME,
TT_NAME_ID_FULL_NAME,
#ifdef TT_NAME_ID_WWS_SUBFAMILY
TT_NAME_ID_WWS_SUBFAMILY,
#endif
TT_NAME_ID_PREFERRED_SUBFAMILY,
TT_NAME_ID_FONT_SUBFAMILY,
TT_NAME_ID_TRADEMARK,
@ -1252,11 +1229,9 @@ FcFreeTypeQueryFaceInternal (const FT_Face face,
if (!FcPatternAddBool (pat, FC_OUTLINE, has_outline))
goto bail1;
#ifdef FT_FACE_FLAG_COLOR
has_color = !!(face->face_flags & FT_FACE_FLAG_COLOR);
if (!FcPatternAddBool (pat, FC_COLOR, has_color))
goto bail1;
#endif
/* All color fonts are designed to be scaled, even if they only have
* bitmap strikes. Client is responsible to scale the bitmaps. This
@ -1430,9 +1405,7 @@ FcFreeTypeQueryFaceInternal (const FT_Face face,
continue;
switch (nameid) {
#ifdef TT_NAME_ID_WWS_FAMILY
case TT_NAME_ID_WWS_FAMILY:
#endif
case TT_NAME_ID_PREFERRED_FAMILY:
case TT_NAME_ID_FONT_FAMILY:
#if 0
@ -1460,9 +1433,7 @@ FcFreeTypeQueryFaceInternal (const FT_Face face,
np = &nfullname;
nlangp = &nfullname_lang;
break;
#ifdef TT_NAME_ID_WWS_SUBFAMILY
case TT_NAME_ID_WWS_SUBFAMILY:
#endif
case TT_NAME_ID_PREFERRED_SUBFAMILY:
case TT_NAME_ID_FONT_SUBFAMILY:
if (variable)
@ -1758,7 +1729,6 @@ FcFreeTypeQueryFaceInternal (const FT_Face face,
free (complex_);
}
#if defined (HAVE_TT_OS2_USUPPEROPTICALPOINTSIZE) && defined (HAVE_TT_OS2_USLOWEROPTICALPOINTSIZE)
if (!variable_size && os2 && os2->version >= 0x0005 && os2->version != 0xffff)
{
double lower_size, upper_size;
@ -1784,7 +1754,6 @@ FcFreeTypeQueryFaceInternal (const FT_Face face,
FcRangeDestroy (r);
}
}
#endif
/*
* Type 1: Check for FontInfo dictionary information
@ -2218,16 +2187,6 @@ bail:
}
/*
* For our purposes, this approximation is sufficient
*/
#if !HAVE_FT_GET_NEXT_CHAR
#define FT_Get_Next_Char(face, ucs4, gi) ((ucs4) >= 0xffffff ? \
(*(gi) = 0), 0 : \
(*(gi) = 1), (ucs4) + 1)
#warning "No FT_Get_Next_Char: Please install freetype version 2.1.0 or newer"
#endif
static const FT_Encoding fcFontEncodings[] = {
FT_ENCODING_UNICODE,
FT_ENCODING_MS_SYMBOL
@ -2317,7 +2276,6 @@ FcFreeTypeSpacing (FT_Face face)
if (face->face_flags & FT_FACE_FLAG_SCALABLE)
load_flags |= FT_LOAD_NO_BITMAP;
#if HAVE_FT_SELECT_SIZE
if (!(face->face_flags & FT_FACE_FLAG_SCALABLE) &&
face->num_fixed_sizes > 0 &&
FT_Get_Sfnt_Table (face, ft_sfnt_head))
@ -2333,7 +2291,6 @@ FcFreeTypeSpacing (FT_Face face)
FT_Select_Size (face, strike_index);
}
#endif
for (o = 0; o < NUM_DECODE; o++)
{