shithub: freetype+ttf2subf

Download patch

ref: f95a603117672c12ff4a00e680519db17b21cf7b
parent: c38ddff8ac29a51470f05503f438038bba62bdd4
author: David Turner <[email protected]>
date: Mon Aug 21 00:58:49 EDT 2000

minor updates to the "psaux" module.
Werner, please do not start re-formatting my experimental
code until I declare it "finished", because I still make big
changes to it that create lots of CVS conflicts..

thanks for your work, anyway :-)

git/fs: mount .git/fs: mount/attach disallowed
--- a/Makefile
+++ b/Makefile
@@ -18,7 +18,7 @@
 # It works as follows:
 #
 # - When invoked for the first time, this Makefile will include the rules
-#   found in `freetype/config/detect.mk'.  They are in charge of detecting
+#   found in `freetype/builds/detect.mk'.  They are in charge of detecting
 #   the current platform.
 #
 #   A summary of the detection will be displayed, and the file `config.mk'
@@ -27,7 +27,7 @@
 # - When invoked later, this Makefile will include the rules found in
 #   `config.mk'.  This sub-Makefile will define some system-specific
 #   variables (like compiler, compilation flags, object suffix, etc.), then
-#   include the rules found in `freetype/config/freetype.mk', used to build
+#   include the rules found in `freetype/builds/freetype.mk', used to build
 #   the library.
 #
 # See the comments in `config/detect.mk' and `config/freetype.mk' for more
--- a/include/freetype/config/ftmodule.h
+++ b/include/freetype/config/ftmodule.h
@@ -1,6 +1,7 @@
 FT_USE_MODULE(autohint_module_class)
 FT_USE_MODULE(cff_driver_class)
 FT_USE_MODULE(t1cid_driver_class)
+FT_USE_MODULE(psaux_module_class)
 FT_USE_MODULE(psnames_module_class)
 FT_USE_MODULE(ft_raster1_renderer_class)
 FT_USE_MODULE(sfnt_module_class)
--- a/include/freetype/ftglyph.h
+++ b/include/freetype/ftglyph.h
@@ -218,9 +218,10 @@
 
   enum
   {
-    ft_glyph_bbox_pixels    = 0,
-    ft_glyph_bbox_subpixels = 1,
-    ft_glyph_bbox_gridfit   = 2
+    ft_glyph_bbox_subpixels = 0, /* return unfitted coordinates in 26.6 pixels */
+    ft_glyph_bbox_gridfit   = 1, /* return grid-fitted coordinates             */
+    ft_glyph_bbox_truncate  = 2, /* return coordinates in integer pixels       */
+    ft_glyph_bbox_pixels    = 3  /* return grid-fitted pixel coordinates       */
   };
 
 
--- a/include/freetype/internal/psaux.h
+++ b/include/freetype/internal/psaux.h
@@ -41,10 +41,10 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Struct>                                                              */
-  /*    T1_Table                                                           */
+  /*    PS_Table                                                           */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    A T1_Table is a simple object used to store an array of objects in */
+  /*    A PS_Table is a simple object used to store an array of objects in */
   /*    a single memory block.                                             */
   /*                                                                       */
   /* <Fields>                                                              */
@@ -68,7 +68,7 @@
   /*    memory    :: The object used for memory operations                 */
   /*                 (alloc/realloc).                                      */
   /*                                                                       */
-  typedef struct  T1_Table_
+  typedef struct  PS_Table_
   {
     FT_Byte*   block;          /* current memory block           */
     FT_Int     cursor;         /* current cursor in memory block */
@@ -82,7 +82,7 @@
 
     FT_Memory  memory;
 
-  } T1_Table;
+  } PS_Table;
 
 
 
@@ -89,10 +89,10 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Struct>                                                              */
-  /*    T1_Table_Funcs                                                     */
+  /*    PS_Table_Funcs                                                     */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    A set of function pointers used to manage T1_Table objects..       */
+  /*    A set of function pointers used to manage PS_Table objects..       */
   /*                                                                       */
   /* <Fields>                                                              */
   /*    table_init    :: used to initialise a a table                      */
@@ -100,22 +100,22 @@
   /*    table_add     :: add one new object to a table                     */
   /*    table_release :: release table data, then finalize it              */
   /*                                                                       */
-  typedef  struct T1_Table_Funcs_
+  typedef  struct PS_Table_Funcs_
   {
-    FT_Error   (*init)   ( T1_Table*   table,
+    FT_Error   (*init)   ( PS_Table*   table,
                            FT_Int     count,
                            FT_Memory  memory );
   
-    void       (*done)   ( T1_Table*  table );                              
+    void       (*done)   ( PS_Table*  table );                              
   
-    FT_Error   (*add)    ( T1_Table*   table,
+    FT_Error   (*add)    ( PS_Table*   table,
                            FT_Int      index,
                            void*       object,
                            FT_Int      length );
 
-    void       (*release)( T1_Table*  table );                              
+    void       (*release)( PS_Table*  table );                              
   
-  } T1_Table_Funcs;
+  } PS_Table_Funcs;
 
 
   /*************************************************************************/
@@ -395,7 +395,7 @@
   /*                    the metrics of a given glyph, not load all of its  */
   /*                    points.                                            */
   /*                                                                       */
-  typedef struct  T2_Builder_
+  typedef struct  T1_Builder_
   {
     FT_Memory        memory;
     FT_Face          face;
@@ -426,30 +426,30 @@
   } T1_Builder;
 
 
-  typedef FT_Error  (*T1_Builder_Check_Points_Func)( T1_Builder*  builder,
-                                                     FT_Int       count );
+  typedef FT_Error  (*T1_Builder_Check_Points_Func) ( T1_Builder*  builder,
+                                                      FT_Int       count );
                                                       
-  typedef void  (*T1_Builder_Add_Point_Func)( T1_Builder*  builder,
-                                              FT_Pos       x,
-                                              FT_Pos       y,
-                                              FT_Byte      flag );    
+  typedef void      (*T1_Builder_Add_Point_Func)    ( T1_Builder*  builder,
+                                                      FT_Pos       x,
+                                                      FT_Pos       y,
+                                                      FT_Byte      flag );    
   
-  typedef void  (*T1_Builder_Add_Point1_Func)( T1_Builder*  builder,
-                                               FT_Pos       x,
-                                               FT_Pos       y );
+  typedef void      (*T1_Builder_Add_Point1_Func)   ( T1_Builder*  builder,
+                                                      FT_Pos       x,
+                                                      FT_Pos       y );
                                                     
-  typedef FT_Error  (*T1_Builder_Add_Contour_Func)( T1_Builder*  builder );                                                    
+  typedef FT_Error  (*T1_Builder_Add_Contour_Func)  ( T1_Builder*  builder );
 
-  typedef FT_Error  (*T1_Builder_Start_Point_Func)( T1_Builder*  builder,
-                                                    FT_Pos       x,
-                                                    FT_Pos       y );
+  typedef FT_Error  (*T1_Builder_Start_Point_Func)  ( T1_Builder*  builder,
+                                                      FT_Pos       x,
+                                                      FT_Pos       y );
 
-  typedef void  (*T1_Builder_Close_Contour_Func)( T1_Builder*  builder );
+  typedef void      (*T1_Builder_Close_Contour_Func)( T1_Builder*  builder );
 
 
   typedef struct  T1_Builder_Funcs_
   {
-    FT_Error  (*init)( T1_Builder*   builder,
+    void      (*init)( T1_Builder*   builder,
                        FT_Face       face,
                        FT_Size       size,
                        FT_GlyphSlot  slot );
@@ -457,7 +457,7 @@
     void      (*done)( T1_Builder*   builder );
     
     T1_Builder_Check_Points_Func   check_points;
-    T1_Builder_Add_Points_Func     add_point;
+    T1_Builder_Add_Point_Func      add_point;
     T1_Builder_Add_Point1_Func     add_point1;
     T1_Builder_Add_Contour_Func    add_contour;
     T1_Builder_Start_Point_Func    start_point;
@@ -465,7 +465,6 @@
   
   } T1_Builder_Funcs;
 
-
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
@@ -476,10 +475,13 @@
 
   typedef struct  PSAux_Interface_
   {
-    const T1_Table_Funcs*    t1_table_funcs;
-    const T1_Parser_Funcs*   t1_parser_funcs;
-    const T1_Builder_Funcs*  t1_builder_funcs;
+    const PS_Table_Funcs*   t1_table_funcs;
+    const T1_Parser_Funcs*  t1_parser_funcs;
+    const T1_Builder_Funcs* t1_builder_funcs;
 
+    void                  (*t1_decrypt)( FT_Byte*   buffer,
+                                         FT_Int     length,
+                                         FT_UShort  seed );
   } PSAux_Interface;
 
 
--- a/src/psaux/psobjs.c
+++ b/src/psaux/psobjs.c
@@ -18,6 +18,7 @@
 
 #include <freetype/internal/psaux.h>
 #include <freetype/fterrors.h>
+#include <freetype/internal/ftdebug.h>
 
 #ifdef FT_FLAT_COMPILE
 
@@ -33,7 +34,7 @@
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
-  /*****                             T1_TABLE                          *****/
+  /*****                             PS_TABLE                          *****/
   /*****                                                               *****/
   /*************************************************************************/
   /*************************************************************************/
@@ -41,10 +42,10 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
-  /*    T1_New_Table                                                       */
+  /*    PS_Table_New                                                       */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    Initializes a T1_Table.                                            */
+  /*    Initialises a PS_Table.                                            */
   /*                                                                       */
   /* <InOut>                                                               */
   /*    table  :: The address of the target table.                         */
@@ -59,7 +60,7 @@
   /*    FreeType error code.  0 means success.                             */
   /*                                                                       */
   LOCAL_FUNC
-  FT_Error  T1_New_Table( T1_Table*  table,
+  FT_Error  PS_Table_New( PS_Table*  table,
                           FT_Int     count,
                           FT_Memory  memory )
   {
@@ -87,7 +88,7 @@
 
 
   static
-  void  shift_elements( T1_Table*  table,
+  void  shift_elements( PS_Table*  table,
                         FT_Byte*   old_base )
   {
     FT_Long    delta  = table->block - old_base;
@@ -105,7 +106,7 @@
 
 
   static
-  FT_Error  reallocate_t1_table( T1_Table*  table,
+  FT_Error  reallocate_t1_table( PS_Table*  table,
                                  FT_Int     new_size )
   {
     FT_Memory  memory   = table->memory;
@@ -130,10 +131,10 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
-  /*    T1_Add_Table                                                       */
+  /*    PS_Table_Add                                                       */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    Adds an object to a T1_Table, possibly growing its memory block.   */
+  /*    Adds an object to a PS_Table, possibly growing its memory block.   */
   /*                                                                       */
   /* <InOut>                                                               */
   /*    table  :: The target table.                                        */
@@ -150,7 +151,7 @@
   /*    reallocation fails.                                                */
   /*                                                                       */
   LOCAL_DEF
-  FT_Error  T1_Add_Table( T1_Table*  table,
+  FT_Error  PS_Table_Add( PS_Table*  table,
                           FT_Int     index,
                           void*      object,
                           FT_Int     length )
@@ -157,7 +158,7 @@
   {
     if ( index < 0 || index > table->max_elems )
     {
-      FT_ERROR(( "T1_Add_Table: invalid index\n" ));
+      FT_ERROR(( "PS_Table_Add: invalid index\n" ));
       return FT_Err_Invalid_Argument;
     }
 
@@ -189,10 +190,10 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
-  /*    T1_Done_Table                                                      */
+  /*    PS_Table_Done                                                      */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    Finalizes a T1_Table (i.e., reallocate it to its current cursor).  */
+  /*    Finalizes a PS_Table (i.e., reallocate it to its current cursor).  */
   /*                                                                       */
   /* <InOut>                                                               */
   /*    table :: The target table.                                         */
@@ -202,7 +203,7 @@
   /*    to the caller to clean it, or reference it in its own structures.  */
   /*                                                                       */
   LOCAL_FUNC
-  void  T1_Done_Table( T1_Table*  table )
+  void  PS_Table_Done( PS_Table*  table )
   {
     FT_Memory  memory = table->memory;
     FT_Error   error;
@@ -223,7 +224,7 @@
 
 
   LOCAL_FUNC
-  void  T1_Release_Table( T1_Table*  table )
+  void  PS_Table_Release( PS_Table*  table )
   {
     FT_Memory  memory = table->memory;
 
@@ -1005,7 +1006,7 @@
   {
     parser->error  = 0;
     parser->base   = base;
-    parser->limit  = base;
+    parser->limit  = limit;
     parser->cursor = base;
     parser->memory = memory;
   }                            
@@ -1029,7 +1030,7 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
-  /*    T1_Init_Builder                                                    */
+  /*    T1_Builder_Init                                                    */
   /*                                                                       */
   /* <Description>                                                         */
   /*    Initializes a given glyph builder.                                 */
@@ -1044,8 +1045,8 @@
   /*                                                                       */
   /*    glyph   :: The current glyph object.                               */
   /*                                                                       */
-  LOCALFUNC
-  void  T1_Init_Builder( T1_Builder*   builder,
+  LOCAL_FUNC
+  void  T1_Builder_Init( T1_Builder*   builder,
                          FT_Face       face,
                          FT_Size       size,
                          FT_GlyphSlot  glyph )
@@ -1055,11 +1056,11 @@
 
     builder->face   = face;
     builder->glyph  = glyph;
-    builder->memory = face->root.memory;
+    builder->memory = face->memory;
 
     if ( glyph )
     {
-      FT_GlyphLoader*  loader = glyph->root.loader;
+      FT_GlyphLoader*  loader = glyph->loader;
 
 
       builder->loader  = loader;
@@ -1087,7 +1088,7 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
-  /*    T1_Done_Builder                                                    */
+  /*    T1_Builder_Done                                                    */
   /*                                                                       */
   /* <Description>                                                         */
   /*    Finalizes a given glyph builder.  Its contents can still be used   */
@@ -1097,14 +1098,14 @@
   /* <Input>                                                               */
   /*    builder :: A pointer to the glyph builder to finalize.             */
   /*                                                                       */
-  LOCALFUNC
-  void  T1_Done_Builder( T1_Builder*  builder )
+  LOCAL_FUNC
+  void  T1_Builder_Done( T1_Builder*  builder )
   {
-    T1_GlyphSlot  glyph = builder->glyph;
+    FT_GlyphSlot  glyph = builder->glyph;
 
 
     if ( glyph )
-      glyph->root.outline = *builder->base;
+      glyph->outline = *builder->base;
   }
 
 
@@ -1152,9 +1153,9 @@
     FT_Error  error;
 
 
-    error = check_points( builder, 1 );
+    error = T1_Builder_Check_Points( builder, 1 );
     if ( !error )
-      add_point( builder, x, y, 1 );
+      T1_Builder_Add_Point( builder, x, y, 1 );
 
     return error;
   }
@@ -1171,7 +1172,7 @@
     if ( !builder->load_points )
     {
       outline->n_contours++;
-      return T1_Err_Ok;
+      return FT_Err_Ok;
     }
 
     error = FT_GlyphLoader_Check_Points( builder->loader, 0, 1 );
@@ -1200,9 +1201,9 @@
     if ( !builder->path_begun )
     {
       builder->path_begun = 1;
-      error = add_contour( builder );
+      error = T1_Builder_Add_Contour( builder );
       if ( !error )
-        error = add_point1( builder, x, y );
+        error = T1_Builder_Add_Point1( builder, x, y );
     }
     return error;
   }
@@ -1245,7 +1246,6 @@
   /*****                                                               *****/
   /*************************************************************************/
   /*************************************************************************/
-
 
   LOCAL_FUNC
   void  T1_Decrypt( FT_Byte*   buffer,
--- a/src/psaux/psobjs.h
+++ b/src/psaux/psobjs.h
@@ -37,21 +37,22 @@
 
 
   LOCAL_DEF
-  FT_Error  T1_New_Table( T1_Table*  table,
+  FT_Error  PS_Table_New( PS_Table*  table,
                           FT_Int     count,
                           FT_Memory  memory );
  
   LOCAL_DEF
-  FT_Error  T1_Add_Table( T1_Table*  table,
+  FT_Error  PS_Table_Add( PS_Table*  table,
                           FT_Int     index,
                           void*      object,
                           FT_Int     length );
 
   LOCAL_DEF
-  void  T1_Done_Table( T1_Table*  table );
+  void      PS_Table_Done( PS_Table*  table );
 
+
   LOCAL_DEF
-  void  T1_Release_Table( T1_Table*  table );
+  void      PS_Table_Release( PS_Table*  table );
 
 
   /*************************************************************************/
@@ -115,14 +116,68 @@
 
 
   LOCAL_DEF
-  void  T1_Init_Parser( T1_Parser*  parser,
-                        FT_Byte*    base,
-                        FT_Byte*    limit,
-                        FT_Memory   memory );
+  void      T1_Init_Parser( T1_Parser*  parser,
+                            FT_Byte*    base,
+                            FT_Byte*    limit,
+                            FT_Memory   memory );
 
   LOCAL_DEF
-  void  T1_Done_Parser( T1_Parser*  parser )
+  void      T1_Done_Parser( T1_Parser*  parser );
 
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                            T1 BUILDER                         *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+  LOCAL_DEF
+  void  T1_Builder_Init( T1_Builder*   builder,
+                         FT_Face       face,
+                         FT_Size       size,
+                         FT_GlyphSlot  glyph );
+
+  LOCAL_DEF
+  void  T1_Builder_Done( T1_Builder*  builder );
+  
+  LOCAL_DEF
+  FT_Error  T1_Builder_Check_Points( T1_Builder*  builder,
+                                     FT_Int       count );
+  
+  LOCAL_DEF
+  void  T1_Builder_Add_Point( T1_Builder*  builder,
+                              FT_Pos       x,
+                              FT_Pos       y,
+                              FT_Byte      flag );
+
+  LOCAL_DEF
+  FT_Error  T1_Builder_Add_Point1( T1_Builder*  builder,
+                                   FT_Pos       x,
+                                   FT_Pos       y );
+                                   
+  LOCAL_DEF
+  FT_Error  T1_Builder_Add_Contour( T1_Builder*  builder );
+  
+
+  LOCAL_DEF
+  FT_Error  T1_Builder_Start_Point( T1_Builder*  builder,
+                                    FT_Pos       x,
+                                    FT_Pos       y );
+
+
+  LOCAL_DEF
+  void  T1_Builder_Close_Contour( T1_Builder*  builder );
+
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                            OTHER                              *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
 
   LOCAL_DEF
   void  T1_Decrypt( FT_Byte*   buffer,