FTGL 2.1.2 (FTGL_2_1_2)
11 December 2004
    - Changed the way the colour is specified for Pixmap fonts. It can now be
      done per string rather than at start up as previous.
    - Fixed a couple of compilation errors caused by the new FTPoint stuff,
      mostly...
    - More const correctness. It's like a virus!
      
5 December 2004
    2.1.1 (FTGL_2_1_1)
    - Added the xCode project properly this time.
    
5 December 2004
    2.1.0 (FTGL_2_1_0)
    - Added texture co-ordinates to the geometry based font types.
    - Added the ability to turn off (or on) glDisplayList creation inside FTGL.
    - Removed unnecessary translates in the glyph rendering code.
    - Moved the Mac project to XCode.
    - Added a line height function to FTFont.
    - Got rid of the GL_TEXTURE_2D_BINDING_EXT call and replaced it with a
      static member.
    - Fixed a bug where resizing FTGLTextureFont caused a GL error.
    - Refactored FTPoint quite a bit.
    - More unit tests. Fixed a heap of bugs.
    
16 August 2004
    2.0.11 (FTGL_2_0_11)
    - Updated FTFont( *pBufferBytes, bufferSizeInBytes) documentation.

16 August 2004
    2.0.10 (FTGL_2_0_10)
    - Fixed tab problem in unix Makefile.
    - Added CYGWIN GLUTesselatorFunction define to FTVectoriser.

21 April 2004
    2.0.9 (FTGL_2_0_9)
    - Fixed includes for pre 2.1.7 versions of freetype
    - Changed unix build to create FTGL subdir for includes
    
9 April 2004
    2.0.8 (FTGL_2_0_8)
    - Fixes for deprecated identifiers in 2.1.5
    - Changed the internals to use FTGlyphSlot instead of FTGlyph
    - Added a unit test for FTBitmapGlyph, FTCharToGlyphIndexMap.
    - Fixed a memory leak in FTGlyphContainer.
    - Added the ability to get the list of charmaps in the font.
    - Changed FTGLTextureFont to use FTVector for texture id list.

31 August 2003
    2.07 (FTGL_2_0_7)
    - Minor fix for unix build scripts.
    - Minor fix for unit tests.
    
25 August 2003
    2.06 (FTGL_2_0_6)
    - Updated the unix build scripts.

25 August 2003
    2.05 (FTGL_2_0_5)
    - Refactored FTGlyphContainer & FTCharmap. They now store FTGlyphs
      sequentially rather than by glyph index. This should save a heap of
      memory and a bit of time at startup.
    - Changed the Mac font paths in the demos.
    - Changed the unit tests for new hinter in Freetype 2.1.4.
    - Added a test for broken contour tags.

12 April 2003
    2.04 (FTGL_2_0_4)
    - Fixed resize behavior in FTGLTextureFont.
    
9 April 2003
    2.03 (FTGL_2_0_3)
    - Fix in FTContour to handle broken contours.
    
3 April 2003
    2.02 (FTGL_2_0_2)
    - Fixed memory leaks

14 March 2003
    2.01 (FTGL_2_0_1)
    - Minor changes to autoconf to detect glu
    
11 March 2003
    2.0 (FTGL_2_0_0)
    - Fixed some alignment bugs caused by changes to Freetype ( > 2.0.9).
    - Minor fixes to float declarations.
    - Moved FTBBox and FTPoint to their own files and added Move() and
      operator += to FTBBox
    - Replaced FT_Vector with FTPoint for kerning.
    - Fixed the glPushAttrib calls.
    - Changed gluTess callback def.
    - Rewriting FTGLDemo.
    - Minor fixes for irix.
    - Removed a bunch of redundant members and made them function locals.
    - Removed the Open() & Close() functions from FTFont because there was
      no way to handle Close correctly which makes Open redundant.
    - Removed Open() from FTface.
    - Improved the robustness of some of the error handling.
    - Removed the FTCharmap Platform/Encoding function.
    - Added unit tests.
    - Removed the precache flag.
    - Unvirtualised functions in FTLibrary and FTGlyphContainer.
    - Fixed empty string bug in FTFont::BBox.
    - Refactored FTContour and moved it to it's own file.
    - Removed unnecessary memory allocations in vector Glyphs. They now
      access the vector data directly.
    - Made vectoriser a local variable in vector glyphs.
    - Fixed a long standing visual bug in FTVectoriser.
    - Changed size calculations to use floats instead of ints. This includes
      FTBBox.
    - Refactored FTGlyph. Now calculates advance (as a float) and bbox.
    - Changed contourList from FTVector to an array in FTVectoriser.
    - Made function and member names more consistant.
    - Moved header files to include directory.
    - Mesh now uses a list for glCombine points.
    - Delete the display lists.
    - Unix AutoConf support.
    - Attach 'files' from memory.

October 23 2002
    1.4 (FTGL_1_4)
    - FTGL now requires 2.0.9 or later. See below for reason.
    - Merged 1.32 branch with main tree
    - Glyph loading has been optimised for pixel based glyphs.
    - Removed mmgr
    - Added FTFont::Attach
    - Updated API docs
    - Removed stl map and vector. Replaced by code supplied by Sebastien Barre
    - Removed work around for Type1 height and width bug in freetype. It seems 
      to be fixed in 2.0.9
    - Added a test target to the Mac OSX project
    - Inline some private functions.

April 23 2002
    1.32 (FTGL_1_3_2)
    - Fixed enable state attribute in FTGLBitmapFont
    - Wrapped tb.h & trackball.h in EXTERN "C"
    - Renamed FTGLDemo to .cpp
    Ellers...
    - New MSVC projects updated to v1.3
    - Removed a lot of unnecessary Windows stuff from ftgl.h
    - Added functions to load font from memory.
    - Fixed a couple of Windows 'for' scope problems in FTExtrdGlyph
    - FTGLDemo - Added #define for windows font

January 30 2002
    1.31 (FTGL_1_3_1)
    - Forgot to update readme etc for 1.3
    
January 27 2002
    1.3b5 (FTGL_1_3_BETA_5)
    - FTBbox now uses float rather then int
    - Fixed some more warnings (size_t)
    - Removed the contour winding function because it didn't fix the problem!!
    - Fixed up some state settings in fonts.

December 11 2001
    1.3b4 (FTGL_1_3_BETA_4)
    - Added MAC OSX project (Project Builder)
    - Added a function for extruded glyphs that calculates the winding order of
      the glyph contour.
    - Added FTGL_DEBUG to include memory debugger.
    - Added a couple of typedefs to FTGL.h, mainly to aid debugging
    - Cleaned up the includes.

November 13 2001
    1.3b3 (FTGL_1_3_BETA_3)
    - Texture fonts now behave the same as the others and can be loaded on
      demand. This made FTGLTextureFont MUCH simpler!!!! It has also improved 
      the grid fitting so less texture mem is needed.
    - Refactored FTVectoriser...
      This now builds contours and meshes internally and then passes the raw
      point data onto the glyphs. The gluTess data is captured in an internal 
      non static data structure fixing a memory Leak in PolyGlyph (glCombine). 
      This has enabled...
    - Extruded fonts. FTGLExtrdFont & FTExtrdGlyph.
    - Reversed the winding for polyglyphs, extruded glyphs and texture glyphs to
      make them CCW
    - Bounding box function
    - Fixed the != and == operators in ftPoint
    - Un-virtualised some functions in FTFont
    - Added a demo app to dist.

November 9 2001
    1.21 (FTGL_1_2_1)
    - Visual Studio projects updated for .cpp source file extensions.
    - A couple of windows 'cast' warnings have been fixed.

November 6 2001
    1.2 (FTGL_1_2_0)
    - Glyphs can now be loaded on the fly instead of being pre-cached. If
      FTFont::Open() is called with false, FTGlyphContainer will build a list of 
      null pointers. Then when ever a glyph needs to be access eg by 
      FTFont::advance or FTFont::render, it will be built and slotted into the 
      glyphlist in the correct position.
    - Removed glext.h from FTGL.h and replaced it with a test for 
      GL_EXT_texture_object.
    - Added padding to texture size calculations.
    - Fixed a NASTY bug in FTGLTextureFont. Only came to light after changes to
      the glyph preprocessing.

October 31 2001
    1.1 (FTGL_1_1_0)
    - Renamed the source to .cpp
    - Removed the static activeTextureID from FTTextureGlyph and replaced it
      with a call to
      glGetIntegerv( GL_TEXTURE_2D_BINDING_EXT, &activeTextureID);
    - Added an include for glext.h in FTGL.h
    - Tidied up the glbegin/glEnd pairs in FTTextureGlyph & FTGLTextureFont
    - Fixed the problem with doc filenames.
    - Tidied up some implicit type conversions.
    - Fixed FTCharMap to ensure that a valid default charmap is always created
      by the c_stor.
    
October 26 2001
    1.01 (FTGL_1_0_1)
    - Removed the glEnable( GL_TEXTURE_2D) from FTGLTextureFont
    - Removed the redundant tempGlyph members in the FTGLXXXXFont classes
    - Made a change in FTGL.h to include correct headers for MAC OSX
    - FTGL.h now includes glu.h
    - Minor fixes to get rid of Project Builder warnings (MAC OSX)
    - Fixed some of the docs

October 24 2001
    1.0 (FTGL_1_0_0)
    - Version 1.0 release

September 29 2001
    1.0b7 (FTGL_1_0_BETA_7)
    - Tesselation winding rules
    - Fixed bug in FTContour Add point function
    - Cleaned up disposal of FTCharmap in FTFace
    - renamed FTVectorGlyph to FTOutlineGlyph
    - New distribution structure
    - Minor changes for windows (VC 6)
    - Windows and Linux ports.

September 20 2001
    1.0b6 (FTGL_1_0_BETA_6)
    - Implemented the new FTCharmap class. The performance improvement is
      dramatic.
    - Tidied up the way the freetype FT_Face object is disposed of by FTFont and
      FTFace. This was a potential crash.
    - FTVectorGlyph and FTPolyGlyph now disposes of the freetype glyph correctly
      after initialsation. This was a potential crash.
    - Preliminary support for unicode...wchar_t Tested with non european fonts.
    - Added function to calc the advance width of a string.
    - Minor tidy ups.

August 29 2001
    1.0b5 (FTGL_1_0_BETA_5)
    - Settled on integers for FTSize stuff. NOTE the FTGlyph stuff is still up
      in the air.
    - Fixed the positional stuff.
    - Added Java Doc comments. NOT COMPLETE
    - Fixes for linux, mainly to clear warnings.
    - changed the return type for FTFace::Glyph() from a reference to a pointer
      so it can return NULL on failure.
    - Related to above...better error handling and reporting in
      FTGLXXXFont::MakeGlyphList()
    - Fixed a bug in FTVectoriser that was ignoring non printing characters.
      This meant that the pen wasn't advanced for spaces etc. It affected
      polygon and outline font rendering.
    - Minor tidy ups.

August 21 2001
    1.0b4
    - Changed the mode for FT_Load_Glyph to FT_LOAD_NO_HINTING |
      FT_LOAD_NO_BITMAP for outline and polygon fonts & FT_LOAD_NO_HINTING for 
      texture fonts. Seems to produce better looking glyphs.
    - FTGLTextureFont can now use multiple textures to render glyphs if they
      don't fit within one GL_MAX_TEXTURE_SIZE texture. 
    - Changed FTSize to use bbox for global width and height. Needs more work
      (eg float or int?) and need to check inconsistancies in freetype.
    - Being more strict with types eg integer indices and sizes are now
      unsigned.

August 8 2001
    1.0b3 (FTGL_1_0_BETA_3)
    - I've made fundamental change to the way the glyphlist is built. This is to
      get round the problems I was having with charmaps. At this stage it is a
      temporary solution. Previously the glyphList was indexed by char code. Now
      it's indexed by glyph index and the conversion is done by the freetype
      function FT_Get_Char_Index(). If this proves to be too slow I'll make my
      own charmap and use it to index into the glyphlist. This has fixed all the
      charmap related problems/bugs.
    - Enabled alpha blend in Pixmap font.
    - Enabled LINE_SMOOTH in Outline font
    - Fixed bug that prevented the display of chars >127
    - Moved pixel store stuff out of BitmapGlyph into BitmapFont.
    - Minor changes for IRIX (compiles but isn't tested)
    - Pixmap fonts can now be in colour. It uses the current colour when the
      font is CREATED. This isn't ideal but is better than the alternatives.
    - Tidied up the error handling.
    - Minor code clean ups.

August 6 2001
    BETA release 1.0b2 (FTGL_1_0_BETA_2)
    - Minor tidy ups for first public release.
    
August 3 2001
    First BETA release 1.0b1 (FTGL_1_0_BETA_1)
    - All font types are now working, Bitmaps, Pixmaps, Texture, Outline and
      Polygons. Quality of output and performance varies wildly:)

July 22 2001
    First ALPHA Release 1.0a1
