Hi David,

I've cooked a quick patch to make fc-cache work again.  I'll comment in
the next mail.

-- 
Regards,
olv
=== include/freetype/config/ftoption.h
==================================================================
--- include/freetype/config/ftoption.h  (revision 3230)
+++ include/freetype/config/ftoption.h  (local)
@@ -591,6 +591,7 @@
 #define  FT_STRICT_ALIASING
 */
 
+#define FT_CONFIG_OPTION_OLD_INTERNALS
 
 FT_END_HEADER
 
=== include/freetype/internal/ftobjs.h
==================================================================
--- include/freetype/internal/ftobjs.h  (revision 3230)
+++ include/freetype/internal/ftobjs.h  (local)
@@ -175,18 +175,6 @@
   /*    FreeType.                                                          */
   /*                                                                       */
   /* <Fields>                                                              */
-  /*    max_points ::                                                      */
-  /*      The maximal number of points used to store the vectorial outline */
-  /*      of any glyph in this face.  If this value cannot be known in     */
-  /*      advance, or if the face isn't scalable, this should be set to 0. */
-  /*      Only relevant for scalable formats.                              */
-  /*                                                                       */
-  /*    max_contours ::                                                    */
-  /*      The maximal number of contours used to store the vectorial       */
-  /*      outline of any glyph in this face.  If this value cannot be      */
-  /*      known in advance, or if the face isn't scalable, this should be  */
-  /*      set to 0.  Only relevant for scalable formats.                   */
-  /*                                                                       */
   /*    transform_matrix ::                                                */
   /*      A 2x2 matrix of 16.16 coefficients used to transform glyph       */
   /*      outlines after they are loaded from the font.  Only used by the  */
@@ -213,6 +201,11 @@
   /*                                                                       */
   typedef struct  FT_Face_InternalRec_
   {
+#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
+    FT_UShort           reserved1;
+    FT_Short            reserved2;
+#endif
+
     FT_Matrix           transform_matrix;
     FT_Vector           transform_delta;
     FT_Int              transform_flags;
=== include/freetype/internal/psaux.h
==================================================================
--- include/freetype/internal/psaux.h   (revision 3230)
+++ include/freetype/internal/psaux.h   (local)
@@ -784,7 +784,6 @@
     const PS_Parser_FuncsRec*   ps_parser_funcs;
     const T1_Builder_FuncsRec*  t1_builder_funcs;
     const T1_Decoder_FuncsRec*  t1_decoder_funcs;
-    const AFM_Parser_FuncsRec*  afm_parser_funcs;
 
     void
     (*t1_decrypt)( FT_Byte*   buffer,
@@ -793,6 +792,8 @@
 
     T1_CMap_Classes  t1_cmap_classes;
 
+    const AFM_Parser_FuncsRec*  afm_parser_funcs;
+
   } PSAux_ServiceRec, *PSAux_Service;
 
   /* backwards-compatible type definition */
=== include/freetype/internal/sfnt.h
==================================================================
--- include/freetype/internal/sfnt.h    (revision 3230)
+++ include/freetype/internal/sfnt.h    (local)
@@ -510,9 +510,9 @@
 
     /* these functions are called by `load_face' but they can also  */
     /* be called from external modules, if there is a need to do so */
+    TT_Load_Metrics_Func         load_hmtx;
     TT_Load_Table_Func           load_head;
     TT_Load_Metrics_Func         load_hhea;
-    TT_Load_Metrics_Func         load_hmtx;
     TT_Load_Table_Func           load_cmap;
     TT_Load_Table_Func           load_maxp;
     TT_Load_Table_Func           load_os2;
@@ -529,24 +529,24 @@
     TT_Load_Table_Func           load_bhed;
 
     /* see `ttsbit.h' */
-    TT_Load_Table_Func           load_eblc;
-    TT_Free_Table_Func           free_eblc;
 
     TT_Set_SBit_Strike_Func      set_sbit_strike;
-    TT_Load_Strike_Metrics_Func  load_strike_metrics;
+    TT_Load_Table_Func           load_eblc;
     TT_Find_SBit_Image_Func      find_sbit_image;
     TT_Load_SBit_Metrics_Func    load_sbit_metrics;
     TT_Load_SBit_Image_Func      load_sbit_image;
+    TT_Free_Table_Func           free_eblc;
 
     /* see `ttkern.h' */
     TT_Face_GetKerningFunc       get_kerning;
     
-    TT_Get_Metrics_Func          get_metrics;
-
     /* see `ttpost.h' */
     TT_Get_PS_Name_Func          get_psname;
     TT_Free_Table_Func           free_psnames;
 
+    TT_Get_Metrics_Func          get_metrics;
+    TT_Load_Strike_Metrics_Func  load_strike_metrics;
+
   } SFNT_Interface;
 
 
=== include/freetype/internal/tttypes.h
==================================================================
--- include/freetype/internal/tttypes.h (revision 3230)
+++ include/freetype/internal/tttypes.h (local)
@@ -311,8 +311,6 @@
   } TT_GaspRec;
 
 
-#ifndef FT_OPTIMIZE_MEMORY
-
   /*************************************************************************/
   /*                                                                       */
   /* <Struct>                                                              */
@@ -389,9 +387,7 @@
 
   } TT_Kern0_PairRec, *TT_Kern0_Pair;
 
-#endif /* !OPTIMIZE_MEMORY */
 
-
   /*************************************************************************/
   /*************************************************************************/
   /*************************************************************************/
@@ -1267,19 +1263,14 @@
 
     TT_Header             header;       /* TrueType header table          */
     TT_HoriHeader         horizontal;   /* TrueType horizontal header     */
-#ifdef FT_OPTIMIZE_MEMORY
-    FT_Byte*              horz_metrics;
-    FT_ULong              horz_metrics_size;
-#endif
 
     TT_MaxProfile         max_profile;
+#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
+    FT_ULong              reserved;
+#endif
 
     FT_Bool               vertical_info;
     TT_VertHeader         vertical;     /* TT Vertical header, if present */
-#ifdef FT_OPTIMIZE_MEMORY
-    FT_Byte*              vert_metrics;
-    FT_ULong              vert_metrics_size;
-#endif
 
     FT_UShort             num_names;    /* number of name records  */
     TT_NameTableRec       name_table;   /* name table              */
@@ -1314,13 +1305,7 @@
     /***********************************************************************/
 
     /* horizontal device metrics */
-#ifdef FT_OPTIMIZE_MEMORY
-    FT_Byte*              hdmx_table;
-    FT_ULong              hdmx_table_size;
-    FT_UInt               hdmx_record_count;
-    FT_ULong              hdmx_record_size;
-    FT_Byte*              hdmx_record_sizes;
-#else
+#if !defined( FT_OPTIMIZE_MEMORY ) || defined( FT_CONFIG_OPTION_OLD_INTERNALS )
     TT_HdmxRec            hdmx;
 #endif
 
@@ -1331,11 +1316,7 @@
     TT_PCLT               pclt;
 
     /* embedded bitmaps support */
-#ifdef FT_OPTIMIZE_MEMORY
-    FT_Byte*              sbit_table;
-    FT_ULong              sbit_table_size;
-    FT_UInt               sbit_num_strikes;
-#else
+#if !defined( FT_OPTIMIZE_MEMORY ) || defined( FT_CONFIG_OPTION_OLD_INTERNALS )
     FT_ULong              num_sbit_strikes;
     TT_SBit_Strike        sbit_strikes;
 #endif
@@ -1354,10 +1335,7 @@
     /***********************************************************************/
 
     /* the glyph locations */
-#ifdef FT_OPTIMIZE_MEMORY
-    FT_UInt               num_locations;
-    FT_Byte*              glyph_locations;
-#else
+#if !defined( FT_OPTIMIZE_MEMORY ) || defined( FT_CONFIG_OPTION_OLD_INTERNALS )
     FT_UShort             num_locations;
     FT_Long*              glyph_locations;
 #endif
@@ -1376,13 +1354,7 @@
     FT_ULong              cvt_size;
     FT_Short*             cvt;
 
-#ifdef FT_OPTIMIZE_MEMORY
-    FT_Byte*              kern_table;
-    FT_ULong              kern_table_size;
-    FT_UInt               num_kern_tables;
-    FT_UInt32             kern_avail_bits;
-    FT_UInt32             kern_order_bits;
-#else
+#if !defined( FT_OPTIMIZE_MEMORY ) || defined( FT_CONFIG_OPTION_OLD_INTERNALS )
     /* the format 0 kerning table, if any */
     FT_Int                num_kern_pairs;
     FT_Int                kern_table_index;
@@ -1403,10 +1375,6 @@
     GX_Blend              blend;
 #endif
 
-#ifdef TT_CONFIG_OPTION_BDF
-    TT_BDFRec             bdf;
-#endif /* TT_CONFIG_OPTION_BDF */
-
     /***********************************************************************/
     /*                                                                     */
     /* Other tables or fields. This is used by derivative formats like     */
@@ -1418,6 +1386,43 @@
 
     const char*           postscript_name;
 
+#ifdef FT_OPTIMIZE_MEMORY
+    /* hmtx */
+    FT_Byte*              horz_metrics;
+    FT_ULong              horz_metrics_size;
+
+    /* vmtx */
+    FT_Byte*              vert_metrics;
+    FT_ULong              vert_metrics_size;
+
+    /* hdmx */
+    FT_Byte*              hdmx_table;
+    FT_ULong              hdmx_table_size;
+    FT_UInt               hdmx_record_count;
+    FT_ULong              hdmx_record_size;
+    FT_Byte*              hdmx_record_sizes;
+
+    /* eblc */
+    FT_Byte*              sbit_table;
+    FT_ULong              sbit_table_size;
+    FT_UInt               sbit_num_strikes;
+
+    /* loca */
+    FT_Byte*              loca_table;
+    FT_UInt               loca_offset_count;
+
+    /* kern */
+    FT_Byte*              kern_table;
+    FT_ULong              kern_table_size;
+    FT_UInt               num_kern_tables;
+    FT_UInt32             kern_avail_bits;
+    FT_UInt32             kern_order_bits;
+#endif
+
+#ifdef TT_CONFIG_OPTION_BDF
+    TT_BDFRec             bdf;
+#endif /* TT_CONFIG_OPTION_BDF */
+
   } TT_FaceRec;
 
 
=== src/psaux/psauxmod.c
==================================================================
--- src/psaux/psauxmod.c        (revision 3230)
+++ src/psaux/psauxmod.c        (local)
@@ -107,15 +107,16 @@
     &ps_parser_funcs,
     &t1_builder_funcs,
     &t1_decoder_funcs,
+
+    t1_decrypt,
+    
+    (const T1_CMap_ClassesRec*) &t1_cmap_classes,
+
 #ifndef T1_CONFIG_OPTION_NO_AFM
     &afm_parser_funcs,
 #else
     0,
 #endif
-
-    t1_decrypt,
-    
-    (const T1_CMap_ClassesRec*) &t1_cmap_classes,
   };
 
 
=== src/sfnt/sfdriver.c
==================================================================
--- src/sfnt/sfdriver.c (revision 3230)
+++ src/sfnt/sfdriver.c (local)
@@ -389,9 +389,9 @@
     tt_face_load_any,
     tt_face_load_font_dir,
 
+    tt_face_load_hmtx,
     tt_face_load_head,
     tt_face_load_hhea,
-    tt_face_load_hmtx,
     tt_face_load_cmap,
     tt_face_load_maxp,
     tt_face_load_os2,
@@ -411,19 +411,20 @@
 
 
     /* see `ttsbit.h' and `sfnt.h' */
+
+    tt_face_set_sbit_strike,
     tt_face_load_eblc,
-    tt_face_free_eblc,
 
-    tt_face_set_sbit_strike,
-    tt_face_load_strike_metrics,
-#ifdef FT_OPTIMIZE_MEMORY
+#if !defined( FT_OPTIMIZE_MEMORY ) || defined( FT_CONFIG_OPTION_OLD_INTERNALS )
+    tt_find_sbit_image,
+    tt_load_sbit_metrics,
+#else
     0,
     0,
-#else
-    tt_find_sbit_image,
-    tt_load_sbit_metrics,
 #endif
+
     tt_face_load_sbit_image,
+    tt_face_free_eblc,
 
 #else /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
 
@@ -441,8 +442,6 @@
     /* see `ttkern.h' */
     tt_face_get_kerning,
 
-    tt_face_get_metrics,
-
 #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
 
     /* see `ttpost.h' */
@@ -456,6 +455,9 @@
 
 #endif /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */
 
+    tt_face_get_metrics,
+    tt_face_load_strike_metrics,
+
   };
 
 
=== src/sfnt/ttmtx.c
==================================================================
--- src/sfnt/ttmtx.c    (revision 3230)
+++ src/sfnt/ttmtx.c    (local)
@@ -118,7 +118,7 @@
         goto Fail;
 
       num_longs = face->vertical.number_Of_VMetrics;
-      if ( num_longs > table_len / 4 )
+      if ( (FT_ULong)num_longs > table_len / 4 )
         num_longs = table_len / 4;
 
       face->vertical.number_Of_VMetrics = 0;
@@ -133,7 +133,7 @@
         goto Fail;
 
       num_longs = face->horizontal.number_Of_HMetrics;
-      if ( num_longs > table_len / 4 )
+      if ( (FT_ULong)num_longs > table_len / 4 )
         num_longs = table_len / 4;
 
       face->horizontal.number_Of_HMetrics = 0;
=== src/sfnt/ttsbit.h
==================================================================
--- src/sfnt/ttsbit.h   (revision 3230)
+++ src/sfnt/ttsbit.h   (local)
@@ -45,7 +45,7 @@
                                FT_ULong          strike_index,
                                FT_Size_Metrics*  metrics );
 
-#ifndef FT_OPTIMIZE_MEMORY
+#if !defined( FT_OPTIMIZE_MEMORY ) || defined( FT_CONFIG_OPTION_OLD_INTERNALS )
   FT_LOCAL( FT_Error )
   tt_find_sbit_image( TT_Face          face,
                       FT_UInt          glyph_index,
@@ -58,7 +58,7 @@
   tt_load_sbit_metrics( FT_Stream        stream,
                         TT_SBit_Range    range,
                         TT_SBit_Metrics  metrics );
-#endif /* !FT_OPTIMIZE_MEMORY */
+#endif
 
   FT_LOCAL( FT_Error )
   tt_face_load_sbit_image( TT_Face              face,
=== src/sfnt/ttsbit0.c
==================================================================
--- src/sfnt/ttsbit0.c  (revision 3230)
+++ src/sfnt/ttsbit0.c  (local)
@@ -950,4 +950,43 @@
     return error;
   }
 
+
+#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
+
+  FT_LOCAL( FT_Error )
+  tt_find_sbit_image( TT_Face          face,
+                      FT_UInt          glyph_index,
+                      FT_ULong         strike_index,
+                      TT_SBit_Range   *arange,
+                      TT_SBit_Strike  *astrike,
+                      FT_ULong        *aglyph_offset )
+  {
+    FT_UNUSED( face );
+    FT_UNUSED( glyph_index );
+    FT_UNUSED( strike_index );
+
+    *arange        = 0;
+    *astrike       = 0;
+    *aglyph_offset = 0;
+
+    return SFNT_Err_Unimplemented_Feature;
+  }
+
+
+  FT_LOCAL( FT_Error )
+  tt_load_sbit_metrics( FT_Stream        stream,
+                        TT_SBit_Range    range,
+                        TT_SBit_Metrics  metrics )
+  {
+    FT_UNUSED( stream );
+    FT_UNUSED( range );
+
+    FT_ZERO( metrics );
+
+    return SFNT_Err_Unimplemented_Feature;
+  }
+
+#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
+
+
 /* EOF */
=== src/truetype/ttpload.c
==================================================================
--- src/truetype/ttpload.c      (revision 3230)
+++ src/truetype/ttpload.c      (local)
@@ -89,7 +89,7 @@
         error = TT_Err_Invalid_Table;
         goto Exit;
       }
-      face->num_locations = (FT_UInt)( table_len >> 2 );
+      face->loca_offset_count = (FT_UInt)( table_len >> 2 );
     }
     else
     {
@@ -99,14 +99,14 @@
         error = TT_Err_Invalid_Table;
         goto Exit;
       }
-      face->num_locations = (FT_UInt)( table_len >> 1 );
+      face->loca_offset_count = (FT_UInt)( table_len >> 1 );
     }
 
     /*
      * Extract the frame.  We don't need to decompress it since
      * we are able to parse it directly.
      */
-    if ( FT_FRAME_EXTRACT( table_len, face->glyph_locations ) )
+    if ( FT_FRAME_EXTRACT( table_len, face->loca_table ) )
       goto Exit;
 
     FT_TRACE2(( "loaded\n" ));
@@ -128,12 +128,12 @@
 
     pos1 = pos2 = 0;
 
-    if ( gindex < face->num_locations )
+    if ( gindex < face->loca_offset_count )
     {
       if ( face->header.Index_To_Loc_Format != 0 )
       {
-        p       = face->glyph_locations + gindex * 4;
-        p_limit = face->glyph_locations + face->num_locations * 4;
+        p       = face->loca_table + gindex * 4;
+        p_limit = face->loca_table + face->loca_offset_count * 4;
 
         pos1 = FT_NEXT_ULONG( p );
         pos2 = pos1;
@@ -143,8 +143,8 @@
       }
       else
       {
-        p       = face->glyph_locations + gindex * 2;
-        p_limit = face->glyph_locations + face->num_locations * 2;
+        p       = face->loca_table + gindex * 2;
+        p_limit = face->loca_table + face->loca_offset_count * 2;
 
         pos1 = FT_NEXT_USHORT( p );
         pos2 = pos1;
@@ -178,8 +178,8 @@
     FT_Stream  stream = face->root.stream;
 
 
-    FT_FRAME_RELEASE( face->glyph_locations );
-    face->num_locations = 0;
+    FT_FRAME_RELEASE( face->loca_table );
+    face->loca_offset_count = 0;
   }
 
 
_______________________________________________
Freetype-devel mailing list
Freetype-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to