shithub: freetype+ttf2subf

Download patch

ref: 607358967fdedae281f8e6eac33f8a6d4c9aa403
parent: ab9cc277c2d695b2d253610d9867256aa2a3ad8f
author: David Turner <[email protected]>
date: Fri Jul 7 15:46:30 EDT 2000

removed obsolete files..

git/fs: mount .git/fs: mount/attach disallowed
--- a/src/oldapi/Makefile
+++ /dev/null
@@ -1,29 +1,0 @@
-#
-#  The OldApi component had not been migrated to the new design yet
-#  please wait a few days for some updates. This file should be
-#  completely ignored during a BUILD !!
-#
-#
-include drivers/shared/sfnt/Makefile
-
-OLDAPI_DIR := $(TOP_DIR)/oldapi
-
-OLDAPI_INCLUDES := $(FT_IFLAG)$(SFNT_DIR)    \
-                   $(FT_IFLAG)$(OLDAPI_DIR)  \
-                   $(FT_IFLAG)$(TT_DIR)
-
-OLDAPI_CFLAGS   := $(FT_CFLAGS) $(OLDAPI_INCLUDES)
-
-OLDAPI_OBJ := $(OBJ_DIR)/ttapi.$(FT_OBJ)
-
-# FreeType-1.1 compatible interface
-#
-$(OLDAPI_OBJ): $(OLDAPI_DIR)/ttapi.c $(OLDAPI_DIR)/truetype.h \
-                    $(BASE_H) $(SFNT_H) $(TT_DRV_H)
-	$(FT_CC) $(OLDAPI_CFLAGS) $< -o $@
-
-# update main driver object lists
-#
-DRV_OBJS_S += $(OLDAPI_OBJ)
-DRV_OBJS_M += $(OLDAPI_OBJ)
-
--- a/src/oldapi/readme.txt
+++ /dev/null
@@ -1,18 +1,0 @@
-This directory is provided in order to compile a stand-alone
-TrueType driver which should be backwards and binary compatible
-with FreeType 1.1
-
-Reason is some important design changes were introduced in FreeType
-lately, in order to support several font formats transparently.
-
-The files are :
-
-"truetype.h"        - a replacement for the old "freetype.h" file
-                      that was included by client applications and
-                      font servers of 1.1
-
-"ttapi.c"           - a front-end for the new TrueType driver, that
-                      presents exactly the same interface as the one
-                      in 1.1
-
-
--- a/src/oldapi/truetype.h
+++ /dev/null
@@ -1,1709 +1,0 @@
-/*******************************************************************
- *
- *  truetype.h
- *
- *    Backwards-compatible high-level interface for the TrueType
- *    driver. This file is a replacement for the old "freetype.h"
- *    from 1.0 and 1.1. It can be used to compile applications
- *    and tools using the old API..
- *
- *    Note that this (old) interface is now deprecated and won't
- *    be modified in the future. Developers will have to switch to
- *    the newer interface to get new features ( kerning, embedded
- *    bitmaps, etc.. ).
- *
- *
- *
- *  Copyright 1996-1998 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.
- *
- *  Note:
- *
- *    This is the only file that should be included by client
- *    application sources.  All other types and functions defined
- *    in the "tt*.h" files are library internals and should not be
- *    included.
- *
- ******************************************************************/
-
-#ifndef TRUETYPE_H
-#define TRUETYPE_H
-
-/* To make freetype.h independent from configuration files we check */
-/* whether EXPORT_DEF has been defined already.                     */
-
-#ifndef EXPORT_DEF
-#define EXPORT_DEF extern
-#endif
-
-/* The same for TT_Text.  If you define the HAVE_TT_TEXT macro, you */
-/* have to provide a typedef declaration for TT_Text before         */
-/* including this file.                                             */
-
-#ifndef HAVE_TT_TEXT
-#define HAVE_TT_TEXT
-  typedef char  TT_Text;              /* the data type to represent */
-                                      /* file name string elements  */
-#endif
-
-#ifdef __cplusplus
-  extern "C" {
-#endif
-
-
-/* The following types are also defined in "drivers/ttlib/ttobjs.h"  */
-/* We use the _TRUETYPE_ macro to prevent their redefinition when    */
-/* _compiling_ the backwards-compatible layer called "ttapi.c"       */
-/*                                                                   */
-#ifndef _TRUETYPE_
-
-  /*******************************************************************/
-  /*                                                                 */
-  /*  FreeType types definitions.                                    */
-  /*                                                                 */
-  /*  All these begin with a 'TT_' prefix.                           */
-  /*                                                                 */
-  /*******************************************************************/
-
-  typedef unsigned short  TT_Bool;
-
-  typedef signed long     TT_Fixed;   /* Signed Fixed 16.16 Float */
-
-  typedef signed short    TT_FWord;   /* Distance in FUnits */
-  typedef unsigned short  TT_UFWord;  /* Unsigned distance */
-
-  typedef char            TT_String;
-  typedef signed char     TT_Char;
-  typedef unsigned char   TT_Byte;
-  typedef signed short    TT_Short;
-  typedef unsigned short  TT_UShort;
-  typedef signed long     TT_Long;
-  typedef unsigned long   TT_ULong;
-  typedef int             TT_Int;
-
-  typedef signed short    TT_F2Dot14; /* Signed fixed float 2.14 used for */
-                                      /* unit vectors, with layout:       */
-                                      /*                                  */
-                                      /*  s : 1  -- sign bit              */
-                                      /*  m : 1  -- integer bit           */
-                                      /*  f : 14 -- unsigned fractional   */
-                                      /*                                  */
-                                      /*  's:m' is the 2-bit signed int   */
-                                      /*  value to which the positive     */
-                                      /*  fractional part should be       */
-                                      /*  added.                          */
-                                      /*                                  */
-
-  typedef signed long     TT_F26Dot6; /* 26.6 fixed float, used for       */
-                                      /* glyph points pixel coordinates.  */
-
-  typedef signed long     TT_Pos;     /* point position, expressed either */
-                                      /* in fractional pixels or notional */
-                                      /* units, depending on context.     */
-                                      /* For example, glyph coordinates   */
-                                      /* returned by TT_Load_Glyph are    */
-                                      /* expressed in font units when     */
-                                      /* scaling wasn't requested, and    */
-                                      /* in 26.6 fractional pixels if it  */
-                                      /* was.                             */
-
-
-  struct  TT_UnitVector_      /* guess what...  */
-  {
-    TT_F2Dot14  x;
-    TT_F2Dot14  y;
-  };
-
-  typedef struct TT_UnitVector_  TT_UnitVector;
-
-
-  struct  TT_Vector_          /* Simple vector type */
-  {
-    TT_F26Dot6  x;
-    TT_F26Dot6  y;
-  };
-
-  typedef struct TT_Vector_  TT_Vector;
-
-
-  /* A simple 2x2 matrix used for transformations. */
-  /* You should use 16.16 fixed floats.            */
-  /*                                               */
-  /*  x' = xx*x + xy*y                             */
-  /*  y' = yx*x + yy*y                             */
-  /*                                               */
-
-  struct  TT_Matrix_
-  {
-    TT_Fixed  xx, xy;
-    TT_Fixed  yx, yy;
-  };
-
-  typedef struct TT_Matrix_  TT_Matrix;
-
-
-  /* A structure used to describe a simple bounding box */
-
-  struct TT_BBox_
-  {
-    TT_Pos  xMin;
-    TT_Pos  yMin;
-    TT_Pos  xMax;
-    TT_Pos  yMax;
-  };
-
-  typedef struct TT_BBox_  TT_BBox;
-
-
-
-#endif /* _TRUETYPE_ */
-
-
-
-
-  /* A structure used to describe the source glyph to the renderer. */
-
-  struct  TT_Outline_
-  {
-    TT_Short         n_contours;   /* number of contours in glyph        */
-    TT_UShort        n_points;     /* number of points in the glyph      */
-
-    TT_Vector*       points;       /* the outline's points   */
-    TT_Byte*         flags;        /* the points flags       */
-    TT_UShort*       contours;     /* the contour end points */
-
-    /* The following flag indicates that the outline owns the arrays it  */
-    /* refers to.  Typically, this is true of outlines created from the  */
-    /* TT_New_Outline() API, while it isn't for those returned by        */
-    /* TT_Get_Glyph_Outline().                                           */
-
-    TT_Bool          owner;      /* the outline owns the coordinates,    */
-                                 /* flags and contours array it uses     */
-
-    /* The following flags are set automatically by                      */
-    /* TT_Get_Glyph_Outline().  Their meaning is the following:          */
-    /*                                                                   */
-    /*  high_precision   When true, the scan-line converter will use     */
-    /*                   a higher precision to render bitmaps (i.e. a    */
-    /*                   1/1024 pixel precision).  This is important for */
-    /*                   small ppem sizes.                               */
-    /*                                                                   */
-    /*  second_pass      When true, the scan-line converter performs     */
-    /*                   a second sweep phase dedicated to find          */
-    /*                   vertical drop-outs.  If false, only horizontal  */
-    /*                   drop-outs will be checked during the first      */
-    /*                   vertical sweep (yes, this is a bit confusing    */
-    /*                   but it's really the way it should work).        */
-    /*                   This is important for small ppems too.          */
-    /*                                                                   */
-    /*  dropout_mode     Specifies the TrueType drop-out mode to         */
-    /*                   use for continuity checking. valid values       */
-    /*                   are 0 (no check), 1, 2, 4, and 5.               */
-    /*                                                                   */
-    /*  Most of the engine's users will safely ignore these fields...    */
-
-    TT_Bool          high_precision;  /* high precision rendering */
-    TT_Bool          second_pass;     /* two sweeps rendering     */
-    TT_Char          dropout_mode;    /* dropout mode */
-  };
-
-  typedef struct TT_Outline_  TT_Outline;
-
-
-  /* A structure used to return glyph metrics.                          */
-  /*                                                                    */
-  /* The "bearingX" isn't called "left-side bearing" anymore because    */
-  /* it has different meanings depending on the glyph's orientation.    */
-  /*                                                                    */
-  /* The same is true for "bearingY", which is the top-side bearing     */
-  /* defined by the TT_Spec, i.e., the distance from the baseline to    */
-  /* the top of the glyph's bbox.  According to our current convention, */
-  /* this is always the same as "bbox.yMax" but we make it appear for   */
-  /* consistency in its proper field.                                   */
-  /*                                                                    */
-  /* The "advance" width is the advance width for horizontal layout,    */
-  /* and advance height for vertical layouts.                           */
-  /*                                                                    */
-  /* Finally, the library (ver. 1.1) doesn't support vertical text yet  */
-  /* but these changes were introduced to accomodate it, as it will     */
-  /* most certainly be introduced in later releases.                    */
-
-  struct  TT_Glyph_Metrics_
-  {
-    TT_BBox  bbox;      /* glyph bounding box */
-
-    TT_Pos   bearingX;  /* left-side bearing                    */
-    TT_Pos   bearingY;  /* top-side bearing, per se the TT spec */
-
-    TT_Pos   advance;   /* advance width (or height) */
-  };
-
-
-  /* A structure used to return horizontal _and_ vertical glyph         */
-  /* metrics.                                                           */
-  /*                                                                    */
-  /* A glyph can be used either in a horizontal or vertical layout.     */
-  /* Its glyph metrics vary with orientation.  The Big_Glyph_Metrics    */
-  /* structure is used to return _all_ metrics in one call.             */
-  /*                                                                    */
-
-  struct TT_Big_Glyph_Metrics_
-  {
-    TT_BBox  bbox;          /* glyph bounding box */
-
-    TT_Pos   horiBearingX;  /* left side bearing in horizontal layouts */
-    TT_Pos   horiBearingY;  /* top side bearing in horizontal layouts  */
-
-    TT_Pos   vertBearingX;  /* left side bearing in vertical layouts */
-    TT_Pos   vertBearingY;  /* top side bearing in vertical layouts  */
-
-    TT_Pos   horiAdvance;   /* advance width for horizontal layout */
-    TT_Pos   vertAdvance;   /* advance height for vertical layout  */
-
-    /* The following fields represent unhinted scaled metrics values. */
-    /* They can be useful for applications needing to do some device  */
-    /* independent placement of glyphs.                               */
-    /*                                                                */
-    /* Applying these metrics to hinted glyphs will most surely ruin  */
-    /* the grid fitting performed by the bytecode interpreter.  These */
-    /* values are better used to compute accumulated positioning      */
-    /* distances.                                                     */
-
-    TT_Pos   linearHoriBearingX;  /* linearly scaled horizontal lsb     */
-    TT_Pos   linearHoriAdvance;   /* linearly scaled horizontal advance */
-
-    TT_Pos   linearVertBearingY;  /* linearly scaled vertical tsb     */
-    TT_Pos   linearVertAdvance;   /* linearly scaled vertical advance */
-  };
-
-  typedef struct TT_Glyph_Metrics_      TT_Glyph_Metrics;
-  typedef struct TT_Big_Glyph_Metrics_  TT_Big_Glyph_Metrics;
-
-
-  /* A structure used to return instance metrics. */
-
-  struct  TT_Instance_Metrics_
-  {
-    TT_F26Dot6  pointSize;     /* char. size in points (1pt = 1/72 inch) */
-
-    TT_UShort   x_ppem;        /* horizontal pixels per EM square */
-    TT_UShort   y_ppem;        /* vertical pixels per EM square   */
-
-    TT_Fixed    x_scale;     /* 16.16 to convert from EM units to 26.6 pix */
-    TT_Fixed    y_scale;     /* 16.16 to convert from EM units to 26.6 pix */
-
-    TT_UShort   x_resolution;  /* device horizontal resolution in dpi */
-    TT_UShort   y_resolution;  /* device vertical resolution in dpi   */
-  };
-
-  typedef struct TT_Instance_Metrics_  TT_Instance_Metrics;
-
-
-  /* Flow constants:                                             */
-  /*                                                             */
-  /* The flow of a bitmap refers to the way lines are oriented   */
-  /* within the bitmap data, i.e., the orientation of the Y      */
-  /* coordinate axis.                                            */
-
-  /* For example, if the first bytes of the bitmap pertain to    */
-  /* its top-most line, then the flow is 'down'.  If these bytes */
-  /* pertain to its lowest line, the the flow is 'up'.           */
-
-#define TT_Flow_Down  -1  /* bitmap is oriented from top to bottom */
-#define TT_Flow_Up     1  /* bitmap is oriented from bottom to top */
-#define TT_Flow_Error  0  /* an error occurred during rendering    */
-
-
-  /* A structure used to describe the target bitmap or pixmap to the   */
-  /* renderer.  Note that there is nothing in this structure that      */
-  /* gives the nature of the buffer.                                   */
-
-  /* IMPORTANT NOTE:                                                   */
-  /*                                                                   */
-  /*   In the case of a pixmap, the 'width' and 'cols' fields must     */
-  /*   have the _same_ values, and _must_ be padded to 32-bits, i.e.,  */
-  /*   be a multiple of 4.  Clipping problems will arise otherwise,    */
-  /*   if not even page faults!                                        */
-  /*                                                                   */
-  /*   The typical settings are:                                       */
-  /*                                                                   */
-  /*   - for an WxH bitmap:                                            */
-  /*                                                                   */
-  /*       rows  = H                                                   */
-  /*       cols  = (W+7)/8                                             */
-  /*       width = W                                                   */
-  /*       flow  = your_choice                                         */
-  /*                                                                   */
-  /*   - for an WxH pixmap:                                            */
-  /*                                                                   */
-  /*       rows  = H                                                   */
-  /*       cols  = (W+3) & ~3                                          */
-  /*       width = cols                                                */
-  /*       flow  = your_choice                                         */
-
-  struct  TT_Raster_Map_
-  {
-    int    rows;    /* number of rows                    */
-    int    cols;    /* number of columns (bytes) per row */
-    int    width;   /* number of pixels per line         */
-    int    flow;    /* bitmap orientation                */
-
-    void*  bitmap;  /* bit/pixmap buffer                 */
-    long   size;    /* bit/pixmap size in bytes          */
-  };
-
-  typedef struct TT_Raster_Map_  TT_Raster_Map;
-
-
-
-/* The following tables are also defined in "drivers/ttlib/ttobjs.h" */
-/* We use the _TRUETYPE_ macro to prevent their redefinition when    */
-/* _compiling_ the backwards-compatible layer called "oldapi.c"      */
-/*                                                                   */
-#ifndef _TRUETYPE_
-
-  /* ------- The font header TrueType table structure ----- */
-
-  struct  TT_Header_
-  {
-    TT_Fixed   Table_Version;
-    TT_Fixed   Font_Revision;
-
-    TT_Long    CheckSum_Adjust;
-    TT_Long    Magic_Number;
-
-    TT_UShort  Flags;
-    TT_UShort  Units_Per_EM;
-
-    TT_Long    Created [2];
-    TT_Long    Modified[2];
-
-    TT_FWord   xMin;
-    TT_FWord   yMin;
-    TT_FWord   xMax;
-    TT_FWord   yMax;
-
-    TT_UShort  Mac_Style;
-    TT_UShort  Lowest_Rec_PPEM;
-
-    TT_Short   Font_Direction;
-    TT_Short   Index_To_Loc_Format;
-    TT_Short   Glyph_Data_Format;
-  };
-
-  typedef struct TT_Header_  TT_Header;
-
-
-  /* ------- The horizontal header TrueType table structure ----- */
-
-  /*******************************************************/
-  /*  This structure is the one defined by the TrueType  */
-  /*  specification, plus two fields used to link the    */
-  /*  font-units metrics to the header.                  */
-
-  struct  TT_Horizontal_Header_
-  {
-    TT_Fixed   Version;
-    TT_FWord   Ascender;
-    TT_FWord   Descender;
-    TT_FWord   Line_Gap;
-
-    TT_UFWord  advance_Width_Max;      /* advance width maximum */
-
-    TT_FWord   min_Left_Side_Bearing;  /* minimum left-sb       */
-    TT_FWord   min_Right_Side_Bearing; /* minimum right-sb      */
-    TT_FWord   xMax_Extent;            /* xmax extents          */
-    TT_FWord   caret_Slope_Rise;
-    TT_FWord   caret_Slope_Run;
-
-    TT_Short   caret_Offset;           /* only used in vertical header */
-    TT_Short   Reserved[4];
-
-    TT_Short   metric_Data_Format;
-    TT_UShort  number_Of_HMetrics;
-
-    /* The following fields are not defined by the TrueType specification */
-    /* but they're used to connect the metrics header to the relevant     */
-    /* "HMTX" or "VMTX" table.                                            */
-
-    void*      long_metrics;
-    void*      short_metrics;
-  };
-
-
-  /*******************************************************/
-  /*  This structure is the one defined by the TrueType  */
-  /*  specification.  Note that it has exactly the same  */
-  /*  layout as the horizontal header (both are loaded   */
-  /*  by the same function).                             */
-
-  struct  TT_Vertical_Header_
-  {
-    TT_Fixed   Version;
-    TT_FWord   Ascender;
-    TT_FWord   Descender;
-    TT_FWord   Line_Gap;
-
-    TT_UFWord  advance_Height_Max;      /* advance height maximum */
-
-    TT_FWord   min_Top_Side_Bearing;    /* minimum left-sb or top-sb       */
-    TT_FWord   min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb   */
-    TT_FWord   yMax_Extent;             /* xmax or ymax extents            */
-    TT_FWord   caret_Slope_Rise;
-    TT_FWord   caret_Slope_Run;
-    TT_FWord   caret_Offset;
-
-    TT_Short   Reserved[4];
-
-    TT_Short   metric_Data_Format;
-    TT_UShort  number_Of_VMetrics;
-
-    /* The following fields are not defined by the TrueType specification */
-    /* but they're used to connect the metrics header to the relevant     */
-    /* "HMTX" or "VMTX" table.                                            */
-
-    void*      long_metrics;
-    void*      short_metrics;
-  };
-
-
-  typedef struct TT_Horizontal_Header_  TT_Horizontal_Header;
-  typedef struct TT_Vertical_Header_    TT_Vertical_Header;
-
-
-  /* ----------- OS/2 Table ----------------------------- */
-
-  struct  TT_OS2_
-  {
-    TT_UShort  version;                /* 0x0001 */
-    TT_FWord   xAvgCharWidth;
-    TT_UShort  usWeightClass;
-    TT_UShort  usWidthClass;
-    TT_Short   fsType;
-    TT_FWord   ySubscriptXSize;
-    TT_FWord   ySubscriptYSize;
-    TT_FWord   ySubscriptXOffset;
-    TT_FWord   ySubscriptYOffset;
-    TT_FWord   ySuperscriptXSize;
-    TT_FWord   ySuperscriptYSize;
-    TT_FWord   ySuperscriptXOffset;
-    TT_FWord   ySuperscriptYOffset;
-    TT_FWord   yStrikeoutSize;
-    TT_FWord   yStrikeoutPosition;
-    TT_Short   sFamilyClass;
-
-    TT_Byte    panose[10];
-
-    TT_ULong   ulUnicodeRange1;        /* Bits 0-31   */
-    TT_ULong   ulUnicodeRange2;        /* Bits 32-63  */
-    TT_ULong   ulUnicodeRange3;        /* Bits 64-95  */
-    TT_ULong   ulUnicodeRange4;        /* Bits 96-127 */
-
-    TT_Char    achVendID[4];
-
-    TT_UShort  fsSelection;
-    TT_UShort  usFirstCharIndex;
-    TT_UShort  usLastCharIndex;
-    TT_Short   sTypoAscender;
-    TT_Short   sTypoDescender;
-    TT_Short   sTypoLineGap;
-    TT_UShort  usWinAscent;
-    TT_UShort  usWinDescent;
-
-    /* only version 1 tables: */
-
-    TT_ULong   ulCodePageRange1;       /* Bits 0-31   */
-    TT_ULong   ulCodePageRange2;       /* Bits 32-63  */
-  };
-
-  typedef struct TT_OS2_  TT_OS2;
-
-
-  /* ----------- Postscript table ------------------------ */
-
-  struct  TT_Postscript_
-  {
-    TT_Fixed  FormatType;
-    TT_Fixed  italicAngle;
-    TT_FWord  underlinePosition;
-    TT_FWord  underlineThickness;
-    TT_ULong  isFixedPitch;
-    TT_ULong  minMemType42;
-    TT_ULong  maxMemType42;
-    TT_ULong  minMemType1;
-    TT_ULong  maxMemType1;
-
-    /* Glyph names follow in the file, but we don't         */
-    /* load them by default.  See the ftxpost.c extension.  */
-  };
-
-  typedef struct TT_Postscript_  TT_Postscript;
-
-
-  /* ------------ horizontal device metrics "hdmx" ---------- */
-
-  struct  TT_Hdmx_Record_
-  {
-    TT_Byte   ppem;
-    TT_Byte   max_width;
-    TT_Byte*  widths;
-  };
-
-  typedef struct TT_Hdmx_Record_  TT_Hdmx_Record;
-
-
-  struct  TT_Hdmx_
-  {
-    TT_UShort        version;
-    TT_Short         num_records;
-    TT_Hdmx_Record*  records;
-  };
-
-  typedef struct TT_Hdmx_  TT_Hdmx;
-
-
-#else
-
-  typedef  TT_HoriHeader   TT_Horizontal_Header;
-  typedef  TT_VertHeader   TT_Vertical_Header;
-
-#endif /* _TRUETYPE_ */
-
-
-  /* A structure used to describe face properties.                        */
-  /* be aware that this is not the same structure as the one define       */
-  /* in "freetype/ttlib/ttdriver.h". A suitable conversion is performed   */
-  /* in "oldapi/ttapi.c" to build a binary driver that is backwards       */
-  /* compatible with FreeType 1.1, in the function TT_Get_Face_Properties */
-
-  struct  TT_Face_Properties_
-  {
-    TT_UShort  num_Glyphs;      /* number of glyphs in face              */
-    TT_UShort  max_Points;      /* maximum number of points in a glyph   */
-    TT_UShort  max_Contours;    /* maximum number of contours in a glyph */
-
-    TT_UShort  num_CharMaps;    /* number of charmaps in the face     */
-    TT_UShort  num_Names;       /* number of name records in the face */
-
-    TT_ULong   num_Faces;  /* 1 for normal TrueType files, and the  */
-                           /* number of embedded faces for TrueType */
-                           /* collections                           */
-
-    TT_Header*             header;        /* TrueType header table          */
-    TT_Horizontal_Header*  horizontal;    /* TrueType horizontal header     */
-    TT_OS2*                os2;           /* TrueType OS/2 table            */
-    TT_Postscript*         postscript;    /* TrueType Postscript table      */
-    TT_Hdmx*               hdmx;
-    TT_Vertical_Header*    vertical;      /* TT Vertical header, if present */
-  };
-
-  typedef struct TT_Face_Properties_  TT_Face_Properties;
-
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Type> TT_Engine                                                    */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    A handle to a TrueType driver/engine instance. Engine objects    */
-  /*    can be created with the TT_New_Engine and TT_Build_Engine APIs   */
-  /*                                                                     */
-  /*    TT_Done_Engine will destroy an engine, as well as all the        */
-  /*    objects that were created within it.                             */
-  /*                                                                     */
-
-  typedef struct TT_EngineRec_   *TT_Engine;
-
-  /* Note : The type TT_Engine is not defined in "drivers/ttlib/ttobjs.h" */
-
-
-
-
-/* The TT_Face type is already defined in "drivers/ttlib/ttobjs.h"   */
-/* We use the _TRUETYPE_ macro to prevent their redefinition when    */
-/* _compiling_ the backwards-compatible layer called "oldapi.c"      */
-/*                                                                   */
-#ifndef _TRUETYPE_
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Type> TT_Face                                                      */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    A handle to a TrueType face/font object. A TT_Face encapsulates  */
-  /*    the resolution and scaling independent parts of a TrueType font  */
-  /*    file. Instances (a.k.a. fontsizes) and glyph objects must be     */
-  /*    created from them before a glyph can be loaded in memory.        */
-  /*                                                                     */
-  /*    They are created through TT_New_Face and destroyed with          */
-  /*    TT_Done_Face. This will destroy all instance and glyph objects   */
-  /*                                                                     */
-
-  typedef struct TT_FaceRec_*   TT_Face;
-
-#endif  /* _TRUETYPE_ */
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Type> TT_Instance                                                  */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    A handle to a TrueType instance/fontsize object. A TT_Instance   */
-  /*    encapsulates all the resolution and scaling dependent part of    */
-  /*    a given font size, but doesn't contain any glyph. They must be   */
-  /*    used with glyph objects in order to load glyph objects from      */
-  /*    a TT file.                                                       */
-  /*                                                                     */
-  /*    They are created from face objects with TT_New_Instance, and     */
-  /*    destroyed with TT_Done_Instance                                  */
-  /*                                                                     */
-  /*    A fresh new instance has a default resolution of 96x96 dpi,      */
-  /*    and a default point size of 10 pt. Each of these can be changed  */
-  /*    dynamically with various APIs defined below..                    */
-  /*                                                                     */
-
-  typedef struct TT_InstanceRec_*  TT_Instance;
-
-  /* Note: The TT_Instance type is not defined in "drivers/ttlib/ttobjs.h" */
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Type> TT_Glyph                                                     */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    A handle to a TrueType glyph object. A glyph object acts as a    */
-  /*    container for any of the glyphs of a given face object. It       */
-  /*    encapsulates glyph metrics as well as outline space sized large  */
-  /*    enough to allow the loading of any glyph without further         */
-  /*    allocation. A glyph object doesn't contain any bitmap or         */
-  /*    pixmap data/buffer.                                              */
-  /*                                                                     */
-  /*    They are created from face objects with TT_New_Glyph, and        */
-  /*    destroyed with TT_Done_Glyph                                     */
-  /*                                                                     */
-  /*    One can create several glyph objects per face, and use           */
-  /*    a single instance to load multiple glyphs, even concurrently     */
-  /*    in thread-safe and reentrant modes..                             */
-  /*                                                                     */
-
-  typedef struct TT_GlyphRec_*    TT_Glyph;
-
-  /* Note: the TT_Glyph type is not defined in "drivers/ttlib/ttobjs.h" */
-
-
-/* The TT_CharMap type is already defined in "drivers/ttlib/ttobjs.h" */
-/* We use the _TRUETYPE_ macro to prevent their redefinition when     */
-/* _compiling_ the backwards-compatible layer called "oldapi.c"       */
-/*                                                                    */
-#ifndef _TRUETYPE_
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Type> TT_CharMap                                                   */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    A handle to a TrueType character mapping object. These objects   */
-  /*    are used to convert character codes in a specific locale or      */
-  /*    encoding into font/face glyph indexes.                           */
-  /*                                                                     */
-  /*    The list of character maps found within a face can be            */
-  /*    enumerated with API functions defined below. An CharMap object   */
-  /*    is created with TT_New_CharMap. They are destroyed automatically */
-  /*    when their parent face objects are discarded.                    */
-  /*                                                                     */
-
-  typedef struct TT_CharMapRec_*   TT_CharMap;
-
-  typedef long  TT_Error;
-
-#endif /* _TRUETYPE_ */
-
-
-
-  EXPORT_DEF
-  const TT_Instance   TT_Null_Instance;
-
-
-  /*******************************************************************/
-  /*                                                                 */
-  /*  Postscript Names extension                                     */
-  /*                                                                 */
-  /*******************************************************************/
-
-#define TT_Err_Invalid_Post_Table_Format  0x0B00
-#define TT_Err_Invalid_Post_Table         0x0B01
-
-  /* Initialise the Postscript Names extension */
-  EXPORT_DEF
-  TT_Error TT_Init_Post_Extension( TT_Engine  engine );
-
-  /* Load the Postscript Names table - notice that the 'post' parameter */
-  /* will be ignored in 2.0.                                            */
-  EXPORT_DEF
-  TT_Error TT_Load_PS_Names( TT_Face   face,
-                             void*     post );
-
-  /* Gets the postscript name of a single glyph */
-  EXPORT_DEF
-  TT_Error TT_Get_PS_Name( TT_Face      face,
-                           TT_UShort    index,
-                           TT_String**  PSname );
-
-
-  /*******************************************************************/
-  /*                                                                 */
-  /*  Embedded Bitmaps (sbits) extension                             */
-  /*                                                                 */
-  /*******************************************************************/
-
-#ifndef _TRUETYPE_
-  /*************************************************************/
-  /*                                                           */
-  /* <Struct> TT_SBit_Metrics                                  */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    A structure used to hold the big metrics of a given    */
-  /*    glyph bitmap in a TrueType or OpenType font. These     */
-  /*    are usually found in the "EBDT" table.                 */
-  /*                                                           */
-  /* <Fields>                                                  */
-  /*    height       :: glyph height in pixels                 */
-  /*    width        :: glyph width in pixels                  */
-  /*                                                           */
-  /*    horiBearingX :: horizontal left bearing                */
-  /*    horiBearingY :: horizontal top bearing                 */
-  /*    horiAdvance  :: horizontal advance                     */
-  /*                                                           */
-  /*    vertBearingX :: vertical left bearing                  */
-  /*    vertBearingY :: vertical top bearing                   */
-  /*    vertAdvance  :: vertical advance                       */
-  /*                                                           */
-  typedef struct TT_SBit_Metrics_
-  {
-    TT_Byte  height;
-    TT_Byte  width;
-
-    TT_Char  horiBearingX;
-    TT_Char  horiBearingY;
-    TT_Byte  horiAdvance;
-
-    TT_Char  vertBearingX;
-    TT_Char  vertBearingY;
-    TT_Byte  vertAdvance;
-
-  } TT_SBit_Metrics;
-
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Struct> TT_SBit_Small_Metrics                            */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    A structure used to hold the small metrics of a given  */
-  /*    glyph bitmap in a TrueType or OpenType font. These     */
-  /*    are usually found in the "EBDT" table.                 */
-  /*                                                           */
-  /* <Fields>                                                  */
-  /*    height    :: glyph height in pixels                    */
-  /*    width     :: glyph width in pixels                     */
-  /*                                                           */
-  /*    bearingX  :: left-side bearing                         */
-  /*    bearingY  :: top-side bearing                          */
-  /*    advance   :: advance width or height                   */
-  /*                                                           */
-  typedef struct TT_SBit_Small_Metrics_
-  {
-    TT_Byte  height;
-    TT_Byte  width;
-
-    TT_Char  bearingX;
-    TT_Char  bearingY;
-    TT_Byte  advance;
-
-  } TT_SBit_Small_Metrics;
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Struct> TT_SBit_Line_Metrics                             */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    A structure used to describe the text line metrics of  */
-  /*    a given bitmap strike, for either an horizontal or     */
-  /*    vertical layout.                                       */
-  /*                                                           */
-  /* <Fields>                                                  */
-  /*    ascender  :: ascender in pixels                        */
-  /*    descender :: descender in pixels                       */
-  /*    max_width :: maximum glyph width in pixels             */
-  /*                                                           */
-  /*    caret_slope_enumerator  :: ?                           */
-  /*    caret_slope_denominator :: ?                           */
-  /*    caret_offset            :: ?                           */
-  /*                                                           */
-  /*    min_origin_SB  :: ?                                    */
-  /*    min_advance_SB :: ?                                    */
-  /*    max_before_BL  :: ?                                    */
-  /*    min_after_BL   :: ?                                    */
-  /*                                                           */
-  typedef struct TT_SBit_Line_Metrics_
-  {
-    TT_Char  ascender;
-    TT_Char  descender;
-    TT_Byte  max_width;
-    TT_Char  caret_slope_numerator;
-    TT_Char  caret_slope_denominator;
-    TT_Char  caret_offset;
-    TT_Char  min_origin_SB;
-    TT_Char  min_advance_SB;
-    TT_Char  max_before_BL;
-    TT_Char  min_after_BL;
-    TT_Char  pads[2];
-
-  } TT_SBit_Line_Metrics;
-
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Struct> TT_SBit_Range                                    */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    A TrueType/OpenType subIndexTable as defined in the    */
-  /*    "EBLC" or "bloc" tables.                               */
-  /*                                                           */
-  /* <Fields>                                                  */
-  /*                                                           */
-  /*    first_glyph  :: first glyph index in range             */
-  /*    last_glyph   :: last glyph index in range              */
-  /*                                                           */
-  /*    index_format :: format of index table. valid           */
-  /*                    values are 1 to 5.                     */
-  /*                                                           */
-  /*    image_format :: format of 'EBDT' image data            */
-  /*    image_offset :: offset to image data in 'EBDT'         */
-  /*                                                           */
-  /*    image_size   :: for index formats 2 and 5. This is     */
-  /*                    the size in bytes of each glyph bitmap */
-  /*                    glyph bitmap                           */
-  /*                                                           */
-  /*    big_metrics  :: for index formats 2 and 5. This is     */
-  /*                    the big metrics for each glyph bitmap  */
-  /*                                                           */
-  /*    num_glyphs   :: for index formats 4 and 5. This is     */
-  /*                    the number of glyphs in the code       */
-  /*                    array.                                 */
-  /*                                                           */
-  /*    glyph_offsets :: for index formats 1 and 3.            */
-  /*    glyph_codes   :: for index formats 4 and 5.            */
-  /*                                                           */
-  /*    table_offset  :: offset of index table in 'EBLC' table */
-  /*                     only used during strike loading..     */
-  /*                                                           */
-  typedef struct TT_SBit_Range
-  {
-    TT_UShort        first_glyph;
-    TT_UShort        last_glyph;
-
-    TT_UShort        index_format;
-    TT_UShort        image_format;
-    TT_ULong         image_offset;
-
-    TT_ULong         image_size;
-    TT_SBit_Metrics  metrics;
-    TT_ULong         num_glyphs;
-
-    TT_ULong*        glyph_offsets;
-    TT_UShort*       glyph_codes;
-
-    TT_ULong         table_offset;
-
-  } TT_SBit_Range;
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Struct> TT_SBit_Strike                                   */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    A structure used describe a given bitmap strike in the */
-  /*    "EBLC" or "bloc" tables.                               */
-  /*                                                           */
-  /* <Fields>                                                  */
-  /*                                                           */
-  /*   num_index_ranges  :: number of index ranges             */
-  /*   index_ranges      :: array of glyph index ranges        */
-  /*                                                           */
-  /*   color_ref   :: unused. color reference ??               */
-  /*   hori        :: line metrics for horizontal layouts.     */
-  /*   vert        :: line metrics for vertical layouts.       */
-  /*                                                           */
-  /*   start_glyph :: lowest glyph index for this strike.      */
-  /*   end_glyph   :: higher glyph index for this strike.      */
-  /*                                                           */
-  /*   x_ppem      :: horizontal pixels per EM                 */
-  /*   y_ppem      :: vertical pixels per EM                   */
-  /*   bit_depth   :: bit depth. valid values are 1, 2, 4 & 8  */
-  /*   flags       :: vertical or horizontal ?                 */
-  /*                                                           */
-  typedef struct TT_SBit_Strike_
-  {
-    TT_Int                 num_ranges;
-    TT_SBit_Range*         sbit_ranges;
-    TT_ULong               ranges_offset;
-
-    TT_ULong               color_ref;
-
-    TT_SBit_Line_Metrics   hori;
-    TT_SBit_Line_Metrics   vert;
-
-    TT_UShort              start_glyph;
-    TT_UShort              end_glyph;
-
-    TT_Byte                x_ppem;
-    TT_Byte                y_ppem;
-    TT_Byte                bit_depth;
-    TT_Char                flags;
-
-  } TT_SBit_Strike;
-
-
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Struct> TT_SBit_Component                                */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    A simple structure to describe a compound sbit element */
-  /*                                                           */
-  /* <Fields>                                                  */
-  /*    glyph_code  :: element's glyph index                   */
-  /*    x_offset    :: element's left bearing                  */
-  /*    y_offset    :: element's top bearing                   */
-  /*                                                           */
-  typedef struct TT_SBit_Component_
-  {
-    TT_UShort  glyph_code;
-    TT_Char    x_offset;
-    TT_Char    y_offset;
-
-  } TT_SBit_Component;
-
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Struct> TT_SBit_Scale                                    */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    A structure used describe a given bitmap scaling       */
-  /*    table, asdefined for the "EBSC" table.                 */
-  /*                                                           */
-  /* <Fields>                                                  */
-  /*                                                           */
-  /*    hori   :: horizontal line metrics                      */
-  /*    vert   :: vertical line metrics                        */
-  /*                                                           */
-  /*    x_ppem :: horizontal pixels per EM                     */
-  /*    y_ppem :: vertical pixels per EM                       */
-  /*                                                           */
-  /*    x_ppem_substitute  :: substitution x_ppem              */
-  /*    y_ppem_substitute  :: substitution y_ppem              */
-  /*                                                           */
-  typedef struct TT_SBit_Scale_
-  {
-    TT_SBit_Line_Metrics  hori;
-    TT_SBit_Line_Metrics  vert;
-    TT_Byte               x_ppem;
-    TT_Byte               y_ppem;
-    TT_Byte               x_ppem_substitute;
-    TT_Byte               y_ppem_substitute;
-
-  } TT_SBit_Scale;
-#endif /* _TRUETYPE_ */
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Struct> TT_SBit_Image                                    */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    A structure used to describe a given embedded bitmap   */
-  /*    image.                                                 */
-  /*                                                           */
-  /* <Fields>                                                  */
-  /*    map        :: bitmap descriptor                        */
-  /*    bit_depth  :: pixel bit depth                          */
-  /*    metrics    :: glyph metrics for the bitmap             */
-  /*                                                           */
-  typedef struct TT_SBit_Image_
-  {
-    TT_Raster_Map         map;
-    int                   bit_depth;
-    TT_Big_Glyph_Metrics  metrics;
-
-  } TT_SBit_Image;
-
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Struct> TT_EBLC                                          */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    A structure used to describe the "EBLC" table from     */
-  /*    a TrueTYpe font.                                       */
-  /*                                                           */
-  /* <Fields>                                                  */
-  /*                                                           */
-  /*    version     :: version number of the EBLC table        */
-  /*                                                           */
-  /*    num_strikes :: the number of strikes, i.e. bitmap      */
-  /*                   sizes, present in this font             */
-  /*                                                           */
-  /*    strikes     :: array of strikes                        */
-  /*                                                           */
-  typedef struct TT_EBLC_
-  {
-    TT_ULong         version;
-    TT_ULong         num_strikes;
-    TT_SBit_Strike*  strikes;
-
-  } TT_EBLC;
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Function>                                                */
-  /*    TT_Init_SBit_Extension                                 */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    Initialise the embedded bitmaps extension for the      */
-  /*    FreeType engine.                                       */
-  /*                                                           */
-  /* <Input>                                                   */
-  /*    engine  :: handle to current FreeType library instance */
-  /*                                                           */
-  /* <Return>                                                  */
-  /*    Error code. 0 means success.                           */
-  /*                                                           */
-  EXPORT_DEF
-  TT_Error  TT_Init_SBit_Extension( TT_Engine  engine );
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Function>                                                */
-  /*    TT_Get_Face_Bitmaps                                    */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    Loads the "EBLC" table from a font file, if any.       */
-  /*                                                           */
-  /* <Input>                                                   */
-  /*    face :: handle to the source TrueType font/face        */
-  /*                                                           */
-  /* <Output>                                                  */
-  /*    eblc_table :: a descriptor for the EBLC table          */
-  /*                                                           */
-  /* <Return>                                                  */
-  /*    Error code. 0 means success.                           */
-  /*                                                           */
-  /* <Note>                                                    */
-  /*    This function returns TT_Err_Table_Missing when the    */
-  /*    font contains no embedded bitmaps. All fields in       */
-  /*    "eblc_table" will then be set to 0.                    */
-  /*                                                           */
-  EXPORT_DEF
-  TT_Error  TT_Get_Face_Bitmaps( TT_Face   face,
-                                 TT_EBLC  *eblc_table );
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Function>                                                */
-  /*    TT_New_SBit_Image                                      */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    Allocates a new embedded bitmap container              */
-  /*                                                           */
-  /* <Output>                                                  */
-  /*    image :: sbit image                                    */
-  /*                                                           */
-  /* <Return>                                                  */
-  /*    Error code. 0 means success.                           */
-  /*                                                           */
-  EXPORT_DEF
-  TT_Error  TT_New_SBit_Image( TT_SBit_Image*  *image );
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Function>                                                */
-  /*    TT_Done_SBit_Image                                     */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    Releases an embedded bitmap container                  */
-  /*                                                           */
-  /* <Input>                                                   */
-  /*    image :: sbit image                                    */
-  /*                                                           */
-  EXPORT_DEF
-  void      TT_Done_SBit_Image( TT_SBit_Image*  image );
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Function>                                                */
-  /*    TT_Load_Glyph_Bitmap                                   */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    Loads a given glyph embedded bitmap                    */
-  /*                                                           */
-  /* <Input>                                                   */
-  /*    face        :: handle to the source TrueType font/face */
-  /*    instance    :: current size/transform instance         */
-  /*    glyph_index :: index of source glyph                   */
-  /*    bitmap      :: target embedded bitmap descriptor       */
-  /*                                                           */
-  /* <Return>                                                  */
-  /*    Error code. 0 means success.                           */
-  /*                                                           */
-  /* <Note>                                                    */
-  /*    This function returns an error if there is no          */
-  /*    embedded bitmap for the glyph at the given             */
-  /*    instance.                                              */
-  /*                                                           */
-  EXPORT_DEF
-  TT_Error  TT_Load_Glyph_Bitmap( TT_Face         face,
-                                  TT_Instance     instance,
-                                  TT_UShort       glyph_index,
-                                  TT_SBit_Image*  bitmap );
-
-
-  /*******************************************************************/
-  /*                                                                 */
-  /*  FreeType API                                                   */
-  /*                                                                 */
-  /*  All these begin with a 'TT_' prefix.                           */
-  /*                                                                 */
-  /*  Most of them are implemented in the 'ttapi.c' source file.     */
-  /*                                                                 */
-  /*******************************************************************/
-
-  /* Initialize the engine. */
-
-  EXPORT_DEF
-  TT_Error  TT_Init_FreeType( TT_Engine*  engine );
-
-
-  /* Finalize the engine, and release all allocated objects. */
-
-  EXPORT_DEF
-  TT_Error  TT_Done_FreeType( TT_Engine  engine );
-
-
-  /* Set the gray level palette.  This is an array of 5 bytes used */
-  /* to produce the font smoothed pixmaps.  By convention:         */
-  /*                                                               */
-  /*  palette[0] = background (white)                              */
-  /*  palette[1] = light                                           */
-  /*  palette[2] = medium                                          */
-  /*  palette[3] = dark                                            */
-  /*  palette[4] = foreground (black)                              */
-  /*                                                               */
-
-  EXPORT_DEF
-  TT_Error  TT_Set_Raster_Gray_Palette( TT_Engine       engine,
-                                        const TT_Byte*  palette );
-
-
-  /* ----------------------- face management ----------------------- */
-
-  /* Open a new TrueType font file, and returns a handle for */
-  /* it in variable '*face'.                                 */
-
-  /* Note: The file can be either a TrueType file (*.ttf) or  */
-  /*       a TrueType collection (*.ttc, in this case, only   */
-  /*       the first face is opened).  The number of faces in */
-  /*       the same collection can be obtained in the face's  */
-  /*       properties, using TT_Get_Face_Properties() and the */
-  /*       'max_Faces' field.                                 */
-
-  EXPORT_DEF
-  TT_Error  TT_Open_Face( TT_Engine       engine,
-                          const TT_Text*  fontPathName,
-                          TT_Face*        face );
-
-
-  /* Open a TrueType font file located inside a collection. */
-  /* The font is assigned by its index in 'fontIndex'.      */
-
-  EXPORT_DEF
-  TT_Error  TT_Open_Collection( TT_Engine       engine,
-                                const TT_Text*  collectionPathName,
-                                TT_ULong        fontIndex,
-                                TT_Face*        face );
-
-
-  /* Return face properties in the 'properties' structure. */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Face_Properties( TT_Face              face,
-                                    TT_Face_Properties*  properties );
-
-
-  /* Set a face object's generic pointer */
-
-  EXPORT_DEF
-  TT_Error  TT_Set_Face_Pointer( TT_Face  face,
-                                 void*    data );
-
-
-  /* Get a face object's generic pointer */
-
-  EXPORT_DEF
-  void*     TT_Get_Face_Pointer( TT_Face  face );
-
-
-  /* Close a face's file handle to save system resources.  The file */
-  /* will be re-opened automatically on the next disk access.       */
-
-  EXPORT_DEF
-  TT_Error  TT_Flush_Face( TT_Face  face );
-
-  /* Get a face's glyph metrics expressed in font units.  Returns any   */
-  /* number of arrays.  Set the fields to NULL if you're not interested */
-  /* by a given array.                                                  */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Face_Metrics( TT_Face     face,
-                                 TT_UShort   firstGlyph,
-                                 TT_UShort   lastGlyph,
-                                 TT_Short*   leftBearings,
-                                 TT_UShort*  widths,
-                                 TT_Short*   topBearings,
-                                 TT_UShort*  heights );
-
-  /* Close a given font object, destroying all associated */
-  /* instances.                                           */
-
-  EXPORT_DEF
-  TT_Error  TT_Close_Face( TT_Face  face );
-
-
-  /* Get font or table data. */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Font_Data( TT_Face   face,
-                              TT_ULong  tag,
-                              TT_Long   offset,
-                              void*     buffer,
-                              TT_Long*  length );
-
-
-/* A simple macro to build table tags from ASCII chars */
-
-#define MAKE_TT_TAG( _x1, _x2, _x3, _x4 ) \
-          (((TT_ULong)_x1 << 24) |        \
-           ((TT_ULong)_x2 << 16) |        \
-           ((TT_ULong)_x3 << 8)  |        \
-            (TT_ULong)_x4)
-
-
-
-  /* ----------------------- instance management -------------------- */
-
-  /* Open a new font instance and returns an instance handle */
-  /* for it in '*instance'.                                  */
-
-  EXPORT_DEF
-  TT_Error  TT_New_Instance( TT_Face       face,
-                             TT_Instance*  instance );
-
-
-  /* Set device resolution for a given instance.  The values are      */
-  /* given in dpi (Dots Per Inch).  Default is 96 in both directions. */
-
-  EXPORT_DEF
-  TT_Error  TT_Set_Instance_Resolutions( TT_Instance  instance,
-                                         TT_UShort    xResolution,
-                                         TT_UShort    yResolution );
-
-
-  /* Set the pointsize for a given instance.  Default is 10pt. */
-
-  EXPORT_DEF
-  TT_Error  TT_Set_Instance_CharSize( TT_Instance  instance,
-                                      TT_F26Dot6   charSize );
-
-  EXPORT_DEF
-  TT_Error  TT_Set_Instance_CharSizes( TT_Instance  instance,
-                                       TT_F26Dot6   charWidth,
-                                       TT_F26Dot6   charHeight );
-
-#define TT_Set_Instance_PointSize( ins, ptsize )   \
-            TT_Set_Instance_CharSize( ins, ptsize*64 )
-
-  EXPORT_DEF
-  TT_Error  TT_Set_Instance_PixelSizes( TT_Instance  instance,
-                                        TT_UShort    pixelWidth,
-                                        TT_UShort    pixelHeight,
-                                        TT_F26Dot6   pointSize );
-
-
-  /* This function has been deprecated !! Do not use it, as it    */
-  /* doesn't work reliably. You can perfectly control hinting     */
-  /* yourself when loading glyphs, then apply transforms as usual */
-
-  EXPORT_DEF
-  TT_Error  TT_Set_Instance_Transform_Flags( TT_Instance  instance,
-                                             TT_Bool      rotated,
-                                             TT_Bool      stretched );
-
-
-  /* Return instance metrics in 'metrics'. */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Instance_Metrics( TT_Instance           instance,
-                                     TT_Instance_Metrics*  metrics );
-
-
-  /* Set an instance's generic pointer. */
-
-  EXPORT_DEF
-  TT_Error  TT_Set_Instance_Pointer( TT_Instance  instance,
-                                     void*        data );
-
-
-  /* Get an instance's generic pointer. */
-
-  EXPORT_DEF
-  void*     TT_Get_Instance_Pointer( TT_Instance  instance );
-
-
-  /* Close a given instance object, destroying all associated data. */
-
-  EXPORT_DEF
-  TT_Error  TT_Done_Instance( TT_Instance  instance );
-
-
-
-  /* ----------------------- glyph management ----------------------- */
-
-  /* Create a new glyph object related to the given 'face'. */
-
-  EXPORT_DEF
-  TT_Error  TT_New_Glyph( TT_Face    face,
-                          TT_Glyph*  glyph );
-
-
-  /* Discard (and destroy) a given glyph object. */
-
-  EXPORT_DEF
-  TT_Error  TT_Done_Glyph( TT_Glyph  glyph );
-
-
-#define TTLOAD_SCALE_GLYPH  1
-#define TTLOAD_HINT_GLYPH   2
-
-#define TTLOAD_DEFAULT  (TTLOAD_SCALE_GLYPH | TTLOAD_HINT_GLYPH)
-
-
-  /* Load and process (scale/transform and hint) a glyph from the */
-  /* given 'instance'.  The glyph and instance handles must be    */
-  /* related to the same face object.  The glyph index can be     */
-  /* computed with a call to TT_Char_Index().                     */
-
-  /* The 'load_flags' argument is a combination of the macros     */
-  /* TTLOAD_SCALE_GLYPH and TTLOAD_HINT_GLYPH.  Hinting will be   */
-  /* applied only if the scaling is selected.                     */
-
-  /* When scaling is off (i.e., load_flags = 0), the returned     */
-  /* outlines are in EM square coordinates (also called FUnits),  */
-  /* extracted directly from the font with no hinting.            */
-  /* Other glyph metrics are also in FUnits.                      */
-
-  /* When scaling is on, the returned outlines are in fractional  */
-  /* pixel units (i.e. TT_F26Dot6 = 26.6 fixed floats).           */
-
-  /* NOTE:  The glyph index must be in the range 0..num_glyphs-1  */
-  /*        where 'num_glyphs' is the total number of glyphs in   */
-  /*        the font file (given in the face properties).         */
-
-  EXPORT_DEF
-  TT_Error  TT_Load_Glyph( TT_Instance  instance,
-                           TT_Glyph     glyph,
-                           TT_UShort    glyphIndex,
-                           TT_UShort    loadFlags );
-
-
-  /* Return glyph outline pointers in 'outline'.  Note that the returned */
-  /* pointers are owned by the glyph object, and will be destroyed with  */
-  /* it.  The client application should _not_ change the pointers.       */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Glyph_Outline( TT_Glyph     glyph,
-                                  TT_Outline*  outline );
-
-
-  /* Copy the glyph metrics into 'metrics'. */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Glyph_Metrics( TT_Glyph           glyph,
-                                  TT_Glyph_Metrics*  metrics );
-
-
-  /* Copy the glyph's big metrics into 'metrics'. */
-  /* Necessary to obtain vertical metrics.        */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Glyph_Big_Metrics( TT_Glyph               glyph,
-                                      TT_Big_Glyph_Metrics*  metrics );
-
-
-  /* Render the glyph into a bitmap, with given position offsets.     */
-
-  /*  Note:  Only use integer pixel offsets to preserve the fine      */
-  /*         hinting of the glyph and the 'correct' anti-aliasing     */
-  /*         (where vertical and horizontal stems aren't grayed).     */
-  /*         This means that xOffset and yOffset must be multiples    */
-  /*         of 64!                                                   */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Glyph_Bitmap( TT_Glyph        glyph,
-                                 TT_Raster_Map*  map,
-                                 TT_F26Dot6      xOffset,
-                                 TT_F26Dot6      yOffset );
-
-
-  /* Render the glyph into a pixmap, with given position offsets.     */
-
-  /*  Note : Only use integer pixel offsets to preserve the fine      */
-  /*         hinting of the glyph and the 'correct' anti-aliasing     */
-  /*         (where vertical and horizontal stems aren't grayed).     */
-  /*         This means that xOffset and yOffset must be multiples    */
-  /*         of 64!                                                   */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Glyph_Pixmap( TT_Glyph        glyph,
-                                 TT_Raster_Map*  map,
-                                 TT_F26Dot6      xOffset,
-                                 TT_F26Dot6      yOffset );
-
-
-
-  /* ----------------------- outline support ------------------------ */
-
-  /* Allocate a new outline.  Reserve space for 'numPoints' and */
-  /* 'numContours'.                                             */
-
-  EXPORT_DEF
-  TT_Error  TT_New_Outline( TT_UShort    numPoints,
-                            TT_Short     numContours,
-                            TT_Outline*  outline );
-
-
-  /* Release an outline. */
-
-  EXPORT_DEF
-  TT_Error  TT_Done_Outline( TT_Outline*  outline );
-
-
-  /* Copy an outline into another one. */
-
-  EXPORT_DEF
-  TT_Error  TT_Copy_Outline( TT_Outline*  source,
-                             TT_Outline*  target );
-
-
-  /* Render an outline into a bitmap. */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Outline_Bitmap( TT_Engine       engine,
-                                   TT_Outline*     outline,
-                                   TT_Raster_Map*  map );
-
-
-  /* Render an outline into a pixmap -- note that this function uses */
-  /* a different pixel scale, where 1.0 pixels = 128           XXXX  */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Outline_Pixmap( TT_Engine       engine,
-                                   TT_Outline*     outline,
-                                   TT_Raster_Map*  map );
-
-
-  /* Return an outline's bounding box -- this function is slow as it */
-  /* performs a complete scan-line process, without drawing, to get  */
-  /* the most accurate values.                                 XXXX  */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Outline_BBox( TT_Outline*  outline,
-                                 TT_BBox*     bbox );
-
-
-  /* Apply a transformation to a glyph outline. */
-
-  EXPORT_DEF
-  void      TT_Transform_Outline( TT_Outline*  outline,
-                                  TT_Matrix*   matrix );
-
-
-  /* Apply a translation to a glyph outline. */
-
-  EXPORT_DEF
-  void      TT_Translate_Outline( TT_Outline*  outline,
-                                  TT_F26Dot6   xOffset,
-                                  TT_F26Dot6   yOffset );
-
-
-  /* Apply a transformation to a vector. */
-
-  EXPORT_DEF
-  void      TT_Transform_Vector( TT_F26Dot6*  x,
-                                 TT_F26Dot6*  y,
-                                 TT_Matrix*   matrix );
-
-
-  /* Multiply a matrix with another -- computes "b := a*b". */
-
-  EXPORT_DEF
-  void      TT_Matrix_Multiply( TT_Matrix*  a,
-                                TT_Matrix*  b );
-
-
-  /* Invert a transformation matrix. */
-
-  EXPORT_DEF
-  TT_Error  TT_Matrix_Invert( TT_Matrix*  matrix );
-
-
-  /* Compute A*B/C with 64 bits intermediate precision. */
-
-  EXPORT_DEF
-  TT_Long   TT_MulDiv( TT_Long A, TT_Long B, TT_Long C );
-
-
-  /* Compute A*B/0x10000 with 64 bits intermediate precision. */
-  /* Useful to multiply by a 16.16 fixed float value.         */
-
-  EXPORT_DEF
-  TT_Long   TT_MulFix( TT_Long A, TT_Long B );
-
-
-
-  /* ----------------- character mappings support ------------- */
-
-  /* Return the number of character mappings found in this file. */
-  /* Returns -1 in case of failure (invalid face handle).        */
-  /*                                                             */
-  /* DON'T USE THIS FUNCTION! IT HAS BEEN DEPRECATED!            */
-  /*                                                             */
-  /* It is retained for backwards compatibility only and will    */
-  /* fail on 16bit systems.                                      */
-  /*                                                             */
-  /* You can now get the charmap count in the "num_CharMaps"     */
-  /* field of a face's properties.                               */
-  /*                                                             */
-
-  EXPORT_DEF
-  int  TT_Get_CharMap_Count( TT_Face  face );
-
-
-  /* Return the ID of charmap number 'charmapIndex' of a given face */
-  /* used to enumerate the charmaps present in a TrueType file.     */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_CharMap_ID( TT_Face     face,
-                               TT_UShort   charmapIndex,
-                               TT_UShort*  platformID,
-                               TT_UShort*  encodingID );
-
-
-  /* Look up the character maps found in 'face' and return a handle */
-  /* for the one matching 'platformID' and 'platformEncodingID'     */
-  /* (see the TrueType specs relating to the 'cmap' table for       */
-  /* information on these ID numbers).  Returns an error code.      */
-  /* In case of failure, the handle is set to NULL and is invalid.  */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_CharMap( TT_Face      face,
-                            TT_UShort    charmapIndex,
-                            TT_CharMap*  charMap );
-
-
-  /* Translate a character code through a given character map   */
-  /* and return the corresponding glyph index to be used in     */
-  /* a TT_Load_Glyph call.  This function returns 0 in case of  */
-  /* failure.                                                   */
-
-  EXPORT_DEF
-  TT_UShort  TT_Char_Index( TT_CharMap  charMap,
-                            TT_UShort   charCode );
-
-
-
-  /* --------------------- names table support ------------------- */
-
-  /* Return the number of name strings found in the name table.  */
-  /* Returns -1 in case of failure (invalid face handle).        */
-  /*                                                             */
-  /* DON'T USE THIS FUNCTION! IT HAS BEEN DEPRECATED!            */
-  /*                                                             */
-  /* It is retained for backwards compatibility only and will    */
-  /* fail on 16bit systems.                                      */
-  /*                                                             */
-  /* You can now get the number of name strings in a face with   */
-  /* the "num_Names" field of its properties..                   */
-  /*                                                             */
-
-  EXPORT_DEF
-  int  TT_Get_Name_Count( TT_Face  face );
-
-
-  /* Return the ID of the name number 'nameIndex' of a given face */
-  /* used to enumerate the charmaps present in a TrueType file.   */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Name_ID( TT_Face     face,
-                            TT_UShort   nameIndex,
-                            TT_UShort*  platformID,
-                            TT_UShort*  encodingID,
-                            TT_UShort*  languageID,
-                            TT_UShort*  nameID );
-
-
-  /* Return the address and length of the name number 'nameIndex' */
-  /* of a given face.  The string is part of the face object and  */
-  /* shouldn't be written to or released.                         */
-
-  /* Note that if for an invalid platformID a null pointer will   */
-  /* be returned.                                                 */
-
-  EXPORT_DEF
-  TT_Error  TT_Get_Name_String( TT_Face      face,
-                                TT_UShort    nameIndex,
-                                TT_String**  stringPtr, /* pointer address */
-                                TT_UShort*   length );  /* string length
-                                                           address */
-
-
-
-#ifdef __cplusplus
-  }
-#endif
-
-#endif /* TRUETYPE_H */
-
-
-/* END */
--- a/src/oldapi/ttapi.c
+++ /dev/null
@@ -1,2267 +1,0 @@
-/*******************************************************************
- *
- *  ttapi.c
- *
- *    High-level interface implementation
- *
- *  Copyright 1996-1998 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.
- *
- *  Notes:
- *
- *    This file is used to implement most of the functions that are
- *    defined in the file "freetype.h". However, two functions are
- *    implemented elsewhere :
- *
- ******************************************************************/
-
-#include <freetype/freetype.h>
-
-#include <freetype/internal/ftdebug.h>
-#include <freetype/internal/ftstream.h>
-#include <freetype/internal/ftcalc.h>
-#include <freetype/internal/ftlist.h>
-#include <freetype/internal/ftraster.h>
-
-#include <../truetype/ttdriver.h>
-#include <../truetype/ttobjs.h>
-#include <../truetype/ttcmap.h>
-
-#define _TRUETYPE_
-#include <truetype.h>  /* backwards compatible interface */
-
-
-
-/* required by the tracing mode */
-#undef  FT_COMPONENT
-#define FT_COMPONENT  trace_ttapi
-
-
-#define RENDER_POOL_SIZE  64000
-
-  static
-  const FT_DriverInterface*  tt_interface = &tt_driver_interface;
-
-  static
-  const TT_DriverInterface*  tt_extension = &tt_format_interface;
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Init_FreeType                                         */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Creates a new TrueType driver/engine object.                     */
-  /*                                                                     */
-  /* <Output>                                                            */
-  /*    engine   ::  handle to the new engine object                     */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    This function is provided for stand-alone compiles of the        */
-  /*    TrueType driver.                                                 */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Init_FreeType( TT_Engine*  engine )
-  {
-    FT_Library library;
-    FT_System  system;
-    TT_Error   error;
-
-    *engine = 0;
-
-    error = FT_New_System( &system );
-    if (error) return error;
-
-    error = FT_New_Library( system, &library );
-    if (!error)
-      /* Now create a new TrueType driver object */
-      error = FT_Add_Driver( library,
-                             (FT_DriverInterface*)&tt_driver_interface );
-    if (error)
-      FT_Done_Library(library);
-    else
-      *engine = (TT_Engine)library;
-
-    return error;
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Done_FreeType                                         */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Destroys a given TrueType engine object created with             */
-  /*    TT_Init_FreeType. All associated objects, (i.e. faces, outlines  */
-  /*    and charmaps) will be destroyed..                                */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    engine   :: handle to the engine object                          */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    This function is provided for stand-alone compiles of the        */
-  /*    TrueType driver. The FreeType library uses the TT_Done_Engine    */
-  /*    API.                                                             */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Done_FreeType( TT_Engine  engine )
-  {
-    FT_Library  library = (FT_Library)engine;
-
-    FT_Done_FreeType( library );
-    return FT_Err_Ok;
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Set_Raster_Gray_Palette                               */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Sets the raster's gray 5-levels palette. Entry 0 correspond to   */
-  /*    the background, Entry 4 to the foreground. Intermediate entries  */
-  /*    correspond to gray levels..                                      */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    engine   :: handle to the engine object                          */
-  /*    palette  :: an array of 5 bytes used to render 8-bit pixmaps     */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    This function is provided for stand-alone compiles of the        */
-  /*    TrueType driver. The FreeType library accesses directly the      */
-  /*    raster object to set the palette.                                */
-  /*                                                                     */
-  /*    This function ONLY supports 5 levels of grays.                   */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Set_Raster_Gray_Palette( TT_Engine       engine,
-                                        const TT_Byte*  palette )
-  {
-    FT_Library  library;
-
-    if (!engine)
-      return TT_Err_Invalid_Engine;
-
-    library = (FT_Library)engine;
-    return FT_Set_Raster_Palette( library, 5, (unsigned char*)palette );
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Open_Face                                             */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Creates a new face object from a given resource. The file can    */
-  /*    be either a TrueType file (ttf) or a TrueType collection (ttc).  */
-  /*    In the latter case, only the first face is opened. The number    */
-  /*    of faces in a collection can be obtained in the face's           */
-  /*    properties field "num_Faces". Other faces can be opened with     */
-  /*    TT_Open_Collection (see below).                                  */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    engine    :: the parent engine object where to create the face   */
-  /*                 object.                                             */
-  /*                                                                     */
-  /*    pathname  :: pathname for the font file.                         */
-  /*                                                                     */
-  /* <Output>                                                            */
-  /*    face      :: a handle to the fresh face object.                  */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success..                           */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    Yes.                                                             */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    This API is provided fro backwards compatibility. Please use     */
-  /*    the functions TT_New_Face/TT_Done_Face now to create and         */
-  /*    discard face objects..                                           */
-  /*                                                                     */
-
-
-        static
-        TT_Error  open_face( FT_Library      library,
-                             const TT_Text*  pathname,
-                             TT_Int          face_index,
-                             TT_Face        *aface )
-        {
-          TT_Error    error;
-          FT_Resource resource;
-
-          *aface = 0;
-
-          error = FT_New_Resource( library, pathname, &resource );
-          if (error) return error;
-
-#if 0
-          error = FT_Add_Resource( library, resource );
-          if (error) goto Fail_Install;
-#endif
-          error = FT_New_Face( resource, face_index, (FT_Face*)aface );
-
-          /* Destroy glyph slot to comply with the 1.x API */
-          if (!error)
-            FT_Done_GlyphSlot( (*aface)->root.slot );
-
-          if (error)
-            FT_Done_Resource(resource);
-
-          return error;
-        }
-
-
-  EXPORT_DEF
-  TT_Error  TT_Open_Face( TT_Engine      engine,
-                          const TT_Text* pathname,
-                          TT_Face*       aface )
-  {
-    if (!engine)
-      return TT_Err_Invalid_Driver_Handle;
-
-    return  open_face( (FT_Library)engine, pathname, 0, aface );
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Open_Collection                                       */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Loads a given face within a collection.                          */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    engine    :: TrueType engine object where to load the face       */
-  /*    pathname  :: the collection's pathname                           */
-  /*    fontIndex :: index of face within the collection. first is 0     */
-  /*                                                                     */
-  /* <Output>                                                            */
-  /*    face      :: handle to the new face object. Always set to NULL   */
-  /*                 in case of error                                    */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    Yes.                                                             */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    This API is provided for backwards compatibility. Please use     */
-  /*    the functions TT_New_Collection/TT_Done_Face now to create and   */
-  /*    discard face/collection objects.                                 */
-  /*                                                                     */
-
-  EXPORT_DEF
-  TT_Error  TT_Open_Collection( TT_Engine       engine,
-                                const TT_Text*  pathname,
-                                TT_ULong        fontIndex,
-                                TT_Face*        aface )
-  {
-    if (!engine)
-      return TT_Err_Invalid_Driver_Handle;
-
-    return open_face( (FT_Library)engine, pathname, fontIndex, aface );
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Close_Face                                            */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Destroys a given face object opened through either TT_Open_Face  */
-  /*    of TT_Open_Collection.                                           */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    face  :: handle to the target face object                        */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    This API is provided for backwards compatibility. Please use     */
-  /*    the functions TT_New_Face/TT_Done_Face now to create and         */
-  /*    discard face/collection objects.                                 */
-  /*                                                                     */
-
-  EXPORT_DEF
-  TT_Error  TT_Close_Face( TT_Face  face )
-  {
-    FT_Resource  resource;
-
-    if (!face)
-      return TT_Err_Invalid_Face_Handle;
-
-    resource = face->root.resource;
-    FT_Done_Face( (FT_Face)face );
-
-    /* uninstall corresponding resource */
-    FT_Done_Resource( resource );
-
-    return TT_Err_Ok;
-  }
-
-
-  /***********************************************************************/
-  /***********************************************************************/
-  /***********************************************************************/
-  /***********************************************************************/
-  /***********                                                 ***********/
-  /***********   End of backwards compatible APIs..            ***********/
-  /***********                                                 ***********/
-  /***********************************************************************/
-  /***********************************************************************/
-  /***********************************************************************/
-  /***********************************************************************/
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Get_Face_Properties                                   */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Return a given face's properties to the caller.                  */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    face  :: handle to the source face object                        */
-  /*                                                                     */
-  /* <Output>                                                            */
-  /*    properties :: target properties structure                        */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success.                            */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    Yes.                                                             */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Face_Properties( TT_Face              face,
-                                    TT_Face_Properties*  props )
-  {
-    props->num_Glyphs   = (TT_UShort)face->root.num_glyphs;
-    props->max_Points   = (TT_UShort)face->root.max_points;
-    props->max_Contours = (TT_UShort)face->root.max_contours;
-    props->num_CharMaps = (TT_UShort)face->root.num_charmaps;
-    props->num_Faces    = face->root.num_faces;
-    props->num_Names    = face->num_names;
-    props->header       = &face->header;
-    props->horizontal   = &face->horizontal;
-
-      /* The driver supports old Mac fonts where there are no OS/2  */
-      /* tables present in the file. However, this is not true of   */
-      /* FreeType 1.1. For the sake of backwards compatibility, we  */
-      /* always return the address of the face's os2 table, even if */
-      /* it is empty (in which case, the 'props.os2' field is set   */
-      /* to NULL..                                                  */
-      /*                                                            */
-      /* Note however, that the 'os2->version' field is set to      */
-      /* 0xFFFF to indicate a missing table though...               */
-      /*                                                            */
-
-    props->os2          = &face->os2;
-
-    props->postscript    = &face->postscript;
-    props->hdmx          = &face->hdmx;
-    props->vertical      = ( face->vertical_info ? &face->vertical : 0 );
-
-    return TT_Err_Ok;
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Set_Face_Pointer.                                     */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Each face object contains a typeless pointer, which use is left  */
-  /*    to client applications (or the high-level library). This API is  */
-  /*    used to set this generic pointer. It is ignored by the driver.   */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    face   :: target face object                                     */
-  /*    data   :: generic pointer's value                                */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    The generic pointer is used by the HLib when using the driver    */
-  /*    within the FreeType library.                                     */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Set_Face_Pointer( TT_Face  face,
-                                 void*    data )
-  {
-    if ( !face )
-      return TT_Err_Invalid_Face_Handle;
-    else
-      face->root.generic.data = data;
-
-    return TT_Err_Ok;
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Get_Face_Pointer                                      */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Each face object contains a typeless pointer, which use is left  */
-  /*    to client applications (or the high-level library). This API is  */
-  /*    used to retrieve this generic pointer, which is ignored by the   */
-  /*    driver.                                                          */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    face    :: handle to source face object                          */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    generic pointer value. NULL if the face handle is invalid..      */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  void*  TT_Get_Face_Pointer( TT_Face  face )
-  {
-    return ( face ? face->root.generic.data : NULL );
-  }
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Get_Face_Metrics                                      */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Get the metrics of a given array of glyphs. Returns any number   */
-  /*    of metrics arrays.                                               */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    face       :: handle to the source face object                   */
-  /*    firstGlyph :: index of first glyph in the array                  */
-  /*    lastGlyph  :: index of last glyph in the array                   */
-  /*                                                                     */
-  /* <Output>                                                            */
-  /*    leftBearings :: target array of shorts for the glyph left side   */
-  /*                    bearings. Set this field to NULL if you're not   */
-  /*                    interested in these metrics.                     */
-  /*                                                                     */
-  /*    widths :: target array of unsigned shorts for the glyph advance  */
-  /*              widths. Set this field to NULL if you're not           */
-  /*              interested in these metrics.                           */
-  /*                                                                     */
-  /*    topBearings :: target array of shorts for the glyph top side     */
-  /*                   bearings. Set this field to NULL if you're not    */
-  /*                   interested in these metrics.                      */
-  /*                                                                     */
-  /*    heights :: target array of unsigned shorts for the glyph advance */
-  /*               heights. Set this field to NULL if you're not         */
-  /*               interested in these metrics.                          */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success.                            */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-
-        /********************************************************/
-        /* Return horizontal or vertical metrics in font units  */
-        /* for a given glyph.  The metrics are the left side    */
-        /* bearing (resp. top side bearing) and advance width   */
-        /* (resp. advance height).                              */
-        /*                                                      */
-        /* This function will much probably move to another     */
-        /* component in the short future, but I haven't decided */
-        /* which yet...                                         */
-
-          static
-          void  get_metrics( TT_HoriHeader*  header,
-                             TT_Int          index,
-                             TT_Short*       bearing,
-                             TT_UShort*      advance )
-          {
-            TT_LongMetrics*  longs_m;
-
-            TT_UShort  k = header->number_Of_HMetrics;
-
-
-            if ( index < k )
-            {
-              longs_m = (TT_LongMetrics*)header->long_metrics + index;
-              *bearing = longs_m->bearing;
-              *advance = longs_m->advance;
-            }
-            else
-            {
-              *bearing = ((TT_ShortMetrics*)header->short_metrics)[index - k];
-              *advance = ((TT_LongMetrics*)header->long_metrics)[k - 1].advance;
-            }
-          }
-
-
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Face_Metrics( TT_Face     face,
-                                 TT_UShort   firstGlyph,
-                                 TT_UShort   lastGlyph,
-                                 TT_Short*   leftBearings,
-                                 TT_UShort*  widths,
-                                 TT_Short*   topBearings,
-                                 TT_UShort*  heights )
-  {
-    TT_UShort  num;
-
-    if ( !face )
-      return TT_Err_Invalid_Face_Handle;
-
-    /* Check the glyph range */
-    if ( lastGlyph >= face->root.num_glyphs || firstGlyph > lastGlyph )
-      return TT_Err_Invalid_Argument;
-
-    num = lastGlyph - firstGlyph;   /* number of elements-1 in each array */
-
-    /* store the left side bearings and advance widths first */
-    {
-      TT_UShort  n;
-      TT_Short   left_bearing;
-      TT_UShort  advance_width;
-
-
-      for ( n = 0; n <= num; n++ )
-      {
-        get_metrics( &face->horizontal,
-                      firstGlyph + n, &left_bearing, &advance_width );
-
-        if ( leftBearings )  leftBearings[n] = left_bearing;
-        if ( widths )        widths[n]       = advance_width;
-      }
-    }
-
-    /* check for vertical data if topBearings or heights is non-NULL */
-    if ( !topBearings && !heights )
-      return TT_Err_Ok;
-
-    if ( !face->vertical_info )
-      return TT_Err_No_Vertical_Data;
-
-    /* store the top side bearings */
-    {
-      TT_UShort  n;
-      TT_Short   top_bearing;
-      TT_UShort  advance_height;
-
-      for ( n = 0; n <= num; n++ )
-      {
-        get_metrics( (TT_HoriHeader*)&face->vertical,
-                     firstGlyph + n, &top_bearing, &advance_height );
-
-        if ( topBearings )  topBearings[n] = top_bearing;
-        if ( heights )      heights[n]     = advance_height;
-      }
-    }
-
-    return TT_Err_Ok;
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_New_Instance                                          */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Creates a new instance object from a given face                  */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    face  :: handle to source/parent face object                     */
-  /*                                                                     */
-  /* <Output>                                                            */
-  /*    instance :: handle to fresh object. Set to NULL in case of       */
-  /*                error.                                               */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    Yes.                                                             */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    Any new instance uses a default resolution of 96x96 dpi, and     */
-  /*    a default point size of 10 pts. You can change these anytime     */
-  /*    with TT_Set_Instance_Resolutions/CharSize/CharSizes/PixelSizes   */
-  /*    (see below).                                                     */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_New_Instance( TT_Face       face,
-                             TT_Instance*  instance )
-  {
-    return FT_New_Size( (FT_Face)face, (FT_Size*)instance );
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Set_Instance_Resolutions                              */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Sets an instance resolutions in dot-per-inches. Default values   */
-  /*    for "new" instances are 96x96 dpi, but these can be changed any  */
-  /*    time by calling this API.                                        */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    instance    :: handle to target instance object                  */
-  /*    xResolution :: horizontal device resolution in dpi.              */
-  /*    yResolution :: vertical device resolution in dpi.                */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    You should set the charsize or pixel size immediately after      */
-  /*    call in multi-htreaded programs. This will force the instance    */
-  /*    data to be resetted. Otherwise, you may encounter corruption     */
-  /*    when loading two glyphs from the same instance concurrently!     */
-  /*                                                                     */
-  /*    Happily, 99.99% will do just that :-)                            */
-  /*                                                                     */
-  /*                                                                     */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Set_Instance_Resolutions( TT_Instance  ins,
-                                         TT_UShort    xResolution,
-                                         TT_UShort    yResolution )
-  {
-    return FT_Set_Resolutions( (FT_Size)ins, xResolution, yResolution );
-  }
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Set_Instance_CharSizes                                */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Same as TT_Set_Instance_CharSize, but used to specify distinct   */
-  /*    horizontal and vertical coordinates.                             */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    instance   :: handle to target instance object                   */
-  /*    charWidth  :: horizontal character size (26.6 points)            */
-  /*    charHeight :: vertical character size (26.6 points)              */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    There is no check for overflow; with other words, the product    */
-  /*    of glyph dimensions times the device resolution must have        */
-  /*    reasonable values.                                               */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Set_Instance_CharSizes( TT_Instance  ins,
-                                       TT_F26Dot6   charWidth,
-                                       TT_F26Dot6   charHeight )
-  {
-    return FT_Set_Char_Sizes( (FT_Size)ins, charWidth, charHeight );
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Set_Instance_CharSize                                 */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Sets an instance's character size. The size is in fractional     */
-  /*    (26.6) point units. This function sets the horizontal and        */
-  /*    vertical sizes to be equal. Use TT_Set_Instance_CharSizes        */
-  /*    for distinct X and Y char sizes.                                 */
-  /*                                                                     */
-  /*    The default charsize of a new instance object is 10 pts.         */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    instance  :: handle to target instance object                    */
-  /*    charSize  :: character size expressed in 26.6 fixed float        */
-  /*                 points. 1 point = 1/72 dpi.                         */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Set_Instance_CharSize( TT_Instance  instance,
-                                      TT_F26Dot6   charSize )
-  {
-    return TT_Set_Instance_CharSizes( instance, charSize, charSize );
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Set_Instance_PixelSizes                               */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    This function is used to set an instance's pixel sizes directly  */
-  /*    It ignores the instance's resolutions fields, and you'll have to */
-  /*    specify the corresponding pointsize in 26.6 fixed float point    */
-  /*    units. The latter is a requirement of the TrueType bytecode      */
-  /*    interpreter but can be ignored (or more safely, set to the       */
-  /*    maximum pixel size multiplied by 64).                            */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    instance    :: handle to target instance object                  */
-  /*    pixelWidth  :: horizontal pixel width (integer value)            */
-  /*    pixelHeight :: vertical pixel height (integer value)             */
-  /*    pointSize   :: corresponding point size (26.6 points)            */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success.                            */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*   No.                                                               */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Set_Instance_PixelSizes( TT_Instance  ins,
-                                        TT_UShort    pixelWidth,
-                                        TT_UShort    pixelHeight,
-                                        TT_F26Dot6   pointSize )
-  {
-    /* The point size is now ignored by the driver */
-    (void)pointSize;
-
-    return FT_Set_Pixel_Sizes( (FT_Size)ins, pixelWidth, pixelHeight );
-  }
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Get_Instance_Metrics                                  */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Returns an instance's metrics into caller space.                 */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    instance  :: handle to source instance object                    */
-  /*                                                                     */
-  /* <Output>                                                            */
-  /*    metrics   :: target instance metrics structure                   */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    The TT_Instance_Metrics structure differs slightly from the      */
-  /*    FT_Instance_Metrics one, which is why we re-implement this       */
-  /*    function, rather than call a driver method for this..            */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Instance_Metrics( TT_Instance           ins,
-                                     TT_Instance_Metrics*  metrics )
-  {
-    TT_Size  size = (TT_Size)ins;
-
-    if (!ins)
-      return TT_Err_Invalid_Instance_Handle;
-
-    metrics->x_scale      = size->root.metrics.x_scale;
-    metrics->y_scale      = size->root.metrics.y_scale;
-    metrics->x_resolution = size->root.metrics.x_resolution;
-    metrics->y_resolution = size->root.metrics.y_resolution;
-    metrics->x_ppem       = size->root.metrics.x_ppem;
-    metrics->y_ppem       = size->root.metrics.y_ppem;
-
-    metrics->pointSize    = size->root.metrics.pointSize;
-    return TT_Err_Ok;
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Set_Instance_Pointer                                  */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Each instance object contains a typeless pointer, which use is   */
-  /*    left to client applications (or the high-level library). This    */
-  /*    API is used to set this generic pointer. It is ignored by the    */
-  /*    driver.                                                          */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    instance  :: handle to the target instance object                */
-  /*    data      :: value of the generic pointer                        */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Set_Instance_Pointer( TT_Instance  ins,
-                                     void*        data )
-  {
-    if ( !ins )
-      return TT_Err_Invalid_Instance_Handle;
-    else
-      ((FT_Size)ins)->generic.data = data;
-
-    return TT_Err_Ok;
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Get_Instance_Pointer                                  */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Each instance object contains a typeless pointer, which use is   */
-  /*    left to client applications (or the high-level library). This    */
-  /*    API is used to retrieve this generic pointer. It is ignored by   */
-  /*    the driver.                                                      */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    instance  :: handle to source instance object                    */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    value of generic pointer. NULL if invalid instance               */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-
-  EXPORT_FUNC
-  void*  TT_Get_Instance_Pointer( TT_Instance  instance )
-  {
-    if ( !instance )
-      return NULL;
-    else
-      return ((FT_Size)instance)->generic.data;
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Done_Instance                                         */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Destroys a given instance object. All instances are destroyed    */
-  /*    automatically when their parent face object is discarded.        */
-  /*    However, this API can be used to save memory.                    */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    instance  :: handle to target instance object                    */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-
-  EXPORT_FUNC
-  TT_Error  TT_Done_Instance( TT_Instance  ins )
-  {
-    FT_Done_Size( (FT_Size)ins );
-    return TT_Err_Ok;
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Set_Instance_Transform_Flags                          */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Nothing. This function has been deprecated...                    */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    instance      :: handle to target instance object                */
-  /*    rotated       :: 'rotation' flag..                               */
-  /*    stretched     :: 'stretch' flag..                                */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    Always 0.                                                        */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    This function has been deprecated !! Do not use it, it doesn't   */
-  /*    do anything now..                                                */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Set_Instance_Transform_Flags( TT_Instance  instance,
-                                             TT_Bool      rotated,
-                                             TT_Bool      stretched )
-  {
-    (void)instance;   /* the parameters are unused, the (void) prevents */
-    (void)rotated;    /* warnings from pedantic compilers..             */
-    (void)stretched;
-
-    return TT_Err_Ok;
-  }
-
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function>                                                          */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Output>                                                            */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*                                                                     */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*                                                                     */
-  /*                                                                     */
-  /*                                                                     */
-/*******************************************************************
- *
- *  Function    :  TT_New_Glyph
- *
- *  Description :  Creates a new glyph object related to a given
- *                 face.
- *
- *  Input  :  face       the face handle
- *            glyph      address of target glyph handle
- *
- *  Output :  Error code.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_New_Glyph( TT_Face    face,
-                          TT_Glyph*  aglyph )
-  {
-    return FT_New_GlyphSlot( (FT_Face)face, (FT_GlyphSlot*)aglyph );
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Done_Glyph
- *
- *  Description :  Destroys a given glyph object.
- *
- *  Input  :  glyph  the glyph handle
- *
- *  Output :  Error code.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Done_Glyph( TT_Glyph  glyph )
-  {
-    FT_Done_GlyphSlot( (FT_GlyphSlot)glyph );
-    return TT_Err_Ok;
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Load_Glyph
- *
- *  Description :  Loads a glyph.
- *
- *  Input  :  instance      the instance handle
- *            glyph         the glyph handle
- *            glyphIndex    the glyph index
- *            loadFlags     flags controlling how to load the glyph
- *                          (none, scaled, hinted, both)
- *
- *  Output :  Error code.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Load_Glyph( TT_Instance  instance,
-                           TT_Glyph     glyph,
-                           TT_UShort    glyphIndex,
-                           TT_UShort    loadFlags   )
-  {
-    TT_Int  result, flags;
-
-    flags = 0;
-
-    /* Convert load flags */
-    if ( (loadFlags & TTLOAD_SCALE_GLYPH) == 0 )
-      flags = FT_LOAD_NO_SCALE;
-
-    else if ( (loadFlags & TTLOAD_HINT_GLYPH) == 0 )
-      flags = FT_LOAD_NO_HINTING;
-
-    else
-      flags = FT_LOAD_DEFAULT;
-
-    flags |= FT_LOAD_NO_BITMAP |   /* prevent bitmap loading for */
-             FT_LOAD_LINEAR;       /* compatibility purposes..   */
-
-    return FT_Load_Glyph( (FT_GlyphSlot)glyph,
-                          (FT_Size)instance,
-                          glyphIndex,
-                          flags,
-                          &result );
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_Glyph_Outline
- *
- *  Description :  Returns the glyph's outline data.
- *
- *  Input  :  glyph     the glyph handle
- *            outline   address where the glyph outline will be returned
- *
- *  Output :  Error code.
- *
- *  MT-Safe : YES!  Reads only semi-permanent data.
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Glyph_Outline( TT_Glyph     glyph,
-                                  TT_Outline*  outline )
-  {
-    FT_GlyphSlot  slot = (FT_GlyphSlot)glyph;
-
-    if (!glyph)
-      return TT_Err_Invalid_Glyph_Handle;
-
-    /* the structures TT_Outline and FT_Outline are equivalent */
-    *((FT_Outline*)outline) = slot->outline;
-    return TT_Err_Ok;
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_Glyph_Metrics
- *
- *  Description :  Extracts the glyph's horizontal metrics information.
- *
- *  Input  :  glyph       glyph object handle
- *            metrics     address where metrics will be returned
- *
- *  Output :  Error code.
- *
- *  MT-Safe : NO!  Glyph containers can't be shared.
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Glyph_Metrics( TT_Glyph           glyph,
-                                  TT_Glyph_Metrics*  metrics )
-  {
-    FT_GlyphSlot  slot = (FT_GlyphSlot)glyph;
-
-    if (!glyph)
-      return TT_Err_Invalid_Glyph_Handle;
-
-    /* TT_Glyph_Metrics and FT_Glyph_Metrics are slightly different */
-    metrics->bbox.xMin = slot->metrics.horiBearingX;
-
-    metrics->bbox.xMax = slot->metrics.horiBearingX +
-                         slot->metrics.width;
-
-    metrics->bbox.yMax = slot->metrics.horiBearingY;
-
-    metrics->bbox.yMin = slot->metrics.horiBearingY -
-                         slot->metrics.height;
-
-    metrics->bearingX  = slot->metrics.horiBearingX;
-    metrics->bearingY  = slot->metrics.horiBearingY;
-    metrics->advance   = slot->metrics.horiAdvance;
-
-    return TT_Err_Ok;
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_Big_Glyph_Metrics
- *
- *  Description :  Extracts the glyph's big metrics information.
- *
- *  Input  :  glyph       glyph object handle
- *            metrics     address where big metrics will be returned
- *
- *  Output :  Error code.
- *
- *  MT-Safe : NO!  Glyph containers can't be shared.
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Glyph_Big_Metrics( TT_Glyph               glyph,
-                                      TT_Big_Glyph_Metrics*  metrics )
-  {
-    FT_GlyphSlot       slot = (FT_GlyphSlot)glyph;
-    FT_Glyph_Metrics*  met;
-    FT_Glyph_Metrics*  met2;
-
-    if (!glyph)
-      return TT_Err_Invalid_Glyph_Handle;
-
-    met  = &slot->metrics;
-    met2 = &slot->metrics2;
-
-    metrics->bbox.xMin = met->horiBearingX;
-    metrics->bbox.xMax = met->horiBearingX + met->width;
-    metrics->bbox.yMin = met->horiBearingY - met->height;
-    metrics->bbox.yMax = met->horiBearingY;
-
-    metrics->horiBearingX = met->horiBearingX;
-    metrics->horiBearingY = met->horiBearingY;
-    metrics->horiAdvance  = met->horiAdvance;
-
-    metrics->vertBearingX = met->vertBearingX;
-    metrics->vertBearingY = met->vertBearingY;
-    metrics->vertAdvance  = met->vertAdvance;
-
-    metrics->linearHoriAdvance  = met2->horiAdvance;
-    metrics->linearHoriBearingX = met2->horiBearingX;
-
-    metrics->linearVertAdvance  = met2->vertAdvance;
-    metrics->linearVertBearingY = met2->vertBearingY;
-
-    return TT_Err_Ok;
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_Glyph_Bitmap
- *
- *  Description :  Produces a bitmap from a glyph outline.
- *
- *  Input  :  glyph      the glyph container's handle
- *            map        target pixmap description block
- *            xOffset    x offset in fractional pixels (26.6 format)
- *            yOffset    y offset in fractional pixels (26.6 format)
- *
- *  Output :  Error code.
- *
- *  Note : Only use integer pixel offsets if you want to preserve
- *         the fine hints applied to the outline.  This means that
- *         xOffset and yOffset must be multiples of 64!
- *
- *  MT-Safe : NO!  Glyph containers can't be shared.
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Glyph_Bitmap( TT_Glyph        glyph,
-                                 TT_Raster_Map*  map,
-                                 TT_F26Dot6      xOffset,
-                                 TT_F26Dot6      yOffset )
-  {
-    FT_Library     library;
-    TT_Error       error;
-    FT_GlyphSlot   slot = (FT_GlyphSlot)glyph;
-    FT_Outline     outline;
-    FT_Raster_Map  bitmap;
-
-    if ( !glyph )
-      return TT_Err_Invalid_Glyph_Handle;
-
-    library = slot->face->resource->library;
-    outline = slot->outline;
-
-    /* XXX : For now, use only dropout mode 2    */
-    /* outline.dropout_mode = _glyph->scan_type; */
-    outline.dropout_mode = 2;
-
-    bitmap.width    = map->width;
-    bitmap.rows     = map->rows;
-    bitmap.cols     = map->cols;
-    bitmap.flow     = map->flow;
-    bitmap.pix_bits = 1;
-    bitmap.buffer   = map->bitmap;
-
-    FT_Translate_Outline( &outline, xOffset, yOffset );
-
-    error = FT_Get_Outline_Bitmap( library, &outline, &bitmap );
-
-    FT_Translate_Outline( &outline, -xOffset, -yOffset );
-
-    return error;
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_Glyph_Pixmap
- *
- *  Description :  Produces a grayscaled pixmap from a glyph
- *                 outline.
- *
- *  Input  :  glyph      the glyph container's handle
- *            map        target pixmap description block
- *            xOffset    x offset in fractional pixels (26.6 format)
- *            yOffset    y offset in fractional pixels (26.6 format)
- *
- *  Output :  Error code.
- *
- *  Note : Only use integer pixel offsets to preserve the fine
- *         hinting of the glyph and the 'correct' anti-aliasing
- *         (where vertical and horizontal stems aren't grayed).
- *         This means that xOffset and yOffset must be multiples
- *         of 64!
- *
- *         You can experiment with offsets of +32 to get 'blurred'
- *         versions of the glyphs (a nice effect at large sizes that
- *         some graphic designers may appreciate :)
- *
- *  MT-Safe : NO!  Glyph containers can't be shared.
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Glyph_Pixmap( TT_Glyph        glyph,
-                                 TT_Raster_Map*  map,
-                                 TT_F26Dot6      xOffset,
-                                 TT_F26Dot6      yOffset )
-  {
-    FT_Library     library;
-    TT_Error       error;
-    FT_GlyphSlot   slot = (FT_GlyphSlot)glyph;
-    FT_Outline     outline;
-    FT_Raster_Map  bitmap;
-
-    if ( !glyph )
-      return TT_Err_Invalid_Glyph_Handle;
-
-    library = slot->face->resource->library;
-    outline = slot->outline;
-
-    /* XXX : For now, use only dropout mode 2    */
-    /* outline.dropout_mode = _glyph->scan_type; */
-    outline.dropout_mode = 2;
-
-    bitmap.width    = map->width;
-    bitmap.rows     = map->rows;
-    bitmap.cols     = map->cols;
-    bitmap.flow     = map->flow;
-    bitmap.pix_bits = 8;
-    bitmap.buffer   = map->bitmap;
-
-    FT_Translate_Outline( &outline, xOffset, yOffset );
-
-    error = FT_Get_Outline_Bitmap( library, &outline, &bitmap );
-
-    FT_Translate_Outline( &outline, -xOffset, -yOffset );
-
-    return error;
-  }
-
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Get_Outline_Bitmap                                    */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*     Renders an outline within a bitmap. The outline's image is      */
-  /*     simply or-ed to the target bitmap.                              */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*     engine  ::   handle to the TrueType driver object               */
-  /*     outline ::   pointer to the source outline descriptor           */
-  /*     raster  ::   pointer to the target bitmap descriptor            */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*     TrueType error code. 0 means success.                           */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*     Yes.                                                            */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Outline_Bitmap( TT_Engine       engine,
-                                   TT_Outline*     outline,
-                                   TT_Raster_Map*  map )
-  {
-    FT_Library     library = (FT_Library)engine;
-    FT_Raster_Map  bitmap;
-
-    if ( !engine )
-      return TT_Err_Invalid_Engine;
-
-    if ( !outline || !map )
-      return TT_Err_Invalid_Argument;
-
-    bitmap.width    = map->width;
-    bitmap.rows     = map->rows;
-    bitmap.cols     = map->cols;
-    bitmap.flow     = map->flow;
-    bitmap.pix_bits = 1;
-    bitmap.buffer   = map->bitmap;
-
-    return FT_Get_Outline_Bitmap( library, (FT_Outline*)outline, &bitmap );
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Get_Outline_Pixmap                                    */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*     Renders an outline within a pixmap. The outline's image is      */
-  /*     simply or-ed to the target pixmap.                              */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*     engine  ::   handle to the TrueType driver object               */
-  /*     outline ::   pointer to the source outline descriptor           */
-  /*     raster  ::   pointer to the target pixmap descriptor            */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*     TrueType error code. 0 means success.                           */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*     Yes.                                                            */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Outline_Pixmap( TT_Engine       engine,
-                                   TT_Outline*     outline,
-                                   TT_Raster_Map*  map )
-  {
-    FT_Library     library = (FT_Library)engine;
-    FT_Raster_Map  bitmap;
-
-    if ( !engine )
-      return TT_Err_Invalid_Engine;
-
-    if ( !outline || !map )
-      return TT_Err_Invalid_Argument;
-
-    bitmap.width    = map->width;
-    bitmap.rows     = map->rows;
-    bitmap.cols     = map->cols;
-    bitmap.flow     = map->flow;
-    bitmap.pix_bits = 8;
-    bitmap.buffer   = map->bitmap;
-
-    return FT_Get_Outline_Bitmap( library, (FT_Outline*)outline, &bitmap );
-  }
-
-
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_New_Outline                                           */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Creates a new outline of a given size.                           */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    numPoints ::  maximum number of points within the outline        */
-  /*                                                                     */
-  /*    numContours :: maximum number of contours within the outline     */
-  /*                                                                     */
-  /* <Output>                                                            */
-  /*    outline  :: target outline descriptor.                           */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    Yes.                                                             */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    This function uses 'malloc' to allocate the outline's array,     */
-  /*    _unlike_ all other functions in the TrueType API. This means     */
-  /*    that the outline won't be destroyed when the TrueType engine     */
-  /*    is finalized..                                                   */
-  /*                                                                     */
-  /*    It is provided for backwards compatibility ONLY. Use the new     */
-  /*    FT_New_Outline function defined in "ftoutln.h" instead if you're */
-  /*    working with the FreeType 2.0 API.                               */
-  /*                                                                     */
-
-#include <stdlib.h>  /* for malloc and free */
-
-  static  TT_Outline  null_api_outline = { 0, 0, NULL, NULL, NULL,
-                                           0, 0, 0, 0 };
-
-  EXPORT_FUNC
-  TT_Error  TT_New_Outline( TT_UShort    numPoints,
-                            TT_Short     numContours,
-                            TT_Outline*  outline )
-  {
-    if ( !outline )
-      return TT_Err_Invalid_Argument;
-
-    *outline = null_api_outline;
-
-    if ( numPoints > 0 && numContours > 0 )
-    {
-      outline->points   = (TT_Vector*)malloc( numPoints * sizeof(TT_Vector) );
-      outline->flags    = (TT_Byte*)  malloc( numPoints * sizeof(TT_Char)   );
-      outline->contours = (TT_UShort*)malloc( numPoints * sizeof(TT_UShort) );
-
-      if ( !outline->points || !outline->flags || !outline->contours )
-        goto Fail;
-
-      outline->n_points   = numPoints;
-      outline->n_contours = numContours;
-      outline->owner      = TRUE;
-    }
-    return TT_Err_Ok;
-
-  Fail:
-    outline->owner = TRUE;
-    TT_Done_Outline( outline );
-    return TT_Err_Out_Of_Memory;
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Done_Outline                                          */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*    Destroys an outline created with FT_New_Outline                  */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*    outline ::                                                       */
-  /*       pointer to the outline destructor to discard. This function   */
-  /*       doesn't destroy the TT_Outline sturcture, only the data it    */
-  /*       contains/own.                                                 */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*    TrueType error code. 0 means success                             */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*    No.                                                              */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*    This function uses 'free' to discard the outline's arrays.       */
-  /*    You should only discard outline allocated with TT_New_Outline.   */
-  /*                                                                     */
-  /*    It is provided for backwards compatibility ONLY. Use the new     */
-  /*    FT_Done_Outline function defined in "ftoutln.h" instead if you're*/
-  /*    working with the FreeType 2.0 API.                               */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Done_Outline( TT_Outline*  outline )
-  {
-    if ( outline )
-    {
-      if ( outline->owner )
-      {
-        free( outline->points   );
-        free( outline->flags    );
-        free( outline->contours );
-      }
-      *outline = null_api_outline;
-      return TT_Err_Ok;
-    }
-    else
-      return TT_Err_Invalid_Argument;
-  }
-
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function> TT_Copy_Outline                                          */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*     Copy an outline into another one. Both objects must have        */
-  /*     the same sizes ( num. points & num. contours ) when this        */
-  /*     function is called..                                            */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*     source  :: handle to source outline                             */
-  /*     target  :: handle to target outline                             */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*     TrueType error code. 0 means success                            */
-  /*                                                                     */
-
-  EXPORT_FUNC
-  TT_Error  TT_Copy_Outline( TT_Outline*  source,
-                             TT_Outline*  target )
-  {
-    return FT_Copy_Outline( (FT_Outline*)source,
-                            (FT_Outline*)target );
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Transform_Outline
- *
- *  Description :  Applies a simple transformation to an outline.
- *
- *  Input  :  outline     the glyph's outline.  Can be extracted
- *                        from a glyph container through
- *                        TT_Get_Glyph_Outline().
- *
- *            matrix      simple matrix with 16.16 fixed floats
- *
- *  Output :  Error code (always TT_Err_Ok).
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  void  TT_Transform_Outline( TT_Outline*  outline,
-                              TT_Matrix*   matrix )
-  {
-    FT_Transform_Outline( (FT_Outline*)outline, (FT_Matrix*)matrix );
-  }
-
-/*******************************************************************
- *
- *  Function    :  TT_Transform_Vector
- *
- *  Description :  Apply a simple transform to a vector
- *
- *  Input  :  x, y        the vector.
- *
- *            matrix      simple matrix with 16.16 fixed floats
- *
- *  Output :  None.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  void  TT_Transform_Vector( TT_F26Dot6*  x,
-                             TT_F26Dot6*  y,
-                             TT_Matrix*   matrix )
-  {
-    FT_Transform_Vector( x, y, (FT_Matrix*) matrix );
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Translate_Outline
- *
- *  Description :  Applies a simple translation.
- *
- *  Input  :  outline   no comment :)
- *            xOffset
- *            yOffset
- *
- *  Output :  Error code.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  void      TT_Translate_Outline( TT_Outline*  outline,
-                                  TT_F26Dot6   xOffset,
-                                  TT_F26Dot6   yOffset )
-  {
-    FT_Translate_Outline( (FT_Outline*)outline, xOffset, yOffset );
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_Outline_BBox
- *
- *  Description :  Returns an outline's bounding box.
- *
- *  Input  :  outline   no comment :)
- *            bbox      address where the bounding box is returned
- *
- *  Output :  Error code.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Outline_BBox( TT_Outline*  outline,
-                                 TT_BBox*     bbox )
-  {
-    return FT_Get_Outline_CBox( (FT_Outline*)outline, (FT_BBox*)bbox );
-  }
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function>                                                          */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Output>                                                            */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*                                                                     */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*                                                                     */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*                                                                     */
-  /*                                                                     */
-  /*                                                                     */
-  /* Compute A*B/C with 64 bits intermediate precision. */
-
-  EXPORT_FUNC
-  TT_Long   TT_MulDiv( TT_Long A, TT_Long B, TT_Long C )
-  {
-    return FT_MulDiv( A, B, C );
-  }
-
-
-  /***********************************************************************/
-  /*                                                                     */
-  /* <Function>                                                          */
-  /*                                                                     */
-  /* <Description>                                                       */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Input>                                                             */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Output>                                                            */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Return>                                                            */
-  /*                                                                     */
-  /*                                                                     */
-  /* <MT-Note>                                                           */
-  /*                                                                     */
-  /*                                                                     */
-  /*                                                                     */
-  /* <Note>                                                              */
-  /*                                                                     */
-  /*                                                                     */
-  /*                                                                     */
-  /* Compute A*B/0x10000 with 64 bits intermediate precision. */
-  /* Useful to multiply by a 16.16 fixed float value.         */
-
-  EXPORT_FUNC
-  TT_Long   TT_MulFix( TT_Long A, TT_Long B )
-  {
-    return FT_MulFix( A, B );
-  }
-
-  /* ----------------- character mappings support ------------- */
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_CharMap_Count
- *
- *  Description :  Returns the number of charmaps in a given face.
- *
- *  Input  :  face   face object handle
- *
- *  Output :  Number of tables. -1 in case of error (bad handle).
- *
- *  Note   :  DON'T USE THIS FUNCTION! IT HAS BEEN DEPRECATED!
- *
- *            It is retained for backwards compatibility only and will
- *            fail on 16bit systems.
- *
- *  MT-Safe : YES !
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  int  TT_Get_CharMap_Count( TT_Face  face )
-  {
-    FT_Face  _face = (FT_Face)face;
-
-    return ( _face ? _face->num_charmaps : -1 );
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_CharMap_ID
- *
- *  Description :  Returns the ID of a given charmap.
- *
- *  Input  :  face             face object handle
- *            charmapIndex     index of charmap in directory
- *            platformID       address of returned platform ID
- *            encodingID       address of returned encoding ID
- *
- *  Output :  error code
- *
- *  MT-Safe : YES !
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_CharMap_ID( TT_Face     face,
-                               TT_UShort   charmapIndex,
-                               TT_UShort*  platformID,
-                               TT_UShort*  encodingID )
-  {
-    TT_CharMap  cmap;
-
-    if ( !face )
-      return TT_Err_Invalid_Face_Handle;
-
-    if ( charmapIndex >= face->num_charmaps )
-      return TT_Err_Bad_Argument;
-
-    cmap = (TT_CharMap)face->charmaps + charmapIndex;
-
-    *platformID = cmap->root.platform_id;
-    *encodingID = cmap->root.encoding_id;
-
-    return TT_Err_Ok;
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_CharMap
- *
- *  Description :  Looks up a charmap.
- *
- *  Input  :  face          face object handle
- *            charmapIndex  index of charmap in directory
- *            charMap       address of returned charmap handle
- *
- *  Output :  Error code.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_CharMap( TT_Face      face,
-                            TT_UShort    charmapIndex,
-                            TT_CharMap*  charMap )
-  {
-    if ( !face )
-      return TT_Err_Invalid_Face_Handle;
-
-    if ( charmapIndex >= face->num_charmaps )
-      return TT_Err_Bad_Argument;
-
-    *charMap = (TT_CharMap)face->charmaps + charmapIndex;
-    return TT_Err_Ok;
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Char_Index
- *
- *  Description :  Returns the glyph index corresponding to
- *                 a given character code defined for the 'charmap'.
- *
- *  Input  :  charMap    charmap handle
- *            charcode   character code
- *
- *  Output :  glyph index.
- *
- *  Notes  :  Character code 0 is the unknown glyph, which should never
- *            be displayed.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_UShort  TT_Char_Index( TT_CharMap  charMap,
-                            TT_UShort   charCode )
-  {
-    return tt_interface->get_char_index( (FT_CharMap)charMap, charCode );
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_Name_Count
- *
- *  Description :  Returns the number of strings found in the
- *                 name table.
- *
- *  Input  :  face   face handle
- *
- *  Output :  number of strings.
- *
- *  Notes  :  Returns -1 on error (invalid handle).
- *
- *            DON'T USE THIS FUNCTION! IT HAS BEEN DEPRECATED!
- *
- *            It is retained for backwards compatibility only and will
- *            fail on 16bit systems.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  int  TT_Get_Name_Count( TT_Face  face )
-  {
-    if ( !face )
-      return -1;
-
-    return face->num_names;
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_Name_ID
- *
- *  Description :  Returns the IDs of the string number 'nameIndex'
- *                 in the name table of a given face.
- *
- *  Input  :  face        face handle
- *            nameIndex   index of string. First is 0
- *            platformID  addresses of returned IDs
- *            encodingID
- *            languageID
- *            nameID
- *
- *  Output :  Error code.
- *
- *  Notes  :  Some files have a corrupt or unusual name table, with some
- *            entries having a platformID > 3.  These can usually
- *            be ignored by a client application.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Name_ID( TT_Face     face,
-                            TT_UShort   nameIndex,
-                            TT_UShort*  platformID,
-                            TT_UShort*  encodingID,
-                            TT_UShort*  languageID,
-                            TT_UShort*  nameID )
-  {
-    TT_NameRec*  name;
-
-    if (!face)
-      return TT_Err_Invalid_Face_Handle;
-
-    if ( nameIndex >= face->num_names )
-      return TT_Err_Bad_Argument;
-
-    name = face->name_table.names + nameIndex;
-
-    *platformID = name->platformID;
-    *encodingID = name->encodingID;
-    *languageID = name->languageID;
-    *nameID     = name->nameID;
-
-    return TT_Err_Ok;
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_Name_String
- *
- *  Description :  Returns the address and length of a given
- *                 string found in the name table.
- *
- *  Input  :  face        face handle
- *            nameIndex   string index
- *            stringPtr   address of returned pointer to string
- *            length      address of returned string length
- *
- *  Output :  Error code.
- *
- *  Notes  :  If the string's platformID is invalid,
- *            stringPtr is NULL, and length is 0.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Name_String( TT_Face      face,
-                                TT_UShort    nameIndex,
-                                TT_String**  stringPtr,
-                                TT_UShort*   length )
-  {
-    TT_NameRec* name;
-
-    if (!face)
-      return TT_Err_Invalid_Face_Handle;
-
-    if ( nameIndex >= face->num_names )
-      return TT_Err_Bad_Argument;
-
-    name = face->name_table.names + nameIndex;
-
-    *stringPtr = (TT_String*)name->string;
-    *length    = name->stringLength;
-
-    return TT_Err_Ok;
-  }
-
-
-/*******************************************************************
- *
- *  Function    :  TT_Get_Font_Data
- *
- *  Description :  Loads any font table in client memory.  Used by
- *                 the TT_Get_Font_Data().
- *
- *  Input  :  face     Face object to look for.
- *
- *            tag      Tag of table to load.  Use the value 0 if you
- *                     want to access the whole font file, else set
- *                     this parameter to a valid TrueType table tag
- *                     that you can forge with the MAKE_TT_TAG
- *                     macro.
- *
- *            offset   Starting offset in the table (or the file
- *                     if tag == 0).
- *
- *            buffer   Address of target buffer
- *
- *            length   Address of decision variable:
- *
- *                       if length == NULL:
- *                             Load the whole table.  Returns an
- *                             an error if 'offset' != 0.
- *
- *                       if *length == 0 :
- *                             Exit immediately, returning the
- *                             length of the given table, or of
- *                             the font file, depending on the
- *                             value of 'tag'.
- *
- *                       if *length != 0 :
- *                             Load the next 'length' bytes of
- *                             table or font, starting at offset
- *                             'offset' (in table or font too).
- *
- *  Output :  Error code.
- *
- *  MT-Safe : YES!
- *
- ******************************************************************/
-
-  EXPORT_FUNC
-  TT_Error  TT_Get_Font_Data( TT_Face   face,
-                              TT_ULong  tag,
-                              TT_Long   offset,
-                              void*     buffer,
-                              TT_Long*  length )
-  {
-    return tt_extension->get_font_data( face, tag, offset, buffer, length );
-  }
-
-
-
-
-
-
-
-  /*******************************************************************/
-  /*                                                                 */
-  /*                                                                 */
-  /*                                                                 */
-  /*  Postscript Names extension                                     */
-  /*                                                                 */
-  /*                                                                 */
-  /*                                                                 */
-  /*******************************************************************/
-
-  /* Initialise the Postscript Names extension */
-  EXPORT_FUNC
-  TT_Error TT_Init_Post_Extension( TT_Engine  engine )
-  {
-    (void)engine;
-    return TT_Err_Ok;
-  }
-
-  /* Load the Postscript Names table - notice that the 'post' parameter */
-  /* will be ignored in 2.0.                                            */
-  EXPORT_DEF
-  TT_Error TT_Load_PS_Names( TT_Face   face,
-                             void*     post )
-  {
-    (void)post;
-    (void)face;
-
-    /* the names are now loaded on demand in 2.0 */
-    return TT_Err_Ok;
-  }
-
-
-  /* The following is directly implemented in the TrueType driver */
-#if 0
-  /* Gets the postscript name of a single glyph */
-  EXPORT_DEF
-  TT_Error TT_Get_PS_Name( TT_Face      face,
-                           TT_UShort    index,
-                           TT_String**  PSname );
-#endif
-
-
-
-
-  /*******************************************************************/
-  /*                                                                 */
-  /*                                                                 */
-  /*                                                                 */
-  /*  Embedded Bitmap (sbits) extension                              */
-  /*                                                                 */
-  /*                                                                 */
-  /*                                                                 */
-  /*******************************************************************/
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Function>                                                */
-  /*    TT_Init_SBit_Extension                                 */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    Initialise the embedded bitmaps extension for the      */
-  /*    FreeType engine.                                       */
-  /*                                                           */
-  /* <Input>                                                   */
-  /*    engine  :: handle to current FreeType library instance */
-  /*                                                           */
-  /* <Return>                                                  */
-  /*    Error code. 0 means success.                           */
-  /*                                                           */
-  EXPORT_FUNC
-  TT_Error  TT_Init_SBit_Extension( TT_Engine  engine )
-  {
-    (void)engine;
-    return TT_Err_Ok;
-  }
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Function>                                                */
-  /*    TT_Get_Face_Bitmaps                                    */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    Loads the "EBLC" table from a font file, if any.       */
-  /*                                                           */
-  /* <Input>                                                   */
-  /*    face :: handle to the source TrueType font/face        */
-  /*                                                           */
-  /* <Output>                                                  */
-  /*    eblc_table :: a descriptor for the EBLC table          */
-  /*                                                           */
-  /* <Return>                                                  */
-  /*    Error code. 0 means success.                           */
-  /*                                                           */
-  /* <Note>                                                    */
-  /*    This function returns TT_Err_Table_Missing when the    */
-  /*    font contains no embedded bitmaps. All fields in       */
-  /*    "eblc_table" will then be set to 0.                    */
-  /*                                                           */
-  EXPORT_FUNC
-  TT_Error  TT_Get_Face_Bitmaps( TT_Face   face,
-                                 TT_EBLC  *eblc_table )
-  {
-    if (!face)
-      return FT_Err_Invalid_Face_Handle;
-
-    eblc_table->num_strikes = face->num_sbit_strikes;
-    eblc_table->strikes     = face->sbit_strikes;
-
-    if ( face->num_sbit_strikes > 0 )
-    {
-      eblc_table->version = 0x00002000;
-      return TT_Err_Ok;
-    }
-
-    eblc_table->version = 0;
-    return TT_Err_Table_Missing;
-  }
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Function>                                                */
-  /*    TT_New_SBit_Image                                      */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    Allocates a new embedded bitmap container              */
-  /*                                                           */
-  /* <Output>                                                  */
-  /*    image :: sbit image                                    */
-  /*                                                           */
-  /* <Return>                                                  */
-  /*    Error code. 0 means success.                           */
-  /*                                                           */
-  EXPORT_DEF
-  TT_Error  TT_New_SBit_Image( TT_SBit_Image*  *image )
-  {
-    *image = (TT_SBit_Image*)malloc( sizeof(**image) );
-    if ( !*image )
-      return TT_Err_Out_Of_Memory;
-
-    MEM_Set( *image, sizeof(**image), 0 );
-    return TT_Err_Ok;
-  }
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Function>                                                */
-  /*    TT_Done_SBit_Image                                     */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    Releases an embedded bitmap container                  */
-  /*                                                           */
-  /* <Input>                                                   */
-  /*    image :: sbit image                                    */
-  /*                                                           */
-  EXPORT_DEF
-  void      TT_Done_SBit_Image( TT_SBit_Image*  image )
-  {
-    free( image->map.bitmap );
-    free( image );
-  }
-
-
-  /*************************************************************/
-  /*                                                           */
-  /* <Function>                                                */
-  /*    TT_Load_Glyph_Bitmap                                   */
-  /*                                                           */
-  /* <Description>                                             */
-  /*    Loads a given glyph embedded bitmap                    */
-  /*                                                           */
-  /* <Input>                                                   */
-  /*    face        :: handle to the source TrueType font/face */
-  /*    instance    :: current size/transform instance         */
-  /*    glyph_index :: index of source glyph                   */
-  /*    bitmap      :: target embedded bitmap descriptor       */
-  /*                                                           */
-  /* <Return>                                                  */
-  /*    Error code. 0 means success.                           */
-  /*                                                           */
-  /* <Note>                                                    */
-  /*    This function returns an error if there is no          */
-  /*    embedded bitmap for the glyph at the given             */
-  /*    instance.                                              */
-  /*                                                           */
-  EXPORT_FUNC
-  TT_Error  TT_Load_Glyph_Bitmap( TT_Face         face,
-                                  TT_Instance     instance,
-                                  TT_UShort       glyph_index,
-                                  TT_SBit_Image*  bitmap )
-  {
-    FT_GlyphSlot  slot;
-    TT_Error      error;
-
-    error = FT_New_GlyphSlot( (FT_Face)face, &slot );
-    if (error) goto Exit;
-
-    error = FT_Load_Glyph( slot, (FT_Size)instance, glyph_index,
-                           FT_LOAD_NO_OUTLINE, 0 );
-    if (!error)
-    {
-      /* copy bitmap */
-      bitmap->map.width  = slot->bitmap.width;
-      bitmap->map.rows   = slot->bitmap.rows;
-      bitmap->map.cols   = slot->bitmap.cols;
-      bitmap->map.flow   = slot->bitmap.flow;
-      bitmap->bit_depth  = slot->bitmap.pix_bits;
-      bitmap->map.bitmap = slot->bitmap.buffer;
-
-      /* copy metrics */
-      bitmap->metrics.bbox.xMin = slot->metrics.horiBearingX >> 6;
-      bitmap->metrics.bbox.xMax = bitmap->metrics.bbox.xMin +
-                                  (slot->metrics.width >> 6);
-      bitmap->metrics.bbox.yMax = slot->metrics.horiBearingY >> 6;
-      bitmap->metrics.bbox.yMin = bitmap->metrics.bbox.yMax -
-                                  (slot->metrics.height >> 6);
-
-      bitmap->metrics.horiBearingX = bitmap->metrics.bbox.xMin;
-      bitmap->metrics.horiBearingY = bitmap->metrics.bbox.yMax;
-      bitmap->metrics.horiAdvance  = slot->metrics.horiAdvance >> 6;
-
-      bitmap->metrics.vertBearingX = slot->metrics.vertBearingX >> 6;
-      bitmap->metrics.vertBearingY = slot->metrics.vertBearingY >> 6;
-      bitmap->metrics.vertAdvance  = slot->metrics.vertAdvance  >> 6;
-
-      slot->bitmap.buffer = 0;
-    }
-
-    FT_Done_GlyphSlot( slot );
-  Exit:
-    return error;
-  }
-
-/* END */