shithub: freetype+ttf2subf

Download patch

ref: 4312f42796625ee14a0939aeb937068dfe3fa30e
parent: 557981262255d408ae790107d9ee3f8012651821
author: David Turner <[email protected]>
date: Thu May 24 11:00:19 EDT 2001

moving documents to the "docs" directory

git/fs: mount .git/fs: mount/attach disallowed
--- a/CHANGES
+++ /dev/null
@@ -1,1164 +1,0 @@
-LATEST CHANGES BETWEEN 2.0.2 and 2.0.1
-
-
-  I. CHANGES TO THE MODULES / FONT DRIVERS:
-
-    - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
-      avoid legal problems  with the Apple patents.  It  seems that we
-      mistakenly  turned this option  on in  previous releases  of the
-      build.
-
-      Note that if  you want to use the  bytecode interpreter in order
-      to get high-quality TrueType  rendering, you will need to toggle
-      by        hand        the        definition        of        the
-      TT_CONFIG_OPTION_BYTECODE_INTERPRETER   macro    in   the   file
-      "include/freetype/config/ftoption.h".
-
-    - The CFF driver has been improved by Tom Kacvinsky and Sander van
-      der Wal:
-
-      * Support for "seac" emulation.
-      * Support for "dotsection".
-      * Support for retrieving glyph names through
-        "FT_Get_Glyph_Name".
-
-      The first two items are necessary to correctly a large number of
-      Type 1 fonts converted to the CFF formats by Adobe Acrobat.
-
-    - The Type 1 driver was also improved by Tom & others:
-
-      * Better EM size computation.
-      * Better support for synthetic (transformed) fonts.
-      * The  Type 1  driver returns  the charstrings  corresponding to
-        each glyph in the  "glyph->control_data" field after a call to
-        "FT_Load_Glyph" (thanks Ha Shao).
-
-    - Various other bugfixes, including the following:
-
-      * Fixed a nasty memory leak in the Type 1 driver.
-      * The autohinter  and the pcf  driver used static  writable data
-        when they shouldn't.
-      * Many casts were added to  make the code more 64-bits safe.  It
-        also now compiles on Windows XP 64-bits without warnings.
-      * Some incorrect writable statics were removed in the "autohint"
-        and "pcf" drivers.  FreeType 2 now compiles on Epoc again.
-
-
-  II. CHANGES TO THE HIGH-LEVEL API
-
-    - The library header files inclusion scheme has been changed.  The
-      old scheme looked like:
-
-        #include <freetype/freetype.h>
-        #include <freetype/ftglyph.h>
-        #include <freetype/ftcache.h>
-        #include <freetype/cache/ftimage.h>
-
-      Now you should use:
-
-        #include <ft2build.h>
-        #include FT_FREETYPE_H
-        #include FT_GLYPH_H
-        #include FT_CACHE_H
-        #include FT_CACHE_IMAGE_H
-
-      NOTE THAT  THE OLD  INCLUSION SCHEME WILL  STILL WORK  WITH THIS
-      RELEASE.  HOWEVER, WE  DO NOT GUARANTEE THAT THIS  WILL STILL BE
-      TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
-
-      The  file <ft2build.h>  is used  to define  the  header filename
-      macros.  The complete and  commented list of macros is available
-      in the API reference under the section name "Header File Macros"
-      in Chapter I.
-
-      For more information, see section I of the following document:
-
-        http://www.freetype.org/
-          freetype2/docs/tutorial/step1.html
-
-      or
-
-        http://freetype.sourceforge.net/
-          freetype2/docs/tutorial/step1.html
-
-    - Many, many comments have been added to the public source file in
-      order to  automatically generate  the API Reference  through the
-      "docmaker.py" Python script.
-
-      The latter has been updated  to support the grouping of sections
-      in chapters and better index sort.  See:
-
-        http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
-
-
-  III. CHANGES TO THE BUILD PROCESS
-
-
-    - If you  are not  building FreeType 2  with its own  build system
-      (but with your own Makefiles or project files), you will need to
-      be  aware that  the  build  process has  changed  a little  bit.
-
-      You don't  need to put the  "src" directory in  the include path
-      when  compiling  any FT2  component.   Instead,  simply put  the
-      component's directory in the current include path.
-
-      So, if you were doing something like:
-
-        cc -c -Iinclude -Isrc src/base/ftbase.c
-
-      change the line to:
-
-        cc -c -Iinclude -Isrc/base src/base/ftbase.c
-
-      If you were doing something like:
-
-        cd src/base
-        cc -c -I../../include -I.. ftbase.c
-
-      change it to:
-
-        cd src/base
-        cc -c -I../../include ftbase.c
-
-
-======================================================================
-
-LATEST CHANGES BETWEEN 2.0.1 and 2.0:
-
-
-  2.0.1 introduces a few changes:
-
-    - Fixed many bugs related to  the support of CFF / OpenType fonts.
-      These  formats are  now much  better supported  though  there is
-      still work planned to  deal with charset tables and PDF-embedded
-      CFF files that use the old "seac" command.
-
-    - The  library could not  be compiled  in debug  mode with  a very
-      small  number   of  C  compilers   whose  pre-processors  didn't
-      implement the "##"  directive correctly (i.e. per se  the ANSI C
-      specification!)  An elegant fix was found.
-
-    - Added  support for  the  free Borland  command-line C++  Builder
-      compiler.   Use "make  setup bcc32".   Also fixed  a  few source
-      lines that generated new warnings with BCC32.
-
-    - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
-      a conic Bezier arc.
-
-    - Updated the INSTALL file to add IDE compilation.
-
-    - Other  minor bug  fixes,  from  invalid Type  1  style flags  to
-      correct   support   of  synthetic   (obliqued)   fonts  in   the
-      auto-hinter, better support for embedded bitmaps in a SFNT font.
-
-    - Fixed some problems with "freetype-config".
-
-  Finally, the "standard" scheme for including FreeType headers is now
-  gradually changing,  but this will  be explained in a  later release
-  (probably 2.0.2).
-
-  And very  special thanks to Tom Kacvinsky  and YAMANO-UCHI Hidetoshi
-  for their contributions!
-
-
-======================================================================
-
-CHANGES BETWEEN beta8 and 2.0
-
-  - Changed  the default  installation  path for  public headers  from
-    "include/freetype" to "include/freetype2".
-
-    Also added a new "freetype-config" that is automatically generated
-    and installed  on Unix and  Cygwin systems.  The script  itself is
-    used to retrieve the current  install path, C compilation flags as
-    well as linker flags.
-
-  - Fixed several small bugs:
-
-    * Incorrect max advance width for fixed-pitch Type 1 fonts.
-    * Incorrect glyph names for certain TrueType fonts.
-    * The  glyph advance  was not  copied when  FT_Glyph_To_Bitmap was
-      called.
-    * The  linearHoriAdvance  and  linerVertAdvance  fields  were  not
-      correctly returned for glyphs processed by the auto-hinter.
-    * "type1z"  renamed back to  "type1"; the  old "type1"  module has
-      been removed.
-
-  - Revamped the  build system  to make it  a lot more  generic.  This
-    will  allow us  to  re-use  nearly un-modified  in  lots of  other
-    projects (including FreeType Layout).
-
-  - Changed "cid" to use "psaux" too.
-
-  - Added the  cache sub-system.  See <freetype/ftcache.h>  as well as
-    the sources  in "src/cache".  Note  that it compiles but  is still
-    untested for now.
-
-  - Updated "docs/docmaker.py", a draft  API reference is available at
-    http://www.freetype.org/ft2api.html.
-
-  - Changed "type1" to use "psaux".
-
-  - Created a  new module named  "psaux" to hold  the Type 1 &  Type 2
-    parsing routines.  It should be  used by "type1", "cid", and "cff"
-    in the future.
-
-  - Fixed an important bug in "FT_Glyph_Get_CBox".
-
-  - Fixed  some compiler  warnings  that happened  since the  TrueType
-    bytecode decoder was deactivated by default.
-
-  - Fixed two memory leaks:
-
-    * The    memory   manager   (16    bytes)   isn't    released   in
-      FT_Done_FreeType!
-    * Using custom input streams, the  copy of the original stream was
-      never released.
-
-  - Fixed the  auto-hinter by performing automatic  computation of the
-    "filling direction" of each glyph.   This is done through a simple
-    and  fast approximation, and  seems to  work (problems  spotted by
-    Werner though).  The Arphic fonts are a lot nicer though there are
-    still a lot of things to do to handle Asian fonts correctly.
-
-
-======================================================================
-
-BETA-8 (RELEASE CANDIDATE) CHANGES
-
-  - Deactivated the TrueType bytecode interpreter by default.
-
-  - Deactivated the "src/type1" font driver.  Now "src/type1z" is used
-    by default.
-
-  - Updates to the build system.  We now compile the library correctly
-    under  Unix  system  through  "configure" which  is  automatically
-    called on the first "make" invocation.
-
-  - Added the auto-hinting module!  Fixing some bugs here and there.
-
-  - Found some bugs in the  composite loader (seac) of the Type1-based
-    font drivers.
-
-  - Renamed the directory "freetype2/config" to "freetype2/builds" and
-    updated all relevant files.
-
-  - Found a memory leak in the "type1" driver.
-
-  - Incorporated Tom's patches to  support flex operators correctly in
-    OpenType/CFF fonts.  Now all I need is to support pure CFF and CEF
-    fonts to be done with this driver :-)
-
-  - Added the  Windows FNT/FON driver in "src/winfonts".   For now, it
-    always  "simulates"   a  Unicode  charmap,  so   it  shouldn't  be
-    considered completed right now.
-
-    It  is there  to be  more a  proof of  concept than  anything else
-    anyway.  The driver is a single  C source file, that compiles to 3
-    Kb of code.
-
-    I'm  still working on  the PCF/BDF  drivers, but  I'm too  lazy to
-    finish them now.
-
-  - CHANGES TO THE HIGH-LEVEL API
-
-    * FT_Get_Kerning has a new parameter that allows you to select the
-      coordinates of the kerning  vector (font units, scaled, scaled +
-      grid-fitted).
-    * The  outline functions are  now in <freetype/ftoutln.h>  and not
-      part of <freetype/freetype.h> anymore.
-    * <freetype/ftmodule.h>    now     contains    declarations    for
-       FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
-    * The so-called convenience  functions have moved from "ftoutln.c"
-      to  "ftglyph.c",  and  are  thus available  with  this  optional
-      component    of   the   library.     They   are    declared   in
-      <freetype/ftglyph.h> now.
-    * Anti-aliased  rendering is now  the default  for FT_Render_Glyph
-      (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
-      To generate a monochrome bitmap, use ft_render_mode_mono, or the
-      FT_LOAD_MONOCHROME     flag    in    FT_Load_Glyph/FT_Load_Char.
-      FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
-    * <freetype/freetype.h>  now include <freetype/config/ftconfig.h>,
-      solving a few headaches :-)
-    * The type FT_GlyphSlotRec has now a "library" field.
-
-  - CHANGES TO THE "ftglyph.h" API
-
-    This API has  been severely modified in order  to make it simpler,
-    clearer, and more  efficient.  It certainly now looks  like a real
-    "glyph factory"  object, and allows client  applications to manage
-    (i.e.  transform,  bbox  and  render) glyph  images  without  ever
-    knowing their original format.
-
-  - Added  support  for CID-keyed  fonts  to  the  CFF driver.   Maybe
-    support for pure CFF + CEF fonts should come in?
-
-  - Cleaned up  source code in order  to avoid two  functions with the
-    same name.  Also  changed the names of the  files in "type1z" from
-    "t1XXXX" to "z1XXXX" in order to avoid any conflicts.
-
-    "make multi" now works well :-)
-
-    Also removed the use of "cidafm" for now, even if the source files
-    are  still there.  This  functionality will  certainly  go into  a
-    specific module.
-
-  - ADDED SUPPORT FOR THE AUTO-HINTER
-
-    It  works :-) I  have a  demo program  which simply  is a  copy of
-    "ftview"       that      does       a      `FT_Add_Module(library,
-    &autohinter_module_class)' after  library initialization, and Type
-    1 & OpenType/CFF fonts are now hinted.
-
-    CID  fonts are  not hinted,  as they  include no  charmap  and the
-    auto-hinter doesn't include  "generic" global metrics computations
-    yet.
-
-    Now, I need to release this thing to the FreeType 2 source.
-
-  - CHANGES TO THE RENDERER MODULES
-
-    The  monochrome  and smooth  renderers  are  now  in two  distinct
-    directories, namely "src/raster1" and "src/smooth".  Note that the
-    old "src/renderer" is now gone.
-
-    I ditched  the 5-gray-levels renderers.  Basically,  it involved a
-    simple #define toggle in 'src/raster1/ftraster.c'.
-
-    FT_Render_Glyph,  FT_Outline_Render  &  FT_Outline_Get_Bitmap  now
-    select the best renderer  available, depending on render mode.  If
-    the current renderer for a  given glyph image format isn't capable
-    of supporting  the render mode, another  one will be  found in the
-    library's list.   This means that client applications  do not need
-    to  switch or  set  the  renderers themselves  (as  in the  latest
-    change), they'll get what they want automatically.  At last.
-
-    Changed the demo programs accordingly.
-
-  - MAJOR INTERNAL REDESIGN:
-
-    A lot of internal modifications  have been performed lately on the
-    source in order to provide the following enhancements:
-
-    * More generic module support:
-
-      The FT_Module  type is  now defined to  represent a handle  to a
-      given  module.   The  file  <freetype/ftmodule.h>  contains  the
-      FT_Module_Class definition, as well as the module-loading public
-      API.
-
-      The  FT_Driver type  is still  defined, and  still  represents a
-      pointer to  a font driver.  Note that  FT_Add_Driver is replaced
-      by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
-
-    * Support for generic glyph image types:
-
-      The FT_Renderer  type is a pointer  to a module  used to perform
-      various operations on glyph image.
-
-      Each renderer is  capable of handling images in  a single format
-      (e.g. ft_glyph_format_outline).  Its functions are used to:
-
-      - transform an glyph image
-      - render a glyph image into a bitmap
-      - return the control box (dimensions) of a given glyph image
-
-      The scan converters "ftraster.c" and "ftgrays.c" have been moved
-      to the new directory "src/renderer", and are used to provide two
-      default renderer modules.
-
-      One corresponds  to the "standard" scan-converter,  the other to
-      the "smooth" one.
-
-      he  current  renderer  can  be  set  through  the  new  function
-      FT_Set_Renderer.
-
-      The old raster-related function FT_Set_Raster, FT_Get_Raster and
-      FT_Set_Raster_Mode have now disappeared, in favor of the new:
-
-        FT_Get_Renderer
-        FT_Set_Renderer
-
-      See the file <freetype/ftrender.h> for more details.
-
-      These  changes  were  necessary  to properly  support  different
-      scalable formats in the future, like bi-color glyphs, etc.
-
-    * Glyph loader object:
-
-      A  new  internal  object,  called  a  'glyph  loader'  has  been
-      introduced in the base layer.  It is used by all scalable format
-      font drivers to load glyphs and composites.
-
-      This object  has been  created to reduce  the code size  of each
-      driver,  as  each  one  of  them  basically  re-implemented  its
-      functionality.
-
-      See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
-      more information.
-
-    * FT_GlyphSlot has new fields:
-
-      In  order   to  support  extended  features   (see  below),  the
-      FT_GlyphSlot structure has a few new fields:
-
-      linearHoriAdvance:
-
-        This  field  gives  the   linearly  scaled  (i.e.  scaled  but
-        unhinted) advance  width for the  glyph, expressed as  a 16.16
-        fixed pixel value.  This is useful to perform WYSIWYG text.
-
-      linearVertAdvance:
-        This field  gives the linearly  scaled advance height  for the
-        glyph  (relevant in  vertical  glyph layouts  only).  This  is
-        useful to perform WYSIWYG text.
-
-        Note that  the two above field replace  the removed "metrics2"
-        field in the glyph slot.
-
-      advance:
-        This field is a vector  that gives the transformed advance for
-        the glyph.   By default, it corresponds to  the advance width,
-        unless  FT_LOAD_VERTICAL_LAYOUT  was  specified  when  calling
-        FT_Load_Glyph or FT_Load_Char.
-
-      bitmap_left:
-        This  field gives  the  distance in  integer  pixels from  the
-        current pen position  to the left-most pixel of  a glyph image
-        IF IT IS  A BITMAP.  It is only valid  when the "format" field
-        is set to "ft_glyph_format_bitmap", for example, after calling
-        the new function FT_Render_Glyph.
-
-      bitmap_top:
-        This  field gives  the  distance in  integer  pixels from  the
-        current pen position (located on the baseline) to the top-most
-        pixel of the  glyph image IF IT IS  A BITMAP.  Positive values
-        correspond to upwards Y.
-
-      loader:
-        This  is a  new  private  field for  the  glyph slot.   Client
-        applications should not touch it.
-
-
-    * Support for transforms and direct rendering in FT_Load_Glyph:
-
-      Most of the functionality found in <freetype/ftglyph.h> has been
-      moved to the core library. Hence, the following:
-
-      - A   transform   can   be   specified  for   a   face   through
-        FT_Set_Transform.  this transform  is applied by FT_Load_Glyph
-        to  scalable glyph  images (i.e.  NOT TO  BITMAPS)  before the
-        function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
-        was set in the load flags.
-
-      - Once  a  glyph image  has  been  loaded,  it can  be  directly
-        converted  to  a  bitmap  by  using  the  new  FT_Render_Glyph
-        function.  Note that this  function takes the glyph image from
-        the glyph slot,  and converts it to a  bitmap whose properties
-        are returned  in "face.glyph.bitmap", "face.glyph.bitmap_left"
-        and "face.glyph.bitmap_top".  The  original native image might
-        be lost after the conversion.
-
-      - When using the new  bit flag FT_LOAD_RENDER, the FT_Load_Glyph
-        and   FT_Load_Char   functions   will   call   FT_Render_Glyph
-        automatically when needed.
-
-  - Reformatted all  modules source  code in order  to get rid  of the
-    basic data types redifinitions (i.e. "TT_Int" instead of "FT_Int",
-    "T1_Fixed"  instead  of  "FT_Fixed").  Hence  the  format-specific
-    prefixes like  "TT_", "T1_",  "T2_" and "CID_"  are only  used for
-    relevant structures.
-
-
-======================================================================
-
-OLD CHANGES FOR BETA 7
-
-  - bug-fixed the  OpenType/CFF parser. It  now loads and  displays my
-    two  fonts nicely,  but I'm  pretty certain  that more  testing is
-    needed :-)
-
-  - fixed the crummy Type 1 hinter, it now handles accented characters
-    correctly (well, the accent is  not always well placed, but that's
-    another problem..)
-
-  - added the CID-keyed Type 1  driver in "src/cid". Works pretty well
-    for only 13 Kb of code  ;-) Doesn't read AFM files though, nor the
-    really useful CMAP files..
-
-  - fixed two bugs in the smooth renderer (src/base/ftgrays.c). Thanks
-    to Boris Letocha for spotting them and providing a fix..
-
-  - fixed potential "divide by zero" bugs in ftcalc.c.. my god..
-
-  - added source  code for  the OpenType/CFF driver  (still incomplete
-    though..)
-
-  - modified the  SFNT driver slightly  to perform more  robust header
-    checks  in TT_Load_SFNT_Header. This  prevents certain  font files
-    (e.g.  some  Type  1  Multiple  Masters)  from  being  incorrectly
-    "recognized" as TrueType font files..
-
-  - moved a lot of stuff from  the TrueType driver to the SFNT module,
-    this   allows   greater   code   re-use   between   font   drivers
-    (e.g. TrueType, OpenType, Compact-TrueType, etc..)
-
-  - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
-    to minimally speed it up..
-
-  - added support for Multiple Master fonts in "type1z". There is also
-    a  new file  named  <freetype/ftmm.h> which  defines functions  to
-    manage them from client applications.
-
-    The new file "src/base/ftmm.c" is also optional to the engine..
-
-  - various  formatting changes (e.g.  EXPORT_DEF ->  FT_EXPORT_DEF) +
-    small bug fixes in FT_Load_Glyph, the "type1" driver, etc..
-
-  - a minor fix to the Type 1 driver to let them apply the font matrix
-    correctly (used for many oblique fonts..)
-
-  - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
-    to use %p instead of %lx).. Thanks to Karl Robillard
-
-  - fixed  some bugs  in  the sbit  loader (src/base/sfnt/ttsbit.c)  +
-    added  a new flag,  FT_LOAD_CROP_BITMAP to  query that  bitmaps be
-    cropped when  loaded from a file  (maybe I should  move the bitmap
-    cropper to the base layer ??).
-
-  - changed the default  number of gray levels of  the smooth renderer
-    to 256  (instead of  the previous 128).  Of course, the  human eye
-    can't see any difference ;-)
-
-  - removed TT_MAX_SUBGLYPHS,  there is no static limit  on the number
-    of subglyphs in a TrueType font now..
-
-
-======================================================================
-
-OLD CHANGES 16 May 2000
-
-  - tagged "BETA-6"  in the  CVS tree. This  one is a  serious release
-    candidate even though it doesn't incorporate the auto-hinter yet..
-
-  - various obsolete files were removed, and copyright header updated
-
-  - finally  updated  the  standard   raster  to  fix  the  monochrome
-    rendering bug + re-enable  support for 5-gray levels anti-aliasing
-    (suck, suck..)
-
-  - created new header files, and modified sources accordingly:
-
-     <freetype/fttypes.h>
-       - simple FreeType types, without the API
-     <freetype/internal/ftmemory.h>
-       - definition of memory-management macros
-
-  - added   the   "DSIG"   (OpenType   Digital   Signature)   tag   to
-    <freetype/tttags.h>
-
-  - light update/cleaning of the build system + changes to the sources
-    in  order  to  get  rid  of _all_  compiler  warnings  with  three
-    compilers, i.e:
-
-    gcc with "-ansi -pedantic -Wall -W", Visual C++ with "/W3 /WX" and
-    LCC
-
-    IMPORTANT NOTE FOR WIN32-LCC USERS:
-    |
-    |  It seems the C pre-processor  that comes with LCC is broken, it
-    |  doesn't  recognize  the  ANSI  standard  directives  #  and  ##
-    |  correctly when one of the  argument is a macro. Also, something
-    |  like:
-    |
-    |     #define F(x)  print##x
-    |
-    |     F(("hello"))
-    |
-    |  will get incorrectly translated to:
-    |
-    |     print "hello")
-    |
-    |  by its pre-processor. For  this reason, you simply cannot build
-    |  FreeType 2 in debug mode with this compiler..
-
-  - yet another massive grunt work. I've changed the definition of the
-    EXPORT_DEF,  EXPORT_FUNC, BASE_DEF &  BASE_FUNC macros.  These now
-    take an argument, which is the function's return value type.
-
-    This  is necessary to  compile FreeType  as a  DLL on  Windows and
-    OS/2.  Depending on the compiler used, a compiler-specific keyword
-    like  __export or __system  must be  placed before  (VisualC++) or
-    after (BorlandC++) the type..
-
-    Of course, this needed a lot of changes throughout the source code
-    to make it compile again... All cleaned up now, apparently..
-
-    Note also  that there is a  new EXPORT_VAR macro  defined to allow
-    the   _declaration_    of   an   exportable    public   (constant)
-    variable.  This  is  the   case  of  the  raster  interfaces  (see
-    ftraster.h and ftgrays.h), as well as each module's interface (see
-    sfdriver.h, psdriver.h, etc..)
-
-  - new feature: it  is now possible to pass  extra parameters to font
-                 drivers  when creating  a new  face object.  For now,
-                 this capability is unused.  It could however prove to
-                 be useful in a near future..
-
-      the FT_Open_Args structure was  changes, as well as the internal
-      driver interface  (the specific "init_face"  module function has
-      now a different signature).
-
-  - updated the tutorial (not finished though).
-
-  - updated the top-level BUILD  document
-
-  - fixed  a  potential memory  leak  that  could  occur when  loading
-    embedded bitmaps.
-
-  - added     the     declaration     of     FT_New_Memory_Face     in
-    <freetype/freetype.h>, as  it was  missing from the  public header
-    (the implementation was already in "ftobjs.c").
-
-  - the file <freetype/fterrors.h> has been seriously updated in order
-    to allow the automatic generation of error message tables. See the
-    comments within it for more information.
-
-  - major directory  hierarchy re-organisation. This was  done for two
-    things:
-
-      * first,  to ease  the "manual"  compilation of  the  library by
-        requiring at lot less include paths :-)
-
-      * second,  to  allow  external  programs to  effectively  access
-        internal  data  fields. For  example,  this  can be  extremely
-        useful if  someone wants  to write a  font producer or  a font
-        manager on top of FreeType.
-
-    Basically, you  should now use  the 'freetype/' prefix  for header
-    inclusion, as in:
-
-        #include <freetype/freetype.h>
-        #include <freetype/ftglyph.h>
-
-    Some new include sub-directories are available:
-
-     a. the  "freetype/config" directory,  contains two files  used to
-        configure the build of the library. Client applications should
-        not need to look at these normally, but they can if they want.
-
-        #include <freetype/config/ftoption.h>
-        #include <freetype/config/ftconfig.h>
-
-     b. the "freetype/internal"  directory, contains header files that
-        describes library  internals. These are the  header files that
-        were  previously  found  in  the "src/base"  and  "src/shared"
-        directories.
-
-
-    As  usual, the build  system and  the demos  have been  updated to
-    reflect the change..
-
-    Here's a layout of the new directory hierarchy:
-
-    TOP
-      include/
-         freetype/
-            freetype.h
-            ...
-            config/
-              ftoption.h
-              ftconfig.h
-              ftmodule.h
-
-            internal/
-              ftobjs.h
-              ftstream.h
-              ftcalc.h
-              ...
-
-      src/
-         base/
-            ...
-
-         sfnt/
-         psnames/
-         truetype/
-         type1/
-         type1z/
-
-
-    Compiling a module is now  much easier, for example, the following
-    should work when in the TOP directory on an ANSI build:
-
-       gcc -c -I./include -I./src/base src/base/ftbase.c
-       gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
-       etc..
-
-    (of course, using -Iconfig/<system> if you provide system-specific
-     configuration files).
-
-  - updated the structure of FT_Outline_Funcs in order to allow direct
-    coordinate scaling within  the outline decomposition routine (this
-    is  important for virtual  "on" points  with TrueType  outlines) +
-    updates to the rasters to support this..
-
-  - updated  the OS/2  table  loading code  in "src/sfnt/ttload.c"  in
-    order to support version 2 of the table (see OpenType 1.2 spec)
-
-  - created  "include/tttables.h"  and  "include/t1tables.h" to  allow
-    client applications to access some of  the SFNT and T1 tables of a
-    face  with  a  procedural  interface (see  FT_Get_Sfnt_Table())  +
-    updates to internal source files to reflect the change..
-
-  - some  cleanups in  the source  code to  get rid  of  warnings when
-    compiling with the "-Wall -W -ansi -pedantic" options in gcc.
-
-  - debugged and moved the smooth renderer to "src/base/ftgrays.c" and
-    its header to "include/ftgrays.h"
-
-  - updated TT_MAX_SUBGLYPHS  to 96 as some CJK  fonts have composites
-    with up to 80 sub-glyphs !! Thanks to Werner
-
-
-======================================================================
-
-OLD CHANGES - 14-apr-2000
-
-  - fixed  a bug  in  the  TrueType glyph  loader  that prevented  the
-    correct loading of some CJK glyphs in mingli.ttf
-
-  - improved the standard Type 1 hinter in "src/type1"
-
-  - fixed two bugs  in the experimental Type 1  driver in "src/type1z"
-    to handle the new XFree86 4.0 fonts (and a few other ones..)
-
-  - the smooth  renderer is now  complete and supports  sub-banding to
-    render large glyphs at high speed. However, it is still located in
-    "demos/src/ftgrays.c" and should move to the library itself in the
-    next  beta..   NOTE:  The  smooth  renderer   doesn't  compile  in
-    stand-alone mode anymore, but this should be fixed RSN..
-
-  - introduced convenience  functions to  more easily deal  with glyph
-    images, see  "include/ftglyph.h" for more details, as  well as the
-    new  demo program  named "demos/src/ftstring.c"  that demonstrates
-    its use
-
-  - implemented  FT_LOAD_NO_RECURSE in  both the  TrueType and  Type 1
-    drivers  (this  is required  by  the  auto-hinter  to improve  its
-    results).
-
-  - changed   the  raster   interface,  in   order  to   allow  client
-    applications to provide their own span-drawing callbacks. However,
-    only the smooth renderer  supports this. See "FT_Raster_Params" in
-    the file "include/ftimage.h"
-
-  - fixed  a small bug  in FT_MulFix  that caused  incorrect transform
-    computation!
-
-  - Note: The tutorial is out-of-date, grumpf.. :-(
-
-
-======================================================================
-
-OLD CHANGES - 12-mar-2000
-
-  - changed  the  layout  of  configuration  files  :  now,  all  ANSI
-    configuration         files         are         located         in
-    "freetype2/config".  System-specific over-rides  can be  placed in
-    "freetype2/config/<system>".
-
-  - moved all configuration macros to "config/ftoption.h"
-
-  - improvements in the Type 1 driver with AFM support
-
-  - changed the fields  in the FT_Outline structure :  the old "flags"
-    array is re-named "tags", while all ancient flags are encoded into
-    a single unsigned int named "flags".
-
-  - introduced     new      flags     in     FT_Outline.flags     (see
-    ft_outline_.... enums in "ftimage.h").
-
-  - changed outline functions to "FT_Outline_<action>" syntax
-
-  - added a smooth anti-alias renderer to the demonstration programs
-
-  - added Mac graphics driver (thanks Just)
-
-  - FT_Open_Face  changed  in  order   to  received  a  pointer  to  a
-    FT_Open_Args descriptor..
-
-  - various  cleanups,  a  few  more API  functions  implemented  (see
-    FT_Attach_File)
-
-  - updated some docs
-
-
-======================================================================
-
-OLD CHANGES - 22-feb-2000
-
-  - introduced the "psnames" module. It is used to:
-
-      o convert  a Postscript glyph  name into the  equivalent Unicode
-        character code (used by the  Type 1 driver(s) to synthetize on
-        the fly a Unicode charmap).
-
-      o provide an  interface to retrieve the Postscript  names of the
-        Macintosh,  Adobe  Standard &  Adobe  Expert character  codes.
-        (the Macintosh  names are  used by the  SFNT-module postscript
-        names support routines, while the other two tables are used by
-        the Type 1 driver(s)).
-
-  - introduced the "type1z" alternate Type  1 driver. This is a (still
-    experimental) driver  for the Type  1 format that  will ultimately
-    replace the one  in "src/type1". It uses pattern  matching to load
-    data from the  font, instead of a finite  state analyzer. It works
-    much better than the "old"  driver with "broken" fonts. It is also
-    much smaller (under 15 Kb).
-
-  - the  Type 1  drivers (both  in "src/type1"  and  "src/type1z") are
-    nearly  complete.  They  both  provide automatic  Unicode  charmap
-    synthesis through  the "psnames" module. No  re-encoding vector is
-    needed.  (note  that they  still  leak  memory  due to  some  code
-    missing, and I'm getting lazy).
-
-    Trivial AFM support has been added to read kerning information but
-    wasn't exactly tested as it should ;-)
-
-  - The TrueType  glyph loader has  been seriously rewritten  (see the
-    file  "src/truetype/ttgload.c". It  is now  much, much  simpler as
-    well as  easier to read,  maintain and understand  :-) Preliminary
-    versions introduced a  memory leak that has been  reported by Jack
-    Davis, and is now fixed..
-
-  - introduced  the new  "ft_glyph_format_plotter", used  to represent
-    stroked outlines  like Windows "Vector" fonts, and  certain Type 1
-    fonts  like "Hershey".  The corresponding  raster will  be written
-    soon.
-
-  - FT_New_Memory_Face  is  gone.  Likewise,  FT_Open_Face has  a  new
-    interface that uses a structure  to describe the input stream, the
-    driver (if required), etc..
-
-
-TODO
-
-  - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
-
-  - Add a function like FT_Load_Character( face, char_code, load_flags
-    )  that  would really  embbed  a  call  to FT_Get_Char_Index  then
-    FT_Load_Glyph to ease developer's work.
-
-  - Update the tutorial!
-
-  - consider adding  support for Multiple  Master fonts in the  Type 1
-    drivers.
-
-  - Test the AFM routines of the  Type 1 drivers to check that kerning
-    information is returned correctly.
-
-  - write a decent auto-gridding component  !! We need this to release
-    FreeType 2.0 gold !
-
-
-less urgent needs:
-
-  - add a CFF/Type2 driver
-  - add a BDF driver
-  - add a FNT/PCF/HBF driver
-  - add a Speedo driver from the X11 sources
-
-
-======================================================================
-
-OLDER CHANGES - 27-jan-2000
-
-  - updated the  "sfnt" module  interface to allow  several SFNT-based
-    drivers to co-exist peacefully
-
-  - updated  the "T1_Face"  type  to better  separate Postscript  font
-    content  from the  rest of  the FT_Face  structure. Might  be used
-    later by the CFF/Type2 driver..
-
-  - added an experimental replacement Type 1 driver featuring advanced
-    (and speedy) pattern matching to retrieve the data from postscript
-    fonts.
-
-  - very minor  changes in the implementation  of FT_Set_Char_Size and
-    FT_Set_Pixel_Sizes (they now implement default to ligthen the font
-    driver's code).
-
-
-======================================================================
-
-OLD MESSAGE
-
-This file summarizes the changes that occured since the last "beta" of
-FreeType 2.  Because  the list is important, it  has been divided into
-separate sections:
-
-Table Of Contents:
-
-    I   High-Level Interface (easier !)
-   II   Directory Structure
-  III   Glyph Image Formats
-   IV   Build System
-    V   Portability
-   VI   Font Drivers
-
-
-----------------------------------------------------------------------
-
-High-Level Interface:
-
-  The high-level API has been considerably simplified.  Here is how:
-
-    - resource objects have disappeared.  this means that face objects
-      can now be created with  a single function call (see FT_New_Face
-      and FT_Open_Face)
-
-    - when calling  either FT_New_Face  & FT_Open_Face, a  size object
-      and a glyph slot object  are automatically created for the face,
-      and can  be accessed  through "face->glyph" and  "face->size" if
-      one really  needs to.   In most cases,  there's no need  to call
-      FT_New_Size or FT_New_Glyph.
-
-    - similarly,  FT_Load_Glyph  now  only  takes  a  "face"  argument
-      (instead  of a  glyph  slot  and a  size).  Also, it's  "result"
-      parameter is  gone, as the glyph  image type is  returned in the
-      field "face->glyph.format"
-
-    - the list  of available  charmaps is directly  accessible through
-      "face->charmaps",  counting "face->num_charmaps"  elements. Each
-      charmap  has an  'encoding'  field which  specifies which  known
-      encoding it deals with. Valid values are, for example :
-
-          ft_encoding_unicode      (for ASCII, Latin-1 and Unicode)
-          ft_encoding_apple_roman
-          ft_encoding_sjis
-          ft_encoding_adobe_standard
-          ft_encoding_adobe_expert
-
-      other  values may  be added  in the  future. Each  charmap still
-      holds  its "platform_id"  and "encoding_id"  values in  case the
-      encoding is too exotic for the current library
-
-
-----------------------------------------------------------------------
-
-Directory Structure:
-
-  Should seem obvious to most of you:
-
-     freetype/
-         config/        -- configuration sub-makefiles
-            ansi/
-            unix/       -- platform-specific configuration files
-            win32/
-            os2/
-            msdos/
-
-         include/       -- public header  files, those to  be included
-                           directly by client apps
-
-         src/           -- sources of the library
-           base/        -- the base layer
-           sfnt/        -- the sfnt "driver"  (see the drivers section
-                           below)
-           truetype/    -- the truetype driver
-           type1/       -- the type1 driver
-           shared/      -- some header files shared between drivers
-
-         demos/         -- demos/tools
-
-         docs/          -- documentation (a bit empty for now)
-
-
-----------------------------------------------------------------------
-
-Glyph Image Formats:
-
-  Drivers are now able to  register new glyph image formats within the
-  library.  For  now, the  base layer supports  of course  bitmaps and
-  vector  outlines, but  one  could imagine  something different  like
-  colored bitmaps, bi-color vectors or wathever else (Metafonts anyone
-  ??).
-
-  See  the   file  `include/ftimage.h'.   Note  also  that   the  type
-  FT_Raster_Map  is gone,  and  is now  replaced  by FT_Bitmap,  which
-  should encompass all known bitmap types.
-
-  Each new  image format  must provide at  least one "raster",  i.e. a
-  module capable of  transforming the glyph image into  a bitmap. It's
-  also possible  to change the default  raster used for  a given glyph
-  image format.
-
-  The default outline  scan-converter now uses 128 levels  of grays by
-  default,  which tends  to smooth  many  things. Note  that the  demo
-  programs have been updated significantly in order to display these..
-
-
-----------------------------------------------------------------------
-
-Build system:
-
-  You still need  GNU Make to build the library.  The build system has
-  been very seriously re-vamped in order to provide things like :
-
-   - automatic host platform  detection (reverting to 'config/ansi' if
-     it is not detected, with pseudo-standard compilation flags)
-
-   - the ability to compile from the Makefiles with very different and
-     exotic compilers. Note that  linking the library can be difficult
-     for some platforms.
-
-     For example, the file `config/win32/lcclib.bat' is invoked by the
-     build system to create the ".lib" file with LCC-Win32 because its
-     librarian  has too  many flaws  to be  invoked directly  from the
-     Makefile.
-
-  Here's how it works:
-
-  - the first time you type `make',  the build system runs a series of
-    sub-makefiles in order to detect your host platform. It then dumps
-    what  it found,  and  creates  a file  called  `config.mk' in  the
-    current  directory. This  is a  sub-Makefile used  to  define many
-    important Make variables used to build the library.
-
-  - the second time, the build system detects the `config.mk' then use
-    it  to  build the  library.  All object  files  go  into 'obj'  by
-    default,  as well  as the  library file,  but this  can  easily be
-    changed.
-
-  Note that  you can run "make  setup" to force  another host platform
-  detection  even   if  a  `config.mk'  is  present   in  the  current
-  directory.  Another solution  is  simply to  delete  the file,  then
-  re-run make.
-
-  Finally, the  default compiler  for all platforms  is gcc  (for now,
-  this will hopefully changed in  the future). You can however specify
-  a different  compiler by specifying  it after the 'setup'  target as
-  in:
-
-      gnumake setup lcc         on Win32 to use the LCC compiler
-      gnumake setup visualc     on Win32 to use Visual C++
-
-  See  the file  `config/<system>/detect.mk' for  a list  of supported
-  compilers for your platforms.
-
-  It should be relatively easy  to write new detection rules files and
-  config.mk..
-
-  Finally, to  build the demo programs,  go to `demos'  and launch GNU
-  Make, it will use the `config.mk'  in the top directory to build the
-  test programs..
-
-
-----------------------------------------------------------------------
-
-Portability:
-
-  In  the  previous  beta,  a  single FT_System  object  was  used  to
-  encompass  all  low-level  operations like  thread  synchronisation,
-  memory management and i/o access. This has been greatly simplified:
-
-    - thread synchronisation  has been dropped, for  the simple reason
-      that the library  is already re-entrant, and that  if you really
-      need  two  threads accessing  the  same  FT_Library, you  should
-      really synchronize access to it yourself with a simple mutex.
-
-    - memory  management is  performed  through a  very simple  object
-      called "FT_Memory",  which really is a table  containing a table
-      of pointers to  functions like malloc, realloc and  free as well
-      as some user data (closure).
-
-    - resources have disappeared (they created more problems than they
-      solved), and  i/o management have  been simplified greatly  as a
-      result. Streams are defined through FT_Stream objects, which can
-      be either memory-based or disk-based.
-
-      Note that  each face  has its own  stream, which is  closed only
-      when  the  face object  is  destroyed.  Hence,  a function  like
-      TT_Flush_Face in  1.x cannot be directly  supported. However, if
-      you really need something like  this, you can easily tailor your
-      own streams  to achieve the same  feature at a  lower level (and
-      use FT_Open_Face instead of FT_New_Face to create the face).
-
-  See the file  "include/ftsystem.h" for more details, as  well as the
-  implementations found in "config/unix" and "config/ansi".
-
-
-----------------------------------------------------------------------
-
-Font Drivers:
-
-  The  Font Driver  interface has  been modified  in order  to support
-  extensions & versioning.
-
-
-  The  list of  the font  drivers that  are statically  linked  to the
-  library at compile time is  managed through a new configuration file
-  called `config/<platform>/ftmodule.h'.
-
-  This file is autogenerated when invoking `make modules'. This target
-  will parse  all sub-directories of 'src', looking  for a "module.mk"
-  rules file, used to describe the driver to the build system.
-
-  Hence, one  should call  `make modules' each  time a font  driver is
-  added or removed from the `src' directory.
-
-  Finally, this version provides a "pseudo-driver" in `src/sfnt'. This
-  driver doesn't  support font  files directly, but  provides services
-  used by  all TrueType-like font  drivers. Hence, its code  is shared
-  between  the TrueType  & OpenType  font formats,  and  possibly more
-  formats to come if we're lucky..
-
-
-----------------------------------------------------------------------
-
-Extensions support:
-
-  The extensions support is inspired by the one found in 1.x.
-
-  Now, each font driver has  its own "extension registry", which lists
-  which extensions  are available  for the font  faces managed  by the
-  driver.
-
-  Extension ids are  now strings, rather than 4-byte  tags, as this is
-  usually more readable..
-
-  Each extension has:
-    - some data, associated to each face object
-    - an interface (table of function pointers)
-
-  An extension  that is format-specific should  simply register itself
-  to the correct font driver. Here is some example code:
-
-   // Registering an extensions
-   //
-   FT_Error  FT_Init_XXXX_Extension( FT_Library  library )
-   {
-     FT_DriverInterface*  tt_driver;
-
-     driver = FT_Get_Driver( library, "truetype" );
-     if (!driver) return FT_Err_Unimplemented_Feature;
-
-     return FT_Register_Extension( driver, &extension_class );
-   }
-
-
-   // Implementing the extensions
-   //
-   FT_Error  FT_Proceed_Extension_XXX( FT_Face  face )
-   {
-     FT_XXX_Extension            ext;
-     FT_XXX_Extension_Interface  ext_interface;
-
-     ext = FT_Get_Extension( face, "extensionid", &ext_interface );
-     if (!ext) return error;
-
-     return ext_interface->do_it(ext);
-   }
-
---- end of CHANGES ---
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2001-05-25  David Turner  <[email protected]>
+
+    * moved several documents from the top-level to the "docs" directory
+
 2001-05-16  David Turner  <[email protected]>
 
 	* src/truetype/ttgload.c (load_truetype_glyph): Fixed a bug in the
--- a/LICENSE.TXT
+++ /dev/null
@@ -1,10 +1,0 @@
-
-FreeType comes with two licenses from which you can choose the one which
-fits your needs best:
-
-  . The FreeType License, in file `docs/FTL.txt'.
-
-  . The GNU General Public License, in file `docs/GPL.txt'.
-
-The contributed PCF driver comes with a license similar to that of X Windows
-which is compatible to the above two licenses (see file src/pcf/readme).
--- a/README
+++ b/README
@@ -1,5 +1,5 @@
 
-  FreeType 2.0.2
+  FreeType 2.0.3
   ==============
 
   Please read the CHANGES file, it contains IMPORTANT INFORMATION.
@@ -9,9 +9,9 @@
   Note that the FreeType 2 documentation is now available as a separate
   package from our sites.  See:
 
-    ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.2.tar.bz2
-    ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.2.tar.gz
-    ftp://ftp.freetype.org/pub/freetype2/ftdoc202.zip
+    ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.3.tar.bz2
+    ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.3.tar.gz
+    ftp://ftp.freetype.org/pub/freetype2/ftdoc203.zip
 
   Enjoy!
 
--- a/README.VMS
+++ /dev/null
@@ -1,35 +1,0 @@
-How to build the freetype2 library on VMS
------------------------------------------
-
-Just type one of the following depending on the type of external entries you
-want:
-
-  mms
-
-or
-
-  mms/macro=("COMP_FLAGS=/name=(as_is,short)")
-
-The library is avalaible in the directory
-
-  [.LIB]
-
-To compile applications using freetype2 you'll need to define the logical
-FREETYPE pointing to the directory
-
-  [.INCLUDE.FREETYPE]
-
-(i.e., if the directory in which this README.VMS file is located is
-$disk:[freetype] then define the logical with
-
-  define freetype $disk:[freetype.include.freetype]
-
-This version has been tested with Compaq C V6.2-006 on OpenVMS Alpha V7.2-1.
-
-
-  Any problems can be reported to
-
-    [email protected]
-
-
-      Jouk Jansen
--- a/TODO
+++ /dev/null
@@ -1,10 +1,0 @@
-Here is a list of items that need to be addressed in FreeType 2:
-
-* Add synthesized Unicode charmap processing to the CFF driver.
-
-* Fix a bug in the TrueType driver: linear horizontal advances of composites
-  are not returned properly.
-
-* Fix 64-bit issues (the code compiles and seems to work, but we've not
-  make a thorough check so some fonts could still core dump the library !!)
-
--- a/builds/compiler/gcc.mk
+++ b/builds/compiler/gcc.mk
@@ -52,7 +52,6 @@
 #
 T := -o$(space)
 
-
 # C flags
 #
 #   These should concern: debug output, optimization & warnings.
--- /dev/null
+++ b/docs/CHANGES
@@ -1,0 +1,1270 @@
+LATEST CHANGES BETWEEN 2.0.3 and 2.0.3
+
+  I. CHANGES TO THE MODULES / FONT DRIVERS :
+  
+    - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix several
+      annoying artefacts, mainly:
+      
+        - blue zone alignement of horizontal stems wasn't performed
+          correctly, resulting in artefacts like the "d" being placed
+          one pixel below the "b" in some fonts like Time New Roman
+          
+        - overshoot thresholding wasn't performed correctly, creating
+          unpleasant artefacts at large character pixel sizes
+          
+        - composite glyph loading has been simplified. This gets rid
+          of various artefacts where the components of a composite glyphs
+          were not correctly spaced.
+          
+      These are the last changes to the current auto-hinting module.
+      A new hinting sub-system is currently in the work in order to
+      support native hints in Type 1 / CFF / OpenType fonts, as well
+      as globally improve rendering
+
+
+    - The PCF driver has been fixed. It reported invalid glyph dimensions
+      for the fonts available on Solaris.
+    
+    - The Type 1, CID and CFF drivers have been modified to fix the
+      computation of the EM size
+
+    - The Type 1 driver has been fixed to avoid a dangerous bug that
+      crashed the library with non-conforming fonts (i.e. ones that
+      do not place the .notdef glyph at position 0)
+
+    - The TrueType driver had a rather subtle bug (dangling pointer when
+      loading composite glyphs) that could crash the library in rare
+      occasions !
+
+
+  II. HIGH-LEVEL API CHANGES :
+                              
+    - the error code enumeration values have been changed. An error
+      value is decomposed in a generic error code, and a module number.
+      see <freetype/fterrors.h> for details     
+
+    - a new public header file has been introduced, named FT_TRIGONOMETRY_H
+      (include/freetype/fttrig.h), providing trigonometric functions to
+      compute sines, cosines, arctangents, etc.. with 16.16 fixed
+      precision. The implementation is based on the CORDIC algorithm
+      and is very fast while being sufficiently accurate.
+
+
+  III. INTERNALS :
+             
+    - added BeOS-specific files in the old build sub-system. Note that
+      no changes were required to compile the library with Jam.
+
+    - the configuration is now capable of automatically detecting 64-bit
+      integers on a set of predefined compilers (GCC,Visual C++,Borland C++)
+      and will use them by default. This provides a small performance
+      boost
+
+    - a small memory leak that happened when opening 0-sized files (duh !!)
+      have been fixed..
+          
+    - fixed bezier stack depth bug in the routines provided by the
+      FT_BBOX_H header file. Also fixed similar bugs in the rasterizers.
+
+    - the outling bounding box code has been rewritten to use direct
+      computations, instead of bezier sub-division, to compute the
+      exact bounding box of glyphs. This is slightly slower but more
+      accurate.
+
+    - The build system has been improved and fixed, mainly to support "make"
+      on Windows 2000 correctly, avoid problems with "make distclean" on
+      non Unix systems, etc..
+      
+    - hexadecimal constants have been suffixed with "U" to avoid problems
+      with certain compilers on 64-bit platforms.
+
+    - a new directory named "src/tools" has been created. It contains
+      Python scripts and simple unit test programs used to develop the
+      library.
+      
+    - the DocMaker tool has been moved from "docs" to "src/tools" and
+      has been updated with the following:
+      
+         - now accepts the "--title=XXXX" or "-t XXXX" option from the
+           command line to set the project's name in the generated
+           API reference
+           
+         - now accepts the "--output=DIR" or "-o DIR" option from the
+           command line to set the output directory for all generated
+           HTML files
+           
+         - now accepts the "--prefix=XXXX" or "-p XXX" option from the
+           command line to set the file prefix to use for all generated
+           HTML files.
+
+         - now generates the current time/data on each generated page
+           in order to distinguish between versions.
+
+      DocMaker can be used with other projects now, not only FT2
+      (e.g. MLib, FTLayout, etc..)
+                                                                
+===========================================================================
+LATEST CHANGES BETWEEN 2.0.2 and 2.0.1
+
+
+  I. CHANGES TO THE MODULES / FONT DRIVERS:
+
+    - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
+      avoid legal problems  with the Apple patents.  It  seems that we
+      mistakenly  turned this option  on in  previous releases  of the
+      build.
+
+      Note that if  you want to use the  bytecode interpreter in order
+      to get high-quality TrueType  rendering, you will need to toggle
+      by        hand        the        definition        of        the
+      TT_CONFIG_OPTION_BYTECODE_INTERPRETER   macro    in   the   file
+      "include/freetype/config/ftoption.h".
+
+    - The CFF driver has been improved by Tom Kacvinsky and Sander van
+      der Wal:
+
+      * Support for "seac" emulation.
+      * Support for "dotsection".
+      * Support for retrieving glyph names through
+        "FT_Get_Glyph_Name".
+
+      The first two items are necessary to correctly a large number of
+      Type 1 fonts converted to the CFF formats by Adobe Acrobat.
+
+    - The Type 1 driver was also improved by Tom & others:
+
+      * Better EM size computation.
+      * Better support for synthetic (transformed) fonts.
+      * The  Type 1  driver returns  the charstrings  corresponding to
+        each glyph in the  "glyph->control_data" field after a call to
+        "FT_Load_Glyph" (thanks Ha Shao).
+
+    - Various other bugfixes, including the following:
+
+      * Fixed a nasty memory leak in the Type 1 driver.
+      * The autohinter  and the pcf  driver used static  writable data
+        when they shouldn't.
+      * Many casts were added to  make the code more 64-bits safe.  It
+        also now compiles on Windows XP 64-bits without warnings.
+      * Some incorrect writable statics were removed in the "autohint"
+        and "pcf" drivers.  FreeType 2 now compiles on Epoc again.
+
+
+  II. CHANGES TO THE HIGH-LEVEL API
+
+    - The library header files inclusion scheme has been changed.  The
+      old scheme looked like:
+
+        #include <freetype/freetype.h>
+        #include <freetype/ftglyph.h>
+        #include <freetype/ftcache.h>
+        #include <freetype/cache/ftimage.h>
+
+      Now you should use:
+
+        #include <ft2build.h>
+        #include FT_FREETYPE_H
+        #include FT_GLYPH_H
+        #include FT_CACHE_H
+        #include FT_CACHE_IMAGE_H
+
+      NOTE THAT  THE OLD  INCLUSION SCHEME WILL  STILL WORK  WITH THIS
+      RELEASE.  HOWEVER, WE  DO NOT GUARANTEE THAT THIS  WILL STILL BE
+      TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
+
+      The  file <ft2build.h>  is used  to define  the  header filename
+      macros.  The complete and  commented list of macros is available
+      in the API reference under the section name "Header File Macros"
+      in Chapter I.
+
+      For more information, see section I of the following document:
+
+        http://www.freetype.org/
+          freetype2/docs/tutorial/step1.html
+
+      or
+
+        http://freetype.sourceforge.net/
+          freetype2/docs/tutorial/step1.html
+
+    - Many, many comments have been added to the public source file in
+      order to  automatically generate  the API Reference  through the
+      "docmaker.py" Python script.
+
+      The latter has been updated  to support the grouping of sections
+      in chapters and better index sort.  See:
+
+        http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
+
+
+  III. CHANGES TO THE BUILD PROCESS
+
+
+    - If you  are not  building FreeType 2  with its own  build system
+      (but with your own Makefiles or project files), you will need to
+      be  aware that  the  build  process has  changed  a little  bit.
+
+      You don't  need to put the  "src" directory in  the include path
+      when  compiling  any FT2  component.   Instead,  simply put  the
+      component's directory in the current include path.
+
+      So, if you were doing something like:
+
+        cc -c -Iinclude -Isrc src/base/ftbase.c
+
+      change the line to:
+
+        cc -c -Iinclude -Isrc/base src/base/ftbase.c
+
+      If you were doing something like:
+
+        cd src/base
+        cc -c -I../../include -I.. ftbase.c
+
+      change it to:
+
+        cd src/base
+        cc -c -I../../include ftbase.c
+
+
+======================================================================
+
+LATEST CHANGES BETWEEN 2.0.1 and 2.0:
+
+
+  2.0.1 introduces a few changes:
+
+    - Fixed many bugs related to  the support of CFF / OpenType fonts.
+      These  formats are  now much  better supported  though  there is
+      still work planned to  deal with charset tables and PDF-embedded
+      CFF files that use the old "seac" command.
+
+    - The  library could not  be compiled  in debug  mode with  a very
+      small  number   of  C  compilers   whose  pre-processors  didn't
+      implement the "##"  directive correctly (i.e. per se  the ANSI C
+      specification!)  An elegant fix was found.
+
+    - Added  support for  the  free Borland  command-line C++  Builder
+      compiler.   Use "make  setup bcc32".   Also fixed  a  few source
+      lines that generated new warnings with BCC32.
+
+    - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
+      a conic Bezier arc.
+
+    - Updated the INSTALL file to add IDE compilation.
+
+    - Other  minor bug  fixes,  from  invalid Type  1  style flags  to
+      correct   support   of  synthetic   (obliqued)   fonts  in   the
+      auto-hinter, better support for embedded bitmaps in a SFNT font.
+
+    - Fixed some problems with "freetype-config".
+
+  Finally, the "standard" scheme for including FreeType headers is now
+  gradually changing,  but this will  be explained in a  later release
+  (probably 2.0.2).
+
+  And very  special thanks to Tom Kacvinsky  and YAMANO-UCHI Hidetoshi
+  for their contributions!
+
+
+======================================================================
+
+CHANGES BETWEEN beta8 and 2.0
+
+  - Changed  the default  installation  path for  public headers  from
+    "include/freetype" to "include/freetype2".
+
+    Also added a new "freetype-config" that is automatically generated
+    and installed  on Unix and  Cygwin systems.  The script  itself is
+    used to retrieve the current  install path, C compilation flags as
+    well as linker flags.
+
+  - Fixed several small bugs:
+
+    * Incorrect max advance width for fixed-pitch Type 1 fonts.
+    * Incorrect glyph names for certain TrueType fonts.
+    * The  glyph advance  was not  copied when  FT_Glyph_To_Bitmap was
+      called.
+    * The  linearHoriAdvance  and  linerVertAdvance  fields  were  not
+      correctly returned for glyphs processed by the auto-hinter.
+    * "type1z"  renamed back to  "type1"; the  old "type1"  module has
+      been removed.
+
+  - Revamped the  build system  to make it  a lot more  generic.  This
+    will  allow us  to  re-use  nearly un-modified  in  lots of  other
+    projects (including FreeType Layout).
+
+  - Changed "cid" to use "psaux" too.
+
+  - Added the  cache sub-system.  See <freetype/ftcache.h>  as well as
+    the sources  in "src/cache".  Note  that it compiles but  is still
+    untested for now.
+
+  - Updated "docs/docmaker.py", a draft  API reference is available at
+    http://www.freetype.org/ft2api.html.
+
+  - Changed "type1" to use "psaux".
+
+  - Created a  new module named  "psaux" to hold  the Type 1 &  Type 2
+    parsing routines.  It should be  used by "type1", "cid", and "cff"
+    in the future.
+
+  - Fixed an important bug in "FT_Glyph_Get_CBox".
+
+  - Fixed  some compiler  warnings  that happened  since the  TrueType
+    bytecode decoder was deactivated by default.
+
+  - Fixed two memory leaks:
+
+    * The    memory   manager   (16    bytes)   isn't    released   in
+      FT_Done_FreeType!
+    * Using custom input streams, the  copy of the original stream was
+      never released.
+
+  - Fixed the  auto-hinter by performing automatic  computation of the
+    "filling direction" of each glyph.   This is done through a simple
+    and  fast approximation, and  seems to  work (problems  spotted by
+    Werner though).  The Arphic fonts are a lot nicer though there are
+    still a lot of things to do to handle Asian fonts correctly.
+
+
+======================================================================
+
+BETA-8 (RELEASE CANDIDATE) CHANGES
+
+  - Deactivated the TrueType bytecode interpreter by default.
+
+  - Deactivated the "src/type1" font driver.  Now "src/type1z" is used
+    by default.
+
+  - Updates to the build system.  We now compile the library correctly
+    under  Unix  system  through  "configure" which  is  automatically
+    called on the first "make" invocation.
+
+  - Added the auto-hinting module!  Fixing some bugs here and there.
+
+  - Found some bugs in the  composite loader (seac) of the Type1-based
+    font drivers.
+
+  - Renamed the directory "freetype2/config" to "freetype2/builds" and
+    updated all relevant files.
+
+  - Found a memory leak in the "type1" driver.
+
+  - Incorporated Tom's patches to  support flex operators correctly in
+    OpenType/CFF fonts.  Now all I need is to support pure CFF and CEF
+    fonts to be done with this driver :-)
+
+  - Added the  Windows FNT/FON driver in "src/winfonts".   For now, it
+    always  "simulates"   a  Unicode  charmap,  so   it  shouldn't  be
+    considered completed right now.
+
+    It  is there  to be  more a  proof of  concept than  anything else
+    anyway.  The driver is a single  C source file, that compiles to 3
+    Kb of code.
+
+    I'm  still working on  the PCF/BDF  drivers, but  I'm too  lazy to
+    finish them now.
+
+  - CHANGES TO THE HIGH-LEVEL API
+
+    * FT_Get_Kerning has a new parameter that allows you to select the
+      coordinates of the kerning  vector (font units, scaled, scaled +
+      grid-fitted).
+    * The  outline functions are  now in <freetype/ftoutln.h>  and not
+      part of <freetype/freetype.h> anymore.
+    * <freetype/ftmodule.h>    now     contains    declarations    for
+       FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
+    * The so-called convenience  functions have moved from "ftoutln.c"
+      to  "ftglyph.c",  and  are  thus available  with  this  optional
+      component    of   the   library.     They   are    declared   in
+      <freetype/ftglyph.h> now.
+    * Anti-aliased  rendering is now  the default  for FT_Render_Glyph
+      (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
+      To generate a monochrome bitmap, use ft_render_mode_mono, or the
+      FT_LOAD_MONOCHROME     flag    in    FT_Load_Glyph/FT_Load_Char.
+      FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
+    * <freetype/freetype.h>  now include <freetype/config/ftconfig.h>,
+      solving a few headaches :-)
+    * The type FT_GlyphSlotRec has now a "library" field.
+
+  - CHANGES TO THE "ftglyph.h" API
+
+    This API has  been severely modified in order  to make it simpler,
+    clearer, and more  efficient.  It certainly now looks  like a real
+    "glyph factory"  object, and allows client  applications to manage
+    (i.e.  transform,  bbox  and  render) glyph  images  without  ever
+    knowing their original format.
+
+  - Added  support  for CID-keyed  fonts  to  the  CFF driver.   Maybe
+    support for pure CFF + CEF fonts should come in?
+
+  - Cleaned up  source code in order  to avoid two  functions with the
+    same name.  Also  changed the names of the  files in "type1z" from
+    "t1XXXX" to "z1XXXX" in order to avoid any conflicts.
+
+    "make multi" now works well :-)
+
+    Also removed the use of "cidafm" for now, even if the source files
+    are  still there.  This  functionality will  certainly  go into  a
+    specific module.
+
+  - ADDED SUPPORT FOR THE AUTO-HINTER
+
+    It  works :-) I  have a  demo program  which simply  is a  copy of
+    "ftview"       that      does       a      `FT_Add_Module(library,
+    &autohinter_module_class)' after  library initialization, and Type
+    1 & OpenType/CFF fonts are now hinted.
+
+    CID  fonts are  not hinted,  as they  include no  charmap  and the
+    auto-hinter doesn't include  "generic" global metrics computations
+    yet.
+
+    Now, I need to release this thing to the FreeType 2 source.
+
+  - CHANGES TO THE RENDERER MODULES
+
+    The  monochrome  and smooth  renderers  are  now  in two  distinct
+    directories, namely "src/raster1" and "src/smooth".  Note that the
+    old "src/renderer" is now gone.
+
+    I ditched  the 5-gray-levels renderers.  Basically,  it involved a
+    simple #define toggle in 'src/raster1/ftraster.c'.
+
+    FT_Render_Glyph,  FT_Outline_Render  &  FT_Outline_Get_Bitmap  now
+    select the best renderer  available, depending on render mode.  If
+    the current renderer for a  given glyph image format isn't capable
+    of supporting  the render mode, another  one will be  found in the
+    library's list.   This means that client applications  do not need
+    to  switch or  set  the  renderers themselves  (as  in the  latest
+    change), they'll get what they want automatically.  At last.
+
+    Changed the demo programs accordingly.
+
+  - MAJOR INTERNAL REDESIGN:
+
+    A lot of internal modifications  have been performed lately on the
+    source in order to provide the following enhancements:
+
+    * More generic module support:
+
+      The FT_Module  type is  now defined to  represent a handle  to a
+      given  module.   The  file  <freetype/ftmodule.h>  contains  the
+      FT_Module_Class definition, as well as the module-loading public
+      API.
+
+      The  FT_Driver type  is still  defined, and  still  represents a
+      pointer to  a font driver.  Note that  FT_Add_Driver is replaced
+      by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
+
+    * Support for generic glyph image types:
+
+      The FT_Renderer  type is a pointer  to a module  used to perform
+      various operations on glyph image.
+
+      Each renderer is  capable of handling images in  a single format
+      (e.g. ft_glyph_format_outline).  Its functions are used to:
+
+      - transform an glyph image
+      - render a glyph image into a bitmap
+      - return the control box (dimensions) of a given glyph image
+
+      The scan converters "ftraster.c" and "ftgrays.c" have been moved
+      to the new directory "src/renderer", and are used to provide two
+      default renderer modules.
+
+      One corresponds  to the "standard" scan-converter,  the other to
+      the "smooth" one.
+
+      he  current  renderer  can  be  set  through  the  new  function
+      FT_Set_Renderer.
+
+      The old raster-related function FT_Set_Raster, FT_Get_Raster and
+      FT_Set_Raster_Mode have now disappeared, in favor of the new:
+
+        FT_Get_Renderer
+        FT_Set_Renderer
+
+      See the file <freetype/ftrender.h> for more details.
+
+      These  changes  were  necessary  to properly  support  different
+      scalable formats in the future, like bi-color glyphs, etc.
+
+    * Glyph loader object:
+
+      A  new  internal  object,  called  a  'glyph  loader'  has  been
+      introduced in the base layer.  It is used by all scalable format
+      font drivers to load glyphs and composites.
+
+      This object  has been  created to reduce  the code size  of each
+      driver,  as  each  one  of  them  basically  re-implemented  its
+      functionality.
+
+      See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
+      more information.
+
+    * FT_GlyphSlot has new fields:
+
+      In  order   to  support  extended  features   (see  below),  the
+      FT_GlyphSlot structure has a few new fields:
+
+      linearHoriAdvance:
+
+        This  field  gives  the   linearly  scaled  (i.e.  scaled  but
+        unhinted) advance  width for the  glyph, expressed as  a 16.16
+        fixed pixel value.  This is useful to perform WYSIWYG text.
+
+      linearVertAdvance:
+        This field  gives the linearly  scaled advance height  for the
+        glyph  (relevant in  vertical  glyph layouts  only).  This  is
+        useful to perform WYSIWYG text.
+
+        Note that  the two above field replace  the removed "metrics2"
+        field in the glyph slot.
+
+      advance:
+        This field is a vector  that gives the transformed advance for
+        the glyph.   By default, it corresponds to  the advance width,
+        unless  FT_LOAD_VERTICAL_LAYOUT  was  specified  when  calling
+        FT_Load_Glyph or FT_Load_Char.
+
+      bitmap_left:
+        This  field gives  the  distance in  integer  pixels from  the
+        current pen position  to the left-most pixel of  a glyph image
+        IF IT IS  A BITMAP.  It is only valid  when the "format" field
+        is set to "ft_glyph_format_bitmap", for example, after calling
+        the new function FT_Render_Glyph.
+
+      bitmap_top:
+        This  field gives  the  distance in  integer  pixels from  the
+        current pen position (located on the baseline) to the top-most
+        pixel of the  glyph image IF IT IS  A BITMAP.  Positive values
+        correspond to upwards Y.
+
+      loader:
+        This  is a  new  private  field for  the  glyph slot.   Client
+        applications should not touch it.
+
+
+    * Support for transforms and direct rendering in FT_Load_Glyph:
+
+      Most of the functionality found in <freetype/ftglyph.h> has been
+      moved to the core library. Hence, the following:
+
+      - A   transform   can   be   specified  for   a   face   through
+        FT_Set_Transform.  this transform  is applied by FT_Load_Glyph
+        to  scalable glyph  images (i.e.  NOT TO  BITMAPS)  before the
+        function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
+        was set in the load flags.
+
+      - Once  a  glyph image  has  been  loaded,  it can  be  directly
+        converted  to  a  bitmap  by  using  the  new  FT_Render_Glyph
+        function.  Note that this  function takes the glyph image from
+        the glyph slot,  and converts it to a  bitmap whose properties
+        are returned  in "face.glyph.bitmap", "face.glyph.bitmap_left"
+        and "face.glyph.bitmap_top".  The  original native image might
+        be lost after the conversion.
+
+      - When using the new  bit flag FT_LOAD_RENDER, the FT_Load_Glyph
+        and   FT_Load_Char   functions   will   call   FT_Render_Glyph
+        automatically when needed.
+
+  - Reformatted all  modules source  code in order  to get rid  of the
+    basic data types redifinitions (i.e. "TT_Int" instead of "FT_Int",
+    "T1_Fixed"  instead  of  "FT_Fixed").  Hence  the  format-specific
+    prefixes like  "TT_", "T1_",  "T2_" and "CID_"  are only  used for
+    relevant structures.
+
+
+======================================================================
+
+OLD CHANGES FOR BETA 7
+
+  - bug-fixed the  OpenType/CFF parser. It  now loads and  displays my
+    two  fonts nicely,  but I'm  pretty certain  that more  testing is
+    needed :-)
+
+  - fixed the crummy Type 1 hinter, it now handles accented characters
+    correctly (well, the accent is  not always well placed, but that's
+    another problem..)
+
+  - added the CID-keyed Type 1  driver in "src/cid". Works pretty well
+    for only 13 Kb of code  ;-) Doesn't read AFM files though, nor the
+    really useful CMAP files..
+
+  - fixed two bugs in the smooth renderer (src/base/ftgrays.c). Thanks
+    to Boris Letocha for spotting them and providing a fix..
+
+  - fixed potential "divide by zero" bugs in ftcalc.c.. my god..
+
+  - added source  code for  the OpenType/CFF driver  (still incomplete
+    though..)
+
+  - modified the  SFNT driver slightly  to perform more  robust header
+    checks  in TT_Load_SFNT_Header. This  prevents certain  font files
+    (e.g.  some  Type  1  Multiple  Masters)  from  being  incorrectly
+    "recognized" as TrueType font files..
+
+  - moved a lot of stuff from  the TrueType driver to the SFNT module,
+    this   allows   greater   code   re-use   between   font   drivers
+    (e.g. TrueType, OpenType, Compact-TrueType, etc..)
+
+  - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
+    to minimally speed it up..
+
+  - added support for Multiple Master fonts in "type1z". There is also
+    a  new file  named  <freetype/ftmm.h> which  defines functions  to
+    manage them from client applications.
+
+    The new file "src/base/ftmm.c" is also optional to the engine..
+
+  - various  formatting changes (e.g.  EXPORT_DEF ->  FT_EXPORT_DEF) +
+    small bug fixes in FT_Load_Glyph, the "type1" driver, etc..
+
+  - a minor fix to the Type 1 driver to let them apply the font matrix
+    correctly (used for many oblique fonts..)
+
+  - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
+    to use %p instead of %lx).. Thanks to Karl Robillard
+
+  - fixed  some bugs  in  the sbit  loader (src/base/sfnt/ttsbit.c)  +
+    added  a new flag,  FT_LOAD_CROP_BITMAP to  query that  bitmaps be
+    cropped when  loaded from a file  (maybe I should  move the bitmap
+    cropper to the base layer ??).
+
+  - changed the default  number of gray levels of  the smooth renderer
+    to 256  (instead of  the previous 128).  Of course, the  human eye
+    can't see any difference ;-)
+
+  - removed TT_MAX_SUBGLYPHS,  there is no static limit  on the number
+    of subglyphs in a TrueType font now..
+
+
+======================================================================
+
+OLD CHANGES 16 May 2000
+
+  - tagged "BETA-6"  in the  CVS tree. This  one is a  serious release
+    candidate even though it doesn't incorporate the auto-hinter yet..
+
+  - various obsolete files were removed, and copyright header updated
+
+  - finally  updated  the  standard   raster  to  fix  the  monochrome
+    rendering bug + re-enable  support for 5-gray levels anti-aliasing
+    (suck, suck..)
+
+  - created new header files, and modified sources accordingly:
+
+     <freetype/fttypes.h>
+       - simple FreeType types, without the API
+     <freetype/internal/ftmemory.h>
+       - definition of memory-management macros
+
+  - added   the   "DSIG"   (OpenType   Digital   Signature)   tag   to
+    <freetype/tttags.h>
+
+  - light update/cleaning of the build system + changes to the sources
+    in  order  to  get  rid  of _all_  compiler  warnings  with  three
+    compilers, i.e:
+
+    gcc with "-ansi -pedantic -Wall -W", Visual C++ with "/W3 /WX" and
+    LCC
+
+    IMPORTANT NOTE FOR WIN32-LCC USERS:
+    |
+    |  It seems the C pre-processor  that comes with LCC is broken, it
+    |  doesn't  recognize  the  ANSI  standard  directives  #  and  ##
+    |  correctly when one of the  argument is a macro. Also, something
+    |  like:
+    |
+    |     #define F(x)  print##x
+    |
+    |     F(("hello"))
+    |
+    |  will get incorrectly translated to:
+    |
+    |     print "hello")
+    |
+    |  by its pre-processor. For  this reason, you simply cannot build
+    |  FreeType 2 in debug mode with this compiler..
+
+  - yet another massive grunt work. I've changed the definition of the
+    EXPORT_DEF,  EXPORT_FUNC, BASE_DEF &  BASE_FUNC macros.  These now
+    take an argument, which is the function's return value type.
+
+    This  is necessary to  compile FreeType  as a  DLL on  Windows and
+    OS/2.  Depending on the compiler used, a compiler-specific keyword
+    like  __export or __system  must be  placed before  (VisualC++) or
+    after (BorlandC++) the type..
+
+    Of course, this needed a lot of changes throughout the source code
+    to make it compile again... All cleaned up now, apparently..
+
+    Note also  that there is a  new EXPORT_VAR macro  defined to allow
+    the   _declaration_    of   an   exportable    public   (constant)
+    variable.  This  is  the   case  of  the  raster  interfaces  (see
+    ftraster.h and ftgrays.h), as well as each module's interface (see
+    sfdriver.h, psdriver.h, etc..)
+
+  - new feature: it  is now possible to pass  extra parameters to font
+                 drivers  when creating  a new  face object.  For now,
+                 this capability is unused.  It could however prove to
+                 be useful in a near future..
+
+      the FT_Open_Args structure was  changes, as well as the internal
+      driver interface  (the specific "init_face"  module function has
+      now a different signature).
+
+  - updated the tutorial (not finished though).
+
+  - updated the top-level BUILD  document
+
+  - fixed  a  potential memory  leak  that  could  occur when  loading
+    embedded bitmaps.
+
+  - added     the     declaration     of     FT_New_Memory_Face     in
+    <freetype/freetype.h>, as  it was  missing from the  public header
+    (the implementation was already in "ftobjs.c").
+
+  - the file <freetype/fterrors.h> has been seriously updated in order
+    to allow the automatic generation of error message tables. See the
+    comments within it for more information.
+
+  - major directory  hierarchy re-organisation. This was  done for two
+    things:
+
+      * first,  to ease  the "manual"  compilation of  the  library by
+        requiring at lot less include paths :-)
+
+      * second,  to  allow  external  programs to  effectively  access
+        internal  data  fields. For  example,  this  can be  extremely
+        useful if  someone wants  to write a  font producer or  a font
+        manager on top of FreeType.
+
+    Basically, you  should now use  the 'freetype/' prefix  for header
+    inclusion, as in:
+
+        #include <freetype/freetype.h>
+        #include <freetype/ftglyph.h>
+
+    Some new include sub-directories are available:
+
+     a. the  "freetype/config" directory,  contains two files  used to
+        configure the build of the library. Client applications should
+        not need to look at these normally, but they can if they want.
+
+        #include <freetype/config/ftoption.h>
+        #include <freetype/config/ftconfig.h>
+
+     b. the "freetype/internal"  directory, contains header files that
+        describes library  internals. These are the  header files that
+        were  previously  found  in  the "src/base"  and  "src/shared"
+        directories.
+
+
+    As  usual, the build  system and  the demos  have been  updated to
+    reflect the change..
+
+    Here's a layout of the new directory hierarchy:
+
+    TOP
+      include/
+         freetype/
+            freetype.h
+            ...
+            config/
+              ftoption.h
+              ftconfig.h
+              ftmodule.h
+
+            internal/
+              ftobjs.h
+              ftstream.h
+              ftcalc.h
+              ...
+
+      src/
+         base/
+            ...
+
+         sfnt/
+         psnames/
+         truetype/
+         type1/
+         type1z/
+
+
+    Compiling a module is now  much easier, for example, the following
+    should work when in the TOP directory on an ANSI build:
+
+       gcc -c -I./include -I./src/base src/base/ftbase.c
+       gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
+       etc..
+
+    (of course, using -Iconfig/<system> if you provide system-specific
+     configuration files).
+
+  - updated the structure of FT_Outline_Funcs in order to allow direct
+    coordinate scaling within  the outline decomposition routine (this
+    is  important for virtual  "on" points  with TrueType  outlines) +
+    updates to the rasters to support this..
+
+  - updated  the OS/2  table  loading code  in "src/sfnt/ttload.c"  in
+    order to support version 2 of the table (see OpenType 1.2 spec)
+
+  - created  "include/tttables.h"  and  "include/t1tables.h" to  allow
+    client applications to access some of  the SFNT and T1 tables of a
+    face  with  a  procedural  interface (see  FT_Get_Sfnt_Table())  +
+    updates to internal source files to reflect the change..
+
+  - some  cleanups in  the source  code to  get rid  of  warnings when
+    compiling with the "-Wall -W -ansi -pedantic" options in gcc.
+
+  - debugged and moved the smooth renderer to "src/base/ftgrays.c" and
+    its header to "include/ftgrays.h"
+
+  - updated TT_MAX_SUBGLYPHS  to 96 as some CJK  fonts have composites
+    with up to 80 sub-glyphs !! Thanks to Werner
+
+
+======================================================================
+
+OLD CHANGES - 14-apr-2000
+
+  - fixed  a bug  in  the  TrueType glyph  loader  that prevented  the
+    correct loading of some CJK glyphs in mingli.ttf
+
+  - improved the standard Type 1 hinter in "src/type1"
+
+  - fixed two bugs  in the experimental Type 1  driver in "src/type1z"
+    to handle the new XFree86 4.0 fonts (and a few other ones..)
+
+  - the smooth  renderer is now  complete and supports  sub-banding to
+    render large glyphs at high speed. However, it is still located in
+    "demos/src/ftgrays.c" and should move to the library itself in the
+    next  beta..   NOTE:  The  smooth  renderer   doesn't  compile  in
+    stand-alone mode anymore, but this should be fixed RSN..
+
+  - introduced convenience  functions to  more easily deal  with glyph
+    images, see  "include/ftglyph.h" for more details, as  well as the
+    new  demo program  named "demos/src/ftstring.c"  that demonstrates
+    its use
+
+  - implemented  FT_LOAD_NO_RECURSE in  both the  TrueType and  Type 1
+    drivers  (this  is required  by  the  auto-hinter  to improve  its
+    results).
+
+  - changed   the  raster   interface,  in   order  to   allow  client
+    applications to provide their own span-drawing callbacks. However,
+    only the smooth renderer  supports this. See "FT_Raster_Params" in
+    the file "include/ftimage.h"
+
+  - fixed  a small bug  in FT_MulFix  that caused  incorrect transform
+    computation!
+
+  - Note: The tutorial is out-of-date, grumpf.. :-(
+
+
+======================================================================
+
+OLD CHANGES - 12-mar-2000
+
+  - changed  the  layout  of  configuration  files  :  now,  all  ANSI
+    configuration         files         are         located         in
+    "freetype2/config".  System-specific over-rides  can be  placed in
+    "freetype2/config/<system>".
+
+  - moved all configuration macros to "config/ftoption.h"
+
+  - improvements in the Type 1 driver with AFM support
+
+  - changed the fields  in the FT_Outline structure :  the old "flags"
+    array is re-named "tags", while all ancient flags are encoded into
+    a single unsigned int named "flags".
+
+  - introduced     new      flags     in     FT_Outline.flags     (see
+    ft_outline_.... enums in "ftimage.h").
+
+  - changed outline functions to "FT_Outline_<action>" syntax
+
+  - added a smooth anti-alias renderer to the demonstration programs
+
+  - added Mac graphics driver (thanks Just)
+
+  - FT_Open_Face  changed  in  order   to  received  a  pointer  to  a
+    FT_Open_Args descriptor..
+
+  - various  cleanups,  a  few  more API  functions  implemented  (see
+    FT_Attach_File)
+
+  - updated some docs
+
+
+======================================================================
+
+OLD CHANGES - 22-feb-2000
+
+  - introduced the "psnames" module. It is used to:
+
+      o convert  a Postscript glyph  name into the  equivalent Unicode
+        character code (used by the  Type 1 driver(s) to synthetize on
+        the fly a Unicode charmap).
+
+      o provide an  interface to retrieve the Postscript  names of the
+        Macintosh,  Adobe  Standard &  Adobe  Expert character  codes.
+        (the Macintosh  names are  used by the  SFNT-module postscript
+        names support routines, while the other two tables are used by
+        the Type 1 driver(s)).
+
+  - introduced the "type1z" alternate Type  1 driver. This is a (still
+    experimental) driver  for the Type  1 format that  will ultimately
+    replace the one  in "src/type1". It uses pattern  matching to load
+    data from the  font, instead of a finite  state analyzer. It works
+    much better than the "old"  driver with "broken" fonts. It is also
+    much smaller (under 15 Kb).
+
+  - the  Type 1  drivers (both  in "src/type1"  and  "src/type1z") are
+    nearly  complete.  They  both  provide automatic  Unicode  charmap
+    synthesis through  the "psnames" module. No  re-encoding vector is
+    needed.  (note  that they  still  leak  memory  due to  some  code
+    missing, and I'm getting lazy).
+
+    Trivial AFM support has been added to read kerning information but
+    wasn't exactly tested as it should ;-)
+
+  - The TrueType  glyph loader has  been seriously rewritten  (see the
+    file  "src/truetype/ttgload.c". It  is now  much, much  simpler as
+    well as  easier to read,  maintain and understand  :-) Preliminary
+    versions introduced a  memory leak that has been  reported by Jack
+    Davis, and is now fixed..
+
+  - introduced  the new  "ft_glyph_format_plotter", used  to represent
+    stroked outlines  like Windows "Vector" fonts, and  certain Type 1
+    fonts  like "Hershey".  The corresponding  raster will  be written
+    soon.
+
+  - FT_New_Memory_Face  is  gone.  Likewise,  FT_Open_Face has  a  new
+    interface that uses a structure  to describe the input stream, the
+    driver (if required), etc..
+
+
+TODO
+
+  - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
+
+  - Add a function like FT_Load_Character( face, char_code, load_flags
+    )  that  would really  embbed  a  call  to FT_Get_Char_Index  then
+    FT_Load_Glyph to ease developer's work.
+
+  - Update the tutorial!
+
+  - consider adding  support for Multiple  Master fonts in the  Type 1
+    drivers.
+
+  - Test the AFM routines of the  Type 1 drivers to check that kerning
+    information is returned correctly.
+
+  - write a decent auto-gridding component  !! We need this to release
+    FreeType 2.0 gold !
+
+
+less urgent needs:
+
+  - add a CFF/Type2 driver
+  - add a BDF driver
+  - add a FNT/PCF/HBF driver
+  - add a Speedo driver from the X11 sources
+
+
+======================================================================
+
+OLDER CHANGES - 27-jan-2000
+
+  - updated the  "sfnt" module  interface to allow  several SFNT-based
+    drivers to co-exist peacefully
+
+  - updated  the "T1_Face"  type  to better  separate Postscript  font
+    content  from the  rest of  the FT_Face  structure. Might  be used
+    later by the CFF/Type2 driver..
+
+  - added an experimental replacement Type 1 driver featuring advanced
+    (and speedy) pattern matching to retrieve the data from postscript
+    fonts.
+
+  - very minor  changes in the implementation  of FT_Set_Char_Size and
+    FT_Set_Pixel_Sizes (they now implement default to ligthen the font
+    driver's code).
+
+
+======================================================================
+
+OLD MESSAGE
+
+This file summarizes the changes that occured since the last "beta" of
+FreeType 2.  Because  the list is important, it  has been divided into
+separate sections:
+
+Table Of Contents:
+
+    I   High-Level Interface (easier !)
+   II   Directory Structure
+  III   Glyph Image Formats
+   IV   Build System
+    V   Portability
+   VI   Font Drivers
+
+
+----------------------------------------------------------------------
+
+High-Level Interface:
+
+  The high-level API has been considerably simplified.  Here is how:
+
+    - resource objects have disappeared.  this means that face objects
+      can now be created with  a single function call (see FT_New_Face
+      and FT_Open_Face)
+
+    - when calling  either FT_New_Face  & FT_Open_Face, a  size object
+      and a glyph slot object  are automatically created for the face,
+      and can  be accessed  through "face->glyph" and  "face->size" if
+      one really  needs to.   In most cases,  there's no need  to call
+      FT_New_Size or FT_New_Glyph.
+
+    - similarly,  FT_Load_Glyph  now  only  takes  a  "face"  argument
+      (instead  of a  glyph  slot  and a  size).  Also, it's  "result"
+      parameter is  gone, as the glyph  image type is  returned in the
+      field "face->glyph.format"
+
+    - the list  of available  charmaps is directly  accessible through
+      "face->charmaps",  counting "face->num_charmaps"  elements. Each
+      charmap  has an  'encoding'  field which  specifies which  known
+      encoding it deals with. Valid values are, for example :
+
+          ft_encoding_unicode      (for ASCII, Latin-1 and Unicode)
+          ft_encoding_apple_roman
+          ft_encoding_sjis
+          ft_encoding_adobe_standard
+          ft_encoding_adobe_expert
+
+      other  values may  be added  in the  future. Each  charmap still
+      holds  its "platform_id"  and "encoding_id"  values in  case the
+      encoding is too exotic for the current library
+
+
+----------------------------------------------------------------------
+
+Directory Structure:
+
+  Should seem obvious to most of you:
+
+     freetype/
+         config/        -- configuration sub-makefiles
+            ansi/
+            unix/       -- platform-specific configuration files
+            win32/
+            os2/
+            msdos/
+
+         include/       -- public header  files, those to  be included
+                           directly by client apps
+
+         src/           -- sources of the library
+           base/        -- the base layer
+           sfnt/        -- the sfnt "driver"  (see the drivers section
+                           below)
+           truetype/    -- the truetype driver
+           type1/       -- the type1 driver
+           shared/      -- some header files shared between drivers
+
+         demos/         -- demos/tools
+
+         docs/          -- documentation (a bit empty for now)
+
+
+----------------------------------------------------------------------
+
+Glyph Image Formats:
+
+  Drivers are now able to  register new glyph image formats within the
+  library.  For  now, the  base layer supports  of course  bitmaps and
+  vector  outlines, but  one  could imagine  something different  like
+  colored bitmaps, bi-color vectors or wathever else (Metafonts anyone
+  ??).
+
+  See  the   file  `include/ftimage.h'.   Note  also  that   the  type
+  FT_Raster_Map  is gone,  and  is now  replaced  by FT_Bitmap,  which
+  should encompass all known bitmap types.
+
+  Each new  image format  must provide at  least one "raster",  i.e. a
+  module capable of  transforming the glyph image into  a bitmap. It's
+  also possible  to change the default  raster used for  a given glyph
+  image format.
+
+  The default outline  scan-converter now uses 128 levels  of grays by
+  default,  which tends  to smooth  many  things. Note  that the  demo
+  programs have been updated significantly in order to display these..
+
+
+----------------------------------------------------------------------
+
+Build system:
+
+  You still need  GNU Make to build the library.  The build system has
+  been very seriously re-vamped in order to provide things like :
+
+   - automatic host platform  detection (reverting to 'config/ansi' if
+     it is not detected, with pseudo-standard compilation flags)
+
+   - the ability to compile from the Makefiles with very different and
+     exotic compilers. Note that  linking the library can be difficult
+     for some platforms.
+
+     For example, the file `config/win32/lcclib.bat' is invoked by the
+     build system to create the ".lib" file with LCC-Win32 because its
+     librarian  has too  many flaws  to be  invoked directly  from the
+     Makefile.
+
+  Here's how it works:
+
+  - the first time you type `make',  the build system runs a series of
+    sub-makefiles in order to detect your host platform. It then dumps
+    what  it found,  and  creates  a file  called  `config.mk' in  the
+    current  directory. This  is a  sub-Makefile used  to  define many
+    important Make variables used to build the library.
+
+  - the second time, the build system detects the `config.mk' then use
+    it  to  build the  library.  All object  files  go  into 'obj'  by
+    default,  as well  as the  library file,  but this  can  easily be
+    changed.
+
+  Note that  you can run "make  setup" to force  another host platform
+  detection  even   if  a  `config.mk'  is  present   in  the  current
+  directory.  Another solution  is  simply to  delete  the file,  then
+  re-run make.
+
+  Finally, the  default compiler  for all platforms  is gcc  (for now,
+  this will hopefully changed in  the future). You can however specify
+  a different  compiler by specifying  it after the 'setup'  target as
+  in:
+
+      gnumake setup lcc         on Win32 to use the LCC compiler
+      gnumake setup visualc     on Win32 to use Visual C++
+
+  See  the file  `config/<system>/detect.mk' for  a list  of supported
+  compilers for your platforms.
+
+  It should be relatively easy  to write new detection rules files and
+  config.mk..
+
+  Finally, to  build the demo programs,  go to `demos'  and launch GNU
+  Make, it will use the `config.mk'  in the top directory to build the
+  test programs..
+
+
+----------------------------------------------------------------------
+
+Portability:
+
+  In  the  previous  beta,  a  single FT_System  object  was  used  to
+  encompass  all  low-level  operations like  thread  synchronisation,
+  memory management and i/o access. This has been greatly simplified:
+
+    - thread synchronisation  has been dropped, for  the simple reason
+      that the library  is already re-entrant, and that  if you really
+      need  two  threads accessing  the  same  FT_Library, you  should
+      really synchronize access to it yourself with a simple mutex.
+
+    - memory  management is  performed  through a  very simple  object
+      called "FT_Memory",  which really is a table  containing a table
+      of pointers to  functions like malloc, realloc and  free as well
+      as some user data (closure).
+
+    - resources have disappeared (they created more problems than they
+      solved), and  i/o management have  been simplified greatly  as a
+      result. Streams are defined through FT_Stream objects, which can
+      be either memory-based or disk-based.
+
+      Note that  each face  has its own  stream, which is  closed only
+      when  the  face object  is  destroyed.  Hence,  a function  like
+      TT_Flush_Face in  1.x cannot be directly  supported. However, if
+      you really need something like  this, you can easily tailor your
+      own streams  to achieve the same  feature at a  lower level (and
+      use FT_Open_Face instead of FT_New_Face to create the face).
+
+  See the file  "include/ftsystem.h" for more details, as  well as the
+  implementations found in "config/unix" and "config/ansi".
+
+
+----------------------------------------------------------------------
+
+Font Drivers:
+
+  The  Font Driver  interface has  been modified  in order  to support
+  extensions & versioning.
+
+
+  The  list of  the font  drivers that  are statically  linked  to the
+  library at compile time is  managed through a new configuration file
+  called `config/<platform>/ftmodule.h'.
+
+  This file is autogenerated when invoking `make modules'. This target
+  will parse  all sub-directories of 'src', looking  for a "module.mk"
+  rules file, used to describe the driver to the build system.
+
+  Hence, one  should call  `make modules' each  time a font  driver is
+  added or removed from the `src' directory.
+
+  Finally, this version provides a "pseudo-driver" in `src/sfnt'. This
+  driver doesn't  support font  files directly, but  provides services
+  used by  all TrueType-like font  drivers. Hence, its code  is shared
+  between  the TrueType  & OpenType  font formats,  and  possibly more
+  formats to come if we're lucky..
+
+
+----------------------------------------------------------------------
+
+Extensions support:
+
+  The extensions support is inspired by the one found in 1.x.
+
+  Now, each font driver has  its own "extension registry", which lists
+  which extensions  are available  for the font  faces managed  by the
+  driver.
+
+  Extension ids are  now strings, rather than 4-byte  tags, as this is
+  usually more readable..
+
+  Each extension has:
+    - some data, associated to each face object
+    - an interface (table of function pointers)
+
+  An extension  that is format-specific should  simply register itself
+  to the correct font driver. Here is some example code:
+
+   // Registering an extensions
+   //
+   FT_Error  FT_Init_XXXX_Extension( FT_Library  library )
+   {
+     FT_DriverInterface*  tt_driver;
+
+     driver = FT_Get_Driver( library, "truetype" );
+     if (!driver) return FT_Err_Unimplemented_Feature;
+
+     return FT_Register_Extension( driver, &extension_class );
+   }
+
+
+   // Implementing the extensions
+   //
+   FT_Error  FT_Proceed_Extension_XXX( FT_Face  face )
+   {
+     FT_XXX_Extension            ext;
+     FT_XXX_Extension_Interface  ext_interface;
+
+     ext = FT_Get_Extension( face, "extensionid", &ext_interface );
+     if (!ext) return error;
+
+     return ext_interface->do_it(ext);
+   }
+
+--- end of CHANGES ---
--- /dev/null
+++ b/docs/license.txt
@@ -1,0 +1,10 @@
+
+FreeType comes with two licenses from which you can choose the one which
+fits your needs best:
+
+  . The FreeType License, in file `docs/FTL.txt'.
+
+  . The GNU General Public License, in file `docs/GPL.txt'.
+
+The contributed PCF driver comes with a license similar to that of X Windows
+which is compatible to the above two licenses (see file src/pcf/readme).
--- /dev/null
+++ b/docs/readme.vms
@@ -1,0 +1,35 @@
+How to build the freetype2 library on VMS
+-----------------------------------------
+
+Just type one of the following depending on the type of external entries you
+want:
+
+  mms
+
+or
+
+  mms/macro=("COMP_FLAGS=/name=(as_is,short)")
+
+The library is avalaible in the directory
+
+  [.LIB]
+
+To compile applications using freetype2 you'll need to define the logical
+FREETYPE pointing to the directory
+
+  [.INCLUDE.FREETYPE]
+
+(i.e., if the directory in which this README.VMS file is located is
+$disk:[freetype] then define the logical with
+
+  define freetype $disk:[freetype.include.freetype]
+
+This version has been tested with Compaq C V6.2-006 on OpenVMS Alpha V7.2-1.
+
+
+  Any problems can be reported to
+
+    [email protected]
+
+
+      Jouk Jansen
--- /dev/null
+++ b/docs/todo
@@ -1,0 +1,10 @@
+Here is a list of items that need to be addressed in FreeType 2:
+
+* Add synthesized Unicode charmap processing to the CFF driver.
+
+* Fix a bug in the TrueType driver: linear horizontal advances of composites
+  are not returned properly.
+
+* Fix 64-bit issues (the code compiles and seems to work, but we've not
+  make a thorough check so some fonts could still core dump the library !!)
+
--- a/src/base/ftcalc.c
+++ b/src/base/ftcalc.c
@@ -190,7 +190,7 @@
       /* compute result directly */
       q = ( ((FT_Int64)a << 16) + (b >> 1)) / b;
 
-    return (FT_Long)( s < 0 ? -q : q );
+    return ( s < 0 ? -(FT_Long)q : (FT_Long)q );
   }