shithub: freetype+ttf2subf

Download patch

ref: 0db8d1ab84d3bbde5d1c77e8e932120bee3f1a06
parent: f697866ec2a06fc7fd4ab550ffc81df669e8427e
author: Werner Lemberg <[email protected]>
date: Sun Jan 9 12:54:56 EST 2000

Formatting.

git/fs: mount .git/fs: mount/attach disallowed
--- a/src/base/ftbbox.c
+++ b/src/base/ftbbox.c
@@ -15,7 +15,6 @@
 /*                                                                         */
 /***************************************************************************/
 
-
   /*************************************************************************/
   /*                                                                       */
   /* This component has a _single_ role: to compute exact outline bounding */
--- a/src/base/ftdebug.h
+++ b/src/base/ftdebug.h
@@ -15,7 +15,6 @@
 /*                                                                         */
 /***************************************************************************/
 
-
   /*************************************************************************/
   /*                                                                       */
   /* This component contains various macros and functions used to ease the */
--- a/src/base/ftdriver.h
+++ b/src/base/ftdriver.h
@@ -42,7 +42,7 @@
   /*    A driver method used to create a new driver object for a given     */
   /*    format.                                                            */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    driver :: A handle to the `new' driver object.  The fields         */
   /*              `library', `system', and `lock' are already set when the */
   /*              base layer calls this method.                            */
@@ -64,7 +64,7 @@
   /*    this call, and that this function should NOT destroy the driver    */
   /*    object.                                                            */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    driver :: A handle to target driver object.                        */
   /*                                                                       */
   /* <Return>                                                              */
@@ -72,7 +72,6 @@
   /*                                                                       */
   typedef FT_Error  (*FTDriver_doneDriver)( FT_Driver  driver );
 
-
   
   /*************************************************************************/
   /*                                                                       */
@@ -88,11 +87,13 @@
   /*    `postscript names' interface which can be used to retrieve the     */
   /*     PostScript name of a given glyph index).                          */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    driver    :: A handle to a driver object.                          */
-  /*    interface :: A string designing the interface.  Examples           */
-  /*                 are `sfnt', `post_names', `charmaps', etc.            */
   /*                                                                       */
+  /* <Input>                                                               */
+  /*    interface :: A string designing the interface.  Examples are       */
+  /*                 `sfnt', `post_names', `charmaps', etc.                */
+  /*                                                                       */
   /* <Return>                                                              */
   /*    A typeless pointer to the extension's interface (normally a table  */
   /*    of function pointers).  Returns NULL if the requested extension    */
@@ -140,10 +141,14 @@
   /*    A driver method used to initialize a new face object.  The object  */
   /*    must be created by the caller.                                     */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    stream         :: The input stream.                                */
+  /*                                                                       */
+  /* <Input>                                                               */
   /*    typeface_index :: The face index in the font resource.  Used to    */
   /*                      access individual faces in collections.          */
+  /*                                                                       */
+  /* <Output>                                                              */
   /*    face           :: A handle to the new target face.                 */
   /*                                                                       */
   /* <Return>                                                              */
@@ -174,7 +179,7 @@
   /*    function does NOT destroy the object, that is the responsibility   */
   /*    of the caller.                                                     */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    face :: A handle to the target face object.                        */
   /*                                                                       */
   /* <Return>                                                              */
@@ -242,7 +247,7 @@
   /*    A driver method used to initialize a new size object.  The object  */
   /*    must be created by the caller.                                     */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    size :: A handle to the new size object.                           */
   /*                                                                       */
   /* <Return>                                                              */
@@ -264,8 +269,10 @@
   /*    A driver method used to reset a size's character sizes (horizontal */
   /*    and vertical) expressed in fractional points.                      */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    size            :: A handle to the target size object.             */
+  /*                                                                       */
+  /* <Input>                                                               */
   /*    char_width      :: The character width expressed in 26.6           */
   /*                       fractional points.                              */
   /*    char_height     :: The character height expressed in 26.6          */
@@ -296,8 +303,10 @@
   /*    A driver method used to reset a size's character sizes (horizontal */
   /*    and vertical) expressed in integer pixels.                         */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    size         :: A handle to the target size object.                */
+  /*                                                                       */
+  /* <Input>                                                               */
   /*    pixel_width  :: The character width expressed in 26.6 fractional   */
   /*                    pixels.                                            */
   /*    pixel_height :: The character height expressed in 26.6 fractional  */
@@ -307,7 +316,7 @@
   /*    FreeType error code.  0 means success.                             */
   /*                                                                       */
   /* <Note>                                                                */
-  /*    This function should work with all kinds of `Size' objects, either */
+  /*    This function should work with all kinds of `size' objects, either */
   /*    fixed or scalable ones.                                            */
   /*                                                                       */
   typedef FT_Error  (*FTDriver_setPixelSizes)( FT_Size  size,
@@ -325,7 +334,7 @@
   /*    does NOT destroy the object; this is the responsibility of the     */
   /*    caller.                                                            */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    size :: A handle to the target size object.                        */
   /*                                                                       */
   typedef void  (*FTDriver_doneSize)( FT_Size  size );
@@ -356,7 +365,7 @@
   /*    container where a single glyph can be loaded, either in outline or */
   /*    bitmap format.                                                     */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    slot :: A handle to the new glyph slot object.                     */
   /*                                                                       */
   /* <Return>                                                              */
@@ -374,7 +383,7 @@
   /*    A driver method used to finalize a given glyph slot.  The object   */
   /*    is not destroyed by this function.                                 */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    slot :: A handle to the new glyph slot object.                     */
   /*                                                                       */
   typedef void  (*FTDriver_doneGlyphSlot)( FT_GlyphSlot  slot );
@@ -388,11 +397,13 @@
   /* <Description>                                                         */
   /*    A driver method used to load a glyph within a given glyph slot.    */
   /*                                                                       */
-  /* <Input>                                                               */
+  /* <InOut>                                                               */
   /*    slot        :: A handle to target slot object where the glyph will */
   /*                   be loaded.                                          */
   /*    size        :: A handle to the source face size at which the glyph */
   /*                   must be scaled/loaded.                              */
+  /*                                                                       */
+  /* <Input>                                                               */
   /*    glyph_index :: The index of the glyph in the font file.            */
   /*    load_flags  :: A flag indicating what to load for this glyph.  The */
   /*                   FTLOAD_??? constants can be used to control the     */
--- a/src/base/ftextend.c
+++ b/src/base/ftextend.c
@@ -1,34 +1,38 @@
-/*******************************************************************
- *
- *  ftextend.h                                                   2.0
- *
- *    Extensions Implementation
- *
- *  Copyright 1996-1999 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.
- *
- *  This is an updated version of the extension component, now
- *  located in the main library's source directory.  It allows
- *  the dynamic registration/use of various face object extensions
- *  through a simple API.
- *
- ******************************************************************/
+/***************************************************************************/
+/*                                                                         */
+/*  ftextend.h                                                             */
+/*                                                                         */
+/*  FreeType extensions implementation (body).                             */
+/*                                                                         */
+/*  Copyright 1996-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.                                        */
+/*                                                                         */
+/***************************************************************************/
 
-#include "ftextend.h"
-#include "ftobjs.h"
+  /*************************************************************************/
+  /*                                                                       */
+  /*  This is an updated version of the extension component, now located   */
+  /*  in the main library's source directory.  It allows the dynamic       */
+  /*  registration/use of various face object extensions through a simple  */
+  /*  API.                                                                 */
+  /*                                                                       */
+  /*************************************************************************/
 
+#include <ftextend.h>
+#include <ftobjs.h>
+
 /* required by the tracing mode */
 #undef  FT_COMPONENT
-#define FT_COMPONENT      trace_extend
+#define FT_COMPONENT  trace_extend
 
 
-  typedef struct FT_Extension_Registry_
+  typedef struct  FT_Extension_Registry_
   {
     FT_Int              num_extensions;
     FT_Long             cur_offset;
@@ -37,17 +41,30 @@
   } FT_Extension_Registry;
 
 
-  /* Initialize the extension component */
-
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    FT_Init_Extensions                                                 */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Initializes the extension component.                               */
+  /*                                                                       */
+  /* <InOut>                                                               */
+  /*    driver :: A handle to the driver object.                           */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    FreeType error code.  0 means success.                             */
+  /*                                                                       */
   LOCAL_FUNC
   FT_Error  FT_Init_Extensions( FT_Driver  driver )
   {
-  FT_Error                error;
+    FT_Error                error;
     FT_Memory               memory;
     FT_Extension_Registry*  registry;
 
+
     memory = driver->library->memory;
-    if ( ALLOC( registry, sizeof (*registry) ) )
+    if ( ALLOC( registry, sizeof ( *registry ) ) )
       return error;
 
     registry->num_extensions = 0;
@@ -58,12 +75,25 @@
   }
 
 
-  /* Finalize the extension component */
-
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    FT_Done_Extensions                                                 */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Finalizes the extension component.                                 */
+  /*                                                                       */
+  /* <InOut>                                                               */
+  /*    driver :: A handle to the driver object.                           */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    FreeType error code.  0 means success.                             */
+  /*                                                                       */
   LOCAL_FUNC
   FT_Error  FT_Done_Extensions( FT_Driver  driver )
   {
     FT_Memory  memory = driver->memory;
+
     
     FREE( driver->extensions );
     return FT_Err_Ok;
@@ -70,24 +100,39 @@
   }
 
 
-  /* Register a new extension */
-
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    FT_Register_Extension                                              */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Registers a new extension.                                         */
+  /*                                                                       */
+  /* <InOut>                                                               */
+  /*    driver :: A handle to the driver object.                           */
+  /*    class  :: A pointer to a class describing the extension.           */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    FreeType error code.  0 means success.                             */
+  /*                                                                       */
   EXPORT_FUNC
   FT_Error  FT_Register_Extension( FT_Driver            driver,
-                                   FT_Extension_Class*  clazz )
+                                   FT_Extension_Class*  class )
   {
     FT_Extension_Registry*  registry;
 
+
     registry = (FT_Extension_Registry*)driver->extensions;
-    if (registry)
+    if ( registry )
     {
       FT_Int               n   = registry->num_extensions;
       FT_Extension_Class*  cur = registry->classes + n;
+
       
       if ( n >= FT_MAX_EXTENSIONS )
         return FT_Err_Too_Many_Extensions;
 
-      *cur = *clazz;    
+      *cur = *class;    
 
       cur->offset  = registry->cur_offset;
 
@@ -99,8 +144,26 @@
   }
 
 
-  /* Query an extension block by extension_ID */
-
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    FT_Get_Extension                                                   */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Queries an extension block by an extension ID string.              */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    face                :: A handle to the face object.                */
+  /*    extension_id        :: An ID string identifying the extension.     */
+  /*                                                                       */
+  /* <Output>                                                              */
+  /*    extension_interface :: A generic pointer, usually pointing to a    */
+  /*                           table of functions implementing the         */
+  /*                           extension interface.                        */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    A pointer to the extension block.                                  */
+  /*                                                                       */
   EXPORT_FUNC
   void*  FT_Get_Extension( FT_Face      face,
                            const char*  extension_id,
@@ -107,12 +170,14 @@
                            void*       *extension_interface ) 
   {
     FT_Extension_Registry*  registry;
+
     
     registry = (FT_Extension_Registry*)face->driver->extensions;
-    if (registry && face->extensions)
+    if ( registry && face->extensions )
     {
       FT_Extension_Class*  cur   = registry->classes;
       FT_Extension_Class*  limit = cur + registry->num_extensions;
+
       
       for ( ; cur < limit; cur++ )
         if ( strcmp( cur->id, extension_id ) == 0 )
@@ -123,30 +188,48 @@
     }
     
     /* could not find the extension id */
+
     *extension_interface = 0;
     return 0;
   }
 
-  /* Destroy all extensions within a face object.  Called by the */
-  /* face object destructor.                                     */
 
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    FT_Destroy_Extensions                                              */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Destroys all extensions within a face object.                      */
+  /*                                                                       */
+  /* <InOut>                                                               */
+  /*    face :: A handle to the face object.                               */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    FreeType error code.  0 means success.                             */
+  /*                                                                       */
+  /* <Note>                                                                */
+  /*    Called by the face object destructor.                              */
+  /*                                                                       */
   LOCAL_FUNC
   FT_Error  FT_Destroy_Extensions( FT_Face  face )
   {
     FT_Extension_Registry*  registry;
     FT_Memory               memory;
-    
+
+ 
     registry = (FT_Extension_Registry*)face->driver->extensions;
-    if (registry && face->extensions)
+    if ( registry && face->extensions )
     {
       FT_Extension_Class*  cur   = registry->classes;
       FT_Extension_Class*  limit = cur + registry->num_extensions;
+
       
       for ( ; cur < limit; cur++ )
       {
         char*  ext = (char*)face->extensions + cur->offset;
         
-        if (cur->finalize)
+        if ( cur->finalize )
           cur->finalize( ext, face );
       }
       
@@ -153,13 +236,29 @@
       memory = face->driver->memory;
       FREE( face->extensions );
     }
+
     return FT_Err_Ok;
   }
 
 
-  /* Create an extension within a face object.  Called by the */
-  /* face object constructor.                                 */
-
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    FT_Create_Extensions                                               */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Creates an extension object within a face object for all           */
+  /*    registered extensions.                                             */
+  /*                                                                       */
+  /* <InOut>                                                               */
+  /*    face :: A handle to the face object.                               */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    FreeType error code.  0 means success.                             */
+  /*                                                                       */
+  /* <Note>                                                                */
+  /*    Called by the face object constructor.                             */
+  /*                                                                       */
   LOCAL_FUNC
   FT_Error  FT_Create_Extensions( FT_Face  face )
   {
@@ -166,12 +265,15 @@
     FT_Extension_Registry*  registry;
     FT_Memory               memory;
     FT_Error                error;
+
     
     face->extensions = 0;
     
-    /* load extensions registry, exit succesfully if none is there */
+    /* load extensions registry, exit successfully if none is there */
+
     registry = (FT_Extension_Registry*)face->driver->extensions;
-    if (!registry) return FT_Err_Ok;
+    if ( !registry )
+      return FT_Err_Ok;
     
     memory = face->driver->memory;
     if ( ALLOC( face->extensions, registry->cur_offset ) )
@@ -180,18 +282,21 @@
     {
       FT_Extension_Class*  cur   = registry->classes;
       FT_Extension_Class*  limit = cur + registry->num_extensions;
+
       
       for ( ; cur < limit; cur++ )
       {
         char*  ext = (char*)face->extensions + cur->offset;
         
-        if (cur->init)
+        if ( cur->init )
         {
           error = cur->init( ext, face );
-          if (error) break;
+          if ( error )
+            break;
         }
       }
     }
+
     return error;
   }
 
--- a/src/base/ftextend.h
+++ b/src/base/ftextend.h
@@ -1,25 +1,25 @@
-/*******************************************************************
- *
- *  ftextend.h                                                   2.0
- *
- *    Extensions Interface.
- *
- *  Copyright 1996-1999 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.
- *
- ******************************************************************/
+/***************************************************************************/
+/*                                                                         */
+/*  ftextend.h                                                             */
+/*                                                                         */
+/*  FreeType extensions implementation (specification).                    */
+/*                                                                         */
+/*  Copyright 1996-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 FTEXTEND_H
 #define FTEXTEND_H
 
-#include "ftconfig.h"
-#include "ftobjs.h"
+#include <ftconfig.h>
+#include <ftobjs.h>
 
 
 #ifdef __cplusplus
@@ -26,92 +26,89 @@
   extern "C" {
 #endif
 
-  /* The extensions don't need to be integrated at compile time into */
-  /* the engine, only at link time.                                  */
+  /*************************************************************************/
+  /*                                                                       */
+  /* The extensions don't need to be integrated at compile time into the   */
+  /* engine, only at link time.                                            */
+  /*                                                                       */
+  /*************************************************************************/
 
- /*****************************************************************
-  *
-  * <FuncType>
-  *   FT_Extension_Initializer
-  *
-  * <Description>
-  *   Each new face object can have several extensions associated
-  *   to it at creation time. This function is used to initialize
-  *   a given extension data for a given face.
-  *
-  * <Input>
-  *   ext   :: a typeless pointer to the extension data.
-  *   face  :: handle to the source face object the extension is
-  *            associated with
-  *
-  * <Return>
-  *   Error condition. 0 means success
-  *
-  * <Note>
-  *   In case of error, the initializer should not destroy the
-  *   extension data, as the finalizer will get called later
-  *   by the function's caller..
-  *
-  *****************************************************************/
-
+  /*************************************************************************/
+  /*                                                                       */
+  /* <FuncType>                                                            */
+  /*    FT_Extension_Initializer                                           */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Each new face object can have several extensions associated with   */
+  /*    it at creation time.  This function is used to initialize given    */
+  /*    extension data for a given face.                                   */
+  /*                                                                       */
+  /* <InOut>                                                               */
+  /*    ext  :: A typeless pointer to the extension data.                  */
+  /*    face :: A handle to the source face object the extension is        */
+  /*            associated with.                                           */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    FreeType error code.  0 means success.                             */
+  /*                                                                       */
+  /* <Note>                                                                */
+  /*    In case of error, the initializer should not destroy the extension */
+  /*    data, as the finalizer will get called later by the function's     */
+  /*    caller.                                                            */
+  /*                                                                       */
   typedef FT_Error (*FT_Extension_Initializer)( void*    ext, 
                                                 FT_Face  face );
 
- /*****************************************************************
-  *
-  * <FuncType>
-  *   FT_Extension_Finalizer
-  *
-  * <Description>
-  *   Each new face object can have several extensions associated
-  *   to it at creation time. This function is used to finalize
-  *   a given extension data for a given face. This occurs before
-  *   the face object itself is finalized.
-  *
-  * <Input>
-  *   ext   :: a typeless pointer to the extension data.
-  *   face  :: handle to the source face object the extension is
-  *            associated with
-  *
-  *****************************************************************/
 
-  typedef void  (*FT_Extension_Finalizer)( void*  ext, FT_Face  face );
+  /*************************************************************************/
+  /*                                                                       */
+  /* <FuncType>                                                            */
+  /*    FT_Extension_Finalizer                                             */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    Each new face object can have several extensions associated with   */
+  /*    it at creation time.  This function is used to finalize given      */
+  /*    extension data for a given face; it occurs before the face object  */
+  /*    itself is finalized.                                               */
+  /*                                                                       */
+  /* <InOut>                                                               */
+  /*   ext  :: A typeless pointer to the extension data.                   */
+  /*   face :: A handle to the source face object the extension is         */
+  /*           associated with.                                            */
+  /*                                                                       */
+  typedef void  (*FT_Extension_Finalizer)( void*    ext,
+                                           FT_Face  face );
 
 
- /*****************************************************************
-  *
-  * <Struct>
-  *   FT_Extension_Class
-  *
-  * <Description>
-  *   A simple structure used to describe a given extension to
-  *   the FreeType base layer. An FT_Extension_Class is used as
-  *   a parameter for FT_Register_Extension.
-  *
-  * <Fields>
-  *   id        :: the extension's id. This is a normal C string
-  *                that is used to uniquely reference the extension's
-  *                interface.
-  *
-  *   size      :: the size in bytes of the extension data that must
-  *                be associated with each face object.
-  *
-  *   init      :: a pointer to the extension data's initializer
-  *   finalize  :: a pointer to the extension data's finalizer
-  *
-  *   inteface  :: this pointer can be anything, but should usually
-  *                point to a table of function pointers which implement
-  *                the extension's interface.
-  *
-  *   offset    :: this field is set and used within the base layer
-  *                and should be set to 0 when registering an
-  *                extension through FT_Register_Extension. It contains
-  *                an offset within the face's extension block for the
-  *                current extension's data.
-  *
-  *****************************************************************/
-
-  typedef struct FT_Extension_Class_
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Struct>                                                              */
+  /*    FT_Extension_Class                                                 */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    A simple structure used to describe a given extension to the       */
+  /*    FreeType base layer.  An FT_Extension_Class is used as a parameter */
+  /*    for FT_Register_Extension().                                       */
+  /*                                                                       */
+  /* <Fields>                                                              */
+  /*    id        :: The extension's ID.  This is a normal C string that   */
+  /*                 is used to uniquely reference the extension's         */
+  /*                 interface.                                            */
+  /*    size      :: The size in bytes of the extension data that must be  */
+  /*                 associated with each face object.                     */
+  /*    init      :: A pointer to the extension data's initializer.        */
+  /*    finalize  :: A pointer to the extension data's finalizer.          */
+  /*    interface :: This pointer can be anything, but should usually      */
+  /*                 point to a table of function pointers which implement */
+  /*                 the extension's interface.                            */
+  /*                                                                       */
+  /*    offset    :: This field is set and used within the base layer and  */
+  /*                 should be set to 0 when registering an extension      */
+  /*                 through FT_Register_Extension().  It contains an      */
+  /*                 offset within the face's extension block for the      */
+  /*                 current extension's data.                             */
+  /*                                                                       */
+  typedef struct  FT_Extension_Class_
   {
     const char*               id;
     FT_ULong                  size;
@@ -130,6 +127,8 @@
 
 
 #ifdef FT_CONFIG_OPTION_EXTEND_ENGINE
+
+
   /* Initialize the extension component */
   LOCAL_DEF
   FT_Error  FT_Init_Extensions( FT_Library  library );
@@ -147,13 +146,17 @@
   /* face object destructor.                                     */
   LOCAL_DEF
   FT_Error  FT_Destroy_Extensions( FT_Face  face );
+
+
 #endif
 
-  /* Returns an extension's data & inteface according to its ID */
+
+  /* Returns an extension's data & interface according to its ID */
   EXPORT_DEF
   void*     FT_Get_Extension( FT_Face      face,
                               const char*  extension_id,
                               void*       *extension_interface );
+
 #ifdef __cplusplus
   }
 #endif