diff --git a/pkgs/development/libraries/freetype/cve-2017-8105.patch b/pkgs/development/libraries/freetype/cve-2017-8105.patch deleted file mode 100644 index dc4327a52a88..000000000000 --- a/pkgs/development/libraries/freetype/cve-2017-8105.patch +++ /dev/null @@ -1,27 +0,0 @@ -http://git.savannah.gnu.org/cgit/freetype/freetype2.git/commit/?id=f958c48ee43 - -diff --git a/src/psaux/t1decode.c b/src/psaux/t1decode.c -index af7b465..7dd4513 100644 ---- a/src/psaux/t1decode.c -+++ b/src/psaux/t1decode.c -@@ -780,10 +780,19 @@ - /* point without adding any point to the outline */ - idx = decoder->num_flex_vectors++; - if ( idx > 0 && idx < 7 ) -+ { -+ /* in malformed fonts it is possible to have other */ -+ /* opcodes in the middle of a flex (which don't */ -+ /* increase `num_flex_vectors'); we thus have to */ -+ /* check whether we can add a point */ -+ if ( FT_SET_ERROR( t1_builder_check_points( builder, 1 ) ) ) -+ goto Syntax_Error; -+ - t1_builder_add_point( builder, - x, - y, - (FT_Byte)( idx == 3 || idx == 6 ) ); -+ } - } - break; - - diff --git a/pkgs/development/libraries/freetype/cve-2017-8287.patch b/pkgs/development/libraries/freetype/cve-2017-8287.patch deleted file mode 100644 index 7ccf4f3278b7..000000000000 --- a/pkgs/development/libraries/freetype/cve-2017-8287.patch +++ /dev/null @@ -1,22 +0,0 @@ -http://git.savannah.gnu.org/cgit/freetype/freetype2.git/commit/?id=3774fc08b - -diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c -index d18e821..0baf836 100644 ---- a/src/psaux/psobjs.c -+++ b/src/psaux/psobjs.c -@@ -1718,6 +1718,14 @@ - first = outline->n_contours <= 1 - ? 0 : outline->contours[outline->n_contours - 2] + 1; - -+ /* in malformed fonts it can happen that a contour was started */ -+ /* but no points were added */ -+ if ( outline->n_contours && first == outline->n_points ) -+ { -+ outline->n_contours--; -+ return; -+ } -+ - /* We must not include the last point in the path if it */ - /* is located on the first point. */ - if ( outline->n_points > 1 ) - diff --git a/pkgs/development/libraries/freetype/default.nix b/pkgs/development/libraries/freetype/default.nix index 8f16f85cabf7..cd7ac64da150 100644 --- a/pkgs/development/libraries/freetype/default.nix +++ b/pkgs/development/libraries/freetype/default.nix @@ -11,10 +11,10 @@ let inherit (stdenv.lib) optional optionals optionalString; - version = "2.7.1"; name = "freetype-" + version; -in stdenv.mkDerivation { - inherit name; +in stdenv.mkDerivation rec { + name = "freetype-${version}"; + version = "2.9"; meta = with stdenv.lib; { description = "A font rendering engine"; @@ -33,7 +33,7 @@ in stdenv.mkDerivation { src = fetchurl { url = "mirror://savannah/freetype/${name}.tar.bz2"; - sha256 = "121gm15ayfg3rglby8ifh8384mcjb9dhmx9j40zl7yszw72b4frs"; + sha256 = "12jcdz1in20yaa55izxalg3hm1pf7nydfrzps5bzb4zgihybmzz6"; }; propagatedBuildInputs = [ zlib bzip2 libpng ]; # needed when linking against freetype @@ -43,14 +43,7 @@ in stdenv.mkDerivation { ++ optional (!stdenv.isLinux) gnumake; patches = - [ - ./pcf-introduce-driver.patch - ./pcf-config-long-family-names.patch - ./disable-pcf-long-family-names.patch - ./enable-table-validation.patch - # remove the two CVE patches after updating to >= 2.8 - ./cve-2017-8105.patch - ./cve-2017-8287.patch + [ ./enable-table-validation.patch ] ++ optional useEncumberedCode ./enable-subpixel-rendering.patch; diff --git a/pkgs/development/libraries/freetype/pcf-config-long-family-names.patch b/pkgs/development/libraries/freetype/pcf-config-long-family-names.patch deleted file mode 100644 index 95ed83c60f8f..000000000000 --- a/pkgs/development/libraries/freetype/pcf-config-long-family-names.patch +++ /dev/null @@ -1,553 +0,0 @@ -diff --git a/devel/ftoption.h b/devel/ftoption.h -index 3b63931..b8b0a8d 100644 ---- a/devel/ftoption.h -+++ b/devel/ftoption.h -@@ -82,8 +82,8 @@ FT_BEGIN_HEADER - /* to control the various font drivers and modules. The controllable */ - /* properties are listed in the section `Controlling FreeType Modules' */ - /* in the reference's table of contents; currently there are properties */ -- /* for the auto-hinter (file `ftautoh.h'), CFF (file `ftcffdrv.h'), and */ -- /* TrueType (file `ftttdrv.h'). */ -+ /* for the auto-hinter (file `ftautoh.h'), CFF (file `ftcffdrv.h'), */ -+ /* TrueType (file `ftttdrv.h'), and PCF (file `ftpcfdrv.h'). */ - /* */ - /* `FREETYPE_PROPERTIES' has the following syntax form (broken here into */ - /* multiple lines for better readability). */ -@@ -835,6 +835,33 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ -+ /**** P C F D R I V E R C O N F I G U R A T I O N ****/ -+ /**** ****/ -+ /*************************************************************************/ -+ /*************************************************************************/ -+ -+ -+ /*************************************************************************/ -+ /* */ -+ /* There are many PCF fonts just called `Fixed' which look completely */ -+ /* different, and which have nothing to do with each other. When */ -+ /* selecting `Fixed' in KDE or Gnome one gets results that appear rather */ -+ /* random, the style changes often if one changes the size and one */ -+ /* cannot select some fonts at all. This option makes the PCF module */ -+ /* prepend the foundry name (plus a space) to the family name. */ -+ /* */ -+ /* We also check whether we have `wide' characters; all put together, we */ -+ /* get family names like `Sony Fixed' or `Misc Fixed Wide'. */ -+ /* */ -+ /* If this option is activated, it can be controlled with the */ -+ /* `no-long-family-names' property of the pcf driver module. */ -+ /* */ -+#define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES -+ -+ -+ /*************************************************************************/ -+ /*************************************************************************/ -+ /**** ****/ - /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ -diff --git a/docs/CHANGES b/docs/CHANGES -index cb3b327..3823395 100644 ---- a/docs/CHANGES -+++ b/docs/CHANGES -@@ -1,4 +1,20 @@ - -+CHANGES BETWEEN 2.7.1 and 2.7.2 -+ -+ I. IMPORTANT CHANGES -+ -+ - The PCF change to show more `colourful' family names (introduced -+ in version 2.7.1) was too radical; it can now be configured with -+ PCF_CONFIG_OPTION_LONG_FAMILY_NAMES at compile time. If -+ activated, it can be switched off at run time with the new pcf -+ property `no-long-family-names'. If the `FREETYPE_PROPERTIES' -+ environment variable is available, you can say -+ -+ FREETYPE_PROPERTIES=pcf:no-long-family-names=1 -+ -+ -+====================================================================== -+ - CHANGES BETWEEN 2.7 and 2.7.1 - - I. IMPORTANT CHANGES -diff --git a/include/freetype/config/ftheader.h b/include/freetype/config/ftheader.h -index 950d36c..d491af5 100644 ---- a/include/freetype/config/ftheader.h -+++ b/include/freetype/config/ftheader.h -@@ -357,6 +357,19 @@ - /************************************************************************* - * - * @macro: -+ * FT_PCF_DRIVER_H -+ * -+ * @description: -+ * A macro used in #include statements to name the file containing -+ * structures and macros related to the PCF driver module. -+ * -+ */ -+#define FT_PCF_DRIVER_H -+ -+ -+ /************************************************************************* -+ * -+ * @macro: - * FT_TYPE1_TABLES_H - * - * @description: -diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h -index f5bc540..5676074 100644 ---- a/include/freetype/config/ftoption.h -+++ b/include/freetype/config/ftoption.h -@@ -82,8 +82,8 @@ FT_BEGIN_HEADER - /* to control the various font drivers and modules. The controllable */ - /* properties are listed in the section `Controlling FreeType Modules' */ - /* in the reference's table of contents; currently there are properties */ -- /* for the auto-hinter (file `ftautoh.h'), CFF (file `ftcffdrv.h'), and */ -- /* TrueType (file `ftttdrv.h'). */ -+ /* for the auto-hinter (file `ftautoh.h'), CFF (file `ftcffdrv.h'), */ -+ /* TrueType (file `ftttdrv.h'), and PCF (file `ftpcfdrv.h'). */ - /* */ - /* `FREETYPE_PROPERTIES' has the following syntax form (broken here into */ - /* multiple lines for better readability). */ -@@ -835,6 +835,33 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ -+ /**** P C F D R I V E R C O N F I G U R A T I O N ****/ -+ /**** ****/ -+ /*************************************************************************/ -+ /*************************************************************************/ -+ -+ -+ /*************************************************************************/ -+ /* */ -+ /* There are many PCF fonts just called `Fixed' which look completely */ -+ /* different, and which have nothing to do with each other. When */ -+ /* selecting `Fixed' in KDE or Gnome one gets results that appear rather */ -+ /* random, the style changes often if one changes the size and one */ -+ /* cannot select some fonts at all. This option makes the PCF module */ -+ /* prepend the foundry name (plus a space) to the family name. */ -+ /* */ -+ /* We also check whether we have `wide' characters; all put together, we */ -+ /* get family names like `Sony Fixed' or `Misc Fixed Wide'. */ -+ /* */ -+ /* If this option is activated, it can be controlled with the */ -+ /* `no-long-family-names' property of the pcf driver module. */ -+ /* */ -+#define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES -+ -+ -+ /*************************************************************************/ -+ /*************************************************************************/ -+ /**** ****/ - /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ -diff --git a/include/freetype/ftchapters.h b/include/freetype/ftchapters.h -index ab43895..a0a121b 100644 ---- a/include/freetype/ftchapters.h -+++ b/include/freetype/ftchapters.h -@@ -77,6 +77,7 @@ - /* auto_hinter */ - /* cff_driver */ - /* tt_driver */ -+/* pcf_driver */ - /* */ - /***************************************************************************/ - -diff --git a/include/freetype/ftpcfdrv.h b/include/freetype/ftpcfdrv.h -new file mode 100644 -index 0000000..6622c93 ---- /dev/null -+++ b/include/freetype/ftpcfdrv.h -@@ -0,0 +1,105 @@ -+/***************************************************************************/ -+/* */ -+/* ftpcfdrv.h */ -+/* */ -+/* FreeType API for controlling the PCF driver (specification only). */ -+/* */ -+/* Copyright 2017 by */ -+/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -+/* */ -+/* This file is part of the FreeType project, and may only be used, */ -+/* modified, and distributed under the terms of the FreeType project */ -+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -+/* this file you indicate that you have read the license and */ -+/* understand and accept it fully. */ -+/* */ -+/***************************************************************************/ -+ -+ -+#ifndef FTPCFDRV_H_ -+#define FTPCFDRV_H_ -+ -+#include -+#include FT_FREETYPE_H -+ -+#ifdef FREETYPE_H -+#error "freetype.h of FreeType 1 has been loaded!" -+#error "Please fix the directory search order for header files" -+#error "so that freetype.h of FreeType 2 is found first." -+#endif -+ -+ -+FT_BEGIN_HEADER -+ -+ -+ /************************************************************************** -+ * -+ * @section: -+ * pcf_driver -+ * -+ * @title: -+ * The PCF driver -+ * -+ * @abstract: -+ * Controlling the PCF driver module. -+ * -+ * @description: -+ * While FreeType's PCF driver doesn't expose API functions by itself, -+ * it is possible to control its behaviour with @FT_Property_Set and -+ * @FT_Property_Get. Right now, there is a single property -+ * `no-long-family-names' available if FreeType is compiled with -+ * PCF_CONFIG_OPTION_LONG_FAMILY_NAMES. -+ * -+ * The PCF driver's module name is `pcf'. -+ * -+ */ -+ -+ -+ /************************************************************************** -+ * -+ * @property: -+ * no-long-family-names -+ * -+ * @description: -+ * If PCF_CONFIG_OPTION_LONG_FAMILY_NAMES is active while compiling -+ * FreeType, the PCF driver constructs long family names. -+ * -+ * There are many PCF fonts just called `Fixed' which look completely -+ * different, and which have nothing to do with each other. When -+ * selecting `Fixed' in KDE or Gnome one gets results that appear rather -+ * random, the style changes often if one changes the size and one -+ * cannot select some fonts at all. The improve this situation, the PCF -+ * module prepends the foundry name (plus a space) to the family name. -+ * It also checks whether there are `wide' characters; all put together, -+ * family names like `Sony Fixed' or `Misc Fixed Wide' are constructed. -+ * -+ * If `no-long-family-names' is set, this feature gets switched off. -+ * -+ * { -+ * FT_Library library; -+ * FT_Bool no_long_family_names = TRUE; -+ * -+ * -+ * FT_Init_FreeType( &library ); -+ * -+ * FT_Property_Set( library, "pcf", -+ * "no-long-family-names", -+ * &no_long_family_names ); -+ * } -+ * -+ * @note: -+ * This property can be used with @FT_Property_Get also. -+ * -+ * This property can be set via the `FREETYPE_PROPERTIES' environment -+ * variable (using values 1 and 0 for `on' and `off', respectively). -+ * -+ */ -+ -+ -+FT_END_HEADER -+ -+ -+#endif /* FTPCFDRV_H_ */ -+ -+ -+/* END */ -diff --git a/src/pcf/pcf.h b/src/pcf/pcf.h -index 830cabe..f0390cb 100644 ---- a/src/pcf/pcf.h -+++ b/src/pcf/pcf.h -@@ -167,6 +167,8 @@ FT_BEGIN_HEADER - { - FT_DriverRec root; - -+ FT_Bool no_long_family_names; -+ - } PCF_DriverRec, *PCF_Driver; - - -diff --git a/src/pcf/pcfdrivr.c b/src/pcf/pcfdrivr.c -index 8f4a90d..bc65423 100644 ---- a/src/pcf/pcfdrivr.c -+++ b/src/pcf/pcfdrivr.c -@@ -49,6 +49,8 @@ THE SOFTWARE. - - #include FT_SERVICE_BDF_H - #include FT_SERVICE_FONT_FORMAT_H -+#include FT_SERVICE_PROPERTIES_H -+#include FT_PCF_DRIVER_H - - - /*************************************************************************/ -@@ -667,6 +669,110 @@ THE SOFTWARE. - }; - - -+ /* -+ * PROPERTY SERVICE -+ * -+ */ -+ static FT_Error -+ pcf_property_set( FT_Module module, /* PCF_Driver */ -+ const char* property_name, -+ const void* value, -+ FT_Bool value_is_string ) -+ { -+#ifdef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES -+ -+ FT_Error error = FT_Err_Ok; -+ PCF_Driver driver = (PCF_Driver)module; -+ -+#ifndef FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES -+ FT_UNUSED( value_is_string ); -+#endif -+ -+ -+ if ( !ft_strcmp( property_name, "no-long-family-names" ) ) -+ { -+#ifdef FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES -+ if ( value_is_string ) -+ { -+ const char* s = (const char*)value; -+ long lfn = ft_strtol( s, NULL, 10 ); -+ -+ -+ if ( lfn == 0 ) -+ driver->no_long_family_names = 0; -+ else if ( lfn == 1 ) -+ driver->no_long_family_names = 1; -+ else -+ return FT_THROW( Invalid_Argument ); -+ } -+ else -+#endif -+ { -+ FT_Bool* no_long_family_names = (FT_Bool*)value; -+ -+ -+ driver->no_long_family_names = *no_long_family_names; -+ } -+ -+ return error; -+ } -+ -+#else /* !PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */ -+ -+ FT_UNUSED( module ); -+ FT_UNUSED( value ); -+ FT_UNUSED( value_is_string ); -+ -+#endif /* !PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */ -+ -+ FT_TRACE0(( "pcf_property_set: missing property `%s'\n", -+ property_name )); -+ return FT_THROW( Missing_Property ); -+ } -+ -+ -+ static FT_Error -+ pcf_property_get( FT_Module module, /* PCF_Driver */ -+ const char* property_name, -+ const void* value ) -+ { -+#ifdef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES -+ -+ FT_Error error = FT_Err_Ok; -+ PCF_Driver driver = (PCF_Driver)module; -+ -+ -+ if ( !ft_strcmp( property_name, "no-long-family-names" ) ) -+ { -+ FT_Bool no_long_family_names = driver->no_long_family_names; -+ FT_Bool* val = (FT_Bool*)value; -+ -+ -+ *val = no_long_family_names; -+ -+ return error; -+ } -+ -+#else /* !PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */ -+ -+ FT_UNUSED( module ); -+ FT_UNUSED( value ); -+ -+#endif /* !PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */ -+ -+ FT_TRACE0(( "pcf_property_get: missing property `%s'\n", -+ property_name )); -+ return FT_THROW( Missing_Property ); -+ } -+ -+ -+ FT_DEFINE_SERVICE_PROPERTIESREC( -+ pcf_service_properties, -+ -+ (FT_Properties_SetFunc)pcf_property_set, /* set_property */ -+ (FT_Properties_GetFunc)pcf_property_get ) /* get_property */ -+ -+ - /* - * - * SERVICE LIST -@@ -677,6 +783,7 @@ THE SOFTWARE. - { - { FT_SERVICE_ID_BDF, &pcf_service_bdf }, - { FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_PCF }, -+ { FT_SERVICE_ID_PROPERTIES, &pcf_service_properties }, - { NULL, NULL } - }; - -@@ -694,7 +801,14 @@ THE SOFTWARE. - FT_CALLBACK_DEF( FT_Error ) - pcf_driver_init( FT_Module module ) /* PCF_Driver */ - { -+#ifdef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES -+ PCF_Driver driver = (PCF_Driver)module; -+ -+ -+ driver->no_long_family_names = 0; -+#else - FT_UNUSED( module ); -+#endif - - return FT_Err_Ok; - } -diff --git a/src/pcf/pcfread.c b/src/pcf/pcfread.c -index 38ba110..3eacf2b 100644 ---- a/src/pcf/pcfread.c -+++ b/src/pcf/pcfread.c -@@ -1393,57 +1393,75 @@ THE SOFTWARE. - prop = pcf_find_property( face, "FAMILY_NAME" ); - if ( prop && prop->isString ) - { -- /* Prepend the foundry name plus a space to the family name. */ -- /* There are many fonts just called `Fixed' which look completely */ -- /* different, and which have nothing to do with each other. When */ -- /* selecting `Fixed' in KDE or Gnome one gets results that appear */ -- /* rather random, the style changes often if one changes the size */ -- /* and one cannot select some fonts at all. */ -- /* */ -- /* We also check whether we have `wide' characters; all put */ -- /* together, we get family names like `Sony Fixed' or `Misc Fixed */ -- /* Wide'. */ -- PCF_Property foundry_prop, point_size_prop, average_width_prop; -- -- int l = ft_strlen( prop->value.atom ) + 1; -- int wide = 0; -- -- -- foundry_prop = pcf_find_property( face, "FOUNDRY" ); -- point_size_prop = pcf_find_property( face, "POINT_SIZE" ); -- average_width_prop = pcf_find_property( face, "AVERAGE_WIDTH" ); -- -- if ( point_size_prop && average_width_prop ) -+ -+#ifdef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES -+ -+ PCF_Driver driver = (PCF_Driver)FT_FACE_DRIVER( face ); -+ -+ -+ if ( !driver->no_long_family_names ) - { -- if ( average_width_prop->value.l >= point_size_prop->value.l ) -+ /* Prepend the foundry name plus a space to the family name. */ -+ /* There are many fonts just called `Fixed' which look */ -+ /* completely different, and which have nothing to do with each */ -+ /* other. When selecting `Fixed' in KDE or Gnome one gets */ -+ /* results that appear rather random, the style changes often if */ -+ /* one changes the size and one cannot select some fonts at all. */ -+ /* */ -+ /* We also check whether we have `wide' characters; all put */ -+ /* together, we get family names like `Sony Fixed' or `Misc */ -+ /* Fixed Wide'. */ -+ -+ PCF_Property foundry_prop, point_size_prop, average_width_prop; -+ -+ int l = ft_strlen( prop->value.atom ) + 1; -+ int wide = 0; -+ -+ -+ foundry_prop = pcf_find_property( face, "FOUNDRY" ); -+ point_size_prop = pcf_find_property( face, "POINT_SIZE" ); -+ average_width_prop = pcf_find_property( face, "AVERAGE_WIDTH" ); -+ -+ if ( point_size_prop && average_width_prop ) - { -- /* This font is at least square shaped or even wider */ -- wide = 1; -- l += ft_strlen( " Wide" ); -+ if ( average_width_prop->value.l >= point_size_prop->value.l ) -+ { -+ /* This font is at least square shaped or even wider */ -+ wide = 1; -+ l += ft_strlen( " Wide" ); -+ } - } -- } - -- if ( foundry_prop && foundry_prop->isString ) -- { -- l += ft_strlen( foundry_prop->value.atom ) + 1; -+ if ( foundry_prop && foundry_prop->isString ) -+ { -+ l += ft_strlen( foundry_prop->value.atom ) + 1; - -- if ( FT_NEW_ARRAY( root->family_name, l ) ) -- goto Exit; -+ if ( FT_NEW_ARRAY( root->family_name, l ) ) -+ goto Exit; -+ -+ ft_strcpy( root->family_name, foundry_prop->value.atom ); -+ ft_strcat( root->family_name, " " ); -+ ft_strcat( root->family_name, prop->value.atom ); -+ } -+ else -+ { -+ if ( FT_NEW_ARRAY( root->family_name, l ) ) -+ goto Exit; - -- ft_strcpy( root->family_name, foundry_prop->value.atom ); -- ft_strcat( root->family_name, " " ); -- ft_strcat( root->family_name, prop->value.atom ); -+ ft_strcpy( root->family_name, prop->value.atom ); -+ } -+ -+ if ( wide ) -+ ft_strcat( root->family_name, " Wide" ); - } - else -+ -+#endif /* PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */ -+ - { -- if ( FT_NEW_ARRAY( root->family_name, l ) ) -+ if ( FT_STRDUP( root->family_name, prop->value.atom ) ) - goto Exit; -- -- ft_strcpy( root->family_name, prop->value.atom ); - } -- -- if ( wide ) -- ft_strcat( root->family_name, " Wide" ); - } - else - root->family_name = NULL; --- -cgit v1.0-41-gc330 - diff --git a/pkgs/development/libraries/freetype/pcf-introduce-driver.patch b/pkgs/development/libraries/freetype/pcf-introduce-driver.patch deleted file mode 100644 index c1685c5116cc..000000000000 --- a/pkgs/development/libraries/freetype/pcf-introduce-driver.patch +++ /dev/null @@ -1,68 +0,0 @@ -diff --git a/src/pcf/pcf.h b/src/pcf/pcf.h -index c726e5e..830cabe 100644 ---- a/src/pcf/pcf.h -+++ b/src/pcf/pcf.h -@@ -163,6 +163,13 @@ FT_BEGIN_HEADER - } PCF_FaceRec, *PCF_Face; - - -+ typedef struct PCF_DriverRec_ -+ { -+ FT_DriverRec root; -+ -+ } PCF_DriverRec, *PCF_Driver; -+ -+ - /* macros for pcf font format */ - - #define LSBFirst 0 -diff --git a/src/pcf/pcfdrivr.c b/src/pcf/pcfdrivr.c -index 10d5c20..8f4a90d 100644 ---- a/src/pcf/pcfdrivr.c -+++ b/src/pcf/pcfdrivr.c -@@ -691,22 +691,38 @@ THE SOFTWARE. - } - - -+ FT_CALLBACK_DEF( FT_Error ) -+ pcf_driver_init( FT_Module module ) /* PCF_Driver */ -+ { -+ FT_UNUSED( module ); -+ -+ return FT_Err_Ok; -+ } -+ -+ -+ FT_CALLBACK_DEF( void ) -+ pcf_driver_done( FT_Module module ) /* PCF_Driver */ -+ { -+ FT_UNUSED( module ); -+ } -+ -+ - FT_CALLBACK_TABLE_DEF - const FT_Driver_ClassRec pcf_driver_class = - { - { - FT_MODULE_FONT_DRIVER | - FT_MODULE_DRIVER_NO_OUTLINES, -- sizeof ( FT_DriverRec ), - -+ sizeof ( PCF_DriverRec ), - "pcf", - 0x10000L, - 0x20000L, - -- NULL, /* module-specific interface */ -+ NULL, /* module-specific interface */ - -- NULL, /* FT_Module_Constructor module_init */ -- NULL, /* FT_Module_Destructor module_done */ -+ pcf_driver_init, /* FT_Module_Constructor module_init */ -+ pcf_driver_done, /* FT_Module_Destructor module_done */ - pcf_driver_requester /* FT_Module_Requester get_interface */ - }, - --- -cgit v1.0-41-gc330 -