What's new ?
------------

There were a number of changes since the public beta :

 I. Bug fixes

The following bugs have been fixed in this release :

 - "incorrect advance width and left side bearings"
   The glyph loader has been re-designed to match the
   values found in the pre-calc tables..

 - "problems when opening multiple fonts"
   Fixed. a stupid bug in the i/o component

 - "problems with some georgian fonts"
   Fixed. Discovered some new undocumented opcodes behaviour..

 - "buglets in the test programs which made them return invalid
    error codes". Fixed

 - "memory leaks when trying to open broken some font files"
   Fixed.. waiting for more broken fonts to test..

 - "non-square resolutions don't work or display correctly"
   They now work very well !

 - "the scan-line converter, while in font-smoothing mode, doesn't
    perform horizontal drop-out control"
   This wasn't really bug, but the feature has been correctly added.


The remaining "features" persist, as they're not essential yet :

 - the "rotated" and "stretched" flags do not work (glyph loading
   will then return errors !). However, it is still possible to
   rotate or transform any outline without setting these flags.

 - we always use drop-out mode number 2, as some of the values
   returned by some "cvt programs" seem invalid for now..


Note also that an "event hook/callback" has been introduced in this
release, but is still under alpha (not even beta). You should not
rely on this..


II. Code changes :

1. API Changes :

A few API changes were necessary in order to support important
features, or future improvements which will come in later releases.

- TT_Set_Instance_Resolution was renamed to TT_Set_Instance_Resolutions 

- TT_Set_Instance_PointSize has disappeared.  Instead, the following
  APIs have been defined :

    TT_Set_Instance_CharSize
    TT_Set_Instance_CharSizes
    TT_Set_Instance_PixelSizes


- The TT_Engine class has been introduced.  It models one instance of
  the library, and is used to allow re-entrancy and shared library
  code. The functions which now depend on a TT_Engine parameter are :

    TT_Init_FreeType
    TT_Done_FreeType
    TT_Open_Face
    TT_Open_Collection
    TT_Set_Raster_Palette
    TT_Get_Outline_Bitmap
    TT_Get_Outline_Pixmap

  Note that there is _no_ sharing of objects between distincts
  engines.


- Each face and instance object have an inside pointer which use is
  reserved to client application.  Several functions are defined to
  set and read it :

    TT_Set_Face_Pointer / TT_Get_Face_Pointer
    TT_Set_Instance_Pointer / TT_Get_Instance_Pointer


- TT_Apply_Outline_Matrix has been renamed to TT_Transform_Outline
  TT_Apply_Outline_Translation has been renamed to TT_Translate_Outline
  TT_Apply_Vector_Matrix has been renamed to TT_Transform_Vector
  all for the sake of clarity.



2. Structural changes :

Some structures have evolved.

- The instance metrics have now two new fields which are "x_scale"
  and "y_scale".  Each one is a scaling factor, expressed in the 16.16
  fixed float format (TT_Fixed), used to convert one distance
  expressed in font units into the same distance in fractional (26.6)
  pixels.


- A new structure TT_BBox has been defined to describe an outline's
  bounding box

- The outlines are now full-class citizen. It is possible to create
  new outlines, copy, clone, transform, translate and render them
  through specific methods of the TT_Outline class (previously called
  TT_Glyph_Outline). Read the API reference for a complete listing.


- The glyph metrics have a new structure :  they contain a TT_BBox
  field, a TT_Outline field, as well as three metrics values, which
  are "bearingX", "bearingY" and "advance".  Read the file
  "glyphs.txt" for more information about their definitions and uses.



3. Detail but IMPORTANT changes :


- the "max_Faces" field of a face's properties has disappeared.  It is
  replaced by "num_Faces" which gives the total number of fonts
  embedded in a collection (the previous field gave the total minus
  one).


- TT_Load_Glyph now returns correctly placed outlines, and computes
  advance widths which match the pre-calc values in the "hdmx" table
  in nearly all cases.

- TT_Get_Glyph_Metrics returns grid-fitted metrics for hinted glyphs
  (i.e. loaded with the TTLOAD_HINT_GLYPH, or TTLOAD_DEFAULT, flags)
  This includes the bounding box.  To get the exact bounding box of
  a hinted glyph, you should extract its outline, then call
  TT_Get_Outline_BBox.

- Some improvements in the glyph loader, which improves drastically
  the placement of glyphs (especially composite ones) which
  previously caused trouble for some fonts (i.e. goudy.ttf)

- Several minor improvements in the interpreter to improve rendering
  and bounds checking..

- up-to-date Pascal source code, with output equivalent to the C
  tree..

