
HISTORY
-------
###
### 9/15/93
###
type1.library:

 No longer using the amishinfo.c code, as it was not relevant to the
 Amiga's usage of the library.  Code size dropped to about 70k.

 I have rewritten enough of the top layers so that characters are
 rendered only on request (and only if not already rendered), as
 opposed to having all the characters rendered before the first
 character is requested...

###
### 9/26/93
###
T1Manager:

 Now creates .font file and creates font directory

 There is now a page area below the install button. Currently,
 there 2 pages: Preview and Options.  There is a cycle/popup gadget
 to switch between the two.  Both pages currently only contain a
 built-in resizable image, just for testing purposes...

type1.library:

 Fixed enforcer hits: MyGetGlyphCode could return NULL glyph (default
 glyph) and rc == successful.  Was getting enforcer hits referencing
 glyphs->glyphmap, of course...

###
### 10/1/93
###
T1Manager:

 Added error checking to the T1_InstallFont routine - rewritten to be much
 more sane.  Still need to be able to communicate the type of error to the
 user...   But rewriting allows easy fix of font file generation...

type1.library

 Modified OtagObtainInfoA a bit to fix a serious problem wrt return code,
 which became important because T1Manager now pays attention to it...

###
### 10/2/93
###
T1Manager:

 Added Remove button gadget, which de-installs the currently selected font.
 Implementing this involved some structural changes in t1manager_backend.c.

###
### 10/17/93
###
T1Manager:

 Double-clicking on a font in the listview now causes a preview to be displayed
 in the preview box.  This is done by blitting into the window's rastport, after
 finding the position of the preview box.  Much still needs to be done, however.
 The problems are that:
   a) the SPACE character doesn't work!
   b) I need to do better y-axis bounds checking in the preview display.
   c) The size of the preview is currently fixed!
   d) The preview doesn't clear itself, and I need to handle refresh on resize, etc!
   e) I need to make sure the preview page is active before doing going any further
   f) Error checking when I AllocRaster()

type1.library:

 In amisht1funcs, I was only setting fontencoding if it was NULL.  Now, every time a
 font is opened, it is forcibly set to ISOLatin1Encoding.

###
### 10/18/93
###
type1.library:

 In amisht1funcs, I pretty much rewrote MyType1Glyphs.   It now handles spaces, and is
 generally cleaner (and perhaps faster).  Note that a space character is returned with
 a NULL bitmap pointer, but with correct position information (X0,Y0, X1,Y1), etc.
 I am observing that with Muriel and ParkHaven, the spaces seem to be too big.  It might
 be the case that the space is defined that way for these fonts, though... in fact, it
 does seem to be that way...

###
### 10/19/93
###
T1Manager:

 T1Manager was NOT creating .otag files correctly.  For otags that were not indirect, it
 was writing uninitialized data.  I discovered this because spytype1 showed that
 OT_SpecCount was always 0, and indeed, the otag file said it was 0.  This has also led
 to the observation that type1.library is returning IsFixed FALSE for Courier!?!  I still
 need to look into this.

type1.library:

 Solved the IsFixed problem.  The problem was that type1.library was setting IsFixed to
 1L (a 32bit TRUE), but T1Manager was only considering only the top 16 bits of it
 (16 bit BOOLEAN), and so thought it was false.  The solution was to make QueryFontLib
 return Booleans as 16bit booleans (unsigned shorts).

 While trying Courier in a shell, I observed a MAJOR problem.  All the characters are
 flushed left!  In hindsight, it is obvious that I need to account for the
 left Side Bearing by adding to the XOrigin fields...  maybe.

 It also seems that many of the characters touch each other... This is noticable with
 Courier more than with Dragonwick and friends...  This must also be related to the
 left and right Side Bearing problem.

###
### 10/20/93
###
type1.library:

 Solved the flushed left problem (the left SideBearing problem).  The solution was to
 subtract the correct leftsidebearing from the origins (X0, X1, and XOrigin). Things
 look much better now...

 The 'touch each other' problem does not happen with the way *I* render the characters
 (which is pretty much copied from the 'strikefont.c' sample code for bullet.library
 developer tools).  It does happen with diskfont.library, though.

T1Manager:

 I updated the font rendering code to account for the BlackLeft and BlackTop fields
 of the GlyphMap structure.  Of course, I don't use these fields, but I did this to be
 more 'correct'.

 T1Manager now saves the familyname in the .otag file.

###
### 11/28/93
###
type1.library:

 Compiled with SAS C 6.50.

 PROBLEM: Get an annoying linker problem (undefined symbol __XCEXIT)

 Now linked with pools.lib, so I don't think there are any more 3.0 dependencies.

 Now using ieeedoubbas.library instead of m68881 code, so the code can now be made
 to work on any Amiga.  It CAN be made to work, provided I can keep the library
 from crashing on the first call to the IEEEdoubbas library...

 Rewrote the makefiles.  smakefile uses Chris' library code; smakefile2 uses the
 SAS library code.

 Modified much of t1objects.c - mostly, I #ifdef'ed out many of the functions, and
 commented out several lines - the functions were involved in error handling.
 These functions need much more work...

 Need to be able to set the OT_SpaceWidth tag in the otag file.  I don't currently
 have much of an idea on how to do this correctly, though.  I noticed the problem
 because occasionally BltTemplate would choke on blitting 0 size templates, which
 is what the SPACE character is.  My rendering routine in T1Manager now hacks
 around the problem, but still...


###
### 11/29/93
###
type1.library:

 Miscellaneous eradication of compiler warnings.

 Marked some more variables as 'const'.

 More reworking of the makefiles.


###
### 12/5/93
###
type1.library:

 Fixed the linker problem (__XCEXIT).  The problem was that the math libraries
 were linking in the SAS default _CXFERR, which then brought in a variety of
 objects involving exit handling...  The solution was simply to define my own
 _CXFERR (in type1lib.c).

 Changed the includes a bit.  For example, instead of doing:
   #include <pragmas/exec_lib.h>
   extern struct ExecBase *SysBase;
   #include <clib/exec_protos.h>,
 I now do a much nicer,
   #include <proto/exec.h>


###
### 1/10/94
###
type1.library:

 Removed the OtagObtainInfo and OtagReleaseInfo entry points.  I can't remember
 why on earth I ever put them in, but they're gone now.

T1Manager:

 Instead of calling OtagObtainInfo, now calls ObtainInfo


###
### 1/14/94
###
T1Manager:

 Changed the way I display the preview image.  Instead of blitting directly
 into the windows's rastport onto the preview box, I am now using the
 myimagegclass BOOPSI image class that I got off of AmiNet.  First I
 render into a bitmap that I allocate which is the size of the gadget,
 and then I use a set() command to display that gadget.  The drawback is
 that you can't see each character being rendered, but rather see the
 whole thing at once when it is finished.  That's okay, though, since it
 still feels fast (to me, at least).


###
### 3/27/94
###
T1Manager:

 Reorganized the code for t1manager.c, making it much cleaner.  Also,
 I am now saving and loading the contents of the first cycle gadget (that
 selects the part of the fonts: assign).  Couldn't find an easy and clean
 way to save the default font source directory for installing fonts,
 though.

 Fixed many bugs in the rendering routine, by setting the
 drawing mode to COMPLEMENT (xor), and by inserting WaitBlit()'s.
 Now, what you see is really what type1.library is returning.


###
### 5/11/94
###
type1.library:

 Started incorporating changes to the base code (from X11R5 contrib)
 from HP (HPXLFD_enhancements) and changes in the X11R6 rasterizer.
 One of the benefits is that rotation and shearing now work.


###
### 6/20/94
###
type1.library:

 There was a problem (bug introduced) with the previous attempt to
 incorporate HP and X11R6 patches - so I started over again from my
 previous beta (with only the R6 patches).  Things now work again -
 and I can easily transform characters through a matrix, etc.  Things
 are set up so that I can soon try rotation, shearing, etc.

 I have eliminated the majority of SAS's warnings (function prototypes,
 const pointers and non-const pointers, etc).  There are only a few left
 (uninitialized auto variables, and xobject != struct xobject != path, etc.

 There is an abort function in type1interface.c called FatalError().  This
 is currently a stub (which actually just RETURNS!) - but it should call
 Alert(), or something - and probably just hang forever after that (returning
 would be dangerous).

 Code reorganization.


###
### 6/21/94
###
type1.library:

 Rotation and Shearing now work.


###
### 6/24/94
###
T1Manager:

 Now t1manager returns error messages for common preview/installation errors.


###
### 7/1/94 (After recovering from hard drive problems...)
###
T1Manager:

 The V39 dependency should be gone - things should now work on V37 again.
 Thanks go to Gregory Block for sending me some code I was too lazy to bother
 with...  He sent me V37 AllocBitMap and FreeBitMap code.


###
### 1/7/95
###
T1Manager:

 T1manager now asks type1.library for the internal name of the font (via
 OT_Spec3), and uses that instead of the filename.  Thus, installing
 COUR.pfb will create a font called Courier instead of COUR.

 I fixed the silly bug where installing into a directory with a '.' in
 the name caused problems (like System3.1:fonts, etc.).  Thanks to
 Greg Block for reporting this (many times).  I'd actually fixed this
 before, but lost my fix when I restored from a backup after the hard
 drive problems.  This whole business was obsoleted by the previous
 change, anyhow.

type1.library

 Now I create both .030 and .000 versions

 I modified some routines in token.c and scanfont.c so that literal
 names (like the FontName) get NULL-terminated.  This involved putting
 a save_ch_no_inc() in the LITERAL_NAME() function, along with
 modifying FindDictValue(): I allocate an additional byte of VM so
 this zero doesn't get overwritten (only for OBJ_NAME).

 I've removed the majority of the remaining SAS warnings, and also reduced
 the size of the library a couple hundred bytes.

###
### 1/9/95 - Release 1.0 (beta5)
###
T1Manager:

 Greg Block reported enforcer hits in T1manager on removing a font.
 Right he was.  The quick and not too dirty solution was to not
 bother with trying to delete possible bitmap files inside the
 bitmap directory.  If there aren't any bitmap files, the directory
 will successfully delete, and if there are, then it won't, but
 that won't affect the success of the removal.  Basically, I don't
 make bitmaps, and so I'm not worried about it right now.

###
### 2/5/95 - Release 1.1 (beta6)
###
type1.library:

 Brian Petersen (author of EqEd) had pointed out that I was forcing
 every font's encoding to ISOLatin1.  I changed this to use the
 builtin encoding for every font (the way the code originally was
 supposed to work).  Thus, the Symbol font now seems to work.

###
### 2/13/95 - Release 1.2 (beta7)
###
type1.library:

 Well, it seems that fonts that use StandardEncoding mess up on
 characters above 128.  So I made a change in scanfont.c:getEncoding()
 that forces fonts that ask for StandardEncoding to use ISOLatin1Encoding
 instead. 

###
### 2/27/95 - Release 1.3 (beta8)
###
type1.library:

 Changes to type1interface.c and amisht1funcs.c to allow changing
 the pointsize, rotation, etc. without closing and reopening the
 engine.  Before, if one asked for a character at some point size,
 then changed the point size, the second request was ignored, and
 the original setting was used.  Brian Petersen requested this for
 EqEd - he didn't want to keep rescanning the font everytime he
 wanted a character of a different size.

###
### 4/4/95 - Release 1.4 (beta9)
###
type1.library:

 Apparently something is using memory before initializing it...
 Brian Peterson found this, and suggested the quick fix as
 calling CreatePool with MEMF_CLEAR...  This is now done,
 until I have time to figure out what exactly is doing this.
 I won't have such time for a few months, though...

###
### May 21st, 1998 - Release 1.5 (Jamie Keir)
###
type1.library:

 Fixed a bug with rotations > 180° (would previously crash)
 
t1manager:

 Added Drag-and-Drop from workbench to install many fonts at once.
 This could already be done using the file requester, but some
 people (i.e. me) are never happy.
 
 Made the fontlist multiselect to allow removal of multiple fonts
 at once. Added some (basic) confirmation of this (Remove this one,
 skip this one, remove all, cancel)
 
 Made 'Remove' function try and remove directory, *.font and *.otag
 regardless of failures - I was left with some *.otag fonts lying
 around with no *.font file for some reason, and they still appeared
 in the available fonts list.
 
