shithub: freetype+ttf2subf

Download patch

ref: 7880dd6630a77a1465681473ff00b3735d466e3f
parent: ecbfb5fa9a8f2a9a4649eaead8e0092d60512a49
author: Werner Lemberg <[email protected]>
date: Mon Jan 10 12:19:45 EST 2000

ftcalc.c, ftextend.c, ftoutln.c, ftraster.c, ftstream.c:
  Removing trailing spaces.

ftlist.h:
  Removing duplicated documentation (which is in ftlist.c also).

ftinit.c, ftlist.c, ftobjs.c:
  Formatting, adding documentation.

git/fs: mount .git/fs: mount/attach disallowed
--- a/src/base/ftcalc.c
+++ b/src/base/ftcalc.c
@@ -55,7 +55,7 @@
   {
     FT_ULong  val, root, newroot, mask;
 
-    
+
     root = 0;
     mask = 0x40000000;
     val  = (FT_ULong)x;
@@ -73,11 +73,11 @@
       mask >>= 2;
     }
     while ( mask != 0 );
-    
+
     return root;
   }
 
-  
+
 #ifdef LONG64
 
 
@@ -203,7 +203,7 @@
       /* check for divide by 0 */
       q = 0x7FFFFFFF;
 
-    else 
+    else
       /* compute result directly */
       q = ((FT_Int64)a << 16) / b;
 
@@ -481,7 +481,7 @@
     {
       FT_Word32  lo1, hi1, lo2, hi2, lo, hi, i1, i2;
 
-    
+
       lo1 = x & 0x0000FFFF;  hi1 = x >> 16;
       lo2 = y & 0x0000FFFF;  hi2 = y >> 16;
 
--- a/src/base/ftextend.c
+++ b/src/base/ftextend.c
@@ -37,7 +37,7 @@
     FT_Int              num_extensions;
     FT_Long             cur_offset;
     FT_Extension_Class  classes[FT_MAX_EXTENSIONS];
-    
+
   } FT_Extension_Registry;
 
 
@@ -94,7 +94,7 @@
   {
     FT_Memory  memory = driver->memory;
 
-    
+
     FREE( driver->extensions );
     return FT_Err_Ok;
   }
@@ -128,11 +128,11 @@
       FT_Int               n   = registry->num_extensions;
       FT_Extension_Class*  cur = registry->classes + n;
 
-      
+
       if ( n >= FT_MAX_EXTENSIONS )
         return FT_Err_Too_Many_Extensions;
 
-      *cur = *class;    
+      *cur = *class;
 
       cur->offset  = registry->cur_offset;
 
@@ -167,11 +167,11 @@
   EXPORT_FUNC
   void*  FT_Get_Extension( FT_Face      face,
                            const char*  extension_id,
-                           void*       *extension_interface ) 
+                           void*       *extension_interface )
   {
     FT_Extension_Registry*  registry;
 
-    
+
     registry = (FT_Extension_Registry*)face->driver->extensions;
     if ( registry && face->extensions )
     {
@@ -178,7 +178,7 @@
       FT_Extension_Class*  cur   = registry->classes;
       FT_Extension_Class*  limit = cur + registry->num_extensions;
 
-      
+
       for ( ; cur < limit; cur++ )
         if ( strcmp( cur->id, extension_id ) == 0 )
         {
@@ -186,7 +186,7 @@
           return (void*)((char*)face->extensions + cur->offset);
         }
     }
-    
+
     /* could not find the extension id */
 
     *extension_interface = 0;
@@ -217,7 +217,7 @@
     FT_Extension_Registry*  registry;
     FT_Memory               memory;
 
- 
+
     registry = (FT_Extension_Registry*)face->driver->extensions;
     if ( registry && face->extensions )
     {
@@ -224,15 +224,15 @@
       FT_Extension_Class*  cur   = registry->classes;
       FT_Extension_Class*  limit = cur + registry->num_extensions;
 
-      
+
       for ( ; cur < limit; cur++ )
       {
         char*  ext = (char*)face->extensions + cur->offset;
-        
+
         if ( cur->finalize )
           cur->finalize( ext, face );
       }
-      
+
       memory = face->driver->memory;
       FREE( face->extensions );
     }
@@ -266,28 +266,28 @@
     FT_Memory               memory;
     FT_Error                error;
 
-    
+
     face->extensions = 0;
-    
+
     /* load extensions registry, exit successfully if none is there */
 
     registry = (FT_Extension_Registry*)face->driver->extensions;
     if ( !registry )
       return FT_Err_Ok;
-    
+
     memory = face->driver->memory;
     if ( ALLOC( face->extensions, registry->cur_offset ) )
       return error;
-      
+
     {
       FT_Extension_Class*  cur   = registry->classes;
       FT_Extension_Class*  limit = cur + registry->num_extensions;
 
-      
+
       for ( ; cur < limit; cur++ )
       {
         char*  ext = (char*)face->extensions + cur->offset;
-        
+
         if ( cur->init )
         {
           error = cur->init( ext, face );
--- a/src/base/ftinit.c
+++ b/src/base/ftinit.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType initialisation layer (body).                                */
 /*                                                                         */
-/*  Copyright 1996-1999 by                                                 */
+/*  Copyright 1996-2000 by                                                 */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used        */
@@ -15,38 +15,32 @@
 /*                                                                         */
 /***************************************************************************/
 
- /**************************************************************************
-  *
-  *  The purpose of this file is to implement the three following
-  *  functions:
-  *
-  *	 FT_Default_Drivers:
-  *		This function is used to add the set of default drivers
-  *		to a fresh new library object. The set is computed at compile
-  *		time from the Makefiles inclusions in Makefile.lib. See the
-  *		document "FreeType Internals" for more info.
-  *
-  *
-  *	 FT_Init_FreeType:
-  *		This function creates a system object for the current platform,
-  *		builds a library out of it, then calls FT_Default_Drivers
-  *
-  *
-  *	 FT_Done_FreeType:
-  *		This function simply finalise the library and the corresponding
-  *		system object.
-  *
-  *
-  *	 Note that even if FT_Init_FreeType uses the implementation of the
-  *	 system object defined at build time, client applications are still
-  *	 able to provide their own "ftsystem.c"
-  *
-  *
-  *
-  *
-  *
-  ************************************************************************/
+  /*************************************************************************/
+  /*                                                                       */
+  /*  The purpose of this file is to implement the three following         */
+  /*  functions:                                                           */
+  /*                                                                       */
+  /*  FT_Default_Drivers:                                                  */
+  /*     This function is used to add the set of default drivers to a      */
+  /*     fresh new library object.  The set is computed at compile time    */
+  /*     from the Makefiles inclusions in Makefile.lib.  See the document  */
+  /*     `FreeType Internals' for more info.                               */
+  /*                                                                       */
+  /*  FT_Init_FreeType:                                                    */
+  /*     This function creates a system object for the current platform,   */
+  /*     builds a library out of it, then calls FT_Default_Drivers().      */
+  /*                                                                       */
+  /*  FT_Done_FreeType:                                                    */
+  /*     This function simply finalizes the library and the corresponding  */
+  /*     system object.                                                    */
+  /*                                                                       */
+  /*  Note that even if FT_Init_FreeType() uses the implementation of the  */
+  /*  system object defined at build time, client applications are still   */
+  /*  able to provide their own `ftsystem.c'.                              */
+  /*                                                                       */
+  /*************************************************************************/
 
+
 #include <ftobjs.h>
 #include <ftconfig.h>
 #include <ftdebug.h>
@@ -56,18 +50,21 @@
 #define FT_COMPONENT  trace_init
 
 #undef  FT_DRIVER
-#define FT_DRIVER(x)  extern FT_DriverInterface x;
+#define FT_DRIVER( x )  extern FT_DriverInterface  x;
+
 #include <ftmodule.h>
 
 #undef  FT_DRIVER
-#define FT_DRIVER(x)  &x,
+#define FT_DRIVER( x )  &x,
 
 static
-const FT_DriverInterface*  ft_default_drivers[] = {
+const FT_DriverInterface*  ft_default_drivers[] =
+  {
 #include <ftmodule.h>
-  0
-};
+    0
+  };
 
+
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
@@ -76,7 +73,7 @@
   /* <Description>                                                         */
   /*    Adds the set of default drivers to a given library object.         */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    library :: A handle to a new library object.                       */
   /*                                                                       */
   EXPORT_FUNC
@@ -85,16 +82,15 @@
     FT_Error                   error;
     const FT_DriverInterface* *cur;
 
+
     cur = ft_default_drivers;
-    while (*cur)
+    while ( *cur )
     {
       error = FT_Add_Driver( library, *cur );
       /* notify errors, but don't stop */
-      if (error)
-      {
-        FT_ERROR(( "FT.Default_Drivers: cannot install `%s', error = %x\n",
+      if ( error )
+        FT_ERROR(( "FT.Default_Drivers: Cannot install `%s', error = %x\n",
                    (*cur)->driver_name, error ));
-      }
       cur++;
     }
   }
@@ -113,7 +109,7 @@
   /*    library :: A handle to a new library object.                       */
   /*                                                                       */
   /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
+  /*    FreeTyoe error code.  0 means success.                             */
   /*                                                                       */
   EXPORT_FUNC
   FT_Error  FT_Init_FreeType( FT_Library*  library )
@@ -121,22 +117,25 @@
     FT_Error   error;
     FT_Memory  memory;
 
-    /* First of all, allocate a new system object -this function is part */
-    /* of the system-specific component, i.e. ftsystem.c                 */
+
+    /* First of all, allocate a new system object - -this function is part */
+    /* of the system-specific component, i.e. `ftsystem.c'.                */
+
     memory = FT_New_Memory();
-    if (!memory)
+    if ( !memory )
     {
       FT_ERROR(( "FT_Init_FreeType:" ));
       FT_ERROR(( " cannot find memory manager" ));
       return FT_Err_Unimplemented_Feature;
     }
-    
+
     /* builds a library out of it, then fill it with the set of */
-    /* default drivers..										*/
+    /* default drivers.                                         */
+
     error = FT_New_Library( memory, library );
     if ( !error )
-      FT_Default_Drivers(*library);
-    
+      FT_Default_Drivers( *library );
+
     return error;
   }
 
--- a/src/base/ftlist.c
+++ b/src/base/ftlist.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Generic list support for FreeType (body).                            */
 /*                                                                         */
-/*  Copyright 1996-1999 by                                                 */
+/*  Copyright 1996-2000 by                                                 */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used        */
@@ -15,11 +15,10 @@
 /*                                                                         */
 /***************************************************************************/
 
-
   /*************************************************************************/
   /*                                                                       */
   /*  This file implements functions relative to list processing.  Its     */
-  /*  data structures are defined in freetype.h.                           */
+  /*  data structures are defined in `freetype.h'.                         */
   /*                                                                       */
   /*************************************************************************/
 
@@ -54,7 +53,7 @@
     cur = list->head;
     while ( cur )
     {
-      if (cur->data == data)
+      if ( cur->data == data )
         return cur;
 
       cur = cur->next;
@@ -70,7 +69,7 @@
   /*    FT_List_Add                                                        */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    Appends an element at the end of a list.                           */
+  /*    Appends an element to the end of a list.                           */
   /*                                                                       */
   /* <InOut>                                                               */
   /*    list :: A pointer to the parent list.                              */
@@ -222,7 +221,7 @@
   /*                argument to the iterator.                              */
   /*                                                                       */
   /* <Return>                                                              */
-  /*    The result of the last iterator call.                              */
+  /*    The result (an error code) of the last iterator call.              */
   /*                                                                       */
   BASE_FUNC
   FT_Error  FT_List_Iterate( FT_List            list,
@@ -270,10 +269,10 @@
   /*               argument to the destructor.                             */
   /*                                                                       */
   BASE_FUNC
-  void  FT_List_Finalize( FT_List            list,
-                          FT_List_Destructor destroy,
-                          FT_Memory          memory,
-                          void*              user )
+  void  FT_List_Finalize( FT_List             list,
+                          FT_List_Destructor  destroy,
+                          FT_Memory           memory,
+                          void*               user )
   {
     FT_ListNode  cur;
 
--- a/src/base/ftlist.h
+++ b/src/base/ftlist.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Generic list support for FreeType (specification).                   */
 /*                                                                         */
-/*  Copyright 1996-1999 by                                                 */
+/*  Copyright 1996-2000 by                                                 */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used        */
@@ -15,11 +15,10 @@
 /*                                                                         */
 /***************************************************************************/
 
-
   /*************************************************************************/
   /*                                                                       */
   /*  This file implements functions relative to list processing.  Its     */
-  /*  data structures are defined in freetype.h.                           */
+  /*  data structures are defined in `freetype.h'.                         */
   /*                                                                       */
   /*************************************************************************/
 
@@ -34,93 +33,22 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Find                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finds the list node for a given listed object.                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    list :: A pointer to the parent list.                              */
-  /*    data :: The address of the listed object.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    List node.  NULL if it wasn't found.                               */
-  /*                                                                       */
   EXPORT_DEF
   FT_ListNode  FT_List_Find( FT_List  list,
                              void*    data );
 
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Add                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Appends an element at the end of a list.                           */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    list :: A pointer to the parent list.                              */
-  /*    node :: The node to append.                                        */
-  /*                                                                       */
   EXPORT_DEF
   void  FT_List_Add( FT_List      list,
                      FT_ListNode  node );
 
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Insert                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Inserts an element at the head of a list.                          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    list :: A pointer to parent list.                                  */
-  /*    node :: The node to insert.                                        */
-  /*                                                                       */
   EXPORT_DEF
   void  FT_List_Insert( FT_List      list,
                         FT_ListNode  node );
 
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Remove                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Removes a node from a list.  This function doesn't check whether   */
-  /*    the node is in the list!                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    node :: The node to remove.                                        */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    list :: A pointer to the parent list.                              */
-  /*                                                                       */
   EXPORT_DEF
   void  FT_List_Remove( FT_List      list,
                         FT_ListNode  node );
 
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Up                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Moves a node to the head/top of a list.  Used to maintain LRU      */
-  /*    lists.                                                             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    list :: A pointer to the parent list.                              */
-  /*    node :: The node to move.                                          */
-  /*                                                                       */
   EXPORT_DEF
   void  FT_List_Up( FT_List      list,
                     FT_ListNode  node );
@@ -144,26 +72,6 @@
                                          void*        user );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Iterate                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Parses a list and calls a given iterator function on each element. */
-  /*    Note that parsing is stopped as soon as one of the iterator calls  */
-  /*    returns a non-zero value.                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    list     :: A handle to the list.                                  */
-  /*    iterator :: An interator function, called on each node of the      */
-  /*                list.                                                  */
-  /*    user     :: A user-supplied field which is passed as the second    */
-  /*                argument to the iterator.                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The result of the last iterator call.                              */
-  /*                                                                       */
   EXPORT_DEF
   FT_Error  FT_List_Iterate( FT_List           list,
                              FT_List_Iterator  iterator,
@@ -177,7 +85,7 @@
   /*                                                                       */
   /* <Description>                                                         */
   /*    An FT_List iterator function which is called during a list         */
-  /*    finalisation by FT_List_Finalize() to destroy all elements in a    */
+  /*    finalization by FT_List_Finalize() to destroy all elements in a    */
   /*    given list.                                                        */
   /*                                                                       */
   /* <Input>                                                               */
@@ -184,7 +92,7 @@
   /*    system :: The current system object.                               */
   /*    data   :: The current object to destroy.                           */
   /*    user   :: A typeless pointer passed to FT_List_Iterate().  It can  */
-  /*              used to point to the iteration's state.                  */
+  /*              be used to point to the iteration's state.               */
   /*                                                                       */
   typedef void  (*FT_List_Destructor)( FT_Memory  memory,
                                        void*      data,
@@ -191,26 +99,6 @@
                                        void*      user );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Finalize                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroys all elements in the list as well as the list itself.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    list    :: A handle to the list.                                   */
-  /*                                                                       */
-  /*    destroy :: A list destructor that will be applied to each element  */
-  /*               of the list.                                            */
-  /*                                                                       */
-  /*    system  :: The current system object where destructions take       */
-  /*               place.                                                  */
-  /*                                                                       */
-  /*    user    :: A user-supplied field which is passed as the last       */
-  /*               argument to the destructor.                             */
-  /*                                                                       */
   EXPORT_DEF
   void  FT_List_Finalize( FT_List             list,
                           FT_List_Destructor  destroy,
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*  The FreeType private base classes (base).                              */
 /*                                                                         */
-/*  Copyright 1996-1999 by                                                 */
+/*  Copyright 1996-2000 by                                                 */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg                       */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used        */
@@ -20,6 +20,8 @@
 #include <ftdebug.h>
 #include <ftstream.h>
 
+
+
   /*************************************************************************/
   /*************************************************************************/
   /*************************************************************************/
@@ -35,7 +37,7 @@
   /*************************************************************************/
   /*                                                                       */
   /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the PTRACE() and PERROR() macros, used to print/log      */
+  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
   /* messages during execution.                                            */
   /*                                                                       */
 #undef  FT_COMPONENT
@@ -71,13 +73,13 @@
   {
     FT_Assert( P != 0 );
 
-    if (size > 0)
+    if ( size > 0 )
     {
       *P = memory->alloc( memory, size );
-      if (!*P)
+      if ( !*P )
       {
         FT_ERROR(( "FT.Alloc:" ));
-        FT_ERROR(( " out of memory ? (%ld requested)\n",
+        FT_ERROR(( " Out of memory? (%ld requested)\n",
                    size ));
 
         return FT_Err_Out_Of_Memory;
@@ -109,7 +111,7 @@
   /*              occurs.                                                  */
   /*                                                                       */
   /*    current :: current block size in bytes                             */
-  /*    size    :: the new block size in bytes                              */
+  /*    size    :: the new block size in bytes                             */
   /*                                                                       */
   /* <InOut>                                                               */
   /*    P      :: A pointer to the fresh new block.  It should be set to   */
@@ -122,10 +124,10 @@
   /*    All callers of FT_Realloc _must_ provide the current block size    */
   /*    as well as the new one.                                            */
   /*                                                                       */
-  /*    When the memory object's flag FT_SYSTEM_FLAG_NO_REALLOC is         */
-  /*    set, this function will try to emulate a realloc through uses      */
-  /*    of FT_Alloc and FT_Free. Otherwise, it will call the system-       */
-  /*    specific "realloc" implementation.                                 */
+  /*    If the memory object's flag FT_SYSTEM_FLAG_NO_REALLOC is set, this */
+  /*    function will try to emulate a reallocation using FT_Alloc() and   */
+  /*    FT_Free().  Otherwise, it will call the system-specific `realloc'  */
+  /*    implementation.                                                    */
   /*                                                                       */
   /*    (Some embedded systems do not have a working realloc).             */
   /*                                                                       */
@@ -137,6 +139,7 @@
   {
     void*  Q;
 
+
     FT_Assert( P != 0 );
 
     /* if the original pointer is NULL, call FT_Alloc() */
@@ -151,7 +154,8 @@
     }
 
     Q = memory->realloc( memory, current, size, *P );
-    if ( !Q ) goto Fail;
+    if ( !Q )
+      goto Fail;
 
     *P = Q;
     return FT_Err_Ok;
@@ -158,7 +162,7 @@
 
   Fail:
     FT_ERROR(( "FT.Realloc:" ));
-    FT_ERROR(( " failed (current %ld, requested %ld)\n",
+    FT_ERROR(( " Failed (current %ld, requested %ld)\n",
                current, size ));
     return FT_Err_Out_Of_Memory;
   }
@@ -189,7 +193,7 @@
   /*                                                                       */
   BASE_FUNC
   void  FT_Free( FT_Memory  memory,
-                     void*     *P )
+                 void*     *P )
   {
     FT_TRACE2(( "FT_Free:" ));
     FT_TRACE2(( " Freeing block 0x%08lx, ref 0x%08lx\n",
@@ -196,7 +200,7 @@
                 (long)P, (P ? (long)*P : -1) ));
 
     FT_Assert( P != 0 );
-    
+
     if ( *P )
     {
       memory->free( memory, *P );
@@ -204,6 +208,8 @@
     }
   }
 
+
+
   /*************************************************************************/
   /*************************************************************************/
   /*************************************************************************/
@@ -216,48 +222,48 @@
   /*************************************************************************/
   /*************************************************************************/
 
-      /* destructor for sizes list */
-      static
-      void  destroy_size( FT_Memory  memory,
-                          FT_Size    size,
-                          FT_Driver  driver )
-      {
-        /* finalize format-specific stuff */
-        driver->interface.done_size( size );
-        FREE( size );
-      }
+  /* destructor for sizes list */
+  static
+  void  destroy_size( FT_Memory  memory,
+                      FT_Size    size,
+                      FT_Driver  driver )
+  {
+    /* finalize format-specific stuff */
+    driver->interface.done_size( size );
+    FREE( size );
+  }
 
 
-      /* destructor for faces list */
-      static
-      void  destroy_face( FT_Memory  memory,
-                          FT_Face    face,
-                          FT_Driver  driver )
-      {
-        /* Discard glyph slots for this face                                */
-        /* XXX: Beware!  FT_Done_GlyphSlot() changes the field `face->slot' */
-        while ( face->glyph )
-          FT_Done_GlyphSlot( face->glyph );
-    
-        /* Discard all sizes for this face */
-        FT_List_Finalize( &face->sizes_list,
-                         (FT_List_Destructor)destroy_size,
-                         memory,
-                         driver );
-        face->size = 0;
-    
-        /* finalize format-specific stuff */
-        driver->interface.done_face( face );
-    
-        /* Now discard client data */
-        if ( face->generic.finalizer )
-          face->generic.finalizer( face );
-    
-        /* get rid of it */
-        FREE( face );
-      }
+  /* destructor for faces list */
+  static
+  void  destroy_face( FT_Memory  memory,
+                      FT_Face    face,
+                      FT_Driver  driver )
+  {
+    /* Discard glyph slots for this face                                */
+    /* XXX: Beware!  FT_Done_GlyphSlot() changes the field `face->slot' */
+    while ( face->glyph )
+      FT_Done_GlyphSlot( face->glyph );
 
+    /* Discard all sizes for this face */
+    FT_List_Finalize( &face->sizes_list,
+                     (FT_List_Destructor)destroy_size,
+                     memory,
+                     driver );
+    face->size = 0;
 
+    /* finalize format-specific stuff */
+    driver->interface.done_face( face );
+
+    /* Now discard client data */
+    if ( face->generic.finalizer )
+      face->generic.finalizer( face );
+
+    /* get rid of it */
+    FREE( face );
+  }
+
+
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
@@ -267,20 +273,18 @@
   /*    Destroys a given driver object.  This also destroys all child      */
   /*    faces.                                                             */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    driver :: A handle to the target driver object.                    */
   /*                                                                       */
-  /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
-  /*                                                                       */
   /* <Note>                                                                */
-  /*    The driver _must_ be LOCKED!                                      */
+  /*    The driver _must_ be LOCKED!                                       */
   /*                                                                       */
   static
-  void   Destroy_Driver( FT_Driver  driver )
+  void  Destroy_Driver( FT_Driver  driver )
   {
-    FT_Memory  memory  = driver->memory;
+    FT_Memory  memory = driver->memory;
 
+
     /* now, finalize all faces in the driver list */
     FT_List_Finalize( &driver->faces_list,
                       (FT_List_Destructor)destroy_face,
@@ -288,12 +292,12 @@
                       driver );
 
     /* finalize the driver object */
-    if (driver->interface.done_driver)
-      driver->interface.done_driver(driver);
+    if ( driver->interface.done_driver )
+      driver->interface.done_driver( driver );
 
     /* finalize client-data */
-    if (driver->generic.finalizer)
-      driver->generic.finalizer(driver);
+    if ( driver->generic.finalizer )
+      driver->generic.finalizer( driver );
 
     /* discard it */
     FREE( driver );
@@ -300,9 +304,21 @@
   }
 
 
-
-
-
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    FT_Get_Glyph_Format                                                */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Gets the glyph format for a given format tag.                      */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    library    :: A handle to the library object.                      */
+  /*    format_tag :: A tag identifying the glyph format.                  */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    A pointer to a glyph format.  0 if `format_tag' isn't defined.     */
+  /*                                                                       */
   BASE_FUNC
   FT_Glyph_Format*  FT_Get_Glyph_Format( FT_Library    library,
                                          FT_Glyph_Tag  format_tag )
@@ -309,13 +325,14 @@
   {
     FT_Glyph_Format*  cur   = library->glyph_formats;
     FT_Glyph_Format*  limit = cur + FT_MAX_GLYPH_FORMATS;
-    
+
+
     for ( ; cur < limit; cur ++ )
     {
       if ( cur->format_tag == format_tag )
         return cur;
     }
-    
+
     return 0;
   }
 
@@ -326,18 +343,19 @@
   /*    FT_Set_Raster                                                      */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    This function is used to change the raster module used to convert  */
-  /*    from a given memory object.  It is thus possible to use libraries  */
-  /*    with distinct memory allocators within the same program.           */
+  /*    This function changes the raster module used to convert from a     */
+  /*    given memory object.  It is thus possible to use libraries with    */
+  /*    distinct memory allocators within the same program.                */
   /*                                                                       */
   /* <Input>                                                               */
-  /*    memory  :: A handle to the original memory object.                 */
+  /*    library   :: A handle to the library object.                       */
+  /*    interface :: A pointer to the interface of the new raster module.  */
   /*                                                                       */
   /* <Output>                                                              */
-  /*    library :: A handle to a new library object.                       */
+  /*    raster    :: A handle to the raster object.                        */
   /*                                                                       */
   /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
+  /*    FreeType error code.  0 means success.                             */
   /*                                                                       */
   EXPORT_FUNC
   FT_Error  FT_Set_Raster( FT_Library            library,
@@ -348,6 +366,7 @@
     FT_Error          error  = FT_Err_Ok;
     FT_Glyph_Format*  format;
 
+
     /* allocate the render pool if necessary */
     if ( !library->raster_pool &&
          ALLOC( library->raster_pool, FT_RENDER_POOL_SIZE ) )
@@ -355,37 +374,37 @@
 
     /* find the glyph formatter for the raster's format */
     format = FT_Get_Glyph_Format( library, interface->format_tag );
-    if (!format)
+    if ( !format )
     {
       error = FT_Err_Invalid_Argument;
       goto Exit;
     }
-    
+
     /* free previous raster object if necessary */
-    if (format->raster_allocated)
+    if ( format->raster_allocated )
     {
       FREE( format->raster );
       format->raster_allocated = 0;
     }
-    
+
     /* allocate new raster object is necessary */
-    if (!raster)
+    if ( !raster )
     {
       if ( ALLOC( raster, interface->size ) )
         goto Exit;
-        
+
       format->raster_allocated = 1;
     }
     format->raster           = raster;
     format->raster_interface = interface;
-    
+
     /* initialize the raster object */
     error = interface->init( raster,
                              (char*)library->raster_pool,
                              FT_RENDER_POOL_SIZE );
-    if (error)
+    if ( error )
     {
-      if (format->raster_allocated)
+      if ( format->raster_allocated )
       {
         FREE( format->raster );
         format->raster_allocated = 0;
@@ -396,54 +415,106 @@
     return error;
   }
 
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    FT_Set_Debug_Hook                                                  */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Sets a debug hook function for debugging the interpreter of a      */
+  /*    font format.                                                       */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    library     :: A handle to the library object.                     */
+  /*    hook_index  :: The index of the debug hook.  You should use the    */
+  /*                   values defined in ftobjs.h, e.g.                    */
+  /*                   FT_DEBUG_HOOK_TRUETYPE                              */
+  /*    debug_hook  :: The function used to debug the interpreter.         */
+  /*                                                                       */
+  /* <Note>                                                                */
+  /*    Currently, four debug hook slots are available, but only two (for  */
+  /*    the TrueType and the Type 1 interpreter) are defined.              */
+  /*                                                                       */
   EXPORT_FUNC
   void  FT_Set_Debug_Hook( FT_Library         library,
                            FT_UInt            hook_index,
                            FT_DebugHook_Func  debug_hook )
   {
-    if (hook_index < (sizeof(library->debug_hooks)/sizeof(void*)))
-    {
+    if ( hook_index < ( sizeof ( library->debug_hooks ) / sizeof ( void* ) ) )
       library->debug_hooks[hook_index] = debug_hook;
-    }
   }
-                           
-  
-  
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    FT_Add_Glyph_Format                                                */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Adds a glyph format to the library.                                */
+  /*                                                                       */
+  /* <InOut>                                                               */
+  /*    library :: A handle to the library object.                         */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    format  :: A pointer to the new glyph format.                      */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    FreeType error code.  0 means success.                             */
+  /*                                                                       */
   BASE_FUNC
   FT_Error  FT_Add_Glyph_Format( FT_Library        library,
                                  FT_Glyph_Format*  format )
   {
     FT_Glyph_Format*  new = 0;
-    
+
     {
-      FT_Glyph_Format*  cur = library->glyph_formats;
+      FT_Glyph_Format*  cur   = library->glyph_formats;
       FT_Glyph_Format*  limit = cur + FT_MAX_GLYPH_FORMATS;
-      
+
+
       for ( ; cur < limit; cur++ )
       {
         /* return an error if the format is already registered */
         if ( cur->format_tag == format->format_tag )
           return FT_Err_Invalid_Glyph_Format;
-          
+
         if ( cur->format_tag == 0 && new == 0 )
           new = cur;
       }
     }
-      
+
     /* if there is no place to hold the new format, return an error */
     if (!new)
       return FT_Err_Too_Many_Glyph_Formats;
-        
+
     *new = *format;
-    
+
     /* now, create a raster object if we need to */
     return FT_Set_Raster( library,
                           format->raster_interface,
                           format->raster );
   }
-  
 
 
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    FT_Remove_Glyph_Format                                             */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Removes a glyph format from the library.                           */
+  /*                                                                       */
+  /* <InOut>                                                               */
+  /*    library    :: A handle to the library object.                      */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    format_tag :: A tag identifying the format to be removed.          */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    FreeType error code.  0 means success.                             */
+  /*                                                                       */
   BASE_FUNC
   FT_Error  FT_Remove_Glyph_Format( FT_Library    library,
                                     FT_Glyph_Tag  format_tag )
@@ -451,14 +522,15 @@
     FT_Memory         memory;
     FT_Glyph_Format*  cur   = library->glyph_formats;
     FT_Glyph_Format*  limit = cur + FT_MAX_GLYPH_FORMATS;
-    
+
+
     memory = library->memory;
-    
+
     for ( ; cur < limit; cur++ )
     {
-      if (cur->format_tag == format_tag)
+      if ( cur->format_tag == format_tag )
       {
-        if (cur->raster_allocated)
+        if ( cur->raster_allocated )
         {
           FREE( cur->raster );
           cur->raster_allocated = 0;
@@ -467,7 +539,7 @@
         return FT_Err_Ok;
       }
     }
-    
+
     return FT_Err_Invalid_Argument;
   }
 
@@ -483,13 +555,13 @@
   /*    with distinct memory allocators within the same program.           */
   /*                                                                       */
   /* <Input>                                                               */
-  /*    memory  :: A handle to the original memory object.                 */
+  /*    memory   :: A handle to the original memory object.                */
   /*                                                                       */
   /* <Output>                                                              */
-  /*    library :: A handle to a new library object.                       */
+  /*    alibrary :: A pointer to handle of a new library object.           */
   /*                                                                       */
   /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
+  /*    FreeType error code.  0 means success.                             */
   /*                                                                       */
   EXPORT_FUNC
   FT_Error  FT_New_Library( FT_Memory    memory,
@@ -498,6 +570,7 @@
     FT_Library library      = 0;
     FT_Error   error;
 
+
     /* First of all, allocate the library object */
     if ( ALLOC( library, sizeof ( *library ) ) )
       return error;
@@ -513,7 +586,8 @@
         0,
         0
       };
-      
+
+
       error = FT_Add_Glyph_Format( library, &outline_format );
     }
 
@@ -537,7 +611,7 @@
   /*    library :: A handle to the target library                          */
   /*                                                                       */
   /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
+  /*    FreeType error code.  0 means success.                             */
   /*                                                                       */
   EXPORT_FUNC
   FT_Error  FT_Done_Library( FT_Library  library )
@@ -552,7 +626,7 @@
     memory = library->memory;
 
     /* Discard client-data */
-    if( library->generic.finalizer )
+    if ( library->generic.finalizer )
       library->generic.finalizer( library );
 
     /* Close all drivers in the library */
@@ -560,6 +634,7 @@
     {
       FT_Driver  driver = library->drivers[n];
 
+
       if ( driver )
       {
         Destroy_Driver( driver );
@@ -569,11 +644,12 @@
 
     /* Destroy raster object */
     FREE( library->raster_pool   );
-    
+
     {
-      FT_Glyph_Format*  cur = library->glyph_formats;
+      FT_Glyph_Format*  cur   = library->glyph_formats;
       FT_Glyph_Format*  limit = cur + FT_MAX_GLYPH_FORMATS;
-      
+
+
       for ( ; cur < limit; cur++ )
       {
         if ( cur->raster_allocated )
@@ -596,15 +672,18 @@
   /*    FT_Set_Raster_Mode                                                 */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    Set a raster-specific mode.                                        */
+  /*    Sets a raster-specific mode.                                       */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    library :: A handle to a target library object.                    */
-  /*    format  :: the glyph format used to select the raster              */
-  /*    mode    :: the raster-specific mode descriptor                     */
-  /*    args    :: the mode arguments                                      */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    format  :: The glyph format used to select the raster.             */
+  /*    mode    :: The raster-specific mode descriptor.                    */
+  /*    args    :: The mode arguments.                                     */
+  /*                                                                       */
   /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
+  /*    FreeType error code.  0 means success.                             */
   /*                                                                       */
   EXPORT_FUNC
   FT_Error  FT_Set_Raster_Mode( FT_Library    library,
@@ -616,13 +695,15 @@
     FT_Error          error;
     FT_Glyph_Format*  format = 0;
 
+
     {
       FT_Glyph_Format*  cur   = library->glyph_formats;
       FT_Glyph_Format*  limit = cur + FT_MAX_GLYPH_FORMATS;
-      
-      for (; cur < limit; cur++)
+
+
+      for ( ; cur < limit; cur++ )
       {
-        if (cur->format_tag == format_tag)
+        if ( cur->format_tag == format_tag )
         {
           format = cur;
           break;
@@ -630,14 +711,15 @@
       }
     }
 
-    if (!format)
+    if ( !format )
       return FT_Err_Invalid_Argument;
 
     memory = library->memory;
 
     error = FT_Err_Ok;
-    if (format->raster)
-      error = format->raster_interface->set_mode( format->raster, mode, args );
+    if ( format->raster )
+      error = format->raster_interface->set_mode( format->raster,
+                                                  mode, args );
 
     return error;
   }
@@ -650,16 +732,17 @@
   /*                                                                       */
   /* <Description>                                                         */
   /*    Registers a new driver in a given library object.  This function   */
-  /*    takes only a pointer to a driver interface.  It uses it to create  */
+  /*    takes only a pointer to a driver interface; it uses it to create   */
   /*    the new driver, then sets up some important fields.                */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    library          :: A handle to the target library object.         */
   /*                                                                       */
+  /* <Input>                                                               */
   /*    driver_interface :: A pointer to a driver interface table.         */
   /*                                                                       */
   /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
+  /*    FreeType error code.  0 means success.                             */
   /*                                                                       */
   /* <Note>                                                                */
   /*    This function doesn't check whether the driver is already          */
@@ -673,6 +756,7 @@
     FT_Driver  driver;
     FT_Memory  memory;
 
+
     if ( !library || !driver_interface )
       return FT_Err_Invalid_Library_Handle;
 
@@ -690,10 +774,11 @@
       driver->memory    = memory;
       driver->interface = *driver_interface;
 
-      if (driver_interface->init_driver)
+      if ( driver_interface->init_driver )
       {
         error = driver_interface->init_driver( driver );
-        if ( error ) goto Fail;
+        if ( error )
+          goto Fail;
       }
 
       library->drivers[library->num_drivers++] = driver;
@@ -714,7 +799,7 @@
   /*    FT_Remove_Driver                                                   */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    Unregister a given driver.  This closes the driver, which in turn  */
+  /*    Unregisters a given driver.  This closes the driver, which in turn */
   /*    destroys all faces, sizes, slots, etc. associated with it.         */
   /*                                                                       */
   /*    This function also DESTROYS the driver object.                     */
@@ -723,7 +808,7 @@
   /*    driver :: A handle to target driver object.                        */
   /*                                                                       */
   /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
+  /*    FreeType error code.  0 means success.                             */
   /*                                                                       */
   EXPORT_FUNC
   FT_Error  FT_Remove_Driver( FT_Driver  driver )
@@ -756,7 +841,7 @@
         Destroy_Driver( driver );
 
         /* now move the last driver in the table to the vacant slot */
-        if (cur < last)
+        if ( cur < last )
         {
           *cur  = *last;
           *last = 0;
@@ -778,15 +863,15 @@
   /*    FT_Get_Driver                                                      */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    returns the handle of the driver responsible for a given format    */
+  /*    Returns the handle of the driver responsible for a given format    */
   /*    (or service) according to its `name'.                              */
   /*                                                                       */
   /* <Input>                                                               */
-  /*    library     :: handle to library object.                           */
-  /*    driver_name :: name of driver to look-up.                          */
+  /*    library     :: A handle to the library object.                     */
+  /*    driver_name :: The name of the driver to look up.                  */
   /*                                                                       */
   /* <Return>                                                              */
-  /*    handle to driver object. 0 otherwise                               */
+  /*    A handle to the driver object,  0 otherwise.                       */
   /*                                                                       */
   EXPORT_FUNC
   FT_Driver  FT_Get_Driver( FT_Library  library,
@@ -793,10 +878,11 @@
                             char*       driver_name )
   {
     FT_Driver  *cur, *limit;
-    
-    if (!library || !driver_name)
+
+
+    if ( !library || !driver_name )
       return 0;
-      
+
     cur   = library->drivers;
     limit = cur + library->num_drivers;
     for ( ; cur < limit; cur++ )
@@ -808,7 +894,6 @@
   }
 
 
-
   static
   FT_Error  open_face( FT_Driver  driver,
                        FT_Stream  stream,
@@ -868,7 +953,7 @@
   /*    face       :: A handle to a new face object.                       */
   /*                                                                       */
   /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
+  /*    FreeType error code.  0 means success.                             */
   /*                                                                       */
   /* <Note>                                                                */
   /*    Unlike FreeType 1.1, this function automatically creates a glyph   */
@@ -894,29 +979,31 @@
     FT_Stream  stream;
     FT_Memory  memory;
     FT_Error   error;
-    
+
+
     memory = library->memory;
-    if ( ALLOC( stream, sizeof(*stream) ) )
+    if ( ALLOC( stream, sizeof ( *stream ) ) )
       goto Fail;
-      
+
     stream->memory = memory;
-    
+
     error = FT_New_Stream( pathname, stream );
     if (error) goto Fail_Stream;
-    
+
     error = FT_Open_Face( library, stream, face_index, aface );
-    if (!error)
+    if ( !error )
       return error;
 
     /* close stream in case of error */
     stream->close( stream );
-    
+
   Fail_Stream:
-    FREE(stream);
+    FREE( stream );
   Fail:
     return error;
   }
 
+
   EXPORT_FUNC
   FT_Error  FT_New_Memory_Face( FT_Library   library,
                                 void*        file_base,
@@ -927,15 +1014,15 @@
     FT_Stream  stream;
     FT_Memory  memory;
     FT_Error   error;
-    
+
     memory = library->memory;
     if ( ALLOC( stream, sizeof(*stream) ) )
       goto Fail;
-      
+
     stream->memory = memory;
-    
+
     FT_New_Memory_Stream( library, (void*)file_base, file_size, stream );
-    
+
     error = FT_Open_Face( library, stream, face_index, face );
     if (!error)
       return error;
@@ -945,7 +1032,7 @@
     return error;
   }
 
-  
+
   EXPORT_FUNC
   FT_Error  FT_Open_Face( FT_Library library,
                           FT_Stream  stream,
@@ -967,8 +1054,8 @@
 
     {
       /* check each font driver for an appropriate format */
-	  FT_Driver*  cur   = library->drivers;
-	  FT_Driver*  limit = cur + library->num_drivers;
+      FT_Driver*  cur   = library->drivers;
+      FT_Driver*  limit = cur + library->num_drivers;
 
       for ( ; cur < limit; cur++ )
       {
@@ -1019,7 +1106,7 @@
       error = FT_New_GlyphSlot( face, &slot );
       if ( error ) goto Fail;
     }
-    
+
     /****************************************************************/
     /* finally allocate a size object for the face                  */
     {
@@ -1029,7 +1116,7 @@
       error = FT_New_Size( face, &size );
       if ( error ) goto Fail;
     }
-    
+
     *aface = face;
     goto Exit;
 
@@ -1037,7 +1124,7 @@
     FT_Done_Face( face );
 
   Bad_Resource:
-    
+
   Exit:
     FT_TRACE4(( "FT_Open_Face: Return %d\n", error ));
     return error;
@@ -1148,7 +1235,7 @@
       *asize     = size;
       node->data = size;
       FT_List_Add( &face->sizes_list, node );
-      
+
       /* record as current size for the face */
       face->size = size;
     }
@@ -1259,13 +1346,13 @@
 
     if (!char_width)
       char_width = char_height;
-      
+
     else if (!char_height)
       char_height = char_width;
-      
+
     if (!horz_resolution)
       horz_resolution = 72;
-      
+
     if (!vert_resolution)
       vert_resolution = 72;
 
@@ -1367,7 +1454,7 @@
       goto Exit;
 
     slot->face = face;
-    
+
     slot->max_subglyphs = 0;
     slot->num_subglyphs = 0;
     slot->subglyphs     = 0;
@@ -1497,13 +1584,13 @@
     FT_Error   error;
     FT_Driver  driver;
     FT_UInt    glyph_index;
-    
+
     if (!face || !face->size || !face->glyph || !face->charmap )
       return FT_Err_Invalid_Face_Handle;
-      
+
     driver      = face->driver;
     glyph_index = FT_Get_Char_Index( face, char_code );
-    
+
     if (glyph_index == 0)
       error = FT_Err_Invalid_Character_Code;
     else
--- a/src/base/ftoutln.c
+++ b/src/base/ftoutln.c
@@ -107,17 +107,17 @@
   {
     FT_Error          error;
     FT_Glyph_Format*  format;
-    
+
     error  = FT_Err_Invalid_Glyph_Format;
     format = FT_Get_Glyph_Format( library, ft_glyph_format_outline );
     if (!format) goto Exit;
-    
+
     error = FT_Err_Invalid_Glyph_Format;
     if (!format->raster) goto Exit;
 
     error = format->raster_interface->render( format->raster, outline, map );
   Exit:
-    return error; 
+    return error;
   }
 
 
--- a/src/base/ftraster.c
+++ b/src/base/ftraster.c
@@ -683,7 +683,7 @@
 
     x = ras.cursor[-1];
 
-    switch ( ras.cur_prof->flow )  
+    switch ( ras.cur_prof->flow )
     {
     case FT_Flow_Up:
       o = Vio_ScanLineWidth *
@@ -1202,7 +1202,7 @@
       Ix --;
       Rx += Dy;
     }
-    
+
     Ax   = -Dy;
     Rx <<= 1;
     Dy <<= 1;
@@ -1332,7 +1332,7 @@
       e  = CEILING( y1 );   /* integer start y == current scanline */
       f1 = FRAC( y1 );      /* fractional shift of start y         */
       e0 = e;               /* first integer scanline to be pushed */
-      
+
       if ( f1 == 0 )        /* do we start on an integer scanline? */
       {
         if ( ras.joint )
@@ -1381,7 +1381,7 @@
       if ( y2 > e )   /* the arc intercepts the current scanline */
       {
         y1 = arc[degree].y;  /* start y of top-most arc */
-        
+
         if ( y2 - y1 >= ras.precision_step )
         {
           /* if the arc's height is too great, split it */
@@ -1726,7 +1726,7 @@
   {
     TPos  scaled_x, scaled_y;
 
-    
+
     /* if there was already a contour being built, perform some checks */
     if ( ras.start_prof )
       if ( Check_Contour( RAS_VAR ) )
@@ -1735,7 +1735,7 @@
     /* set the `current last point' */
     scaled_x = SCALED( to->x );
     scaled_y = SCALED( to->y );
-    
+
     if ( ras.flipped )
     {
       ras.last.x = scaled_y;
@@ -1803,7 +1803,7 @@
 
 
       if ( ras.state != new_state )
-      {      
+      {
         if ( ras.state != Unknown   &&
              End_Profile( RAS_VAR ) )
           goto Fail;
@@ -1811,7 +1811,7 @@
         if ( New_Profile( RAS_VAR_  new_state ) )
           goto Fail;
       }
-    }        
+    }
 
     /* Then compute the lines */
     switch ( ras.state )
@@ -1896,7 +1896,7 @@
         ymin = y3;
         ymax = y1;
       }
-      
+
       if ( y2 < ymin || y2 > ymax )
       {
         /* this arc has no given direction, split it !! */
@@ -1919,12 +1919,12 @@
           if ( ras.state != Unknown   &&
                End_Profile( RAS_VAR ) )
             goto Fail;
-            
+
           /* create a new profile */
           if ( New_Profile( RAS_VAR_ state_bez ) )
             goto Fail;
         }
-        
+
         /* now call the appropriate routine */
         if ( state_bez == Ascending )
         {
@@ -1934,7 +1934,7 @@
         else
           if ( Bezier_Down( RAS_VAR_  2, Split_Conic, ras.minY, ras.maxY ) )
             goto Fail;
-      }    
+      }
 
     } while ( ras.arc >= ras.arcs );
 
@@ -2023,7 +2023,7 @@
         ymin1 = y4;
         ymax1 = y1;
       }
-      
+
       if ( y2 <= y3 )
       {
         ymin2 = y2;
@@ -2034,7 +2034,7 @@
         ymin2 = y3;
         ymax2 = y2;
       }
-      
+
       if ( ymin2 < ymin1 || ymax2 > ymax1 )
       {
         /* this arc has no given direction, split it! */
@@ -2045,11 +2045,11 @@
       {
         /* this arc is flat, ignore it and pop it from the bezier stack */
         ras.arc -= 3;
-      }        
+      }
       else
       {
         state_bez = ( y1 <= y4 ) ? Ascending : Descending;
-     
+
         /* detect a change of direction */
         if ( ras.state != state_bez )
         {
@@ -2616,11 +2616,11 @@
   void  Vertical_Sweep_Init( RAS_ARG_ int*  min, int*  max )
   {
     long  pitch;
-    
+
     UNUSED( max );
 
     pitch          = ras.target.pitch;
-    
+
     /* start from the bottom line, going up !! */
     ras.trace_bit  = - *min * pitch;
     ras.trace_incr = -pitch;
@@ -2874,10 +2874,10 @@
         {
           long pitch  = ras.target.pitch;
           long offset = - pitch * e1;
-          
+
           if (pitch > 0)
             offset += (ras.target.rows-1)*pitch;
-            
+
           bits[offset] |= f1;
         }
       }
@@ -2906,10 +2906,10 @@
     int    f1     = (Byte)(0x80 >> (y & 7));
     long   pitch  = ras.target.pitch;
     long   offset = - pitch * x;
-    
+
     if (pitch > 0)
       offset += (ras.target.rows-1)*pitch;
-      
+
     return ( x >= 0 && x < ras.target.rows && (bits[0] & f1) );
   }
 
@@ -2943,9 +2943,9 @@
     {
       long pitch  = ras.target.pitch;
       long offset = - x*pitch;
-      
+
       if (pitch > 0)
-        offset += (ras.target.rows-1)*pitch; 
+        offset += (ras.target.rows-1)*pitch;
 
       bits[offset] |= f1;
     }
@@ -3009,15 +3009,15 @@
   void  Vertical_Gray_Sweep_Init( RAS_ARG_ int*  min, int*  max )
   {
     long  pitch;
-    
+
     UNUSED( max );
 
     pitch          = ras.target.pitch;
-    
+
     /* start from the bottom line, going up */
     ras.trace_incr = -pitch;
     ras.trace_bit  = - *min * pitch;
-    
+
     if (pitch > 0)
       ras.trace_bit += (ras.target.rows-1)*pitch;
   }
@@ -3050,8 +3050,8 @@
 
     x1 += ras.precision_half;
     x2 += ras.precision_half;
-   
-#ifdef FT_RASTER_OPTION_CONTRAST   
+
+#ifdef FT_RASTER_OPTION_CONTRAST
     if ( x2-x1 < ras.precision )
     {
 	  x1 = ((x1+x2) >> 1) - ras.precision_half;
@@ -3058,7 +3058,7 @@
 	  x2 = x1 + ras.precision;
 	}
 #endif
-        
+
     e1 = TRUNC( x1 );
     e2 = TRUNC( x2 );
 
@@ -3081,7 +3081,7 @@
 
       target = ras.bit_buffer + ras.trace_bit + e1;
       e2    -= e1;
-      
+
       if ( e2 > 0 )
       {
         if (x1 > 0) target[0] += (Byte)(64-x1) << 1;
@@ -3124,7 +3124,7 @@
 #if 0
     /* as a rule of thumb, do not add a drop-out if the current */
     /* gray level is over 0.5                                   */
-    
+
     return ( x >= 0 && x < ras.bit_width &&
              ras.bit_buffer[ras.trace_bit + x] >= 64 );
 #else
@@ -3158,9 +3158,9 @@
     if ( x >= 0 && x < ras.bit_width )
     {
       unsigned char*  pixel;
-      
+
       pixel = ras.bit_buffer + ras.trace_bit + x;
-      
+
       /* do not add too much to the pixel gray level */
       color += *pixel;
       if (color < 64)
@@ -3267,7 +3267,7 @@
     x1 += ras.precision_half;
     x2 += ras.precision_half;
 
-#ifdef FT_RASTER_OPTION_CONTRAST   
+#ifdef FT_RASTER_OPTION_CONTRAST
     if (x2-x1 < ras.precision)
 	{
 	  x1 = ((x1+x2) >> 1) - ras.precision_half;
@@ -3274,7 +3274,7 @@
 	  x2 = x1 + ras.precision;
 	}
 #endif
-        
+
     e1 = TRUNC( x1 );
     e2 = TRUNC( x2 );
 
@@ -3299,16 +3299,16 @@
       bits  = ras.bit_buffer + y;
       bits += incr * e1;
       if (incr < 0)
-        bits -= incr*(ras.target.rows-1); 
+        bits -= incr*(ras.target.rows-1);
 
       e2 -= e1;
-      
+
       if ( e2 > 0 )
       {
         b = bits[0];
         if (b < 127) b++;
         bits[0] = (64-x1) + (b >> 1);
-        
+
         if ( ras.precision > 64 )
         {
           e2--;
@@ -3316,16 +3316,16 @@
           {
             bits += incr;
             b     = bits[0];
-           
+
             if (b < 127)
-              bits[0] = (Byte)(63+((b+1) >> 1));  
-          
+              bits[0] = (Byte)(63+((b+1) >> 1));
+
             e2--;
           }
         }
         else
           bits += incr*(e2-1);
-          
+
         if (x2)
         {
           bits += incr;
@@ -3403,10 +3403,10 @@
     if ( x >= 0 && x < ras.target.rows )
     {
       long  pitch  = ras.target.pitch;
-      
+
       pixel -= pitch*x;
       if (pitch > 0)
-        pixel += pitch*(ras.target.rows-1); 
+        pixel += pitch*(ras.target.rows-1);
 
       color += *pixel;
       if (color < 64)
@@ -4273,7 +4273,7 @@
     /* clear anti-alias intermediate lines */
     {
       char*  p     = raster->gray_lines;
-      char*  limit = p + ANTI_ALIAS_BUFFER_SIZE; 
+      char*  limit = p + ANTI_ALIAS_BUFFER_SIZE;
 
       do *p++ = 0; while ( p < limit );
     }
@@ -4383,10 +4383,10 @@
   {
     sizeof( struct FT_RasterRec_ ),
     ft_glyph_format_outline,
-    
+
     (FT_Raster_Init_Proc)     FT_Raster_Init,
     (FT_Raster_Set_Mode_Proc) 0,
-    (FT_Raster_Render_Proc)   FT_Raster_Render    
+    (FT_Raster_Render_Proc)   FT_Raster_Render
   };
 
 
--- a/src/base/ftstream.c
+++ b/src/base/ftstream.c
@@ -26,9 +26,9 @@
                             FT_ULong   pos )
   {
     FT_Error  error;
-    
+
     stream->pos = pos;
-    
+
     if (stream->read)
     {
       if (stream->read( stream, pos, 0, 0 ))
@@ -51,14 +51,14 @@
       FT_ERROR(( " invalid i/o, pos = 0x%lx, size = 0x%lx\n",
                  pos, stream->size ));
     }
- 
+
     else
       error = FT_Err_Ok;
- 
-    return error; 
+
+    return error;
   }
-  
-  
+
+
   BASE_FUNC
   FT_Error  FT_Skip_Stream( FT_Stream  stream,
                             FT_Long    distance )
@@ -65,16 +65,16 @@
   {
     return FT_Seek_Stream( stream, (FT_ULong)(stream->pos + distance) );
   }
-  
-  
-  
+
+
+
   BASE_FUNC
   FT_Long   FT_Stream_Pos( FT_Stream  stream )
   {
     return stream->pos;
   }
-  
-  
+
+
   BASE_FUNC
   FT_Error  FT_Read_Stream( FT_Stream  stream,
                             void*      buffer,
@@ -82,8 +82,8 @@
   {
     return FT_Read_Stream_At( stream, stream->pos, buffer, count );
   }
-  
-  
+
+
   BASE_FUNC
   FT_Error  FT_Read_Stream_At( FT_Stream  stream,
                                FT_ULong   pos,
@@ -92,16 +92,16 @@
   {
     FT_Error  error = FT_Err_Ok;
     FT_ULong  read_bytes;
-    
+
     if (pos >= stream->size)
     {
       FT_ERROR(( "FT_Read_Stream_At:" ));
       FT_ERROR(( " invalid i/o, pos = 0x%lx, size = 0x%lx\n",
                  pos, stream->size ));
- 
+
       return FT_Err_Invalid_Stream_Operation;
     }
- 
+
     if (stream->read)
       read_bytes = stream->read( stream, pos, buffer, count );
     else
@@ -109,10 +109,10 @@
       read_bytes = stream->size - pos;
       if (read_bytes > count)
         read_bytes = count;
-      
+
       MEM_Copy( buffer, stream->base + pos, read_bytes );
     }
-    
+
     stream->pos = pos + read_bytes;
 
     if (read_bytes < count)
@@ -125,9 +125,9 @@
 
     return error;
   }
-  
-  
-  
+
+
+
   BASE_FUNC
   FT_Error  FT_Access_Frame( FT_Stream  stream,
                              FT_ULong   count )
@@ -136,25 +136,25 @@
     FT_ULong  read_bytes;
 
     /* check for nested frame access */
-    FT_Assert( stream && stream->cursor == 0 );    
-     
+    FT_Assert( stream && stream->cursor == 0 );
+
     if (stream->read)
     {
       /* allocate the frame in memory */
       FT_Memory  memory = stream->memory;
-        
+
       if ( ALLOC( stream->base, count ) )
         goto Exit;
-          
+
       /* read it */
       read_bytes = stream->read( stream, stream->pos,
-                                 stream->base, count ); 
+                                 stream->base, count );
       if (read_bytes < count)
       {
         FT_ERROR(( "FT_Access_Frame:" ));
         FT_ERROR(( " invalid read, expected %lu bytes, got %lu",
                    count, read_bytes ));
-                   
+
         FREE( stream->base );
         error = FT_Err_Invalid_Stream_Operation;
       }
@@ -170,13 +170,13 @@
         FT_ERROR(( "FT_Access_Frame:" ));
         FT_ERROR(( " invalid i/o, pos = 0x%lx, count = %lu, size = 0x%lx",
                    stream->pos, count, stream->size ));
-                   
+
         error = FT_Err_Invalid_Stream_Operation;
         goto Exit;
       }
-      
+
       /* set cursor */
-      stream->cursor = stream->base + stream->pos;      
+      stream->cursor = stream->base + stream->pos;
       stream->limit  = stream->cursor + count;
       stream->pos   += count;
     }
@@ -183,17 +183,17 @@
   Exit:
     return error;
   }
-  
-  
+
+
   BASE_FUNC
   void  FT_Forget_Frame( FT_Stream  stream )
   {
     FT_Assert( stream && stream->cursor != 0 );
-    
+
     if (stream->read)
     {
       FT_Memory  memory = stream->memory;
-      
+
       FREE( stream->base );
     }
     stream->cursor = 0;
@@ -205,25 +205,25 @@
   FT_Char  FT_Get_Char( FT_Stream  stream )
   {
     FT_Char  result;
-    
+
     FT_Assert( stream && stream->cursor && stream->cursor );
 
     result = 0;
-    if (stream->cursor < stream->limit)    
+    if (stream->cursor < stream->limit)
       result = *stream->cursor++;
-      
+
     return result;
   }
-  
-  
+
+
   BASE_FUNC
   FT_Short  FT_Get_Short( FT_Stream  stream )
   {
     char*     p;
     FT_Short  result;
-    
+
     FT_Assert( stream && stream->cursor );
-    
+
     result         = 0;
     p              = stream->cursor;
     if (p+1 < stream->limit)
@@ -231,16 +231,16 @@
     stream->cursor = p;
     return result;
   }
-  
 
+
   BASE_FUNC
   FT_Long  FT_Get_Offset( FT_Stream  stream )
   {
     char*    p;
     FT_Long  result;
-    
+
     FT_Assert( stream && stream->cursor );
-    
+
     result         = 0;
     p              = stream->cursor;
     if (p+2 < stream->limit)
@@ -248,17 +248,17 @@
     stream->cursor = p;
     return result;
   }
-  
 
+
   BASE_FUNC
   FT_Long  FT_Get_Long( FT_Stream  stream )
   {
     char*    p;
     FT_Long  result;
-    
+
     FT_Assert( stream && stream->cursor );
 
-    result         = 0;    
+    result         = 0;
     p              = stream->cursor;
     if (p+3 < stream->limit)
       result       = NEXT_Long(p);
@@ -265,18 +265,18 @@
     stream->cursor = p;
     return result;
   }
-  
- 
+
+
   BASE_FUNC
   FT_Char  FT_Read_Char( FT_Stream  stream,
                          FT_Error*  error )
   {
     char  result = 0;
-    
+
     FT_Assert( stream );
-    
+
     *error = FT_Err_Ok;
-    
+
     if (stream->read)
     {
       if ( stream->read( stream, stream->pos, &result, 1L ) != 1L )
@@ -290,7 +290,7 @@
         goto Fail;
     }
     return result;
-    
+
   Fail:
     *error = FT_Err_Invalid_Stream_Operation;
     FT_ERROR(( "FT_Read_Char:" ));
@@ -298,8 +298,8 @@
                stream->pos, stream->size ));
     return 0;
   }
- 
 
+
   BASE_FUNC
   FT_Short  FT_Read_Short( FT_Stream  stream,
                            FT_Error*  error )
@@ -307,11 +307,11 @@
     char     reads[2];
     char*    p = 0;
     FT_Short result = 0;
-    
+
     FT_Assert( stream );
-    
+
     *error = FT_Err_Ok;
-    
+
     if (stream->pos+1 < stream->size)
     {
       if (stream->read)
@@ -318,7 +318,7 @@
       {
         if (stream->read( stream, stream->pos, reads, 2L ) != 2L )
           goto Fail;
-          
+
         p = reads;
       }
       else
@@ -325,7 +325,7 @@
       {
         p = stream->base + stream->pos;
       }
-      
+
       if (p)
       {
         result       = NEXT_Short(p);
@@ -335,7 +335,7 @@
     else goto Fail;
 
     return result;
-    
+
   Fail:
     *error = FT_Err_Invalid_Stream_Operation;
     FT_ERROR(( "FT_Read_Short:" ));
@@ -343,8 +343,8 @@
                stream->pos, stream->size ));
     return 0;
   }
- 
 
+
   BASE_FUNC
   FT_Long  FT_Read_Offset( FT_Stream  stream,
                            FT_Error*  error )
@@ -352,11 +352,11 @@
     char     reads[3];
     char*    p = 0;
     FT_Long  result = 0;
-    
+
     FT_Assert( stream );
-    
+
     *error = FT_Err_Ok;
-    
+
     if (stream->pos+2 < stream->size)
     {
       if (stream->read)
@@ -363,7 +363,7 @@
       {
         if (stream->read( stream, stream->pos, reads, 3L ) != 3L )
           goto Fail;
-          
+
         p = reads;
       }
       else
@@ -370,7 +370,7 @@
       {
         p = stream->base + stream->pos;
       }
-      
+
       if (p)
       {
         result       = NEXT_Offset(p);
@@ -378,9 +378,9 @@
       }
     }
     else goto Fail;
-      
+
     return result;
-    
+
   Fail:
     *error = FT_Err_Invalid_Stream_Operation;
     FT_ERROR(( "FT_Read_Offset:" ));
@@ -388,8 +388,8 @@
                stream->pos, stream->size ));
     return 0;
   }
- 
 
+
   BASE_FUNC
   FT_Long  FT_Read_Long( FT_Stream  stream,
                          FT_Error*  error )
@@ -397,11 +397,11 @@
     char     reads[4];
     char*    p = 0;
     FT_Long  result = 0;
-    
+
     FT_Assert( stream );
-    
+
     *error = FT_Err_Ok;
-    
+
     if (stream->pos+3 < stream->size)
     {
       if (stream->read)
@@ -408,7 +408,7 @@
       {
         if (stream->read( stream, stream->pos, reads, 4L ) != 4L )
           goto Fail;
-          
+
         p = reads;
       }
       else
@@ -415,7 +415,7 @@
       {
         p = stream->base + stream->pos;
       }
-      
+
       if (p)
       {
         result       = NEXT_Long(p);
@@ -425,7 +425,7 @@
     else goto Fail;
 
     return result;
-    
+
   Fail:
     *error = FT_Err_Invalid_Stream_Operation;
     FT_ERROR(( "FT_Read_Long:" ));