shithub: freetype+ttf2subf

Download patch

ref: eddd9909e275b997629996d85ccf6abd10fbb493
parent: 3c95d31ed4bb37c5948e2ff242c453988b530fb0
author: Werner Lemberg <[email protected]>
date: Thu Oct 12 01:05:40 EDT 2000

formatting

small fixes

git/fs: mount .git/fs: mount/attach disallowed
--- a/include/freetype/cache/ftcglyph.h
+++ b/include/freetype/cache/ftcglyph.h
@@ -2,7 +2,7 @@
 /*                                                                         */
 /*  ftcglyph.h                                                             */
 /*                                                                         */
-/*    FreeType glyph image (FT_Glyph) cache..                              */
+/*    FreeType glyph image (FT_Glyph) cache (specification).               */
 /*                                                                         */
 /*  Copyright 2000 by                                                      */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
@@ -13,53 +13,59 @@
 /*  this file you indicate that you have read the license and              */
 /*  understand and accept it fully.                                        */
 /*                                                                         */
-/*                                                                         */
-/*  Important: the functions defined in this file are only used            */
-/*             to implement an abstract glyph cache class. You             */
-/*             need to provide additional logic to implement               */
-/*             a complete cache. For example, see "ftcimage.h"             */
-/*             and "ftcimage.c" which implement a FT_Glyph cache           */
-/*             based on this code..                                        */
-/*                                                                         */
 /***************************************************************************/
 
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /*********                                                       **********/
- /*********                                                       **********/
- /*********        WARNING, THIS IS ALPHA CODE, THIS API          **********/
- /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    **********/
- /*********            FREETYPE DEVELOPMENT TEAM                  **********/
- /*********                                                       **********/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
 
+  /*************************************************************************/
+  /*                                                                       */
+  /* Important: The functions defined in this file are only used to        */
+  /*            implement an abstract glyph cache class.  You need to      */
+  /*            provide additional logic to implement a complete cache.    */
+  /*            For example, see `ftcimage.h' and `ftcimage.c' which       */
+  /*            implement a FT_Glyph cache based on this code.             */
+  /*                                                                       */
+  /*************************************************************************/
 
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*********                                                       *********/
+  /*********        WARNING, THIS IS ALPHA CODE, THIS API          *********/
+  /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    *********/
+  /*********            FREETYPE DEVELOPMENT TEAM                  *********/
+  /*********                                                       *********/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
 #ifndef FTCGLYPH_H
 #define FTCGLYPH_H
 
+
 #include <freetype/cache/ftcmanag.h>
 #include <freetype/ftglyph.h>
 #include <stddef.h>
 
+
 #ifdef __cplusplus
   extern "C" {
 #endif
 
-/* maximum number of queues per image cache, must be < 256 */
+
+  /* maximum number of queues per image cache; must be < 256 */
 #define FTC_MAX_GLYPH_QUEUES  16
 
 #define FTC_QUEUE_HASH_SIZE_DEFAULT  64
 
-  typedef struct FTC_Glyph_QueueRec_*    FTC_Glyph_Queue;
-  typedef struct FTC_GlyphNodeRec_*      FTC_GlyphNode;
-  typedef struct FTC_Glyph_CacheRec_*    FTC_Glyph_Cache;
+  typedef struct FTC_Glyph_QueueRec_*  FTC_Glyph_Queue;
+  typedef struct FTC_GlyphNodeRec_*    FTC_GlyphNode;
+  typedef struct FTC_Glyph_CacheRec_*  FTC_Glyph_Cache;
 
   typedef struct  FTC_GlyphNodeRec_
   {
@@ -74,8 +80,13 @@
   } FTC_GlyphNodeRec;
 
 
-#define FTC_GLYPHNODE_GET_GLYPH(n)    ((FT_Glyph)((n)->link.data))
-#define FTC_GLYPHNODE_SET_GLYPH(n,g)  do { (n)->link.data = (g); } while (0)
+#define FTC_GLYPHNODE_GET_GLYPH( n ) \
+          ( (FT_Glyph)((n)->link.data) )
+#define FTC_GLYPHNODE_SET_GLYPH( n, g ) \
+          do                            \
+          {                             \
+            (n)->link.data = (g);       \
+          } while ( 0 )
 
   /* this macro is used to extract a handle to the bucket's lru list */
   /* corresponding to a given image node                             */
@@ -83,37 +94,40 @@
           ( (FT_ListNode)&(n)->link )
 
   /* this macro is used to extract a handle to a given image node from */
-  /* the corresponding LRU glyph list node. That's a bit hackish..     */
-#define FTC_LISTNODE_TO_GLYPHNODE( p )                              \
-          ( (FTC_GlyphNode)( (char*)(p) -                           \
+  /* the corresponding LRU glyph list node. That's a bit hackish...    */
+#define FTC_LISTNODE_TO_GLYPHNODE( p )                             \
+          ( (FTC_GlyphNode)( (char*)(p) -                          \
                              offsetof( FTC_GlyphNodeRec,link ) ) )
 
-#define FTC_GLYPHNODE_TO_LRUNODE(n)  ((FT_ListNode)(n))
-#define FTC_LRUNODE_TO_GLYPHNODE(n)  ((FTC_GlyphNode)(n))
+#define FTC_GLYPHNODE_TO_LRUNODE( n )  ( (FT_ListNode)(n) )
+#define FTC_LRUNODE_TO_GLYPHNODE( n )  ( (FTC_GlyphNode)(n) )
 
 
- /* glyph queue methods *****************************************************/
+  /*************************************************************************/
+  /*                                                                       */
+  /* Glyph queue methods.                                                  */
+  /*                                                                       */
 
-  typedef FT_Error  (*FTC_Glyph_Queue_InitFunc)   ( FTC_Glyph_Queue  queue,
-                                                    FT_Pointer       type );
+  typedef FT_Error  (*FTC_Glyph_Queue_InitFunc)( FTC_Glyph_Queue  queue,
+                                                 FT_Pointer       type );
 
-  typedef void      (*FTC_Glyph_Queue_DoneFunc)   ( FTC_Glyph_Queue  queue );
+  typedef void  (*FTC_Glyph_Queue_DoneFunc)( FTC_Glyph_Queue  queue );
 
-  typedef FT_Bool   (*FTC_Glyph_Queue_CompareFunc)( FTC_Glyph_Queue  queue,
-                                                    FT_Pointer       type );
+  typedef FT_Bool  (*FTC_Glyph_Queue_CompareFunc)( FTC_Glyph_Queue  queue,
+                                                   FT_Pointer       type );
 
   typedef FT_Error  (*FTC_Glyph_Queue_NewNodeFunc)( FTC_Glyph_Queue  queue,
                                                     FT_UInt          gindex,
-                                                    FTC_GlyphNode   *anode );
+                                                    FTC_GlyphNode*   anode );
 
   typedef void  (*FTC_Glyph_Queue_DestroyNodeFunc)( FTC_GlyphNode    node,
                                                     FTC_Glyph_Queue  queue );
 
-
   typedef FT_ULong (*FTC_Glyph_Queue_SizeNodeFunc)( FTC_GlyphNode    node,
                                                     FTC_Glyph_Queue  queue );
 
-  typedef struct FTC_Glyph_Queue_Class_
+
+  typedef struct  FTC_Glyph_Queue_Class_
   {
     FT_UInt                          queue_byte_size;
 
@@ -142,8 +156,8 @@
   } FTC_Glyph_QueueRec;
 
 
- /* the abstract glyph cache class */
-  typedef  struct FTC_Glyph_Cache_Class_
+  /* the abstract glyph cache class */
+  typedef struct  FTC_Glyph_Cache_Class_
   {
     FTC_Cache_Class         root;
     FTC_Glyph_Queue_Class*  queue_class;
@@ -151,54 +165,52 @@
   } FTC_Glyph_Cache_Class;
 
 
- /* the abstract glyph cache object */
+  /* the abstract glyph cache object */
   typedef struct  FTC_Glyph_CacheRec_
   {
-    FTC_CacheRec          root;
-    FT_Lru                queues_lru;  /* static queues lru list */
-    FTC_Glyph_Queue       last_queue;  /* small cache            */
+    FTC_CacheRec     root;
+    FT_Lru           queues_lru;  /* static queues lru list */
+    FTC_Glyph_Queue  last_queue;  /* small cache            */
 
   } FTC_Glyph_CacheRec;
 
 
-  /* these function are exported so that they can be called from */
-  /* user-provided cache classes.. otherwise, they're really     */
-  /* part of the cache sub-system internals..                    */
-  /*                                                             */
+  /*************************************************************************/
+  /*                                                                       */
+  /* These functions are exported so that they can be called from          */
+  /* user-provided cache classes; otherwise, they are really parts of the  */
+  /* cache sub-system internals.                                           */
+  /*                                                                       */
 
-  FT_EXPORT_FUNC(void)   FTC_GlyphNode_Init( FTC_GlyphNode    node,
-                                             FTC_Glyph_Queue  queue,
-                                             FT_UInt          gindex );
+  FT_EXPORT_FUNC( void )  FTC_GlyphNode_Init( FTC_GlyphNode    node,
+                                              FTC_Glyph_Queue  queue,
+                                              FT_UInt          gindex );
 
-#define  FTC_GlyphNode_Ref(n)  \
-             FTC_CACHENODE_TO_DATA_P(&(n)->root)->ref_count++
+#define FTC_GlyphNode_Ref( n ) \
+          FTC_CACHENODE_TO_DATA_P( &(n)->root )->ref_count++
 
-#define  FTC_GlyphNode_Unref(n)  \
-             FTC_CACHENODE_TO_DATA_P(&(n)->root)->ref_count--
+#define FTC_GlyphNode_Unref( n ) \
+          FTC_CACHENODE_TO_DATA_P( &(n)->root )->ref_count--
 
 
-  FT_EXPORT_DEF(void)       FTC_Destroy_Glyph_Node( FTC_GlyphNode    node,
-                                                    FTC_Glyph_Cache  cache );
+  FT_EXPORT_DEF( void )  FTC_Destroy_Glyph_Node( FTC_GlyphNode    node,
+                                                 FTC_Glyph_Cache  cache );
 
 
-  FT_EXPORT_DEF(FT_Error)   FTC_Glyph_Cache_Init( FTC_Glyph_Cache cache );
+  FT_EXPORT_DEF( FT_Error )  FTC_Glyph_Cache_Init( FTC_Glyph_Cache  cache );
 
-  FT_EXPORT_DEF(void)       FTC_Glyph_Cache_Done( FTC_Glyph_Cache  cache );
+  FT_EXPORT_DEF( void )  FTC_Glyph_Cache_Done( FTC_Glyph_Cache  cache );
 
-  FT_EXPORT_DEF(FT_Error)   FTC_Glyph_Queue_New(
-                                 FTC_Glyph_Cache         cache,
-                                 FT_Pointer              type,
-                                 FTC_Glyph_Queue        *aqueue );
 
-  FT_EXPORT_DEF(FT_Error)   FTC_Glyph_Queue_Lookup_Node(
-                                         FTC_Glyph_Queue  queue,
-                                         FT_UInt          glyph_index,
-                                         FTC_GlyphNode*   anode );
+  FT_EXPORT_DEF( FT_Error )  FTC_Glyph_Queue_New( FTC_Glyph_Cache   cache,
+                                                  FT_Pointer        type,
+                                                  FTC_Glyph_Queue*  aqueue );
 
+  FT_EXPORT_DEF( FT_Error )  FTC_Glyph_Queue_Lookup_Node(
+                               FTC_Glyph_Queue  queue,
+                               FT_UInt          glyph_index,
+                               FTC_GlyphNode*   anode );
 
-  FT_EXPORT_DEF(FT_Error)   FTC_Glyph_Cache_Init( FTC_Glyph_Cache cache );
-
-  FT_EXPORT_DEF(void)       FTC_Glyph_Cache_Done( FTC_Glyph_Cache  cache );
 
 #ifdef __cplusplus
   }
--- a/include/freetype/cache/ftcmanag.h
+++ b/include/freetype/cache/ftcmanag.h
@@ -13,50 +13,54 @@
 /*  this file you indicate that you have read the license and              */
 /*  understand and accept it fully.                                        */
 /*                                                                         */
-/*                                                                         */
-/*  A cache manager is in charge of the following:                         */
-/*                                                                         */
-/*  - maintain a mapping between generic FTC_FaceIDs and live              */
-/*    FT_Face objects. The mapping itself is performed through a           */
-/*    user-provided callback. However, the manager maintains a small       */
-/*    cache of FT_Face & FT_Size objects in order to speed things          */
-/*    considerably..                                                       */
-/*                                                                         */
-/*  - manage one or more cache object. Each cache is in charge of          */
-/*    holding a varying number of "cache nodes". Each cache node           */
-/*    represents a minimal amount of individually-accessible cached        */
-/*    data. For example, a cache node can be a FT_Glyph image containing   */
-/*    a vector outline, or some glyph metrics, or anything else..          */
-/*                                                                         */
-/*    each cache node has a certain size in bytes that is added to the     */
-/*    total amount of "cache memory" within the manager.                   */
-/*                                                                         */
-/*    all cache nodes are located in a global LRU list, where the          */
-/*    oldest node is at the tail of the list                               */
-/*                                                                         */
-/*    each node belongs to a single cache, and includes a reference        */
-/*    count to avoid destroying it (due to caching)                        */
-/*                                                                         */
 /***************************************************************************/
 
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /*********                                                       **********/
- /*********                                                       **********/
- /*********        WARNING, THIS IS ALPHA CODE, THIS API          **********/
- /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    **********/
- /*********            FREETYPE DEVELOPMENT TEAM                  **********/
- /*********                                                       **********/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
 
+  /*************************************************************************/
+  /*                                                                       */
+  /* A cache manager is in charge of the following:                        */
+  /*                                                                       */
+  /*  - Maintain a mapping between generic FTC_FaceIDs and live FT_Face    */
+  /*    objects.  The mapping itself is performed through a user-provided  */
+  /*    callback.  However, the manager maintains a small cache of FT_Face */
+  /*    & FT_Size objects in order to speed things considerably.           */
+  /*                                                                       */
+  /*  - Manage one or more cache objects.  Each cache is in charge of      */
+  /*    holding a varying number of `cache nodes'.  Each cache node        */
+  /*    represents a minimal amount of individually-accessible cached      */
+  /*    data.  For example, a cache node can be an FT_Glyph image          */
+  /*    containing a vector outline, or some glyph metrics, or anything    */
+  /*    else.                                                              */
+  /*                                                                       */
+  /*    Each cache node has a certain size in bytes that is added to the   */
+  /*    total amount of `cache memory' within the manager.                 */
+  /*                                                                       */
+  /*    All cache nodes are located in a global LRU list, where the oldest */
+  /*    node is at the tail of the list.                                   */
+  /*                                                                       */
+  /*    Each node belongs to a single cache, and includes a reference      */
+  /*    count to avoid destroying it (due to caching).                     */
+  /*                                                                       */
+  /*************************************************************************/
 
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*********                                                       *********/
+  /*********        WARNING, THIS IS ALPHA CODE, THIS API          *********/
+  /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    *********/
+  /*********            FREETYPE DEVELOPMENT TEAM                  *********/
+  /*********                                                       *********/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
 #ifndef FTCMANAG_H
 #define FTCMANAG_H
 
@@ -68,15 +72,16 @@
   extern "C" {
 #endif
 
-/* default values */
-#define  FTC_MAX_FACES_DEFAULT  4
-#define  FTC_MAX_SIZES_DEFAULT  8
-#define  FTC_MAX_BYTES_DEFAULT  300000  /* 300 Kb by default !! */
 
-/* maximum number of caches registered in a single manager */
-#define  FTC_MAX_CACHES         16
+  /* default values */
+#define FTC_MAX_FACES_DEFAULT  4
+#define FTC_MAX_SIZES_DEFAULT  8
+#define FTC_MAX_BYTES_DEFAULT  300000  /* 300kByte by default! */
 
+  /* maximum number of caches registered in a single manager */
+#define FTC_MAX_CACHES         16
 
+
   typedef struct  FTC_ManagerRec_
   {
     FT_Library          library;
@@ -86,114 +91,112 @@
     FT_ULong            max_bytes;
     FT_ULong            num_bytes;
     FT_ListRec          global_lru;
-    FTC_Cache           caches[ FTC_MAX_CACHES ];
-    
+    FTC_Cache           caches[FTC_MAX_CACHES];
+
     FT_Pointer          request_data;
     FTC_Face_Requester  request_face;
-    
+
   } FTC_ManagerRec;
 
 
- /*********************************************************************/
- /*********************************************************************/
- /*****                                                           *****/
- /*****               CACHE NODE DEFINITIONS                      *****/
- /*****                                                           *****/
- /*********************************************************************/
- /*********************************************************************/
- 
- 
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                   CACHE NODE DEFINITIONS                      *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
 
-  /* each cache controls one or more cache nodes. Each node    */
-  /* is part of the global_lru list of the manager. Its "data" */
-  /* field however is used as a reference count for now..      */
-  /*                                                           */
-  /* a node can anything, depending on the type of information */
-  /* held by the cache. It can be an individual glyph image,   */
-  /* a set of bitmaps glyphs for a given size, some metrics,   */
-  /* etc..                                                     */
-  /*                                                           */
-  
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Each cache controls one or more cache nodes.  Each node is part of    */
+  /* the global_lru list of the manager.  Its `data' field however is used */
+  /* as a reference count for now.                                         */
+  /*                                                                       */
+  /* A node can be anything, depending on the type of information hold by  */
+  /* the cache.  It can be an individual glyph image, a set of bitmaps     */
+  /* glyphs for a given size, some metrics, etc.                           */
+  /*                                                                       */
+
   typedef FT_ListNodeRec     FTC_CacheNodeRec;
   typedef FTC_CacheNodeRec*  FTC_CacheNode;
 
 
-  /* the fields "cachenode.data" is typecasted to this type */
-  typedef struct FTC_CacheNode_Data_
+  /* the fields `cachenode.data' is typecast to this type */
+  typedef struct  FTC_CacheNode_Data_
   {
-    FT_UShort   cache_index;
-    FT_Short    ref_count;
-  
+    FT_UShort  cache_index;
+    FT_Short   ref_count;
+
   } FTC_CacheNode_Data;
-  
-/* returns a pointer to the FTC_CacheNode_Data contained in a */
-/* CacheNode's "data" field..                                 */
-#define  FTC_CACHENODE_TO_DATA_P(n)  \
-            ((FTC_CacheNode_Data*)&(n)->data)
 
-#define  FTC_LIST_TO_CACHENODE(n)     ((FTC_CacheNode)(n))
+  /* return a pointer to the FTC_CacheNode_Data contained in a */
+  /* CacheNode's `data' field                                  */
+#define FTC_CACHENODE_TO_DATA_P( n ) \
+          ( (FTC_CacheNode_Data*)&(n)->data )
 
-  /* returns the size in bytes of a given cache node */
-  typedef FT_ULong   (*FTC_CacheNode_SizeFunc)( FTC_CacheNode  node,
-                                                FT_Pointer     user );
+#define FTC_LIST_TO_CACHENODE( n )  ( (FTC_CacheNode)(n) )
 
-  /* finalise a given cache node */
-  typedef void       (*FTC_CacheNode_DestroyFunc)( FTC_CacheNode  node,
-                                                   FT_Pointer     user );
+  /* return the size in bytes of a given cache node */
+  typedef FT_ULong  (*FTC_CacheNode_SizeFunc)( FTC_CacheNode  node,
+                                               FT_Pointer     user );
 
-  /* this structure is used to provide functions to the cache manager   */
-  /* It will use them to size and destroy cache nodes.. Note that there */
-  /* is no "init_node" there because cache objects are entirely         */
-  /* responsible for the creation of new cache nodes                    */
+  /* finalize a given cache node */
+  typedef void  (*FTC_CacheNode_DestroyFunc)( FTC_CacheNode  node,
+                                              FT_Pointer     user );
+
+  /* This structure is used to provide functions to the cache manager.  */
+  /* It will use them to size and destroy cache nodes.  Note that there */
+  /* is no `init_node' because cache objects are entirely responsible   */
+  /* for the creation of new cache nodes.                               */
   /*                                                                    */
-  typedef struct FTC_CacheNode_Class_
+  typedef struct  FTC_CacheNode_Class_
   {
-    FTC_CacheNode_SizeFunc      size_node;
-    FTC_CacheNode_DestroyFunc   destroy_node;
-    
+    FTC_CacheNode_SizeFunc     size_node;
+    FTC_CacheNode_DestroyFunc  destroy_node;
+
   } FTC_CacheNode_Class;
-                                   
 
- /*********************************************************************/
- /*********************************************************************/
- /*****                                                           *****/
- /*****                       CACHE DEFINITIONS                   *****/
- /*****                                                           *****/
- /*********************************************************************/
- /*********************************************************************/
- 
 
-  typedef FT_Error   (*FTC_Cache_InitFunc)( FTC_Cache    cache );
-  
-  typedef void       (*FTC_Cache_DoneFunc)( FTC_Cache    cache );
-  
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                       CACHE DEFINITIONS                       *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
 
-  struct FTC_Cache_Class_
-  {
-    FT_UInt                  cache_byte_size;
-    FTC_Cache_InitFunc       init_cache;
-    FTC_Cache_DoneFunc       done_cache;
-  };
 
+  typedef FT_Error  (*FTC_Cache_InitFunc)( FTC_Cache  cache );
 
+  typedef void  (*FTC_Cache_DoneFunc)( FTC_Cache  cache );
 
+
+  struct  FTC_Cache_Class_
+  {
+    FT_UInt             cache_byte_size;
+    FTC_Cache_InitFunc  init_cache;
+    FTC_Cache_DoneFunc  done_cache;
+  };
+
   typedef struct  FTC_CacheRec_
   {
-    FTC_Manager             manager;
-    FT_Memory               memory;
-    FTC_Cache_Class*        clazz;
-    FTC_CacheNode_Class*    node_clazz;
-    
-    FT_UInt                 cache_index;  /* in manager's table          */
-    FT_Pointer              cache_user;   /* passed to cache node methods*/
-    
+    FTC_Manager           manager;
+    FT_Memory             memory;
+    FTC_Cache_Class*      clazz;
+    FTC_CacheNode_Class*  node_clazz;
+
+    FT_UInt               cache_index;  /* in manager's table           */
+    FT_Pointer            cache_user;   /* passed to cache node methods */
+
   } FTC_CacheRec;
 
 
-  /* "compress" the manager's data, i.e. get rids of old cache nodes */
+  /* `Compress' the manager's data, i.e., get rid of old cache nodes */
   /* that are not referenced anymore in order to limit the total     */
-  /* memory used by the cache..                                      */
-  FT_EXPORT_DEF(void)  FTC_Manager_Compress( FTC_Manager  manager );
+  /* memory used by the cache.                                       */
+  FT_EXPORT_DEF( void )  FTC_Manager_Compress( FTC_Manager  manager );
 
 
 #ifdef __cplusplus
--- a/include/freetype/cache/ftlru.h
+++ b/include/freetype/cache/ftlru.h
@@ -13,47 +13,50 @@
 /*  this file you indicate that you have read the license and              */
 /*  understand and accept it fully.                                        */
 /*                                                                         */
-/*                                                                         */
-/*  A LRU is a list that cannot hold more than a certain number of         */
-/*  elements ("max_elements"). All elements on the list are sorted         */
-/*  in lest-recently-used order, i.e. the "oldest" element is at           */
-/*  the tail of the list                                                   */
-/*                                                                         */
-/*  When doing a lookup (either through "Lookup" or "Lookup_Node"),        */
-/*  the list is searched for an element with the corresponding key         */
-/*  if it is found, the element is moved to the head of the list           */
-/*  and is returned..                                                      */
-/*                                                                         */
-/*  If no corresponding element is found, the lookup routine will          */
-/*  try to obtain a new element with the relevant key. If the list         */
-/*  is already full, the oldest element from the list is discarded         */
-/*  and replaced by a new one; a new element is added to the list          */
-/*  otherwise..                                                            */
-/*                                                                         */
-/*  Note that it is possible to pre-allocate the element list nodes.       */
-/*  That's handy when "max_elements" is sufficiently small, as it          */
-/*  saves allocations/releases during the lookup process                   */
-/*                                                                         */
 /***************************************************************************/
 
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /*********                                                       **********/
- /*********                                                       **********/
- /*********        WARNING, THIS IS ALPHA CODE, THIS API          **********/
- /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    **********/
- /*********            FREETYPE DEVELOPMENT TEAM                  **********/
- /*********                                                       **********/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
 
+  /*************************************************************************/
+  /*                                                                       */
+  /* An LRU is a list that cannot hold more than a certain number of       */
+  /* elements (`max_elements').  All elements on the list are sorted in    */
+  /* lest-recently-used order, i.e., the `oldest' element is at the tail   */
+  /* of the list.                                                          */
+  /*                                                                       */
+  /* When doing a lookup (either through `Lookup()' or `Lookup_Node()'),   */
+  /* the list is searched for an element with the corresponding key.  If   */
+  /* it is found, the element is moved to the head of the list and is      */
+  /* returned.                                                             */
+  /*                                                                       */
+  /* If no corresponding element is found, the lookup routine will try to  */
+  /* obtain a new element with the relevant key.  If the list is already   */
+  /* full, the oldest element from the list is discarded and replaced by a */
+  /* new one; a new element is added to the list otherwise.                */
+  /*                                                                       */
+  /* Note that it is possible to pre-allocate the element list nodes.      */
+  /* This is handy if `max_elements' is sufficiently small, as it saves    */
+  /* allocations/releases during the lookup process.                       */
+  /*                                                                       */
+  /*************************************************************************/
 
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*********                                                       *********/
+  /*********        WARNING, THIS IS ALPHA CODE, THIS API          *********/
+  /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    *********/
+  /*********            FREETYPE DEVELOPMENT TEAM                  *********/
+  /*********                                                       *********/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
 #ifndef FTLRU_H
 #define FTLRU_H
 
@@ -64,11 +67,12 @@
   extern "C" {
 #endif
 
- /* generic key type */
+
+  /* generic key type */
   typedef FT_Pointer  FT_LruKey;
 
 
- /* a lru node - node.root.data points to the element */
+  /* an lru node -- node.root.data points to the element */
   typedef struct  FT_LruNodeRec_
   {
     FT_ListNodeRec  root;
@@ -76,43 +80,44 @@
   
   } FT_LruNodeRec, *FT_LruNode;
 
- /* forward declaration */
+  /* forward declaration */
   typedef struct FT_LruRec_*  FT_Lru;
 
 
- /* LRU clazz */
+  /* LRU clazz */
   typedef struct  FT_Lru_Class_
   {
-    FT_UInt   lru_size;      /* object size in bytes */
+    FT_UInt  lru_size;      /* object size in bytes */
     
-    /* this method is used to initialise a new list element node */
+    /* this method is used to initialize a new list element node */
     FT_Error  (*init_element)( FT_Lru      lru,
                                FT_LruNode  node );
                                
-    /* this method is used to finalise a given list element node */
-    void      (*done_element)( FT_Lru      lru,
-                               FT_LruNode  node );
+    /* this method is used to finalize a given list element node */
+    void  (*done_element)( FT_Lru      lru,
+                           FT_LruNode  node );
     
-    /* when defined, this method is called when the list if full    */
-    /* during the lookup process.. it is used to change the content */
-    /* of a list element node, instead of calling "done_element"    */
-    /* then "init_element". Put it to 0 for default behaviour       */ 
+    /* If defined, this method is called when the list if full        */
+    /* during the lookup process -- it is used to change the contents */
+    /* of a list element node, instead of calling `done_element()',   */
+    /* then `init_element'.  Set it to 0 for default behaviour.       */ 
     FT_Error  (*flush_element)( FT_Lru      lru,
                                 FT_LruNode  node,
                                 FT_LruKey   new_key );  
 
-    /* when defined, this method is used to compare a list element node */
-    /* with a given key during a lookup. When set to 0, the "key"       */
-    /* fields will be directly compared instead..                       */                                   
-    FT_Bool   (*compare_element)( FT_LruNode  node,
-                                  FT_LruKey   key );
+    /* If defined, this method is used to compare a list element node */
+    /* with a given key during a lookup.  If set to 0, the `key'      */
+    /* fields will be directly compared instead.                      */                                   
+    FT_Bool  (*compare_element)( FT_LruNode  node,
+                                 FT_LruKey   key );
 
   } FT_Lru_Class;
 
-  /* a selector is used to indicate wether a given list element node  */
-  /* is part of a selection for FT_Lru_Remove_Selection. The function */
-  /* must returns true (i.e. non 0) to indicate that the node is part */
-  /* of it..                                                          */
+
+  /* A selector is used to indicate whether a given list element node    */
+  /* is part of a selection for FT_Lru_Remove_Selection().  The function */
+  /* must return true (i.e., non-null) to indicate that the node is part */
+  /* of it.                                                              */
   typedef FT_Bool  (*FT_Lru_Selector)( FT_Lru      lru,
                                        FT_LruNode  node,
                                        FT_Pointer  data );
@@ -120,16 +125,16 @@
 
   typedef struct  FT_LruRec_
   {
-    FT_Lru_Class*   clazz;
-    FT_UInt         max_elements;
-    FT_UInt         num_elements;
-    FT_ListRec      elements;
-    FT_Memory       memory;
-    FT_Pointer      user_data;
+    FT_Lru_Class*  clazz;
+    FT_UInt        max_elements;
+    FT_UInt        num_elements;
+    FT_ListRec     elements;
+    FT_Memory      memory;
+    FT_Pointer     user_data;
     
     /* the following fields are only meaningful for static lru containers */
-    FT_ListRec      free_nodes;
-    FT_LruNode      nodes;
+    FT_ListRec     free_nodes;
+    FT_LruNode     nodes;
     
   } FT_LruRec;
 
@@ -141,9 +146,9 @@
                                          FT_Bool              pre_alloc,
                                          FT_Lru*              alru );
                                           
-  FT_EXPORT_DEF( void )      FT_Lru_Reset( FT_Lru  lru ); 
+  FT_EXPORT_DEF( void )  FT_Lru_Reset( FT_Lru  lru ); 
                                        
-  FT_EXPORT_DEF( void )      FT_Lru_Done( FT_Lru  lru ); 
+  FT_EXPORT_DEF( void )  FT_Lru_Done( FT_Lru  lru ); 
 
   FT_EXPORT_DEF( FT_Error )  FT_Lru_Lookup_Node( FT_Lru        lru,
                                                  FT_LruKey     key,
@@ -153,12 +158,12 @@
                                             FT_LruKey    key,
                                             FT_Pointer*  aobject );
  
-  FT_EXPORT_DEF( void )      FT_Lru_Remove_Node( FT_Lru      lru,
-                                                 FT_LruNode  node );  
+  FT_EXPORT_DEF( void )  FT_Lru_Remove_Node( FT_Lru      lru,
+                                             FT_LruNode  node );  
 
-  FT_EXPORT_DEF( void )      FT_Lru_Remove_Selection( FT_Lru           lru,
-                                                      FT_Lru_Selector  selector,
-                                                      FT_Pointer       data );
+  FT_EXPORT_DEF( void )  FT_Lru_Remove_Selection( FT_Lru           lru,
+                                                  FT_Lru_Selector  selector,
+                                                  FT_Pointer       data );
 
 
 #ifdef __cplusplus
--- a/include/freetype/ftcache.h
+++ b/include/freetype/ftcache.h
@@ -16,26 +16,27 @@
 /***************************************************************************/
 
 
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /*********                                                       **********/
- /*********                                                       **********/
- /*********        WARNING, THIS IS ALPHA CODE, THIS API          **********/
- /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    **********/
- /*********            FREETYPE DEVELOPMENT TEAM                  **********/
- /*********                                                       **********/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*********                                                       *********/
+  /*********        WARNING, THIS IS ALPHA CODE, THIS API          *********/
+  /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    *********/
+  /*********            FREETYPE DEVELOPMENT TEAM                  *********/
+  /*********                                                       *********/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
 
+
 #ifndef FTCACHE_H
 #define FTCACHE_H
 
+
 #include <freetype/ftglyph.h>
 
 
@@ -91,7 +92,7 @@
   /*                                                                       */
   typedef FT_Error  (*FTC_Face_Requester)( FTC_FaceID  face_id,
                                            FT_Library  library,
-                                           FT_Pointer  request_data, 
+                                           FT_Pointer  request_data,
                                            FT_Face*    aface );
 
 
@@ -102,8 +103,8 @@
   /*                                                                       */
   /* <Description>                                                         */
   /*    A simple structure used to describe a given `font' to the cache    */
-  /*    manager. Note that a "font" is the combination of a given face     */
-  /*    with a given character size..                                      */
+  /*    manager.  Note that a `font' is the combination of a given face    */
+  /*    with a given character size.                                       */
   /*                                                                       */
   /* <Fields>                                                              */
   /*    face_id    :: The ID of the face to use.                           */
@@ -117,7 +118,7 @@
     FTC_FaceID  face_id;
     FT_UShort   pix_width;
     FT_UShort   pix_height;
-    
+
   } FTC_FontRec;
 
 
@@ -130,8 +131,8 @@
   /*    A simple handle to a FTC_FontRec structure.                        */
   /*                                                                       */
   typedef FTC_FontRec*  FTC_Font;
- 
 
+
   /*************************************************************************/
   /*************************************************************************/
   /*************************************************************************/
@@ -196,7 +197,7 @@
                                               FT_Pointer          req_data,
                                               FTC_Manager*        amanager );
 
-                        
+
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
@@ -261,8 +262,8 @@
   FT_EXPORT_DEF( FT_Error )  FTC_Manager_Lookup_Face( FTC_Manager  manager,
                                                       FTC_FaceID   face_id,
                                                       FT_Face*     aface );
- 
 
+
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
@@ -308,8 +309,7 @@
                                                       FT_Size*     asize );
 
 
-  /* a cache class is used to describe a unique cache type to the */
-  /* manager..                                                    */
+  /* a cache class is used to describe a unique cache type to the manager */
   typedef struct FTC_Cache_Class_  FTC_Cache_Class;
   typedef struct FTC_CacheRec_*    FTC_Cache;
 
@@ -316,11 +316,11 @@
 
   /* this must be used internally for the moment */
   FT_EXPORT_DEF( FT_Error )  FTC_Manager_Register_Cache(
-                                   FTC_Manager       manager,
-                                   FTC_Cache_Class*  clazz,
-                                   FTC_Cache        *acache );
+                               FTC_Manager       manager,
+                               FTC_Cache_Class*  clazz,
+                               FTC_Cache*        acache );
 
-  
+
   /*************************************************************************/
   /*************************************************************************/
   /*************************************************************************/
@@ -332,6 +332,8 @@
   /*************************************************************************/
 
 
+#define  FTC_IMAGE_FORMAT( x )  ( (x) & 7 )
+
   /*************************************************************************/
   /*                                                                       */
   /* <Enum>                                                                */
@@ -353,30 +355,25 @@
   /* <Note>                                                                */
   /*    Other types may be defined in the future.                          */
   /*                                                                       */
-  
-#define   FTC_IMAGE_FORMAT(x)  ((x) & 7)
-
   typedef enum  FTC_Image_Type_
   {
     ftc_image_format_bitmap   = 0,
     ftc_image_format_outline  = 1,
-    
+
     ftc_image_flag_monochrome = 16,
     ftc_image_flag_unhinted   = 32,
     ftc_image_flag_autohinted = 64,
     ftc_image_flag_unscaled   = 128,
     ftc_image_flag_no_sbits   = 256,
-    
-    ftc_image_mono            = ftc_image_format_bitmap |
-                                ftc_image_flag_monochrome, /* monochrome bitmap   */
-                                
-    ftc_image_grays           = ftc_image_format_bitmap,   /* anti-aliased bitmap */
-                                
-    ftc_image_outline         = ftc_image_format_outline   /* scaled outline */
-  
+
+    ftc_image_mono    = ftc_image_format_bitmap |
+                        ftc_image_flag_monochrome, /* monochrome bitmap   */
+    ftc_image_grays   = ftc_image_format_bitmap,   /* anti-aliased bitmap */
+    ftc_image_outline = ftc_image_format_outline   /* scaled outline */
+
   } FTC_Image_Type;
 
- 
+
   /*************************************************************************/
   /*                                                                       */
   /* <Struct>                                                              */
@@ -395,7 +392,7 @@
   {
     FTC_FontRec  font;
     FT_UInt      image_type;
-  
+
   } FTC_Image_Desc;
 
 
@@ -409,7 +406,7 @@
   /*    hold many distinct glyph images, while not exceeding a certain     */
   /*    memory threshold.                                                  */
   /*                                                                       */
-  typedef struct FTC_Image_CacheRec_*  FTC_Image_Cache; 
+  typedef struct FTC_Image_CacheRec_*  FTC_Image_Cache;
 
 
   /*************************************************************************/
@@ -431,7 +428,7 @@
   /*                                                                       */
   FT_EXPORT_DEF( FT_Error )  FTC_Image_Cache_New( FTC_Manager       manager,
                                                   FTC_Image_Cache*  acache );
-                                                
+
 
   /*************************************************************************/
   /*                                                                       */
@@ -462,7 +459,7 @@
   /*                                                                       */
   /*    Because the glyph image cache limits the total amount of memory    */
   /*    taken by the glyphs it holds, the returned glyph might disappear   */
-  /*    on a later invocation of this function! It's a cache after all ;-) */
+  /*    on a later invocation of this function!  It's a cache after all... */
   /*                                                                       */
   FT_EXPORT_DEF( FT_Error )  FTC_Image_Cache_Lookup(
                                FTC_Image_Cache  cache,
--- a/include/freetype/ftsynth.h
+++ b/include/freetype/ftsynth.h
@@ -16,23 +16,24 @@
 /*                                                                         */
 /***************************************************************************/
 
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /*********                                                       **********/
- /*********                                                       **********/
- /*********        WARNING, THIS IS ALPHA CODE, THIS API          **********/
- /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    **********/
- /*********            FREETYPE DEVELOPMENT TEAM                  **********/
- /*********                                                       **********/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
- /**************************************************************************/
 
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*********                                                       *********/
+  /*********        WARNING, THIS IS ALPHA CODE, THIS API          *********/
+  /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    *********/
+  /*********            FREETYPE DEVELOPMENT TEAM                  *********/
+  /*********                                                       *********/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
 #ifndef FTSYNTH_H
 #define FTSYNTH_H
 
@@ -44,9 +45,9 @@
 #endif
 
 
-  /* This code is completely experimental - use with care!  */
+  /* This code is completely experimental -- use with care! */
   /* It will probably be completely rewritten in the future */
-  /* or even integrated within the library...               */
+  /* or even integrated into the library.                   */
   FT_EXPORT_DEF( FT_Error )  FT_Embolden_Outline( FT_Face      original,
                                                   FT_Outline*  outline,
                                                   FT_Pos*      advance );
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -975,13 +975,13 @@
     /* when the flag NO_RECURSE is set, we disable hinting and scaling */
     if ( load_flags & FT_LOAD_NO_RECURSE )
     {
-      /* disable scaling, hinting and transform */
-      load_flags |= FT_LOAD_NO_SCALE       |
-                    FT_LOAD_NO_HINTING     |
+      /* disable scaling, hinting, and transformation */
+      load_flags |= FT_LOAD_NO_SCALE         |
+                    FT_LOAD_NO_HINTING       |
                     FT_LOAD_IGNORE_TRANSFORM;
-                    
+
       /* disable bitmap rendering */
-      load_flags &= ~FT_LOAD_RENDER;                    
+      load_flags &= ~FT_LOAD_RENDER;
     }
 
     /* do we need to load the glyph through the auto-hinter? */
@@ -1032,7 +1032,7 @@
     {
       FT_UInt           EM      = face->units_per_EM;
       FT_Size_Metrics*  metrics = &face->size->metrics;
-      
+
       slot->linearHoriAdvance = FT_MulDiv( slot->linearHoriAdvance,
                                            (FT_Long)metrics->x_ppem << 16, EM );
 
@@ -1161,7 +1161,7 @@
     /* discard auto-hinting data */
     if ( face->autohint.finalizer )
       face->autohint.finalizer( face->autohint.data );
-      
+
     /* Discard glyph slots for this face                           */
     /* Beware!  FT_Done_GlyphSlot() changes the field `face->slot' */
     while ( face->glyph )
@@ -2344,12 +2344,12 @@
                                                  FT_UInt     buffer_max )
   {
     FT_Error  error = FT_Err_Invalid_Argument;
-    
 
+
     /* clean up buffer */
     if ( buffer && buffer_max > 0 )
       ((FT_Byte*)buffer)[0] = 0;
-      
+
     if ( face                                    &&
          glyph_index < (FT_UInt)face->num_glyphs &&
          FT_HAS_GLYPH_NAMES( face )              )
@@ -2362,8 +2362,8 @@
       if ( clazz->get_interface )
       {
         FT_Glyph_Name_Requester  requester;
-        
 
+
         requester = (FT_Glyph_Name_Requester)clazz->get_interface(
                       FT_MODULE( driver ), "glyph_name" );
         if ( requester )
@@ -2372,7 +2372,7 @@
     }
 
     return error;
-  }                                                 
+  }
 
 
   /*************************************************************************/
--- a/src/cache/ftcglyph.c
+++ b/src/cache/ftcglyph.c
@@ -2,7 +2,7 @@
 /*                                                                         */
 /*  ftcglyph.c                                                             */
 /*                                                                         */
-/*    FreeType Glyph Image (FT_Glyph) cache..                              */
+/*    FreeType Glyph Image (FT_Glyph) cache (body).                        */
 /*                                                                         */
 /*  Copyright 2000 by                                                      */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
@@ -13,15 +13,19 @@
 /*  this file you indicate that you have read the license and              */
 /*  understand and accept it fully.                                        */
 /*                                                                         */
-/*                                                                         */
-/*  Note: the implementation of glyph queues is rather generic in this     */
-/*        code. This will allow other glyph node/cache types to be         */
-/*        easily included in the future.. For now, we only cache           */
-/*        glyph images..                                                   */
-/*                                                                         */
 /***************************************************************************/
 
 
+  /*************************************************************************/
+  /*                                                                       */
+  /*  Note: The implementation of glyph queues is rather generic in this   */
+  /*        code.  This will allow other glyph node/cache types to be      */
+  /*        easily included in the future.  For now, we only cache glyph   */
+  /*        images.                                                        */
+  /*                                                                       */
+  /*************************************************************************/
+
+
 #include <freetype/cache/ftcglyph.h>
 #include <freetype/fterrors.h>
 #include <freetype/internal/ftobjs.h>
@@ -28,109 +32,115 @@
 #include <freetype/internal/ftlist.h>
 #include <freetype/fterrors.h>
 
- /*************************************************************************/
- /*************************************************************************/
- /*****                                                               *****/
- /*****                      GLYPH NODES                              *****/
- /*****                                                               *****/
- /*************************************************************************/
- /*************************************************************************/
- 
-/* in the future, we might provide a better scheme for managing       */
-/* glyph node element. For the moment, we simply use FT_Alloc/FT_Free */
 
- /* creates a new glyph node, setting its cache index and ref count */
-  FT_EXPORT_FUNC(void)   FTC_GlyphNode_Init( FTC_GlyphNode    node,
-                                             FTC_Glyph_Queue  queue,
-                                             FT_UInt          gindex )
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                      GLYPH NODES                              *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
+  /* In the future, we might provide a better scheme for managing glyph  */
+  /* node elements.  For the moment, we simply use FT_Alloc()/FT_Free(). */
+
+
+  /* create a new glyph node, setting its cache index and ref count */
+  FT_EXPORT_FUNC( void )  FTC_GlyphNode_Init( FTC_GlyphNode    node,
+                                              FTC_Glyph_Queue  queue,
+                                              FT_UInt          gindex )
   {
     FTC_Glyph_Cache      cache = queue->cache;
     FTC_CacheNode_Data*  data  = FTC_CACHENODE_TO_DATA_P( &node->root );
-      
-    data->cache_index = (FT_UShort) cache->root.cache_index;
-    data->ref_count   = (FT_Short)  0;
-    node->queue_index = (FT_UShort) queue->queue_index;
-    node->glyph_index = (FT_UShort) gindex;
-  }
 
 
+    data->cache_index = (FT_UShort)cache->root.cache_index;
+    data->ref_count   = (FT_Short) 0;
+    node->queue_index = (FT_UShort)queue->queue_index;
+    node->glyph_index = (FT_UShort)gindex;
+  }
 
 
-  /* Important: this function is called from the cache manager to */
-  /* destroy a given cache node during "cache compression". The   */
-  /* second argument is always "cache.user_data". You thus be     */
-  /* certain that the function FTC_Image_Cache_New does indeed    */
-  /* set its "user_data" field correctly, otherwise bad things    */
-  /* will happen !!                                               */
-  
-  FT_EXPORT_FUNC(void)  FTC_GlyphNode_Destroy( FTC_GlyphNode    node,
-                                               FTC_Glyph_Cache  cache )
+  /* Important: This function is called from the cache manager to */
+  /* destroy a given cache node during `cache compression'.  The  */
+  /* second argument is always `cache.user_data'.  Thus be        */
+  /* certain that the function FTC_Image_Cache_New() does indeed  */
+  /* set its `user_data' field correctly, otherwise bad things    */
+  /* will happen!                                                 */
+
+  FT_EXPORT_FUNC( void )  FTC_GlyphNode_Destroy( FTC_GlyphNode    node,
+                                                 FTC_Glyph_Cache  cache )
   {
-    FT_LruNode       queue_lru = cache->queues_lru->nodes+node->queue_index;
+    FT_LruNode       queue_lru = cache->queues_lru->nodes + node->queue_index;
     FTC_Glyph_Queue  queue     = (FTC_Glyph_Queue)queue_lru->root.data;
     FT_UInt          hash      = node->glyph_index % queue->hash_size;
     FT_List          bucket    = queue->buckets + hash;
-    
+
+
     /* remove node from its queue's bucket list */
-    FT_List_Remove( bucket, FTC_GLYPHNODE_TO_LISTNODE(node) );
-    
+    FT_List_Remove( bucket, FTC_GLYPHNODE_TO_LISTNODE( node ) );
+
     /* destroy the node */
     queue->clazz->destroy_node( node, queue );
   }
 
-  
-  /* Important: this function is called from the cache manager to */
-  /* size a given cache node during "cache compression". The      */
-  /* second argument is always "cache.user_data". You thus be     */
-  /* certain that the function FTC_Image_Cache_New does indeed    */
-  /* set its "user_data" field correctly, otherwise bad things    */
-  /* will happen !!                                               */
-  
-  FT_EXPORT_FUNC(FT_ULong)  FTC_GlyphNode_Size( FTC_GlyphNode    node,
-                                                FTC_Glyph_Cache  cache )
+
+  /* Important: This function is called from the cache manager to */
+  /* size a given cache node during `cache compression'.  The     */
+  /* second argument is always `cache.user_data'.  Thus be        */
+  /* certain that the function FTC_Image_Cache_New() does indeed  */
+  /* set its `user_data' field correctly, otherwise bad things    */
+  /* will happen!                                                 */
+
+  FT_EXPORT_FUNC( FT_ULong )  FTC_GlyphNode_Size( FTC_GlyphNode    node,
+                                                  FTC_Glyph_Cache  cache )
   {
-    FT_LruNode       queue_lru = cache->queues_lru->nodes+node->queue_index;
+    FT_LruNode       queue_lru = cache->queues_lru->nodes + node->queue_index;
     FTC_Glyph_Queue  queue     = (FTC_Glyph_Queue)queue_lru->root.data;
-    
+
+
     return queue->clazz->size_node( node, queue );
   }
 
 
-  FT_CPLUSPLUS(const FTC_CacheNode_Class)   ftc_glyph_cache_node_class =
+  FT_CPLUSPLUS( const FTC_CacheNode_Class )  ftc_glyph_cache_node_class =
   {
-    (FTC_CacheNode_SizeFunc)     FTC_GlyphNode_Size,
-    (FTC_CacheNode_DestroyFunc)  FTC_GlyphNode_Destroy
+    (FTC_CacheNode_SizeFunc)   FTC_GlyphNode_Size,
+    (FTC_CacheNode_DestroyFunc)FTC_GlyphNode_Destroy
   };
 
- /*************************************************************************/
- /*************************************************************************/
- /*****                                                               *****/
- /*****                      GLYPH QUEUES                             *****/
- /*****                                                               *****/
- /*************************************************************************/
- /*************************************************************************/
 
- FT_EXPORT_FUNC(FT_Error)  FTC_Glyph_Queue_New(
-                                 FTC_Glyph_Cache   cache,
-                                 FT_Pointer        type,
-                                 FTC_Glyph_Queue*  aqueue )
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                      GLYPH QUEUES                             *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
+  FT_EXPORT_FUNC( FT_Error )  FTC_Glyph_Queue_New( FTC_Glyph_Cache   cache,
+                                                   FT_Pointer        type,
+                                                   FTC_Glyph_Queue*  aqueue )
   {
     FT_Error         error;
     FT_Memory        memory  = cache->root.memory;
     FTC_Manager      manager = cache->root.manager;
     FTC_Glyph_Queue  queue   = 0;
-    
-    FTC_Glyph_Cache_Class* gcache_class;
-    FTC_Glyph_Queue_Class* clazz;
-    
+
+    FTC_Glyph_Cache_Class*  gcache_class;
+    FTC_Glyph_Queue_Class*  clazz;
+
+
     gcache_class = (FTC_Glyph_Cache_Class*)cache->root.clazz;
     clazz        = gcache_class->queue_class;
-    
+
     *aqueue = 0;
-    
+
     if ( ALLOC( queue, clazz->queue_byte_size ) )
       goto Exit;
-    
+
     queue->cache     = cache;
     queue->manager   = manager;
     queue->memory    = memory;
@@ -139,14 +149,13 @@
 
     /* allocate buckets table */
     if ( ALLOC_ARRAY( queue->buckets, queue->hash_size, FT_ListRec ) )
-    if (error)
       goto Exit;
 
-    /* initialize queue by type - if needed */
-    if (clazz->init)
+    /* initialize queue by type if needed */
+    if ( clazz->init )
     {
       error = clazz->init( queue, type );
-      if (error)
+      if ( error )
         goto Exit;
     }
 
@@ -160,22 +169,22 @@
     }
 
     return error;
-  }                                  
+  }
 
 
-
-  FT_EXPORT_FUNC(void)  FTC_Glyph_Queue_Done( FTC_Glyph_Queue  queue )
+  FT_EXPORT_FUNC( void )  FTC_Glyph_Queue_Done( FTC_Glyph_Queue  queue )
   {
-    FTC_Glyph_Cache  cache        = queue->cache;
-    FTC_Manager      manager      = cache->root.manager;
-    FT_List          glyphs_lru   = &manager->global_lru;
-    FT_List          bucket       = queue->buckets;
-    FT_List          bucket_limit = bucket + queue->hash_size;
-    FT_Memory        memory       = cache->root.memory;
-    
+    FTC_Glyph_Cache         cache        = queue->cache;
+    FTC_Manager             manager      = cache->root.manager;
+    FT_List                 glyphs_lru   = &manager->global_lru;
+    FT_List                 bucket       = queue->buckets;
+    FT_List                 bucket_limit = bucket + queue->hash_size;
+    FT_Memory               memory       = cache->root.memory;
+
     FTC_Glyph_Queue_Class*  clazz = queue->clazz;
 
-    /* for each bucket, free the list of Glyph nodes */
+
+    /* for each bucket, free the list of glyph nodes */
     for ( ; bucket < bucket_limit; bucket++ )
     {
       FT_ListNode    node = bucket->head;
@@ -182,26 +191,26 @@
       FT_ListNode    next = 0;
       FT_ListNode    lrunode;
       FTC_GlyphNode  inode;
-      
 
+
       for ( ; node; node = next )
       {
         next    = node->next;
-        inode   = FTC_LISTNODE_TO_GLYPHNODE(node);
+        inode   = FTC_LISTNODE_TO_GLYPHNODE( node );
         lrunode = FTC_GLYPHNODE_TO_LRUNODE( inode );
-        
+
         manager->num_bytes -= clazz->size_node( inode, queue );
-        
+
         FT_List_Remove( glyphs_lru, lrunode );
 
         clazz->destroy_node( inode, queue );
       }
-      
+
       bucket->head = bucket->tail = 0;
     }
 
-    if (clazz->done)
-      clazz->done(queue);
+    if ( clazz->done )
+      clazz->done( queue );
 
     FREE( queue->buckets );
     FREE( queue );
@@ -208,29 +217,31 @@
   }
 
 
-  FT_EXPORT_FUNC(FT_Error)  FTC_Glyph_Queue_Lookup_Node(
-                                         FTC_Glyph_Queue  queue,
-                                         FT_UInt          glyph_index,
-                                         FTC_GlyphNode*   anode )
+  FT_EXPORT_FUNC( FT_Error )  FTC_Glyph_Queue_Lookup_Node(
+                                FTC_Glyph_Queue  queue,
+                                FT_UInt          glyph_index,
+                                FTC_GlyphNode*   anode )
   {
-    FTC_Glyph_Cache       cache      = queue->cache;
-    FTC_Manager           manager    = cache->root.manager;
-    FT_UInt               hash_index = glyph_index % queue->hash_size;
-    FT_List               bucket     = queue->buckets + hash_index;
-    FT_ListNode           node;
-    FT_Error              error;
-    FTC_GlyphNode         inode;
-    
+    FTC_Glyph_Cache         cache      = queue->cache;
+    FTC_Manager             manager    = cache->root.manager;
+    FT_UInt                 hash_index = glyph_index % queue->hash_size;
+    FT_List                 bucket     = queue->buckets + hash_index;
+    FT_ListNode             node;
+    FT_Error                error;
+    FTC_GlyphNode           inode;
+
     FTC_Glyph_Queue_Class*  clazz = queue->clazz;
 
+
     *anode = 0;
     for ( node = bucket->head; node; node = node->next )
     {
       FT_UInt  gindex;
-      
-      inode  = FTC_LISTNODE_TO_GLYPHNODE(node);
+
+
+      inode  = FTC_LISTNODE_TO_GLYPHNODE( node );
       gindex = inode->glyph_index;
-      
+
       if ( gindex == glyph_index )
       {
         /* we found it! -- move glyph to start of the lists */
@@ -247,16 +258,16 @@
       goto Exit;
 
     /* insert the node at the start of our bucket list */
-    FT_List_Insert( bucket, FTC_GLYPHNODE_TO_LISTNODE(inode) );
-    
+    FT_List_Insert( bucket, FTC_GLYPHNODE_TO_LISTNODE( inode ) );
+
     /* insert the node at the start the global LRU glyph list */
-    FT_List_Insert( &manager->global_lru, FTC_GLYPHNODE_TO_LRUNODE(inode) );
-    
+    FT_List_Insert( &manager->global_lru, FTC_GLYPHNODE_TO_LRUNODE( inode ) );
+
     manager->num_bytes += clazz->size_node( inode, queue );
 
     if (manager->num_bytes > manager->max_bytes)
       FTC_Manager_Compress( manager );
-      
+
     *anode = inode;
 
   Exit:
@@ -263,7 +274,7 @@
     return error;
   }
 
-  
+
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
@@ -271,14 +282,14 @@
   /*****                                                               *****/
   /*************************************************************************/
   /*************************************************************************/
- 
 
+
 #define FTC_QUEUE_LRU_GET_CACHE( lru )   \
           ( (FTC_Glyph_Cache)(lru)->user_data )
-          
+
 #define FTC_QUEUE_LRU_GET_MANAGER( lru ) \
           FTC_QUEUE_LRU_GET_CACHE( lru )->manager
-          
+
 #define FTC_LRUNODE_QUEUE( node )        \
           ( (FTC_Glyph_Queue)(node)->root.data )
 
@@ -291,6 +302,7 @@
     FT_Error         error;
     FTC_Glyph_Queue  queue;
 
+
     error = FTC_Glyph_Queue_New( cache,
                                  (FT_Pointer)node->key,
                                  &queue );
@@ -300,18 +312,17 @@
       queue->queue_index = node - lru->nodes;
       node->root.data    = queue;
     }
-    
+
     return error;
   }
 
 
-
   LOCAL_FUNC_X
   void  ftc_glyph_queue_lru_done( FT_Lru      lru,
                                   FT_LruNode  node )
   {
     FTC_Glyph_Queue  queue = FTC_LRUNODE_QUEUE( node );
-    
+
     FT_UNUSED( lru );
 
 
@@ -319,17 +330,17 @@
   }
 
 
-
   LOCAL_FUNC_X
   FT_Bool  ftc_glyph_queue_lru_compare( FT_LruNode  node,
                                         FT_LruKey   key )
   {
     FTC_Glyph_Queue  queue = FTC_LRUNODE_QUEUE( node );
-    return queue->clazz->compare( queue, (FT_Pointer)key );
-  }                                            
 
 
+    return queue->clazz->compare( queue, (FT_Pointer)key );
+  }
 
+
   FT_CPLUSPLUS( const FT_Lru_Class )  ftc_glyph_queue_lru_class =
   {
     sizeof( FT_LruRec ),
@@ -340,7 +351,6 @@
   };
 
 
-
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
@@ -348,21 +358,23 @@
   /*****                                                               *****/
   /*************************************************************************/
   /*************************************************************************/
- 
 
-  FT_EXPORT_FUNC(FT_Error)   FTC_Glyph_Cache_Init( FTC_Glyph_Cache cache )
+
+  FT_EXPORT_FUNC( FT_Error )  FTC_Glyph_Cache_Init( FTC_Glyph_Cache  cache )
   {
-    FT_Memory               memory = cache->root.memory;
-    FT_Error                error;
+    FT_Memory  memory = cache->root.memory;
+    FT_Error   error;
 
+
     /* set up root node_class to be used by manager */
-    cache->root.node_clazz = (FTC_CacheNode_Class*)&ftc_glyph_cache_node_class;
-    
-    /* The following is extremely important for ftc_destroy_glyph_image */
-    /* to work properly, as the second parameter that is sent to it     */
-    /* through the cache manager is "user_data" and must be set to      */
-    /* "cache" here..                                                   */
-    /*                                                                  */
+    cache->root.node_clazz =
+      (FTC_CacheNode_Class*)&ftc_glyph_cache_node_class;
+
+    /* The following is extremely important for ftc_destroy_glyph_image() */
+    /* to work properly, as the second parameter that is sent to it       */
+    /* through the cache manager is `user_data' and must be set to        */
+    /* `cache' here.                                                      */
+    /*                                                                    */
     cache->root.cache_user = cache;
 
     error = FT_Lru_New( &ftc_glyph_queue_lru_class,
@@ -375,12 +387,11 @@
   }
 
 
-  FT_EXPORT_FUNC(void)    FTC_Glyph_Cache_Done( FTC_Glyph_Cache  cache )
+  FT_EXPORT_FUNC( void )  FTC_Glyph_Cache_Done( FTC_Glyph_Cache  cache )
   {
-    /* discard Glyph queues */
+    /* discard glyph queues */
     FT_Lru_Done( cache->queues_lru );
   }
-
 
 
 /* END */
--- a/src/cache/ftcimage.c
+++ b/src/cache/ftcimage.c
@@ -1,3 +1,21 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftcimage.c                                                             */
+/*                                                                         */
+/*    FreeType Image cache (body).                                         */
+/*                                                                         */
+/*  Copyright 2000 by                                                      */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+
 #ifdef FT_FLAT_COMPILE
 #  include "ftcimage.h"
 #else
@@ -4,14 +22,18 @@
 #  include <cache/ftcimage.h>
 #endif
 
- /*************************************************************************/
- /*************************************************************************/
- /*****                                                               *****/
- /*****                    GLYPH IMAGE NODES                          *****/
- /*****                                                               *****/
- /*************************************************************************/
- /*************************************************************************/
- 
+#include <string.h>
+
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                    GLYPH IMAGE NODES                          *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
   /* this is a simple glyph image destructor, which is called exclusively */
   /* from the CacheQueue object                                           */
   LOCAL_FUNC_X
@@ -19,7 +41,8 @@
                                       FTC_Glyph_Queue  queue )
   {
     FT_Memory  memory = queue->memory;
-    
+
+
     FT_Done_Glyph( FTC_GLYPHNODE_GET_GLYPH( node ) );
     FREE( node );
   }
@@ -28,8 +51,8 @@
   LOCAL_FUNC_X
   FT_Error  ftc_glyph_image_node_new( FTC_Glyph_Queue  queue,
                                       FT_UInt          glyph_index,
-                                      FTC_GlyphNode   *anode )
-  {  
+                                      FTC_GlyphNode*   anode )
+  {
     FT_Memory        memory   = queue->memory;
     FTC_Image_Queue  imageq = (FTC_Image_Queue)queue;
     FT_Error         error;
@@ -37,8 +60,9 @@
     FT_Face          face;
     FT_Size          size;
 
+
     /* allocate node */
-    if ( ALLOC( node, sizeof(*node) ) )
+    if ( ALLOC( node, sizeof ( *node ) ) )
       goto Exit;
 
     /* init its inner fields */
@@ -53,13 +77,14 @@
       FT_UInt  glyph_index = node->glyph_index;
       FT_UInt  load_flags  = FT_LOAD_DEFAULT;
       FT_UInt  image_type  = imageq->description.image_type;
-      
+
+
       if ( FTC_IMAGE_FORMAT( image_type ) == ftc_image_format_bitmap )
-      {           
-        load_flags |= FT_LOAD_RENDER;           
+      {
+        load_flags |= FT_LOAD_RENDER;
         if ( image_type & ftc_image_flag_monochrome )
           load_flags |= FT_LOAD_MONOCHROME;
-          
+
         /* disable embedded bitmaps loading if necessary */
         if ( image_type & ftc_image_flag_no_sbits )
           load_flags |= FT_LOAD_NO_BITMAP;
@@ -68,14 +93,14 @@
       {
         /* disable embedded bitmaps loading */
         load_flags |= FT_LOAD_NO_BITMAP;
-        
+
         if ( image_type & ftc_image_flag_unscaled )
           load_flags |= FT_LOAD_NO_SCALE;
       }
-          
+
       if ( image_type & ftc_image_flag_unhinted )
         load_flags |= FT_LOAD_NO_HINTING;
-          
+
       if ( image_type & ftc_image_flag_autohinted )
         load_flags |= FT_LOAD_FORCE_AUTOHINT;
 
@@ -84,11 +109,11 @@
       {
         if ( face->glyph->format == ft_glyph_format_bitmap  ||
              face->glyph->format == ft_glyph_format_outline )
-        {             
+        {
           /* ok, copy it */
           FT_Glyph  glyph;
-          
-          
+
+
           error = FT_Get_Glyph( face->glyph, &glyph );
           if ( !error )
             FTC_GLYPHNODE_SET_GLYPH( node, glyph );
@@ -97,9 +122,10 @@
           error = FT_Err_Invalid_Argument;
       }
     }
+
   Exit:
-    if (error && node)
-      FREE(node);
+    if ( error && node )
+      FREE( node );
 
     *anode = node;
     return error;
@@ -106,55 +132,58 @@
   }
 
 
- /* this function is important, because it is both part of */
- /* a FTC_Glyph_Queue_Class and a FTC_CacheNode_Class      */
- /*                                                        */
+  /* this function is important because it is both part of */
+  /* a FTC_Glyph_Queue_Class and a FTC_CacheNode_Class     */
+  /*                                                       */
   LOCAL_FUNC_X
-  FT_ULong  ftc_glyph_image_node_size( FTC_GlyphNode    node )
+  FT_ULong  ftc_glyph_image_node_size( FTC_GlyphNode  node )
   {
-    FT_ULong        size  = 0;
-    FT_Glyph        glyph = FTC_GLYPHNODE_GET_GLYPH(node);
-    
-    switch (glyph->format)
+    FT_ULong  size  = 0;
+    FT_Glyph  glyph = FTC_GLYPHNODE_GET_GLYPH( node );
+
+
+    switch ( glyph->format )
     {
-      case ft_glyph_format_bitmap:
-        {
-          FT_BitmapGlyph  bitg;
-          
-          bitg = (FT_BitmapGlyph)glyph;
-          size = bitg->bitmap.rows * labs(bitg->bitmap.pitch) +
-                 sizeof(*bitg);
-        }
-        break;
-        
-      case ft_glyph_format_outline:
-        {
-          FT_OutlineGlyph  outg;
-          
-          outg = (FT_OutlineGlyph)glyph;
-          size = outg->outline.n_points * 
-                   ( sizeof( FT_Vector ) + sizeof( FT_Byte ) ) +
-                 outg->outline.n_contours *
-                     sizeof( FT_Short ) +
-                 sizeof(*outg);
-        }
-        break;
-        
-      default:
-        ;
+    case ft_glyph_format_bitmap:
+      {
+        FT_BitmapGlyph  bitg;
+
+
+        bitg = (FT_BitmapGlyph)glyph;
+        size = bitg->bitmap.rows * labs( bitg->bitmap.pitch ) +
+               sizeof ( *bitg );
+      }
+      break;
+
+    case ft_glyph_format_outline:
+      {
+        FT_OutlineGlyph  outg;
+
+
+        outg = (FT_OutlineGlyph)glyph;
+        size = outg->outline.n_points *
+                 ( sizeof( FT_Vector ) + sizeof ( FT_Byte ) ) +
+               outg->outline.n_contours * sizeof ( FT_Short ) +
+               sizeof ( *outg );
+      }
+      break;
+
+    default:
+      ;
     }
-    size += sizeof(*node);
+
+    size += sizeof ( *node );
     return size;
   }
 
 
- /*************************************************************************/
- /*************************************************************************/
- /*****                                                               *****/
- /*****                    GLYPH IMAGE QUEUES                         *****/
- /*****                                                               *****/
- /*************************************************************************/
- /*************************************************************************/
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                    GLYPH IMAGE QUEUES                         *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
 
 
   LOCAL_FUNC_X
@@ -167,45 +196,44 @@
 
 
   LOCAL_FUNC_X
-  FT_Bool   ftc_image_queue_compare( FTC_Image_Queue   queue,
-                                     FTC_Image_Desc*   type )
+  FT_Bool  ftc_image_queue_compare( FTC_Image_Queue  queue,
+                                    FTC_Image_Desc*  type )
   {
-    return !memcmp( &queue->description, type, sizeof(*type) );
+    return !memcmp( &queue->description, type, sizeof ( *type ) );
   }
-                                      
 
-  FT_CPLUSPLUS(const FTC_Glyph_Queue_Class)  ftc_glyph_image_queue_class =
+
+  FT_CPLUSPLUS( const FTC_Glyph_Queue_Class )  ftc_glyph_image_queue_class =
   {
     sizeof( FTC_Image_QueueRec ),
-    
-    (FTC_Glyph_Queue_InitFunc)     ftc_image_queue_init,
-    (FTC_Glyph_Queue_DoneFunc)     0,
-    (FTC_Glyph_Queue_CompareFunc)  ftc_image_queue_compare,
-    
-    (FTC_Glyph_Queue_NewNodeFunc)      ftc_glyph_image_node_new,
-    (FTC_Glyph_Queue_SizeNodeFunc)     ftc_glyph_image_node_size,
-    (FTC_Glyph_Queue_DestroyNodeFunc)  ftc_glyph_image_node_destroy
-  };
 
+    (FTC_Glyph_Queue_InitFunc)       ftc_image_queue_init,
+    (FTC_Glyph_Queue_DoneFunc)       0,
+    (FTC_Glyph_Queue_CompareFunc)    ftc_image_queue_compare,
 
- /*************************************************************************/
- /*************************************************************************/
- /*****                                                               *****/
- /*****                    GLYPH IMAGE CACHE                          *****/
- /*****                                                               *****/
- /*************************************************************************/
- /*************************************************************************/
+    (FTC_Glyph_Queue_NewNodeFunc)    ftc_glyph_image_node_new,
+    (FTC_Glyph_Queue_SizeNodeFunc)   ftc_glyph_image_node_size,
+    (FTC_Glyph_Queue_DestroyNodeFunc)ftc_glyph_image_node_destroy
+  };
 
 
+  /*************************************************************************/
+  /*************************************************************************/
+  /*****                                                               *****/
+  /*****                    GLYPH IMAGE CACHE                          *****/
+  /*****                                                               *****/
+  /*************************************************************************/
+  /*************************************************************************/
 
-  FT_CPLUSPLUS(const FTC_Glyph_Cache_Class)  ftc_glyph_image_cache_class =
+
+  FT_CPLUSPLUS( const FTC_Glyph_Cache_Class )  ftc_glyph_image_cache_class =
   {
     {
       sizeof( FTC_Glyph_CacheRec ),
-      (FTC_Cache_InitFunc)  FTC_Glyph_Cache_Init,
-      (FTC_Cache_DoneFunc)  FTC_Glyph_Cache_Done
+      (FTC_Cache_InitFunc)FTC_Glyph_Cache_Init,
+      (FTC_Cache_DoneFunc)FTC_Glyph_Cache_Done
     },
-    (FTC_Glyph_Queue_Class*)  &ftc_glyph_image_queue_class
+    (FTC_Glyph_Queue_Class*)&ftc_glyph_image_queue_class
   };
 
 
@@ -217,8 +245,8 @@
               (FTC_Cache_Class*)&ftc_glyph_image_cache_class,
               (FTC_Cache*)acache );
   }
-                                        
 
+
   FT_EXPORT_DEF( FT_Error )  FTC_Image_Cache_Lookup(
                                FTC_Image_Cache  cache,
                                FTC_Image_Desc*  desc,
@@ -232,15 +260,16 @@
 
     FTC_Image_Queue  img_queue;
 
+
     /* check for valid `desc' delayed to FT_Lru_Lookup() */
 
     if ( !cache || !aglyph )
       return FT_Err_Invalid_Argument;
 
-    *aglyph   = 0;    
+    *aglyph   = 0;
     queue     = cache->root.last_queue;
     img_queue = (FTC_Image_Queue)queue;
-    if ( !queue || memcmp( &img_queue->description, desc, sizeof(*desc) ) )
+    if ( !queue || memcmp( &img_queue->description, desc, sizeof ( *desc ) ) )
     {
       error = FT_Lru_Lookup( cache->root.queues_lru,
                              (FT_LruKey)desc,
@@ -256,11 +285,11 @@
 
     /* now compress the manager's cache pool if needed */
     manager = cache->root.root.manager;
-    if (manager->num_bytes > manager->max_bytes)
+    if ( manager->num_bytes > manager->max_bytes )
     {
-      FTC_GlyphNode_Ref(inode);
+      FTC_GlyphNode_Ref( inode );
       FTC_Manager_Compress( manager );
-      FTC_GlyphNode_Unref(inode);
+      FTC_GlyphNode_Unref( inode );
     }
 
     *aglyph = FTC_GLYPHNODE_GET_GLYPH( inode );
@@ -270,3 +299,4 @@
   }
 
 
+/* END */
--- a/src/cache/ftcimage.h
+++ b/src/cache/ftcimage.h
@@ -1,10 +1,35 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftcimage.c                                                             */
+/*                                                                         */
+/*    FreeType Image cache (body).                                         */
+/*                                                                         */
+/*  Copyright 2000 by                                                      */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+
 #ifndef FTCIMAGE_H
 #define FTCIMAGE_H
 
+
 #include <freetype/cache/ftcglyph.h>
 
- /* the glyph image queue type */
-  typedef struct FTC_Image_QueueRec_
+
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
+
+  /* the glyph image queue type */
+  typedef struct  FTC_Image_QueueRec_
   {
     FTC_Glyph_QueueRec  root;
     FTC_Image_Desc      description;
@@ -11,11 +36,20 @@
   
   } FTC_Image_QueueRec, *FTC_Image_Queue;
 
-  typedef struct FTC_Image_CacheRec_
+
+  typedef struct  FTC_Image_CacheRec_
   {
     FTC_Glyph_CacheRec  root;
     
   } FTC_Image_CacheRec;
 
+
+#ifdef __cplusplus
+  }
+#endif
+
+
 #endif /* FTCIMAGE_H */
 
+
+/* END */
--- a/src/cache/ftcmanag.c
+++ b/src/cache/ftcmanag.c
@@ -21,9 +21,10 @@
 #include <freetype/internal/ftdebug.h>
 #include <freetype/ftlist.h>
 
-#undef   FT_COMPONENT
-#define  FT_COMPONENT  trace_cache
 
+#undef  FT_COMPONENT
+#define FT_COMPONENT  trace_cache
+
 #define FTC_LRU_GET_MANAGER( lru )  (FTC_Manager)lru->user_data
 
 
@@ -36,7 +37,7 @@
   /*************************************************************************/
 
 
-  LOCAL_FUNC_X  
+  LOCAL_FUNC_X
   FT_Error  ftc_manager_init_face( FT_Lru      lru,
                                    FT_LruNode  node )
   {
@@ -43,8 +44,8 @@
     FTC_Manager  manager = FTC_LRU_GET_MANAGER( lru );
     FT_Error     error;
     FT_Face      face;
-    
 
+
     error = manager->request_face( (FTC_FaceID)node->key,
                                    manager->library,
                                    manager->request_data,
@@ -60,7 +61,7 @@
   }
 
 
-  /* helper function for ftc_manager_done_face */
+  /* helper function for ftc_manager_done_face() */
   LOCAL_FUNC_X
   FT_Bool  ftc_manager_size_selector( FT_Lru      lru,
                                       FT_LruNode  node,
@@ -78,8 +79,8 @@
   {
     FTC_Manager  manager = FTC_LRU_GET_MANAGER( lru );
     FT_Face      face    = (FT_Face)node->root.data;
-    
 
+
     /* we must begin by removing all sizes for the target face */
     /* from the manager's list                                 */
     FT_Lru_Remove_Selection( manager->sizes_lru,
@@ -86,7 +87,7 @@
                              ftc_manager_size_selector,
                              face );
 
-    /* all right, we can discard the face now */    
+    /* all right, we can discard the face now */
     FT_Done_Face( face );
     node->root.data = 0;
   }
@@ -97,7 +98,7 @@
     FT_Face    face;
     FT_UShort  width;
     FT_UShort  height;
-    
+
   } FTC_FontRequest;
 
 
@@ -109,10 +110,10 @@
     FT_Size           size;
     FT_Error          error;
     FT_Face           face = font_req->face;
-    
+
     FT_UNUSED( lru );
 
-    
+
     node->root.data = 0;
     error = FT_New_Size( face, &size );
     if ( !error )
@@ -126,7 +127,7 @@
       else
         node->root.data = size;
     }
-    return error;   
+    return error;
   }
 
 
@@ -137,7 +138,7 @@
     FT_UNUSED( lru );
 
     FT_Done_Size( (FT_Size)node->root.data );
-  }                                
+  }
 
 
   LOCAL_FUNC_X
@@ -148,8 +149,8 @@
     FTC_FontRequest*  req  = (FTC_FontRequest*)key;
     FT_Size           size = (FT_Size)node->root.data;
     FT_Error          error;
-    
 
+
     if ( size->face == req->face )
     {
       size->face->size = size;  /* set current size */
@@ -173,7 +174,7 @@
   {
     FTC_FontRequest*  req  = (FTC_FontRequest*)key;
     FT_Size           size = (FT_Size)node->root.data;
-    
+
     FT_UNUSED( node );
 
 
@@ -182,7 +183,7 @@
              size->metrics.y_ppem == req->height );
   }
 
-  
+
   FT_CPLUSPLUS( const FT_Lru_Class )  ftc_face_lru_class =
   {
     sizeof ( FT_LruRec ),
@@ -192,7 +193,7 @@
     0
   };
 
-  
+
   FT_CPLUSPLUS( const FT_Lru_Class )  ftc_size_lru_class =
   {
     sizeof ( FT_LruRec ),
@@ -214,8 +215,8 @@
     FT_Error     error;
     FT_Memory    memory;
     FTC_Manager  manager = 0;
-    
-    
+
+
     if ( !library )
       return FT_Err_Invalid_Library_Handle;
 
@@ -223,16 +224,16 @@
 
     if ( ALLOC( manager, sizeof ( *manager ) ) )
       goto Exit;
-    
+
     if ( max_faces == 0 )
       max_faces = FTC_MAX_FACES_DEFAULT;
-      
+
     if ( max_sizes == 0 )
       max_sizes = FTC_MAX_SIZES_DEFAULT;
-      
+
     if ( max_bytes == 0 )
       max_bytes = FTC_MAX_BYTES_DEFAULT;
-      
+
     error = FT_Lru_New( &ftc_face_lru_class,
                         max_faces,
                         manager,
@@ -241,22 +242,22 @@
                         (FT_Lru*)&manager->faces_lru );
     if ( error )
       goto Exit;
-      
+
     error = FT_Lru_New( &ftc_size_lru_class,
                         max_sizes,
                         manager,
                         memory,
                         1, /* pre_alloc = TRUE */
-                        (FT_Lru*)&manager->sizes_lru );                    
+                        (FT_Lru*)&manager->sizes_lru );
     if ( error )
       goto Exit;
-    
+
     manager->library      = library;
     manager->max_bytes    = max_bytes;
     manager->request_face = requester;
     manager->request_data = req_data;
     *amanager = manager;
-    
+
   Exit:
     if ( error && manager )
     {
@@ -264,17 +265,17 @@
       FT_Lru_Done( manager->faces_lru );
       FREE( manager );
     }
-     
+
     return error;
   }
-                        
 
+
   FT_EXPORT_DEF( void )  FTC_Manager_Done( FTC_Manager  manager )
   {
     FT_Memory  memory;
     FT_UInt    index;
-    
 
+
     if ( !manager || !manager->library )
       return;
 
@@ -284,20 +285,20 @@
     for (index = 0; index < FTC_MAX_CACHES; index++ )
     {
       FTC_Cache  cache = manager->caches[index];
-      
-      
-      if (cache)
+
+
+      if ( cache )
       {
         cache->clazz->done_cache( cache );
-        FREE(cache);
+        FREE( cache );
         manager->caches[index] = 0;
       }
     }
-    
+
     /* discard faces and sizes */
     FT_Lru_Done( manager->sizes_lru );
     FT_Lru_Done( manager->faces_lru );
-    
+
     FREE( manager );
   }
 
@@ -320,7 +321,7 @@
       return FT_Err_Invalid_Cache_Handle;
 
     return  FT_Lru_Lookup( manager->faces_lru,
-                           (FT_LruKey)face_id, 
+                           (FT_LruKey)face_id,
                            (FT_Pointer*)aface );
   }
 
@@ -332,26 +333,26 @@
   {
     FTC_FontRequest  req;
     FT_Error         error;
-    
 
+
     /* check for valid `manager' delayed to FTC_Manager_Lookup_Face() */
 
     if ( aface )
       *aface = 0;
-      
+
     if ( asize )
       *asize = 0;
 
-    error = FTC_Manager_Lookup_Face( manager, font->face_id, aface ); 
+    error = FTC_Manager_Lookup_Face( manager, font->face_id, aface );
     if ( !error )
     {
       FT_Size  size;
-      
 
+
       req.face   = *aface;
       req.width  = font->pix_width;
       req.height = font->pix_height;
-      
+
       error = FT_Lru_Lookup( manager->sizes_lru,
                              (FT_LruKey)&req,
                              (FT_Pointer*)&size );
@@ -358,8 +359,8 @@
       if ( !error )
       {
         /* select the size as the current one for this face */
-        face->size = size;
-        
+        (*aface)->size = size;
+
         if ( asize )
           *asize = size;
       }
@@ -369,41 +370,44 @@
   }
 
 
-  /* "compress" the manager's data, i.e. get rids of old cache nodes */
+  /* `Compress' the manager's data, i.e., get rid of old cache nodes */
   /* that are not referenced anymore in order to limit the total     */
-  /* memory used by the cache..                                      */
-  FT_EXPORT_FUNC(void)  FTC_Manager_Compress( FTC_Manager  manager )
+  /* memory used by the cache.                                       */
+  FT_EXPORT_FUNC( void )  FTC_Manager_Compress( FTC_Manager  manager )
   {
     FT_ListNode  node;
-    
+
+
     node = manager->global_lru.tail;
-    while (manager->num_bytes > manager->max_bytes && node)
+    while ( manager->num_bytes > manager->max_bytes && node )
     {
-      FTC_CacheNode        cache_node = FTC_LIST_TO_CACHENODE(node);
-      FTC_CacheNode_Data*  data       = FTC_CACHENODE_TO_DATA_P(cache_node);
+      FTC_CacheNode        cache_node = FTC_LIST_TO_CACHENODE( node );
+      FTC_CacheNode_Data*  data       = FTC_CACHENODE_TO_DATA_P( cache_node );
       FTC_Cache            cache;
       FT_ListNode          prev       = node->prev;
-      
-      if (data->ref_count <= 0)
+
+
+      if ( data->ref_count <= 0 )
       {
-        /* ok, we're going to remove this node */
+        /* ok, we are going to remove this node */
         FT_List_Remove( &manager->global_lru, node );
-      
+
         /* finalize cache node */
         cache = manager->caches[data->cache_index];
-        if (cache)
+        if ( cache )
         {
           FTC_CacheNode_Class*  clazz = cache->node_clazz;
-          
+
+
           manager->num_bytes -= clazz->size_node( cache_node,
                                                   cache->cache_user );
-                                                  
+
           clazz->destroy_node( cache_node, cache->cache_user );
         }
         else
         {
-          /* this should never happen !! */
-          FT_ERROR(( "FTC_Manager_Compress: Cache Manager is corrupted !!\n" ));
+          /* this should never happen! */
+          FT_ERROR(( "FTC_Manager_Compress: Cache Manager is corrupted!\n" ));
         }
       }
       node = prev;
@@ -412,13 +416,13 @@
 
 
   FT_EXPORT_DEF( FT_Error )  FTC_Manager_Register_Cache(
-                                   FTC_Manager       manager,
-                                   FTC_Cache_Class*  clazz,
-                                   FTC_Cache        *acache )
+                               FTC_Manager       manager,
+                               FTC_Cache_Class*  clazz,
+                               FTC_Cache*        acache )
   {
-    FT_Error   error  = FT_Err_Invalid_Argument;
-    
-    
+    FT_Error  error = FT_Err_Invalid_Argument;
+
+
     if ( manager && clazz && acache )
     {
       FT_Memory  memory = manager->library->memory;
@@ -425,6 +429,7 @@
       FTC_Cache  cache;
       FT_UInt    index = 0;
 
+
       /* by default, return 0 */
       *acache = 0;
 
@@ -434,16 +439,16 @@
         if ( manager->caches[index] == 0 )
           break;
       }
-      
+
       /* return an error if there are too many registered caches */
-      if (index >= FTC_MAX_CACHES)
+      if ( index >= FTC_MAX_CACHES )
       {
         error = FT_Err_Too_Many_Caches;
         FT_ERROR(( "FTC_Manager_Register_Cache:" ));
-        FT_ERROR(( " too many registered caches..\n" ));
+        FT_ERROR(( " too many registered caches\n" ));
         goto Exit;
       }
-      
+
       if ( !ALLOC( cache, clazz->cache_byte_size ) )
       {
         cache->manager = manager;
@@ -450,17 +455,19 @@
         cache->memory  = memory;
         cache->clazz   = clazz;
 
-        if (clazz->init_cache)
+        if ( clazz->init_cache )
           error = clazz->init_cache( cache );
-        
-        if (error)
-          FREE(cache);
+
+        if ( error )
+          FREE( cache );
         else
-          manager->caches[index] = *acache = cache;        
+          manager->caches[index] = *acache = cache;
       }
     }
+
   Exit:
     return error;
   }
+
 
 /* END */