Changes between freetype.05u and freetype.05v
(made by Werner)

   - HOWTO checked/corrected/reformatted.
   - gfs_dos.c:overflow error removed;screen will be cleared if you zoom out.
   - view.c: some cleanup.
     preparing for composite glyphs.
     Print_XY activated again.
   - zoom.c: now the whole bitmap is displayed (again).
   - /msdos/ft-conf.h, /os2/ft-conf.h: support for getopt.h added.
   - gpm_os2.c: latest changes from Eric applied.
   - tttables.[ch]: cleanup.

(made by Robert)
 
   - ttfile2.c Seek to the end of file is ok.
   - initialise stream_rec->error.

Changes between freetype.05s and freetype.05u
(made by Werner)

  - updated os2 makefiles for emx;
  - reformatted gpm_os2;
  - rewrote INSTALL in the c directory.
  - updated readme.1st

  - I replaced all occurrences of fprintf with printf: under (standard) DOS
    you can't pipe stderr to a file.

  - fdebug.c: replaced __EMX__ with HAVE_CONIO_H

  - gdriver.h, gevents.h, gmain.c, timer.c: reformatted

  - gwin_x11.c: reformatted.

            not having USE_XIMAGE works again.

            Header variable now will print the messages into the window
            title (again).

            pressing a modifier key no longer causes a redraw event.

            removed unnecessary XFlush() calls.

            if you reduce the size of the glyph the screen will be cleared
            properly.

            overflow errors removed if you magnify to large values.

   - lint.c: reformatted.

        removed unnecessary variables.

   - view.c: Header variable will show some info in the window title (under X).

   - zoom.c: We have cmap support again!

        As before, two command switches -p and -e select the platform and
        encoding ID.

        getopt() introduced (again) for command line option handling.

        increasing and decreasing glyph number fixed (again).

        usage moved to usage().

   - further replacing fprintf calls with printf.

   - Makefiles will now don't link lint with the graphics files.


   - removed problems with getopt.h (hopefully).

(made by Miguel)

   - amiga Makefiles updated

(made by Robert)
  
   - add prototypes for ClearData() and Clear_Buff().
   - declare them static.
   - void main -> int main at various places.
   - reformatting view.c and zoom.c

(made by Peak)

   - Get debugger working again.
   - wrap all headers with extern "C" for C++.

(made by DavidT)

   - reduced the size of the magnifying window (gpm_os2.c)
   - replaced INSTALL with much better HOWTO.  

Changes between freetype.05s and freetype.05t
(made by Werner)

  - Makefiles and Doku cleanups
  - various compiler warnings removed

(made by Joerg)

  - IBM VisualAge C++ on OS/2 Warp support updated

(made by Miguel)

  - Graphics driver for Amiga (gw_amiga.c)

(made by Eric Olsen)

  - Support for Presentation Manager window on OS/2
 
Changes between freetype.05r and freetype.05s
(made by David)

  - corrected the rasterizer :

    drop-out control occurs now after all the spans of the current
	scan-line have been drawn ( fixes the 'd' of Times at size 8 and 9 )

  - timer now works

  - changed the makefiles Emx under Dos and OS/2
  - added a 'makeemx.cmd' and 'makeemx.bat' for OS/2 and Dos
    (needs GNU make)

  - rewrote some docs..

Changes between freetype.05q and freetype.05r
(made by Werner)

- autoconf improvements

- emx Makefiles updated 

(made by David)

- debugged the glyph loader and the ttcalc component

- added full font viewing to 'view' as well as scaling and gray-levels.
  Now works well.. Try it !!
  ( Warning : locks up on certain fonts at very small sizes < 7 ).

- added a very simple debugger called 'fdebug'
  see note below on interpreter compilation.

- added a simple debugger shell within the interpreter. Compiled only when
  the DEBUG maco is defined ( required to compile fdebug )

- added a parameter to Load_TrueType_Glyph named 'allow_components'.
  if TRUE, enables the loading of composite glyphs; if FALSE, the
  load will always fail on composites.

  ( This was needed for the viewer, as composite glyphs hinting doesn't
    work yet ).

  Of course all test programs were modified to work well with these
  changes, with the exception of 'timer' ( on the todo list.. )

- enjoy the viewer, it's really nice :-) !!

  NOTE : There seem to be very, very, light differences with the Pascal
         viewer in the rendered glyphs. I'll take a deeper look at that
         problem with Pavel's debugger.

  - DavidT

Changes between freetype.05p and freetype.05q
(made by Werner and Joerg)

This snapshot only corrects some bugs (for ttfile2.c and gfs_dos.c); its
main purpose is to provide a new directory structure together with autoconf
support for UNIX systems.

  - The new directory layout now has the `arch' subtree (for the `c' and
    `c/lib' directories) which contains directories for various non-UNIX
    operating systems.

    The main idea is to have a file called `ft-conf.h' for each
    architecture/operating system which defines/undefines various macros
    similar to the autoconf procedure. You then explicitly select the
    directory where this file resides with the -I compiler switch so that
    `#include "ft-conf.h"' succeeds. ft-conf.h will be included by
    ttconfig.h which still contains the items which cannot configured
    automatically.

    Finally, you say `make', `make clean' etc. in the specific architecture
    subdirectory to build the whole library and the test programs.
    
    Please note that only MSDOS and Linux has been tested; the other
    makefiles/headers are _not_ ready. I ask you to fill this up;
    additionally please check whether configure runs well on other UNIX
    platforms. I recommend to use the makefile.emx makefiles as a reference.

    The temporary .ifnames files contain the #defines not yet included in
    the makefiles; please check this too.

  - I changed all directory names to lowercase; additionally I converted
    most of the filenames to 8.3 and lowercase too (with some traditional
    exceptions).


Changes between freetype.005o and freetype.005p
(made by DavidT and Werner)

There have been so many changes that I have written distinct sections.
The general ideas are :

  - Introduced support for re-entrancy through the use of macros.
    This helps in maintaining readability while keeping only one
    source code.

  - I created a 'ttmutex' component, which current implementation
    is empty. The system-specific bodies will have to be placed
    in the /arc tree. They're only needed if you plan to use the
    library with several threads ( not several fonts ).

  - Also created a 'ttexec' component, to define a new structure
    called an 'execution context'. A context holds most of the
    information relating to code execution ( coderange table, code
    base, current IP, range, error code, etc .. ) that were
    previously defined in an instance record. Note however that
    all context arrays are still allocated in the instance segment
    in TT_Load_Instance_Table for now. This, in order to minimize
    the changes ( hey, I'm a limited being.. ).

    In the future, itwould probably be a good idea to move all
    FreeType font object declaration and management in a single
    component like ttexec, while only leaving the _TrueType_ table
    definitions and loaders in tttables.

-----------------------------------------------------------------------

- Changed the type of TT_Stream from (Long) to (void*) in freetype.h
  A TT_Stream is now a pointer to a structure whose type is defined
  within ttfile.c ( which may be system-dependent if you choose to
  implement your own ttfile.c ).


- Changed tterror.h. The global error variable 'Error' is only used
  with the thread-safe implementation.

  Added two trace macros, called DebugTrace1 and DebugTrace2 to
  get rid of these ugly '#ifdef DEBUG' in tttables.c

  Also added two Panic macros.


- Added an 'error' variable to the instance record type. For obvious
  reasons :)


- Added a 'stream' variable to the instance record type. This is a
  necessity for re-entrant builds, as several threads could try to access
  the same file at different locations concurrently. Each instance thus
  needs its own stream, that is created by replicated the resident stream.

  Note that in the thread-safe implementation,the instance stream is just
  a copy of the resident stream, which points to the file's unique stream
  structure in ttfile.c


- Changed ttfile.h and ttfile.c to support re-entrancy with the
  help of macros. Supports also several opened streams.
  
  The stream structure contains a pointer to an error variable, which may 
  turn to be either the global Error variable ( thread-safe ), a local error 
  variable used by the resident loader, or the instance error variable 
  ( re-entrant ). This is managed of course seamlessly by macros.

  It also contains the font file's pathname in re-entrant builds. This
  is due to the fact that we need to duplicate streams for each instance
  ( thread ). Unfortunately, it seems that the ANSI libc doesn't provide
  a function to duplicate FILE structures conviently. We thus simply
  re-open the file with its pathname. That's ugly, but portable..
  The Duplication function is called TT_Duplicate_File and is only
  available to re-entrant builds.
  
  Note that the access locking functions are available only to the
  thread-safe implementation.

  BY THE WAY : The design of ttfile isn't top-notch, far from it,
               and we'll probably change it later. Fortunately, this
               is now _much_ easier.

------------------------------------------------------------------------

- Changed tttables.c to support the new ttfile component ( mainly 
  re-entrancy ). A lot of macros are produced at the beginning of the
  file, but the source is now easier to read and maintain and fully
  support re-entrancy.

  I also re-introduced the ALLOC macros, that will help us later to
  optimize or get rid of the Font Pool.

  We may need to write quickly a 'FreeType extension how-to' to explain
  how to add new table loader in tttables.c, with respect to the macro
  conventions.

------------------------------------------------------------------------

- Changed the interpreter to support indirect indexing ( which can be
  used by re-entrant and thread-safe implementation ). The resulting code
  is much smaller, to the contrary of tttables.c. This may come from the
  fact that we have use _lot_ of direct indexs, which require four bytes-
  addresses each. Performance hasn't been compared.

  The interpreter has been changed to support the new execution context,
  only the indirect version works now ( but ttconfig.h has been modified
  accordingly ).

------------------------------------------------------------------------

- Modified zoom to support the changes. Also found a nasty bug in the
  glyph loader, that affected both simple and composite glyphs by trashing
  the instance table. I'm very surprised that zoom worked most of the
  time in 05n.

- Added a test program to test the interpreter.Currently load and runs
  the font and CVT programs without problems. I'm now adding glyph
  instruction decoding..

------------------------------------------------------------------------

- added a small ttdebug component for debugging. Please Pavel, replace
  this junk with your own port from the Pascal version..

------------------------------------------------------------------------

- Finally, included Werner's latest changes that I had not done myself..


NOTE : I didn't touch the makefiles, please follow this compilation order :

  in /C/lib

    gcc -c -ansi -Wall -O2 for the following files :

     tterror.c  ttcalc.c  ttmemory.c  ttdebug.c  ttfile.c   \
     ttfile.c   ttindex.c ttins2.c    ttmutex.o  ttraster.c \
     tttables.c

  ttfile2.c is a port of Joerg's memomry-mapping ttfile. I don't
  know if it works, haven't test it.

  in /C

    gmain.c gdriver_of_your_choice.c

 then compile zoom and test..


Changes between freetype.005n and freetype.005o
(made by DavidP)

o major changes to ttins2.c. Should work now.

(made by Joerg)

o mmap support (ttfmap.c)

(made by DavidT)

o Pascal changes

(made by Ollie)

o increased Font_Buffer to 256k

(made by Robert)

 deleted xzoom.{c,h} arm.h

Changes between freetype.005m and freetype.005n
(made by DavidP)

o reformatted ttins.c according to our coding standards

o new ttins2.c translated from Pascal source

(made by Werner)

o   copyright update

o   some obsolete code removed

o   Alloc() will now return FAILURE in case of failure if DEBUG is defined.

o   printf() statements replaced with fprintf( stderr, ... )

(made by Ollie)

o   cmap overflow fix

(made by David)

ttrastr2.c

- DEBUG3 renamed to DEBUG_RASTER

- rollbacked to simple Line_xxx functions. Extra accuracy is not
  needed anymore with variable precision. ( saves about 1 Kb code !! )

- changes to the Render functions.
  Note that *now*, the target pixmap must have its 'width' field equal to
  its 'cols' field ( previously, it ought to be cols*2 ).

- The Init_rasterizer takes the total length of the gray_lines buffer,
  in bytes now ( and not its half, or its quarter ). Please change the
  test programs so that they give bitmap.width and bitmap.cols the same
  value when rendering to grayscales mode.

(made by Robert)

- renamed ttrastr2 to ttraster. Orgigional rasterizer is gone.

- replaced usage of TT_PVectable with  TT_PCoordinates 

ttcalc.c

- Got rid of the Obsolete DO16 and DO32 functions/macros

- The definition of ROUND_F26DOT6 is rather hacked :

#define ROUND_F26DOT6( x )     ( ( ( (Int)(x) + ( (x) > -32 ? 32 : -32 ) ) \
                                 >> 6 ) << 6 )

  what about

#define ROUND_F26DOT6( x )    ( (x) >= 0 ?  ( ( (x)+32) & -64) : \
                                           -( (-(x)+32) & -64) )
  ???


- Added MulDiv_Round

- Much clean up of the vectors routines ( that are now located
  within the interpreter's source ).


(made by Miguel)

- amiga driver

Changes between freetype.005l and freetype.005m
(made by Werner)

o   zoom has now two more options (I didn't put this into timer because
    IMHO it makes no sense to have this for testing speed):

        -p <platformID>
        -e <encodingID>

    e.g. for MS fonts you usually have p = 3 and e = 1. You must specify
    both (otherwise glyph indices are used to move around in the font).

    I've put the current code number into the window title for X Windows;
    please do something similar for the other platforms.

o   zoom.c now uses getopt() to parse the command line options. Please check
    whether all platforms have this; if not it may be necessary to put
    a getopt() implementation into the FreeType distribution.

o   I introduced a function increase() for walking through the font. There
    was a minor bug: you could move beyond the end of the glyph index if
    you pressed the l key.

o   the usage description has been moved into usage().

o       we have a window title for X again

o       the CMAP bug is corrected

o       the CVT table will now be loaded only optionally

o       to load some CJK fonts I had to increase the Pool size

o       change the Makefiles back for not using efence


Changes between freetype.005k and freetype.005l
(made by Robert)

- pts have type  TT_Vector, not TT_PVecTable (Load_Simple_Glyph())

- hacked Load_Simple_Glyph() to prevent crash when loading composite glyphs

(made by Peak)

1) Transform_Glyph moved tttables.c (and renamed to TT_Transform_Glyph)
2) fixes in composite glyph loading
3) fix for ROUND_F26DOT6
4) related changes to xzoom.c

ad 1)
(TT_)Transform_Glyph now operates on data in instance->pts, it ignores the
transformation matrix (I am too lazy to delete the parameter :> ), and it
only resizes the glyph according to instance->scale1/2
Round-to-grid code was removed because it was a bad thing. Rounding should
be done on transformed coordinates--right?

ad 2)
there was a typo in 2x2 transformation matrix loading and a strange bug in
offset handling (strange because it used to work this way???)

ad 3)
it is supposed to round anything within <-31, 31> to 0, isn't it?

(made by  David T)

- new rasterizer: ttrastr2.c,ttrastr2.h

(made by  Werner)

- fixes to get freetype compiled under DOS with emx.

Changes between freetype.005j and freetype.005k
(made by  LHO Li-Da and Werner)

- some fonts handle the end of the glyph index in a non-standard way 
  (tttables.c)

(made by Robert)

- several buffer overflows fixed (tttables.c)

Changes between freetype.005i and freetype.005j
(made by Werner)

o   some prototypes added to various .c and .h files.

o   TT_select_CMap now returns NULL instead of -1 in case of failure.

o   documentation for functions added/cleaned up .

o   definition of NULL moved to tttypes.h .

o   FALSE and TRUE replaced with FAILURE and SUCCESS where appropriate.

o   the `Result' variable often used in tttable has been removed (except
    one place)---I don't see any usage in it.


Changes between freetype.005h and freetype.005i
(made by DavidP)

- improved Load_Simple_Glyph() (uncommented for now)

- minor cleanups and bug-fixes

(made by Miguel)

- change ( & -> && , | -> ||) in tttables.c

(made by Werner)

- reformatting of ttindex.c   ttindex.h   tttables.c  tttables.h
  and minor cleanups ( e.g. sizeof(Table))

(made by Robert)

- xzoom.c: redraws only when needed

Changes between freetype.005g and freetype.005h
(made by DavidP)

-minor fixes to composite glyphs

(made by Peak)

- MulDiv was sometimes returning negativ values

(made by Robert)

- new file xzoom.c 

Changes between freetype.005f and freetype.005g
(made by DavidP)

- HUGE changes to get C got in par with the Pascal one.

(made by DavidT)

- Lots of Pascal changes. see Pas/lib/changes.txt

Changes between freetype.005e and freetype.005f
(made by David)

- added a 'hint' program to automatically call all glyphs' instruction streams
  ( helpful for debugging ).

- added instruction hinting to 'zoom2'. It does work most of the time, when
  it does not blow away, but it also generates weird 'things'.
  ( use key 'z' to toggle it ).

- corrected a bug in the new drop-out control ( yes, really !! ). Not a
  big change ( about four lines ). C correction included in the diff
  ( actually, the only C part of it ). Note that the Pascal code handles
  the two 'smart' modes that are not in the C one yet..

- various little bugfixes in the interpreter. Look for 'changes.txt' in the
  Pas/lib directory for more details.

I
(made by Peak)

I added a new function Transform_Glyph to ttraster.c. It gets a glyph and
a transformation matrix (TGlyphTransform) and initializes data in
TGlyphRecord. However, it DOES NOT allocate space for x/yCoord etc. (I made
the caller responsible for all allocation/deallocation for now)
Instead of adding simple_glyph flag, I set HAVE_AN_2X2 on subglyphs and
Transform_Glyph uses this bit to decide whether to compute the
transformation or not. (more sophisticated optimization using other--more
specific--bits is possible)
Zoom and timer are changed to use Transform_Glyph and they seem to work ;)

Changes between freetype.005d and freetype.005e
(made by Miguel)

- big endian fix (Int szp -> Short szp in Load_Simple_Glyph())

(made by Peak)

Tonight, I played with the latest version of Freetype, torturing it with
fonts taken from Czech Windoze95 ;) It worked fine with times.ttf,
reported a lot of failures with arial.ttf and CRASHED with cour.ttf!
1) cour.ttf: too many contours in some glyphs, I increased the size of B[]
   in ConvertRaster (zoom.c, timer.c) from 64 to 128 (this value is
   used in Pascal version)
2) arial.ttf: signed vs unsigned problem in Load_TrueType_Locations
   (tttables.c) causing negative glyph offsets, I changed the type of locs
   from Short * to UShort *
3) to help myself, I added -v flag to timer.c; when -v is given to timer,
   it prints numbers of glyphs it renders and then says ok or says what was
   wrong (load/render); I submit it to you because it seems to be a good
   tool for tracking bugs


Changes between freetype.005c and freetype.005d
(made by David)

- corrected the rasterizer, there was a bug in the drop-out control
  also, modified some internal structures to speed things a tiny bit;
  and make a clearer code.

 ( changed both Pascal and C version )

The following are Pascal only :

- various bugfixes in the interpreter

- added a 'zoom2' to view magnified glyphs and their outlines at small
  pointsizes. two new keys were defined :

  - 't' : toggle outline display on/off
  - 'r' : toggle second pass ( horizontal sweep ) for fine drop-out control

  NOTE that I didn't include the version with instruction decoding there
  ( under serious rework )

- added a 'test' program to check font loading and programs execution
 
- added a 'timer' program that preloads all glyphs before rendering them
  in memory, to profile performance

Changes between freetype.005b and freetype.005c
(made by peak)

- fix XIMAGE code for window width not divisible by scanline_pad (win_x11.c)

- coding style cleanups (win_x11.c)

(made by DavidP)

- test font (freetype.ttf)

- TCMap0Table fixed (tttables.h)

(made by Robert)

- new errormsg added (tterror.h)

Changes between freetype.005a and freetype.005b
(made by Werner)

- ROUND_F26DOT6() macro added.

- MUL_FIXED() macro added. This will multiply a 32bit integer with a 16.16
  fixed integer, returning a 32bit integer. No overflow testing...

- Tell_Font_File() function added.

- TStack structure removed. Replaced by TGlyphScale structure which is now
  part of TGlyph.

- temp_glyph array removed.

- Load_Glyph now supports composite glyphs. Please test it. I had no time
  to do it thoroughly. David: I did it recursively :-) The code is not
  very well documented, but I hope that it is clearly programmed and
  self explaining. I assume that it can be made faster, you are welcome
  to do this.

- The very reason for the TGlyphScale structure is the ROUND_XY_TO_GRID flag
  of a composite glyph. Because rounding to the nearest grid line can only
  be applied while scaling for the output device we have to collect all
  scaling data in an additional structure array. Only the highest level's
  ROUND_XY_TO_GRID flag will be taken into account (maybe this behaviour
  should be changed to accept lower level's ROUND_XY_TO_GRID too provided
  that no scaling occurs. Please comment).

- Some additional cosmetic changes and formatting issues.

(made by peak)

- free XIMAGE code from 8-bit dependancy (win_x11.c)

(made by robert)

- removed superflous or operations in Draw_Gray_Horizontal_Spans() (ttraster.c)

- tttables.h: new structs THorizontalHeader,TLongHorMetric,TResidentLeading,
              TCodeRange, TDefRecord,TCallRecord,TInstanceRecord
              taken from  tttables.pas.
 
(made by David Petersen)

- fix typos in ttraster.c (trace_left.n = 0;    // was trace_right.n = 0;)

- fix Load_TrueType_CMap()

Changes between freetype.004g and freetype.005a
(made by David)

- new Pascal code (see Pas/lib/changes.txt for details)

(made by Peak)

- X11 grayscale code XIMAGE support

(made by Miquel)

- Amiga patches (Makefile updates and grayscale support)

(made by Werner)

o   some slight formatting stuff :-)

o   added conversion macros like INT_TO_F26DOT6. I think this is better than
    explicitly multiplying by 64 etc.

o   added a READ_F2Dot14 macro just for clearness.

o   added macros for composite glyph flags.

o   added MIN() and MAX() macros.

o   Load_TrueType_Glyph() no longer needs malloc(). Release_TrueType_Glyph()
    has been removed consequently.

o   added subroutine Load_Simple_Glyph() as a preparation for extracting
    composite glyphs. I simply split Load_TrueType_Glyph into smaller
    pieces. Checks for file-read success added.

o   as a `working space' I allocate two TGlyph structures. The first one
    (max_glyph) has maximal size since we don't know a priori the number of
    points and contours of a composite glyph. The second one (temp_glyph)
    will be used by Load_Simple_Glyph() if necessary to load a subglyph.
    Afterwards the scaling parameters and the offsets will be applied while
    appending the subglyph to the composite glyph (not implemented yet).
    These two global variables have to be made thread-safe later.

o   I removed the TPointRec structure. If we apply scaling we need TPoint
    structures instead to hold the scaled point coordinates. zoom, timer,
    and the library have been adapted accordingly.

o   The TZone and TTZone stuff has been removed. No routine uses it (I even
    checked the Pascal version).

o   I also removed the glyphNum member of the TPoint structure. I can't find
    a reason for its existence, so I played God :-)

o   to keep track of the offsets and scaling values of the various depth
    levels while decomposing a composite character I created a new
    structure, TStack. It will get quite complicated if you have more than
    one depth level since the new scaling values and offsets must be applied
    to the one of the previous level. This stuff is incomplete yet and
    commented out.

(made by Robert)

- extern "C" {}  added to freetype.h

- started converting the Pascal changes back to C (very incomplete yet)
 
Changes between freetype.004f and freetype.004g
(made by David)

- major dokumentation updates

(made by Mark)

1. C/lib/ttraster.c: The gcc -pedantic flag on Unix reports a minor assignment
                     conflict.

2. C/lib/ttfile.c: The SEEK_* macros are in <unistd.h> in SunOS 4.1.*.

3. C/lib/ttconfig.h: The checks to determine if LOOSE_ACCESS should be set or
                     not had to be rearranged a little to work right.

5. C/timer.c: SunOS 4.1.* in particular, does not define CLOCKS_PER_SEC.
              However, <sys/param.h> has the equivalent HZ macro defined.

(made by Robert)

- changed ttflib.a to libttf.a in all makefiles.

Changes between freetype.004e and freetype.004f
(made by Robert)

- minor dokumentation updates

- removed Pas.new directory for Alpha release 3.
  Will reappear in freetype.005a.

(made by Werner)

- definition of TRUE and FALSE moved from ttraster.c to tttypes.h

- a new, simple Load_TrueType_Glyph() routine which replaces
  Load_TrueType_Glyphs(). Now the glyphs won't be loaded all at once but
  rather on demand only. zoom and glyph has been modified to use this
  function. Still no support for CMap tables.

- Release_TrueType_Glyph() added. This and the former function use malloc()
  and free() currently. Should be changed until the new memory management
  is out.

- the global variable `glyphs' no longer exists.

- all platform dependent preprocessor definitions which were only introduced
  to handle X11 have been replaced with the `X11' symbol.

- win_x11.c: under X11 you can now see the current index in the window
  title. Something has happened with the formatting of this file. I
  corrected it. Additionally all tabs have been removed.

- some other minor changes and formatting stuff.

Changes between freetype.004d and freetype.004e
(made by Primoz):

- HPUX Makefiles

(made by David):

- big Pascal changes ( see Pas.new/lib/changes.txt)
- Docs/layout.txt added

Changes between freetype.004c and freetype.004d
(made by Joerg):

-new function char *Tags_to_String( Long tag, char * str )

(made by Werner):

- warnings from -ansi -pedantic has been removed
- some further code cleanup
- will now compile under SunOS 5.4 (Solaris) too; I
  provided two new makefiles.

(made by Miguel):

-amiga support

(made by Robert):

- grayscale support for X11

Changes between freetype.004b and freetype.004c
(made by Joerg):

- adds support for IBM VisualAge C++
- adds support for AIX 4.1
- adds definitions for the TTF table tags (file tttags.h)
- changes tttables.h and tttables.c to use the tag definitions
- modifies LookUp_TrueType_Table to perform a binary search over the tab

(made by Werner):

- two new files (ttindex.c, ttindex.h) for character code to glyph index
  handling
- missing code for TTF format 4 and 6 added.

(made by Robert):

- add -pedantic -ansi to CFLAGS in makefile.gcc
- fix a few gcc warnings (lots of warnings still remain)

Changes between freetype.004a and freetype.004b
(made by Miguel and Robert):

- better support for big endian cpus (ttfile.c,tttable.c) 
- use FT_BYTE_ORDER instead of LITTLE_ENDIAN (several files)
- fix typo in ttfile.h
- use int main() (zoom.c, timer.c)

Changes between freetype.004 and freetype.004a
(made by Werner):

- Doku and commentary cleanups.

Changes between freetype.004 and freetype.003
(made by David):

- Added an ALLOC macro to 'ttmemory.h'. This allows us to allocate
  from the Font Pool without having to use the infamous (void**)&
  typecast. As the 'Alloc' function still exists, we are not obliged
  to change all the code once.

  By the way, the new code will look more like the Pascal one :)

- Added the READ_xxx macros to 'ttfile.h'. We can now get rid of
  Do16 etc. Now I have to do that to the Pascal code.

- Added a main configuration file called 'ttconfig.h' included
  by 'tttypes.h' (and thus by all library components). Please add
  all #defines here, even development ones, with a comment on their
  function.

- Modified 'tttables.c' to make it use the new ALLOC and READ_xxx
  macros. This component should now be fully portable.

- Added a file "header.h" to the /C/lib directory. This file contains
  templates of headers to use in the source. There is one template
  for component interface/body description , as well as two templates
  for function definitions.

- Added headers to all files (I think) and some functions.

- Changed FS_Graphics_640x480x16  to FS_Graphics_Mono and
          FS_Graphics_320x200x256 to FS_Graphics_Gray where needed.

  These names were really too PC-ish ;-)

- Added "raster.doc" to the Docs directory which will evolve into a
  documentation of the rasterizer eventually.

- Started with a license, copied from the MIDAS Sound System's one.
  Freeware, under the copyright of the authors (David Turner,
  Robert Wilhelm, Werner Lemberg). Still not definite.

- Changed very few things in Pas/Lib/TTIns.Pas

  I would accept a LGPL but want to read it thoroughly before doing this.
  For now, we just keep the copyright...

---------------------------------------------------------------------

Changes between freetype.003w and freetype.003 (made by Werner):

- Makefile fixes and additions.

- Added CMap0 and CMap2 loading to the C version of TTTables.
  The Pascal version handles CMap0 and CMap4 but Werner's version
  seems very promising. We'll need to synchronize these.

- Added keys 0 and 9 for going to next and previous 100th glyph :)
  for easy navigation in CJK fonts.

- FreeType.txt and History.txt moved to the Docs directory.

- Added an 'Alpha Release 2.004' to FreeType.txt. Though I don't
  think we should get too maniac on upgrade numbers in this text :)

- Also added the mailing list address.

---------------------------------------------------------------------

Changes between freetype.003 and freetype.001:

- Linux Makefile changes for new directory layout
- various minor typos fixed
- X11 XImage support 
- X11 XSetWMProperties call added
- emx support
  

---------------------------------------------------------------------

Changes between freetype.001 and the Alpha Release 2 :

- Directory structure has evolved as suggested by Werner. The makefile.gcc
  must be changed... I introduced a debug/ directory to host the debugger
  (which is still yet to come in the C version).

- The raster component is now called "ttraster" and supports grayscaling.
  However, its interface should evolve again.. (note that its spec is still
  freetype-independent).

- 'ttdisp' has disappeared, we now use two header files "fullscr.h" or
  "win_x11.h" to define full-screen or windowed display, and several bodies
  as :

   fs_os2  : Full Screen OS/2 (32bit, gcc)
   fs_dos  : Full Screen Dos  (16bit, Borland C 3.1)
   win_x11 : Windowed X display

  I could not test win_x11 properly (hi Robert), but it didn't
  change much from previous work...

  Now, every file beginning with 'tt' is only related to the engine
  internals, not the test suite...

- The test programs now accept the '-g' option for grayscaling support. Note
  that grayscaling display is not implemented in win_x11 yet. Gray scaling
  works with 8bit pixmaps, and uses a palette of 5 gray levels. Default
  palette is taken from the standard VGA gray colors 16 to 31.

  They have been renamed to 'timer' and 'zoom'. If this conflicts
  with usual shell commands or utilities, let me know!

- As procedural and event based programming are quite different concepts, it
  probably would be a good idea to provide two different test suites (full
  screen and windowed). I could do a windowed OS/2 suite myself... the
  #ifdef's are becoming scary and I don't like the trick of using two cross
  referenced functions in disp_x11.c and zoom.c to handle events... Robert,
  could you look for this please??

  The windowed (X11) compilation of 'zoom' and 'timer' could not be
  tested on my system. Please check it and report correctives!!

- Parts of the debugger can be found in Pas/debug, it is just a
  very small thing now, but it introduces a new component 'ttdebug'
  that  should  not  be  included  in the final release but is very
  useful for displaying opcodes, stacks, etc.

  I am using the Turbo Vision class library (yes, that's object Pascal) to
  get a fullscreen text debugger. If you know of some good similar C
  library, let me know! (by good I mean: simple, efficient and easily
  obtainable, Motif does not fit in any of these categories). I only hope
  that we won't need this debugger a lot :) (let's be optimistic)...

- The Pascal source code grayscaling code is late. The C code will
  be the raster reference for at least freetype.001 .

- Werner, you should find my very light changes to 'tttables.c' (mainly the
  loading of the character mapping tables and some more structs
  definitions). You can start with them and adapt them freely...
