V3.02 (August 22, 2000)
=======================


Bug fixes and enhancements
==========================

- Added state checks to the text functions (p_text.c).

- Refined the error handling in PDF_open_image (p_basic.c, p_image.c).

- Deactivated the default prefix entry in the UPR file because it could
  cause confusion with the ActiveX edition (pdflib.upr).

- Multi-strip TIFF images didn't work correctly when placed with a scaling
  factor != 1 (p_image.c).

- Implements a macro which aids in overcoming differences in libpng
  versions when it comes to accessing the setjmp buffer (p_png.c).

- Fine-tuned the OS/2 test in p_config.h.

- Allow negative box width and height in PDF_show_boxed() (p_text.c).

- Added the debug version of the C runtime library to the debug configuration
  of the MSVC test and pdflib projects (test/test.dsp, pdflib/pdflib.dsp).

- Under certain circumstances the GIF reader didn't work correctly due to
  missing variable initialization (p_gif.c).

- pdftest.c couldn't be compiled in strict ANSI mode by some compilers due to
  two misplaced statements (which actually only serve as warning preventers)
  (pdftest.c).

- Added an #if conditional because the Intel version of the Metrowerks compiler
  doesn't have setmode() (p_basic.c).

- PDF_open_fp() resulted in a crash or PDFlib exception because the file pointer
  got overwritten due to wrong initialization order (p_basic.c).


Build process, distribution, and platform support
=================================================

- Adds more AS/400 relevant information (doc/readme_ebcdic.txt).

- Includes the files in the fonts directory in the binary distributions.

- Extended the CodeWarrior project file for dual use on both Mac and
  Windows, and updated to CodeWarrior Pro 5 (PDFlib.mcp).

- Fine-tuned support for OS/390 (p_config.h, p_util.c).

- Removed an obsolete file (pdflib/makefile.bcc).


Bindings
========

- C:
  - PDF_delete() was missing from two C samples (hello.c, image.c) and
    a demo client (clients/text2pdf.c);

- Java:
  - No longer calls PDF_delete() in the Java exception generating mechanism
    since this may lead to multiple calls due to interference with PDFlib's
    finalize() method. This should fix long-standing problems with
    exceptions in some Java environments, especially Servlet engines
    (pdflib_java.c).

  - Adds a classFinalize() method (pdflib.java).

  - Adds throws clauses to all PDFlib Java and native methods. This change
    required the addition of an import statement (pdflib.java).

  - Adds throws clauses to all examples.

  - Renames the Java servlet example to PDFlibServlet.java.

  - Adds notes on using PDFlib with IBM WebSphere Application server
    and Allaire JRun (bind/java/readme.txt).


Documentation
=============

- Marks PDF_endpath() as deprecated (pdflib.h).

- Replaced the order form with an interactive version
  (doc/PDFlib-purchase-order.pdf).


V3.01 (July 1, 2000)
=====================

New features and API
====================

This release is binary-compatible to 3.0, but adds a few new features
which are accessible through additional parameters to existing functions:

- Implements the "fontencoding" parameter for retrieving the encoding of the
  current font (p_basic.c, p_font.c).

- Implements "blind" mode in PDF_show_boxed() in order to check whether or not a
  string fits in a given box (p_text.c).

- Adds support for multipage TIFF images via the "page" parameter
  of PDF_open_image_file() (p_tiff.c).

- Implements pass-through mode for a variety of TIFF compression schemes.
  Compressed image data is no longer decompressed and recompressed, resulting
  in much faster TIFF procecessing. Correctly dealing with multi-strip images
  required rewriting parts of the image machinery (p_tiff.c, p_image.c, p_intern.h).

- Adds support for CMYK TIFF images (p_tiff.c).

- Implements pass-through mode in the GIF handler. This results in much faster
  GIF processing, but unfortunately restricts the number of supported GIF flavors
  to 8-bit, non-interlaced. As a side effect, this decreases the memory footprint
  of each PDF instance by more than 64 KB (p_gif.c, p_intern.h).

- Implements the "openmode" parameter for setting the initial
  display of bookmarks, thumbnails, or fullscreen mode (p_intern.h,
  p_basic.c, p_hyper.c).

- Implements the "bookmarkdest" parameter which allows changing the
  destination view of individual bookmarks (p_intern.h, p_hyper.c,
  p_basic.c).

- Implements the "imagewarning" parameter which allows the client to get more
  detailed information about why PDF_open_image_file() or PDF_open_CCITT() failed
  (p_basic.c, p_jpeg.c, p_gif.c, p_tiff.c, p_png.c, p_ccitt.c).


Bug fixes and enhancements
==========================

- Outputs \r and \n in strings with a preceding backslash which seems to be
  required for proper handling of linebreaks in annotations (p_text.c).

- Eliminate the exception caused by unknown category entries in the resource files.
  This behavior caused unnecessary exception when UPR files were created with the
  makepsres utility (p_util.c).

- Implements an unsupported "memory32" mode for 32-bit aligned memory images in
  PDF_open_image() (p_image.c).

- Negative horizontal scaling was taken into account for the underline/overline/
  strikeout distance from the baseline including its sign, which is wrong (p_text.c).

- Increased several of the initial allocation chunk sizes since we saved 64K by the
  rewrite of the GIF module (p_intern.h).

- Uses pdf_end_path() more efficiently in PDF_endpath() (p_draw.c).

- After an image was rejected the next image could suffer from left-over
  information from the rejected image since proper initialization was missing
  (p_image.c).

- Allows the compression level to be changed within a page description (p_basic.c).

- Removed the warning about page sizes which are incompatible to Acrobat 3
  which was issued by default when a page was too large or too small. Now
  a RuntimeError is generated only in Acrobat 3 compatibility mode (p_basic.c).

- PDF_close() closed the file handle even if it was provided by the client
  through PDF_open_fp() which is a bad attitude towards clients (p_basic.c).

- PDF_open_mem() was broken: it provoked a wrong error message due to missing
  initialization (p_basic.).

- Removed a number of obsolete functions which were no longer supported in
  PDFlib 3.0 but still available (p_jpeg.c, p_gif.c, p_tiff.c, p_gstate.c,
  p_text.c, p_hyper.c, pdflib.h, p_intern.h, p_basic.c, 
  bind/[perl|tcl|python]/pdflib_*.c).

- PDF_add_note interprets an empty icon parameter equivalent to a NULL value
  (p_annots.c).

- Setting the transition parameter to an empty string is now equivalent to
  a NULL string value, and resets the transition to default (p_hyper.c).

- Replaces the GIF test image with a non-interlaced version (test/pdflib.gif).

- Eliminates a superfluous moveto in PDF_arc() when the current point and the
  starting point of the arc coincide. The redundant moveto broke subsequent
  closepath and fill behaviors (p_draw.c).

- Changed several hex characters in strings to octal notation (pdftest.c).

- Added a few casts to satisfy C++ compilers (p_font.c, p_pfm.c).

- Re-implements PDF_set_text_matrix(), which is currently neither documented in
  the manual nor supported (p_text.c, pdflib.h).

- Adds the "nativeunicode" parameter to Unicode-aware language wrappers in order
  to disable native Unicode processing. The default value is false (p_basic.c).

- The "defined" preprocessor instruction was missing for the __BORLANDC__
  identifier (p_config.h).

- Safeguards the interpretation of encoding and UPR files on Unix from
  Windows-style lineends (p_util.c).

- An infinite loop could result when trying to attach a non-existent
  file with PDF_attach_file (p_basic.c).

- The return type of PDF_get_buffer() was missing a const qualifier
  (pdflib.h, p_basic.c).

- Separates the generation of a multi-threaded test program from the
  WIN32 environment in order to simplify building non-threaded tests
  with non-MS compilers (test/pdftest.c).

- Removes several warnings about redundant variable assignments which
  were uncovered by the Borland compiler (p_afm.c, p_basic.c, p_draw.c,
  p_filter.c, p_font.c, p_jpeg.c, p_pfm.c, p_util.c, test/pdftest.c).

- PDF_get_value() could crash when called with bad parameters. Ironically,
  the crash was not caused by the bad parameters but by a bug in the
  error message complaining about the bad parameters (p_basic.c).

- PDF_setfont() and PDF_stringwidth2() now accept negative font sizes.
  The horizontal scaling factor may now also be negative.
  The underline/overline/strikeout functions use the absolute value
  of the calculated line width to ensure that the line width will be
  positive (p_font.c, p_text.c).

- Changed the name of the "byte" typedef to "pdf_byte" (p_intern.h, many *.c).

- Changed the default encoding in text2pdf.c from "winansi" to "host",
  and adds a command line option for the text encoding (pdftest.c).

- The formula for calculating Bezier control points for the arc
  approximation gave wrong results due to a missing cast (!) in the
  C expression, resulting in ugly circle segments for certain parameter
  combinations (p_draw.c).

- The vertical start position of the text line could be reset to 0 if graphics
  operators were issued between the PDF_show_xy and PDF_continue_text()
  calls (p_text.c).

- Text output could be positioned one line too high if the character
  or word spacing was set != 0 because the leading value was not
  set correctly in PDF_show() and PDF_show_xy(). This bug also affected
  the horizontal positioning of PDF_show_boxed() (p_text.c).

- PDF_continue_text now honors empty strings, i.e., moves to the start
  of the next line if the supplied string is empty (p_text.c).

- The ISO 8859-2 encoding file had typos in the Zacute and Racute
  entries (iso8859-2.enc).

- CMYK JPEG images resulted in corrupt PDF output due to a typo (p_image.c).

- Fixed a non-portable construct involving the increment operator which
  resulted in wrong code when optimizing on True64 Unix (test/pdftest.c).


Build process, distribution, and platform support
=================================================

- Introduced a new configuration "no auxiliary libs" for MSVC for building
  PDFlib without any auxiliary library present (*.dsp).

- Changes the sample projects for MSVC++ from pdfclock to hello because this
  is better suited as the first example (c.dsp, cpp.dsp).

- Makes the math library linker option (usually -lm) configurable via an option.
  This is only rarely required. The option is empty on MacOS X/Darwin (configure.in).

- On Windows, switches to static versions of libpng, tifflib, and libz, and
  renamed libpng_static.lib to libpng.lib (*.dsp).

- Adds support files for Borland C++ Builder 5.0 (*.bpf, *.bpr).

- Adds -pthreads to the compiler options on OSF1 (configure.in).

- Libtool output was sent to /dev/null in the bind Makefiles, which is
  a bad idea, and was changed (bind/*/Makefile.in).

- By default the C++ binding is no longer enabled, since few people seem to
  actually use it and inconsistent handling of the standard C++ library causes
  frequent configuration trouble on several systems. It can be enabled with the
  --enable-cxx configure option (configure.in).

- Changed the name of the C++ configure option from --with-cxx to the more
  appropriate --enable-cxx (configure.in).

- Removes -ljpeg and -lz from the TIFFlib tests in the configure script, since these
  are't always required for libtiff, and missing additional libraries may
  cause linker error messages on some platforms if not installed. Platforms
  which require auxiliary libraries for TIFFlib can configure those with the
  new --with-tiffauxlib option (configure.in).

- Changes the shared library mechanism in order to avoid problems with
  multiple dependent shared libs on platforms which don't support inter-
  library dependencies, or when the user doesn't have root privilege for
  installing the PDFlib shared library, for example on an ISP's server
  (configure.in, pdflib-config.in, all Makefile.in):

  - PDFlib is built as a libtool convenience library by default.

  - C/C++ language clients which prefer a shared PDFlib can request this via
    the --enable-shared-pdflib configure option. Other language bindings
    will not be available when this option is used.

  - Using non-installed versions of the auxiliary libraries now works as
    expected, but requires them to be built as static libs. Problems may
    arise if a local library directory contains a shared version of some
    auxiliary lib. The configure script will warn about this situation.

  - The PDFlib library will only be installed if it was built as a shared
    object. "make install" will install pdflib.h always, however.

  - All language wrapper libraries are still shared, but pull in the PDFlib core
    into the respective shared library.

- Removes the dependencies from the client Makefile (clients/Makefile.in, configure.in).

- The client and util Makefiles didn't use the configure-supplied macro for the
   name of the PDFlib core library (clients/Makefile.in, util/Makefile.in).

- Switches to libtool 1.3.5 (config/*).

- Removed all space characters after the -I compiler options since some
  compilers don't like this (configure.in).
  
- Includes an encoding definition file for ISO 8859-9/Turkish, also
  known as Latin Alphabet No 5 (!) with additional character entries
  for Windows codepage 1254, and includes a corresponding
  entry in the UPR file (fonts/iso8859-9.enc, fonts/pdflib.upr).

- Removes an obsolete file (test/graphdata).

- The "clean" target didn't check whether or not a certain language
  binding actually had been built, resulting in errors for a global
  "make clean" (configure.in, Makefile.in).

- Sets the LANG variable to empty string before calling the date
  command. Otherwise %p depends on the LANG setting, and may not
  work (Makefile.in).

- Adds the list of dependent libraries (PDFLIBLINK) when linking the
  PDFlib shared library via libtool. Some platforms such as AIX require
  the names of all dependent libraries to be coded into the shared library
  file (pdflib/Makefile.in).

- Fixed a number of EBCDIC-related bugs:
  - Bookmarks and annotation text didn't get converted to ASCII (p_hyper.c).
  - User-defined document information field names got converted to
    ASCII just one time too often, resulting in bad output (p_hyper.c).
  - The open mode for fopen() must be set to binary ("rb" and "wb"),
    otherwise PDF output will be screwed up, and images don't work
    (p_config.h).

- Removed all occurrences of "-lc" in configure.in.

- When searching for the TIFF library configure didn't check the lib
  subdirectory of any directory supplied via the --with-tifflib= option,
  contrary to the search applied for zlib and libpng, and the TIFFlib
  header files (configure.in).

- Implements config/pdflib.m4 for use with the configure process of other
  packages which need to test for the availability of PDFlib.

- Includes pdflib-config as an aid in configuring other packages which
  want to use PDFlib (configure.in, pdflib-config.in).

- Fixed a typo in the SUFFIXES line which adversely affected some
  non-GNU makes (pdflib/Makefile.in).
  
- Added a precompiler test for the EMX compiler on OS/2 (p_config.h).


Bindings
========

- C:
  - Includes an image sample (image.c).

  - The improved libtool scheme revealed a bug in the ordering of
    object files in the Makefile (Makefile.in).

- C++:
  - Changed the name of the preprocessor define BROKEN_BOOL to PDF_BROKEN_BOOL
    (pdflib.hpp, pdflib.cpp).

  - Changed the C++ test files to return 0 (hello.cpp, image.cpp, pdfclock.cpp).

  - Added several casts to properly deal with the size method of C++
    strings (pdflib.cpp).

  - get_parameter() was accidentally missing from the wrapper code
    (pdflib.hpp, pdflib.cpp).

  - Adjusted the return type of PDF_get_buffer() (pdflib.hpp, pdflib.cpp).

  - Includes an image sample (image.cpp).

  - The improved libtool scheme revealed a bug in the ordering of
    objects in the Makefile (Makefile.in).

  - Changed the preprocessor conditionals for name space handling (pdflib.hpp).

  - Separates out the name of the standard C++ library, and sets it from
    the configure script. Determining whether it is required is however
    not yet finally implemented (configure.in, Makefile.in).

- Java:
  - Adds /jdk1.2.[123] to the list of directories to be searched for the Java
    header files for the benefit of Cygwin users (configure.in).

  - Adds /usr/local/java and /usr/local/java/alpha to the list of
    directories to be searched for the Java header files (configure.in).

  - Implements the "nativeunicode" parameter (pdflib_java.c).

  - Includes a servlet sample (hello_servlet.java).

  - Makes the exception handling in the Java wrapper thread-safe, which was
    the last step to a completely thread-safe Java binding (pdflib_java.c).

  - Adds some notes on using PDFLib with Borland/Inprise JBuilder (readme.txt).

  - The error message for a bad PDFlib version used only a single significant
    digit (pdflib_java.c).

  - PDF_concat() had accidentally been declared public instead of private
    (pdflib.java).

  - Includes an image sample (image.java).

  - Implements several changes which are necessary for the AS/400 JNI
    implementation where jlong is a struct (pdflib_java.c):

    - Removes an unneccesary jlong initializer in the wrapper code of
      PDF_new().

    - Casts NULL to jbyteArray in the wrapper of PDF_get_buffer().

    - Adds a cast to the (jbyte *) argument of ReleaseByteArrayElements().

    - Conditionally uses a JNI-supplied macro for the assignment of
      jlong to long.

  - Made changes to the configure script in order to support the Kaffe
    VM which doesn't use the common jni_md.h in its JNI implementation
    (configure.in).

  - Relaxed javadoc generation since Kaffe doesn't have a javadoc
    implementation (Makefile.in).

  - The Unicode converter didn't report back the correct string length
    if the string was empty (pdflib_java.c).

  - libtool versioning information was missing (Makefile.in).

- Perl:
  - Links the Perl wrapper against the Perl library on AIX, Cygwin, and
    OSF/1 (configure.in).

  - Removed a number of obsolete functions which were no longer supported in
    PDFlib 3.0 but still available (see doc/compatibility.txt for details).

  - PDF_concat still didn't work due to a glitch in the module file and a
    missing newXS entry (pdflib_pl.pm, pdflib_pl.c).

  - Adds a CGI variant of the pdfclock sample (pdfclock.pl.cgi).

  - Adjusted the return type of PDF_get_buffer() (pdflib_perl.c).

  - Includes an image sample (image.pl).

  - Cleaned up a few of the many warnings produced by the SWIG-generated
    wrapper code (pdflib_pl.c).

  - Implements a number of changes to make the wrapper compatible with
    Perl 5.6, mostly required by the discontinued use of PERL_OBJECT in
    the ActivePerl build:

    - Introduced another configuration called "oldperl" for building the
      wrapper for older ActivePerl versions (perl.dsp).

    - Added the XS macro to the export declaration of boot_pdflib_pl
      (pdflib_pl.c).

    - Searches for perl5.6.0 in the configure script (configure.in).

    - Changed the include and lib paths for Perl 5.6.0 on Windows (Perl.dsp).

    - Changed the include path in the VC project file to the Perl/lib/CORE
      directory (Perl.dsp).

    - Removed the /Tp option in the VC project file (no longer use C++ mode).
      (Perl.dsp).

    - Removed the PERL_OBJECT #define on Windows (pdflib_pl.c).

    - Changed all occurrences of CPerl to CPerlObj, and removed the respective
      macro definition (pdflib_pl.c).

    - Changed a preprocessor directive to make the wrapper code compatible
      with Perl 5.6 on Unix (pdflib_pl.c).

  - libtool versioning information was missing (Makefile.in).

- Python:
  - Includes an image sample (image.py).

  - Changed the include and lib paths for Python 1.5.2 on Windows (Python.dsp).

  - Removed some dead code from the wrapper code (pdflib_py.c).

  - "make test" tried to make a hard link to a symbolic link, which
    doesn't work on all platforms (bind/python/Makefile.in).

  - libtool versioning information was missing (Makefile.in).

- Tcl:
  - Implements the "nativeunicode" parameter (pdflib_tcl.c).

  - Removed a number of obsolete functions which were no longer supported in
    PDFlib 3.0 but still available (see doc/compatibility.txt for details).

  - Makes the exception handling in the Tcl wrapper thread-safe, which was
    the last step to a completely thread-safe Tcl binding (pdflib_tcl.c).

  - Adjusted the return type of PDF_get_buffer() (pdflib_tcl.c).

  - Includes an image sample (image.tcl).

  - Changed the include and lib paths for Tcl 8.3.1 on Windows (Tcl.dsp).

  - The wrapper now requires Tcl 8.2 or higher.

  - If appropriate, calls Tcl_InitStubs() for Tcl Stubs support
    (pdflib_tcl.c).

  - Queries the version number of the Tcl interpreter instead of
    relying on the static version number in the Tcl header used
    for compiling the wrapper (pdflib_tcl.c).
  
  - Added some preprocessor directives necessary for the mingw
    environment under Windows (pdflib_tcl.c).

  - Removed the DllMain function from the wrapper since it wasn't actually
    required but could cause trouble with some wrong precompiler settings
    (pdflib_tcl.c).

  - PDF_get_value and PDF_set_value were not properly reported to the
    Tcl interpreter, and were therefore unavailable (pdflib_tcl.c).

  - The Unicode converter didn't report back the correct string length
    if the string was empty (pdflib_tcl.c).


Documentation
=============

- Adds many clarifications to the manual, as well as some basic text and
  graphics handling algorithms (PDFlib-manual.pdf).

- Includes a PDF with point grid measures for common page sizes (grid.pdf).

- Updated the Web locations of the png and zlib libraries (readme.txt,
  PDFlib-manual.pdf).

- Added some information on forcing a certain compiler, or certain compiler
  flags (doc/readme_unix.txt).

- Updated the PDFlib license (PDFlib-license.pdf).

- Included the PDFlib order form (PDFlib-purchase-order.pdf).



V3.0 (March 1, 2000)
====================

New features and API
====================

- Implements the "invert" parameter for PDF_open_image() in order to
  work around problems with certain 1-bit TIFF images (p_tiff.c).

- Implements ascender, descender, and capheight parameters for get_value()
  (p_basic.c).


Bug fixes and enhancements
==========================

- Fixed a bad memory leak for all TIFFs which couldn't be handled
  in pass-through mode (p_tiff.c).

- Track the text position even if the supplied string is NULL or
  empty (p_text.c).

- PDFlib attempted to load the UPR resource file too early, even if
  the resource query could have been satisfied with dynamically loaded
  resources (p_util.c).

- Empty resource file names (e.g. produced by an empty, but existing
  environment variable) were not handled correctly (p_util.c).

- The y position calculations for PDF_show, PDF_show_xy, and
  PDF_continue_text were wrong for nonzero word spacing values.
  This also affected PDF_show_boxed (p_text.c).

- Re-enabled the #ifdef'ed /EncodedByteAlign code (p_tiff.c).

- Change the cleanup_...() functions in order to make them multiply
  callable. This was not the case for certain rare situations when an
  exception occured during cleanup (p_annots.c, p_basic.c, p_font.c,
  p_hyper.c, p_util.c, p_image.c).

- The handling of font files with DOS line ends was broken on Unix
  systems (p_font.c).

- The error machinery didn't recognize a certain recursive error situation
  related to the handling of corrupt font files (p_basic.c).

- The font machinery now treats the AFM entry "StandardEncoding" like
  "AdobeStandardEncoding" since some AFMs use the former (wrong)
  variation (p_font.c).

- The UPR resource names didn't work in PDF_set_parameter() due to
  a typo (p_basic.c).

- CCITT-compressed TIFFs with multiple strips haven't been handled 
  properly, and resulted in corrupt output. As a quick fix we revert
  to uncompressing and recompressing with Flate (p_tiff.c).

- The PDF properties sheet in Windows explorer doesn't work when the
  Info dictionary keys are not followed by space characters. (This
  should be considered an Acrobat bug!) We therefore removed this
  optimization in order to work around this misfeature (p_hyper.c).

- PDF_stringwidth2() didn't take the length argument into account (p_text.c).


Build process, distribution, and platform support
=================================================

- configure improvements (configure.in):
  - configure failed to include -I in the include paths for the auxiliary libs.
  - configure failed to accept library paths supplied on the command line.
  - Unified the handling of the -I option for the various language
    include directories.
  - Adds -lm to the libpng tests.
  - The --disable-shared option didn't work.

- Changed the install target so that it creates the install directories
  for library and header files if they don't exist. This was a problem
  especially on RedHat systems where /usr/local/include doesn't exist
  (pdflib/Makefile.in).

- Removed the FORCE: target in the main Makefile (Makefile.in).

- Added some preprocessor lines for Cygwin support (p_config.h, p_basic.c).

- Switched to a static version of the PNG library due to problems with
  libpng.dll when used with static C runtime (*.dsp).


Bindings
========

- Java:
  - get_value didn't work because of a missing comment terminator (pdflib.java).

  - An exception in get_parameter could result in an access violation in
    Windows due to a bug in the wrapper code (pdflib_java.c).

  - Relaxed the compiler setting "strict ANSI" in the CodeWarrior project
    for the Java binding on the Mac, since the Apple-supplied Java
    headers for MRJ 2.2 do no longer compile in strict mode (pdflib.mcp).

- Perl:
  - PDF_concat didn't work due to a glitch in pdflib_pm.pl.

- Python:
  - PDF_open_image_file() was missing from the set of registered functions,
    and was therefore unavailable (pdflib_py.c).

- Tcl:
  - Changed the Windows project file for Tcl 8.3 paths (tcl.dsp).

  - The Tcl install target didn't check whether the install directory
    already existed (Makefile.in).


Documentation
=============

- Switched to version 8 of the Aladdin license (aladdin-license.txt).


V2.30 (February 15, 2000)
=========================

New features and API
====================

- Implements the ignoremask parameter for PDF_open_image_file() to
  allow the user to disable PDFlib's automatic transparency support.

- Reactivates the disabled PDF_open_mem/writeproc interface for installing
  a callback to fetch the PDF data (p_basic.c, p_annots.c, p_image.c,
  p_font.c, p_stream.c, pdflib.h, p_intern.h).

- Removes PDF_set_text_matrix() which has bad interactions with
  internal functions and properties of PDF, and doesn't offer any
  advantage to the client (p_text.c).

- Path segment functions no longer reset the text position and matrix
  (p_text.c).

- Implements PDF_get_value() and PDF_set_value() which (along with
  PDF_set_parameter()) replace the following functions (p_basic.c):

  get_font
  get_fontsize
  get_image_height
  get_image_width

  set_fillrule
  set_leading
  set_text_rise
  set_horiz_scaling
  set_text_rendering
  set_char_spacing
  set_word_spacing
  set_duration
  set_transition

  In bindings other than Java and ActiveX these are still available, however.

- Interprets the image resolution in the image converter client, and
  adjusts both page size and scaling factors accordingly (pdfimage.c).

- Reads the resolution or aspect ratio values from all image formats
  which support it, and passes the values to the client (p_jpeg.c, p_png.c,
  p_tiff.c, p_gif.c);

- Implements and documents PDF_concat() (p_gstate.c).

- Makes the default zoom factor (open action for the first page) user-
  settable through PDF_set_parameter() (p_basic.c).


Bug fixes and enhancements
==========================

- PDF_delete() didn't PDF_close() if called from the error handler (p_basic.c).

- PDF_arc() didn't handle movetos correctly (p_draw.c).

- Due to a subtle bug in the exception handling machinery non-fatal
  errors could cause recursive errors (p_basic.c).

- PDF_show_boxed() didn't fully justify the second but last line under
  certain circumstances, and didn't get forced newlines right
  sometimes (p_text.c).

- PDF_show_boxed() didn't take the text matrix into account correctly
  (p_text.c).

- End the text object if the text render mode is set to one of the
  clipping modes (p_text.c).

- Added an endpath operator to the clip operators to save the client from
  doing so (p_draw.c).

- PDF_open_image() didn't check for a valid params pointer for one-
  component images (p_image.c).

- Non-fatal errors could result in corrupt output due to a glitch
  in the error handling machinery (p_basic.c).

- Implements data pass-through for CCITT-compressed TIFF images. This
  decreases the PDF output, and accelerates image processing (p_tiff.c,
  p_image.c, p_intern.h).

- Changed the key of the duration setting from /D to /Dur. The former
  is only correct within a transition dictionary (p_basic.c).

- Implements a complete text and graphics state tracking machinery,
  including save/restore (p_intern.h, p_gstate.c, p_draw.c, p_text.c,
  p_basic.c).

- Disallows the use of the null character in user-defined encodings
  (p_util.c), and documents the fact.

- Implemented a stricter state checking machinery for switching
  between path objects, text objects, image objects, and the general
  page description state (p_text.c, p_draw.c, p_gstate.c, p_image.c,
  p_intern.h).

- The parameter checks in the text output functions were too strict,
  and erroneously rejected strings starting with a character code < 256
  in Unicode mode (p_text.c).

- Removed several remains of an obsolete filename in comments
  and a project file (p_intern.h, pdflib_static.dsp).

- Checks for a degenerate matrix in PDF_set_text_matrix() (p_text.c).

- Renamed pdf_concat() to pdf_concat_raw() (p_gstate.c).

- Simplifies the old and new stringwidth/show/show_xy/continue_text
  functions pairs such that the old simply relay to the new functions.
  A zero length parameter for the new functions is interpreted to
  mean C-style text (p_text.c).

- Fixes the underline/overline/strikeout handling (p_text.c).

- Made the prefix parameter public (p_basic.c.).

- Relaxed the handling of metrics files where the font name has been
  changed, and doesn't match the user-supplied font name (p_afm.c,
  p_pfm.c).

- The AFM and PFM modules threw NonfatalErrors even in severe cases
  (p_afm.c, p_pfm.c).

- Added an omitted pdf_begin_text() call which resulted in bad PostScript
  output when the PDF was printed (p_text.c, p_font.c, p_intern.h).

- An erroneous byte was output in the header section (p_basic.c).


Build process, distribution, and platform support
=================================================

- Puts double quotes around all variables used in test statements
  in the configure script. This will make the script more resistant
  against test complaining when a variable happens to be empty (configure.in).

- Moves the test for EBCDIC from configure to p_config.h.

- Switches the language bindings on Windows to static C runtime
  libraries in order to avoid the dreaded problems with multiple
  versions of msvcrt.dll (*.dsp).

- Added solaris as a subdirectory name in looking for jni_md.h, since
  it doesn't seem to be picked up via $ac_md_system (configure.in).

- Added -lm -lc at a few places in order to help configure find the
  auxiliary libraries (configure.in).

- Changed the handling of the PDF magic number to protect it from
  EBCDIC compilers (p_basic.c).

- Introduces a binary distribution for Windows, generated with a
  JScript program run in Windows Script Host (shell programming a la
  Microsoft, oh my...).

- Added "-ljpeg" to TIFFLIBLINK (configure.in).

- Added "-lz -lm" to the TIFF library check (configure.in).


Bindings
========

- C++:
  - The C++ Makefile failed to set the CXX variable correctly (Makefile.in).

  - Implemented concat() (pdflib.hpp, pdflib.cpp).

  - show_boxed() didn't return a value (pdflib.cpp).

- Java:
  - Reworked and fixed the exception handling (pdflib_java.c).

  - Changed the string extraction routines so that they handle empty
    strings gracefully (pdflib_java.c).

  - Implemented concat() (pdflib_java.c, pdflib.java).

  - Calls java and javadoc after compiling the Windows DLL (Java.dsp).

- Perl:
  - Removed the export-dynamic option for libtool (Makefile.in).

  - Implemented PDF_concat() (pdflib_pl.c, pdflib_pl.pm).

- Python:
  - Removed the export-dynamic option for libtool (Makefile.in).

  - Implemented PDF_concat() (pdflib_py.c).

- Tcl:
  - PDF_open_image_file() was missing from the set of exported functions
    in the wrapper code (pdflib_tcl.c).

  - Conditionally compiles the wrapper in order to avoid the use of
    binary strings when compiling against Tcl 8.0 (pdflib_tcl.c).

  - Implemented PDF_concat() (pdflib_tcl.c, pkgIndex.tcl).


Documentation
=============

- Documents the libtool library versioning scheme (readme_unix.txt).



V2.20 (January 24, 2000)
=========================

New features and API
====================

- Implements PDF_concat(), currently only for the C binding
  (pdflib.h, p_gstate.c).

- Implements PDF_show_boxed(), the basis of which has been contributed
  by Leonard Rosenthol (pdflib.h, p_text.c, bind/*/*.c, pdflib_pl.pm,
  pkgIndex.tcl, pdflib.hpp, pdflib.cpp, pdflib.java).

- Implements overline and strikethrough text, as suggested and contributed
  by Leonard Rosenthol. API, implementation and behavior parallel underlined
  text (p_intern.h, p_basic.c, p_text.c).

- Implements PDF_get_buffer() for fetching the PDF output from memory
  for all language bindings.


Bug fixes and enhancements
==========================

- Fixed three bugs in the AS/400 codepage conversion table (p_stream.c).

- Fixed a bug in the EBCDIC-safe handling of document info entries
  (p_hyper.c).

- #ifdef'ed all code for dealing with the now obsolete flush parameter.

- pdf_ebcdic2ascii() didn't return the correct string. Changed the caller
  such that the return isn't needed anyway (p_stream.c).

- The binary PDF magic number was inadvertently written using pdf_puts()
  instead of pdf_write() which is wrong on EBCDIC machines (p_basic.c).

- The debug and nodebug parameters are no longer documented nor supported.
  Nonfatal exceptions can be suppressed with the new warning parameter
  (p_basic.c).

- Changes the error handling and memory management such that one pair of
  PDF_new()/PDF_delete() can accomodate multiple pairs of PDF_open_*()/
  PDF_close() without leaking memory (p_stream.c, p_basic.c).

- Fixed a possible crash under rare circumstances, related to an
  exception being thrown when no real work has been done (p_stream.c).

- Changes the underline/overline/strikeout calculations such that the
  width of the line is no longer taken into account for calculating
  the distance from the baseline (p_text.c).

- Fixes problems related to setting the current text position via
  PDF_set_text_matrix() and PDF_set_text_position() (p_text.c).

- Removes the transition settings from all clock samples since these
  may significantly slow down PDF the screen presentation, especially
  when served via the Web (bind/pdfclock.*).

- Removes the dynamic TIFFlib attachment on Windows, and directly
  links to TIFFlib. The TIFFlib DLL will also be included in the
  binary distributions (p_basic.c, p_tiff.c, p_intern.h).

- Changes the TIFF code to use the PDFlib-supplied malloc/free
  routines instead of the TIFFlib-supplied ones. This makes the code
  for attaching the TIFFlib Windows DLL at runtime compatible with
  the generally available DLL (p_tiff.c, p_basic.c, p_intern.h).

- Changes PDF_findfont() such that an exception is raised when the
  requested font can't be set, instead of returning -1 (p_font.c,
  bind/*/hello.*, test/pdftest.c).

- An error message had a wrong printf format (p_state.c).

- Accepts the image file type parameter of PDF_open_image_file() in
  both lower and upper case, although this will not be documented
  (p_image.c).

- Removed the optimization which tried to keep track of redundant
  font changes (p_font.c).

- "builtin" encodings no longer worked after the great encoding rehaul,
  but required only a simple fix (p_font.c).

- Implements a safeguard against recursive I/O errors which may occur
  in rare situations when flushing the output raises an exception while
  being called from the exception handler already (p_intern.h, p_basic.c,
  p_stream.c).

- The stream machinery didn't get initialized in PDF_open_fp(), resulting
  in an infinite recursion (well, a finite one...) when opening a PDF
  with a preexisting FILE pointer (p_basic.c).

- Changes several places where #includes had filenames in "..." instead
  of <...>, resulting in bad dependencies in the Makefiles (pdflib/p_intern.h,
  util/compile_metrics.c, pdflib_pl.c, pdflib_py.c, pdflib_tcl.c).

- The compile_metrics utility was not yet adapted to the new encoding
  include file logic (util/compile_metrics.c).


Build process, distribution, and platform support
=================================================

- Under Windows switched all language bindings other than C and C++
  from a DLL to a static PDFlib library (bind/*/*.dsp).

- Improves and simplifies the searching mechanism for Perl, Tcl, Python,
  and Java in configure (configure.in).

- Simplifies and streamlines the configure code for detecting the
  TIFF, Zlib, and PNG libraries (configure.in).

- Switches to libtool 1.3.4, and back to 1.3.c due to problems with
  the former (config/*).

- Fixes many glitches in the configure and build machinery.

- Makes the name of the core PDFlib library file configurable via
  the --with-libname configure option in order to work around a name
  clash on Digital Unix 4. The bindings are set up such that changing
  the core library name is transparent to the language binding
  (configure.in, all Makefile.in).

- Includes an encoding file for ISO 8859-15 in the distribution
  (fonts/iso8859-15.enc), and changed the Latin 2 encoding file name
  (fonts/iso8859-2.enc).

- Changed the ordering of libpng and zlib when linking programs against
  PDFlib since older linkers require this ordering (Makefile.in).

- Moved the .PHONY targets in the Makefiles below the all target for
  combatibility with non-GNU makes.

- Implements a suitable mechanism for patching the version number into
  numerous source files, and splits it from the distribution (version.pl).

- Fixes a number of Makefile bugs which resulted in wrong dependencies
  (*/Makefile.in).


Bindings
========

- C++:
  - Changes the data parameter of open_image() from String to const char *
    which is more appropriate (pdflib.hpp, pdflib.cpp).

- Java:
  - Implements Unicode support for page descriptions (pdflib_java.c).

  - Changes the data parameter of open_image() from String to byte[]
    which is more appropriate (pdflib.java, pdflib_java.c).

  - Correctly implements setpolydash() (pdflib_java.c).

  - Includes javadoc comments and Makefile targets for generating Java
    documentation in HTML (pdflib.java, Makefile.in).
    
  - Implements package support for PDFlib, and generates a .jar file
    (*.java, *.c, Makefile.in).

  - Changes the version mechanism for the Java wrapper to use version
    number querying instead of matching version numbers in the name of
    the wrapper library (pdflib_java.c, Makefile.in, Java.dsp, pdflib.h).

- Perl:
  - Correctly implements PDF_setpolydash() (pdflib_pl.c).

- Python:
  - Correctly implements setpolydash() (pdflib_py.c).

- Tcl:
  - Implements Unicode support for page descriptions (pdflib_tcl.c).

  - Searches for tclsh8.3 in configure (configure.in).

  - Correctly implements PDF_open_image() (pdflib_tcl.c).

  - Correctly implements PDF_setpolydash() (pdflib_tcl.c).

  - Changed all occurrences of atol() in the wrapper code to Tcl_GetInt()
    or Tcl_GetLongFromObj() with appropriate error handling (pdflib_tcl.c).

  - Implemented suitable conditionals to allow for compiling the Tcl
    wrapper with different versions of Tcl. This was necessary because of
    the Unicode support which is only available in Tcl 8.2 (pdflib_tcl.c).


Documentation
=============

- Addes a description of the PDFlib commercial license to the distribution
  (PDFlib-license.pdf).

- Introduces javadoc comments.


V2.10 (December 13, 1999)
=========================

New features and API
====================

- Makes the page dimensions adjustable after starting a page, using
  PDF_set_parameter (p_basic.c).

- Made a variety of changes to make PDFlib work when compiled on
  EBCDIC-based systems (most *.c, p_intern.h).

- Made the Zlib compression level configurable (p_basic.c, p_stream.c).

- Switched to in-core PDF generation through the new pdf_streams
  interface. This also allows us to compress page content streams
  and to simplify handling of compressed data streams (all *.c, p_intern.h).

- Implements transparency support (masking by position or color) (p_gif.c,
  p_png.c, p_image.c, p_intern.h).

- Implements a PNG handler (p_png.c, pdflib.h, p_intern.h).

- Font handling:

  - Implemented support for null characters in text strings for all
    language bindings (p_text.c, bind/*/*.c).

  - Implemented support for CID fonts and CMap encodings (p_font.c, p_cid.h).

  - Implemented underlined text (except for CID fonts) (p_text.c).

  - Implements support for user-defined encodings, and includes
    a sample encoding file (p_fonts.c, fonts/pdflib.upr, fonts/latin-2.enc).

  - Implements EBCDIC encoding (p_font.c, e_ebcdic.h, p_intern.h,
    p_metrics.h, util/compile_metrics.c).

  - Implements support for PFB PostScript font files (p_font.c).

  - Implements support for PFM PostScript font metrics files (p_pfm.c).

- Updates to the AFM parser (p_afmparse.c, p_afmparse.h):

  - The FONTBBOX is read as float which is required by the 4.1 spec.

  - Recognizes Multiple Master fonts by FamilyName ending in " MM".

  - Allows the WEIGHT entry to contain more than one word.

- Implements limited Multiple Master handling for an in-house
  application (p_font.c):

  - As in PostScript, MM handling is transparent at the API level. All
    MM handling is done by extracting the parameters from the font name.

  - All instances of an MM font are required to have the same metrics
    (i.e., no support for /Width axis).

  - The required AFM file is that for the master.

- Implements PDF_skew() in order to provide for a full set of coordinate
  transformation functions (p_gstate.c).

- Reactivates ASCII85 encoding which lay dormant in previous releases
  (p_intern.h, p_filter.c).


Bug fixes and enhancements
==========================

- Fixed a bug where PDF_moveto() wouldn't set the text position
  correctly (p_text.c).

- Corrects a small glitch where pdf_float() would return the
  correct result string, but fails to use the supplied buffer (p_util.c).

- Makes the PDF compatibility user-settable (again). The reasoning
  behind this is not obvious, and discussed in the manual. If the
  compatibility level is set to PDF 1.2, asking PDFlib to generate
  any Acrobat 4 feature will result in a RuntimeError (*.c).

- Adds a little PostScript utility for finding all glyph names in
  a font (fonts/print_glyphs.ps).

- Implements support for dynamically loading TIFFlib at
  runtime (p_basic.c, p_tiff.c, p_intern.h).

- Removed all references to PDFDocEncoding since it isn't required
  for hypertext elements, and can't be used for text fonts (e_pdfdoc.h).

- PDF_arc() implicitly moves to the beginning of the arc segment in
  order to avoid unwanted connecting lines from the current point to
  the beginning of the arc segment (p_draw.c).

- All public PDFlib functions perform a simple sanity check on their
  p argument before accessing any structure member. This reduces the
  chances for a crash due to client-supplied NULL or rogue pointers (*.c).

- Include the names of the language binding and the platform in the
  /Producer entry (p_basic.c, p_intern.h, p_hyper.c, bind/*/*.c).

- Added the width of the Euro character to the supplied internal and
  external metrics tables (*.afm, p_metrics.h).

- Replaced the AFM files with newer versions, and used the additional
  data in the internal metrics tables. The kerning information
  has been stripped for size and performance reasons (fonts/*.afm).

- When user-requested encoding and font-supplied encoding didn't match,
  PDFlib could try to reencode Symbol fonts with not adequate encodings
  (like Symbol with Winansi) -- despite issuing a warning message
  (p_font.c).

- PDF_stringwidth() now takes the text state parameters into account,
  and protects itself from empty strings (p_text.c).

- Removed the pdf_begin_text() calls in all functions that set the
  text state (p_font.c, p_text.c).

- Do not set the leading parameter in PDF_setfont() since it may
  override a leading value set by the user (p_font.c).

- Changed the name of the pseudo encoding vector from "default" to
  "host" (p_font.c, most bind/*/hello.*).

- Checks the scale parameter of PDF_set_horiz_scaling() to be positive
  (p_text.c).

- Write the colormap for an image also in compressed or ASCII format
  if requested (was previously the case only for the actual image
  data, but not the colormap) (p_image.c).

- The 'w' debug parameter for enabling or disabling warning messages
  was erroneously implemented as 'e' instead. Now it works according
  to the documentation (p_basic.c).

- Adds (void) casts to several fputc() and fputs() calls.

- Changes the PDF output to avoid unnecessary blanks aside self-delimiting
  tokens in many places (most *.c).

- Checks current font and font size in PDF_setfont() in order to eliminate
  redundant setting. This requires initializing the current font to an
  invalid value of -1 in PDF_begin_page() (p_font.c, p_basic.c).

- Image handling:

  - When the error handler popped in for memory images with bad length it
    would try to free not yet allocated memory. We guard against this by
    prematurely setting the image file name to NULL (p_image.c).

  - The parameter checking code in PDF_open_image() and the documentation
    didn't account for images with other than 8 bits per component
    (p_image.c).

  - The test for the length of the image data in memory for PDF_open_image()
    could still be wrong when bpc was smaller than 8 (p_image.c).

  - GIF images with a local colormap ended up with a colormap with all
    black entries in the PDF because the local colormap was read when the
    (wrong) global colormap was already written to the PDF (p_image.c).

  - Detect and correctly handle transparent colormap entries in GIF
    images (p_image.c, p_gif.c, p_intern.h).

- Changes the PATHSEP definition for VMS and moves HAVE_GETOPT to the
  top of the include file (p_config.h).

- The pdfgraph.c and pdfimage.c sample clients incorrectly advertised
  a binary option in their usage messages although the option is no longer
  available.

- Check the parameters of PDF_scale() for zero values (p_gstate.c).

- Introduce parenthesis in a set of critical macro definitions (p_gif.c).

- Changed the text2pdf client to PDF_findfont/PDF_setfont instead of
  the obsolete PDF_set_font().

- Unified the names of the encoding files to e_*.h (formerly *_e.h).

- Removed the obsolete compatibility function PDF_set_font (p_font.c,
  pdflib.h, bind/*/*.c, bind/perl/*.pm).


Build process, distribution, and platform support
=================================================

- Removed the sample CGI script (bind/cgi).

- Removed the pdfgraph demo program (clients directory).

- Removed the optional getopt module (util directory, Makefile.in).

- Adds support for the DJGPP compiler (p_config.h).

- Adds support for libtool in order to cleanly deal with the gazillion
  kinds of shared library support (configure.in, Makefile.in, test/Makefile.in,
  pdflib/Makefile.in).

- Introduces the new config directory for libtool and installation support
  scripts.

- Added the ANSI option for native HP compilers (configure.in).

- Properly implements all configure switches for disabling the language
  bindings (configure.in).

- Starts adding support for OS/2 and VMS systems.

- Adds support for EBCDIC-based systems, including source code changes
  and an EBCDIC test in the configure script (configure.in).


Bindings
========

- SWIG:
  - No longer automatically generates the wrapper file with SWIG due to
    the necessary amount of manual changes in the wrapper files
    (bind/*/Makefile.in).

- C:
  - The arguments to PDF_begin_page() were incorrectly cast to the wrong
    type instead of float. Incidentally, a particular compiler incorrectly
    produced zero values, thereby disclosing the bug in the source code by
    a compiler bug (pdfclock.c).

- C++:
  - Implements support for strings containing null characters.

  - Added PDF_shutdown() to the PDF destructor (pdflib.cpp).

  - PDF_close_image() was missing from the C++ interface due to an
    oversight (pdflib.hpp, pdflib.cpp).

  - Added -lstdc++ to the Makefile.

- Java:
  - On Windows separates the wrapper DLL from the PDFlib core DLL.

  - Implements support for strings containing null characters.

  - configure now looks in an additional subdirectory for the machine-
    dependent JNI include file. Formerly it used $MACHDEP only, but
    on some systems the subdirectory doesn't use the system version number
    (configure.in).

  - Rewrote the wrapper code so that it does the right thing with Unicode
    strings (pdflib_java.c).

  - Switched to a more object-oriented notation, and dropped the PDF_
    prefix from the names of the PDFlib Java methods (pdflib_java.c, *.java).

- Perl:
  - On Windows separates the wrapper DLL from the PDFlib core DLL.

  - Removed the unused and unsupported Makefile.PL.

  - Implements support for strings containing null characters.

  - Removed PDF_boot() and PDF_shutdown() which have accidentally been
    included in the wrapper code (pdflib_pl.c, pdflib.pm).

  - Integrated wrapper code changes in order to make the PDFlib wrapper
    compatible to versions of Perl newer thant 5.005_54 (pdflib_pl.c).

  - Added an export list to the pdflib Perl module. This makes it easier
    to use our module along with other modules. Clients need no longer
    write "package pdflib" at the beginning since all functions are
    exported (pdflib.pm, hello.pl, pdfclock.pl).

- Python:
  - On Windows separates the wrapper DLL from the PDFlib core DLL.

  - Due to a necessary change in the name of the library, script must
    now use "from pdflib_py import *" (instead of "pdflib").

  - Implements support for strings containing null characters.

  - Removed PDF_boot() and PDF_shutdown() which have accidentally been
    included in the wrapper code (pdflib_py.c).

  - Searches for the lib-dynload directory where to install the shared
    library for Python (configure.in).

- Tcl:
  - On Windows separates the wrapper DLL from the PDFlib core DLL.

  - Changed the name of the wrapper library from pdflib.so to pdflib_tcl.so
    (pkgIndex.tcl).

  - Rewrote the wrapper code so that it does the right thing with Unicode
    strings (pdflib_tcl.c).

  - Implements support for strings containing null characters.

  - Tcl 8.0 is now required because of the support for binary strings
    (configure.in).

  - Removed PDF_boot() and PDF_shutdown() which have accidentally been
    included in the wrapper code (pdflib_tcl.c, pkgIndex.tcl).

- Visual Basic:
  - Removed the Visual Basic binding since VB is much better covered by the
    new PDFlib ActiveX control (bind/vb/*).


Documentation
=============

- Added platform-specific readme files (doc/readme_<platform>.txt).

- Added an appendix dealing with shared libraries to the manual.

- Removed the redundant list of configure options from doc/install.txt.

- Changed all occurrences of PDFlib's WWW address to www.pdflib.com.


V2.01 (August 3, 1999)
=====================

New features and API
====================

- Extends the JPEG reader to allow for progressive JPEG images which are
  supported in PDF 1.3/Acrobat 4 (p_jpeg.c).
- Applies a workaround for Photoshop-generated CMYK JPEG images. The
  algorithm is taken from my jpeg2ps utility: detect the Adobe marker,
  and write a suitable /Decode array to invert the 4 color planes (p_image.c).
- Introduces the concept of a "default" encoding which evaluates to
  macroman or winansi according to the current platform. This facilitates
  writing identical test programs for all platforms. All samples except
  those for Visual Basic (which is Windows-only) have been adjusted to use 
  the default encoding.
- Streamlines the image file interface in several ways: (pdflib.h, p_intern.h,
  p_image.c, p_gif.c, p_tiff.c, p_jpeg.c, p_ccitt.c, p_basic.c,
  bind/vb/pdflib_vb.idl, bind/vb/pdflib_vb.def, clients/pdfimage.c,
  bind/cpp/pdflib.[h|c]pp, test/pdftest.c).
  - Removes PDF_place_inline_image() since it doesn't seem to bring any
    real advantage to PDFlib clients.
  - Removes PDF_put_image() since the image data is "parked" in the ouput
    immediately on PDF_open_*(). The /Name key is no longer in Xobjects
    since it was only required by PDF 1.0.
  - Removes PDF_execute_image(). Instead, PDF_place_image() can now be
    called multiple times for re-using image data.
  - Consolidates all pdf_close_*() functions in PDF_close_image. All
    image-specific stuff is now done at the end of PDF_open_*().
  - PDF_open_*() (along with the newly implied pdf_put_image()) is now 
    allowed outside of page descriptions. This requires pdf_put_image()
    to do a pdf_begin_contents_section() in some cases.
- Adds several symbolic names for new destination zoom values in 
  PDF_add_pdflink() and PDF_add_locallink() (p_annots.c).
- Added an undocumented hook for placing existing images as thumbnail
  for the current page. This is for a specialized application and is
  not supported at the scripting layer (p_image.c, p_image.c, p_intern.h).
- Changed PDF_open_memory_image() to PDF_open_image(). This makes memory
  images accessible from the scripting languages, and adds support for
  file and url references as placeholders for the actual image data
  (pdflib.h, p_image.h, p_intern.h, bind/vb/pdflib_vb.idl, bind/cpp/pdflib.hpp, 
  bind/cpp/pdflib.cpp).


Bug fixes and enhancements
==========================

- A static resource configuration file (pdflib.upr) was always opened
  when the client dynamically added resources. We skipped the file open
  step since it's well reasonable to work with dynamic configuration
  exclusively (p_util.c).
- Fixes a crash due to an uninitialized member of the PDF struct
  (resourcefile_loaded). The bug showed up when trying to use non-standard
  fonts (p_basic.c).
- Added a number of casts to avoid assignments to variables which are
  never used. This basically affected the contents of comment and notice
  lines in AFM files, which are not being used (p_afmparse.c).
- Merged the metrics files for macroman and winansi core metrics
  (p_metrics_win.h, p_metrics_mac.h) to a single file (p_metrics.h,
  p_font.c, Makefile.in, pdflib/Makefile.in, PDFlib.hqx, *.dsp)
- Makes DLLMain only visible when PDFLIB_EXPORTS is defined (p_basic.c).
- Changed the default page transition duration to 0 in order to avoid
  unnecessarily writing the duration key to all page dictionaries (p_hyper.c).
- Changes to example path prefix in pdflib.upr to make it clearer that
  the upr file has to be adjusted before it can be used (fonts/pdflib.upr).
- The debug flags didn't work due to a typo (p_basic.c).
- Debug flag 'u' (don't unlink PDF file on error) was implemented the wrong
  way, and didn't match the documentation (p_basic.c).
- Improves the memory management by avoiding "semi-allocated" aggregated
  objects. This involves subtle changes around the realloc() calls,
  and cleaner initialization of the reallocated data. The benefit of this
  shows up in memory-out situations when the error handler pops in and tries
  to free memory blocks which are not completely initialized. This may
  especially happen in multi-threaded environments (p_intern.h, p_basic.c,
  p_font.c, p_images.c, p_hyper.c).
- Fixes some inconsistencies related to link border style, color, and
  destination zoom (p_annots.c).
- Removed the beveled, inset, and underlined link border styles since they
  don't work as advertised in the PDF specification (p_annots.c, pdftest.c).
- Improves the handling of XObject resources: formerly all Xobjects used
  in the document up to the current page had been placed in the page's
  resource list, potentially cluttering up the print stream generated for
  the PDF. Now we only list the XObjects which are actually used on the
  current page. This change will not affect Acrobat's viewing behavior.
- The bpc and components values of TIFF image weren't always properly
  reported by TIFFlib. We improved this by using TIFFGetFieldDefaulted()
  instead of TIFFGetField() for retrieving these (p_tiff.c).


Build process, distribution, and platform support
=================================================

- Several improvements in the configure machinery (configure.in, Makefile.in):
  - Added a --without-cxx option to the configure script in order to make
    life easier on systems where the C++ is not correctly recognized.
  - The include and lib paths for perl/zlib/tifflib shown with 
    "configure --help" had some differences from the actual spelling of 
    the supported options.
  - Included a number of changes to the configure script required to make
    the shared library versioning work on NetBSD systems.
  - The --with-perlincl option for configure didn't work.
  - Added a number of conditionals for the Cygwin environment.
  - Always puts the version number in the file names of the shared and
    static PDFlib libraries. Previously the static library ended up without
    a version number in its name, possibly leading to mismatches with later
    versions.
  - Introduces configure variables for the names of the shared and static
    libraries. This allows us to easily build the "other" library (as opposed
    to the one specified when configure was run) as well.
- Removes the -g option from all Makefiles (pdflib/Makefile.in,
  clients/Makefile.in, util/Makefile.in, bind/c/Makefile.in,
  bind/cpp/Makefile.in, test/Makefile.in)
- The util Makefile is no longer called by default since the utility programs
  are currently not needed by ordinary library users (Makefile.in).
- Notes that the util Makefile needs an installed PDFlib library
  (util/Makefile.in).
- Assorted changes suggested for supporting the Cygwin32 development
  environment. These involved several Makefile.in files, configure.in, and
  C source modules which make use of getopt(). Most of the changes enhanced
  the configuration machinery for other systems, too.
- Removes the install targets for the C and C++ bindings in the main
  Makefile since those targets weren't used anyway (Makefile.in).
- Changes the $@.$(OBJ) construct in all Makefiles to the actual name of
  the object (we don't want to use $< since it doesn't work everywhere)
  (*/Makefile.in, bind/Makefile.in).
- Removed a leftover text file (util/readme.txt).
- Cleaned up the configuration information in the MSVC project files.
  Most projects now only support a "Release" configuration; only pdflib
  and test have "Debug" configurations, too (pdflib.dsp, bind/*/*.dsp).
- Includes a separate project for building PDFlib as a static library
  with MSVC.
- Better supports the Mac distribution (Makefile.in):
  - Changes the CodeWarrior project file name suffix from the odd mu
    character to the more Unix-friendly .mcp. Since the project file
    doesn't contain a resource fork, there's no need to use binhex (.hqx)
    encoding.
  - Convert the lineends in all relevant text files to the Mac convention.
  - Implements a procedure for setting the correct file types for all
    relevant files (uses a utility program on the Mac).
  - Makes a self-extracting distribution fileset for the Mac.
  - Changes the Mac build of the shared library to link static C runtime
    libraries (instead of the previously used DLLs). This avoids the need
    for certain Metrowerks libraries at runtime (PDFlib.hqx).
  - Expands the Macintosh project file with support for the Java/MRJ, Python,
    Perl, and Tcl bindings.


Bindings
========

- C:
  - One of the test programs didn't check the return value of PDF_open()
    (pdfclock.c).
  - Corrected a typo in the clean target of the makefile (Makefile.in).

- C++
  - Changes the C++ wrapper such that setting the define BROKEN_STRINGS
    reverts from ANSI C++ string handling to plain old C char pointers.
    As it turned out, ANSI C++ strings are badly supported by many
    compilers. Besides, there was a typo in the old construct (pdflib.hpp,
    pdflib.cpp).

- All SWIG bindings
  - Introduces export pragma for exporting PDFlib routines for the SWIG
    bindings on the Mac (pdflib/pdflib.i, bind/*/pdflib_*.c)

- Java:
  - Makes the Java binding work with the Macintosh Runtime for Java (MRJ)
    2.1 (PDFlib.mcp).
  - The pdflib Java initialization sleeps some time if the shared library
    cannot be loaded. This is a benefit on systems where the Java console
    immediately disappears on exit.
  - The MSVC project file for the Java binding used file names with the
    path of a beta version for all source files (Java.dsp).
    
- Perl:
  - The DEFINES variable was missing in the definition of CFLAGS
    (bind/perl/Makefile.in).
  - Makes the Perl binding work on the Macintosh (PDFlib.mcp).
  - Includes a first version of a MakeMaker-compatible Perl script for
    generating a Makefile which more closely fits the Perl environment.
    The Perl-generated Makefile can be used instead of the configure-
    generated one in bind/perl. Note that the Perl script itself must be
    generated by the configure script.
  - Notes how to build the PDFlib Perl binding with recent versions of
    Perl, e.g. 5.005_57 (bind/perl/readme.txt).

- Python:
  - The DEFINES variable was missing in the definition of CFLAGS
    (bind/python/Makefile.in).
  - Makes the Python binding work on the Macintosh (PDFlib.mcp).
  - Makes the test programs exit cleanly in case of error (hello.py,
    pdfclock.py).

- Tcl:
  - The Tcl package index file didn't get updated properly due to
    the LD_LIBRARY_PATH variable not being properly exported
    (bind/tcl/Makefile.in).
  - Fixed a typo in the hello test program. Apparently it worked correctly
    anyway because of some particular circumstances and missing type
    checking in the SWIG-generated code (hello_tcl.pdf).
  - Makes the Tcl binding work on the Macintosh (PDFlib.mcp).

- Visual Basic:
  - The return value of all image open functions was erroneously declared
    void instead of int. We had to change the GUID after this correction,
    but the 2.01 API lost some image functions anyway (pdflib_vb.idl).


Documentation:
- Slightly expands the comments in pdflib.upr.
- Adds several clarifications and minor additions to the manual, and cuts
  down the size of the PDF manual by optimizing font and image handling.
- Adds information to the manual about configuring the shared libraries
  for scripting under Unix, Windows, and Mac.
- Adds descriptions of the few new features to the manual.
- Removes the bind/*/pdflib_*.doc text files since they don't add any
  real value to the big PDFlib manual which is supplied in PDF format.
- Brings the sections in pdflib.h in sync with the sections in the main
  manual (although the SWIG-generated doc files are no longer distributed).


V2.0 (June 30, 1999)
=====================

Bug fixes and enhancements:
- Implements a better scheme for making sure the ordering constraints
  for PDF page descriptions are obeyed while not bothering library
  clients with most of the details (p_gstate.c, p_draw.c, p_text.c).
  The remaining constraints are documented in the manual.


Build process, distribution, and platform support:
- Further tweaks the support for shared libraries on OpenStep 4 (configure.in).


Bindings:
- All bindings:
  - The shared libraries built for a specific language binding inadvertently
    referred to a hard-coded path to the actual PDFlib library (../../pdflib).
    In order to avoid this, the -L and -l options are used instead of
    supplying the relative name of the library file for linking the
    shared libraries or test programs (bind/*/Makefile.in, configure.in).
    This means LD_LIBRARY_PATH has to be set for testing.

- Java:
  - Removes the pointless import statement from the Java samples
    (hello.java, pdfclock.java).

- Tcl:
  - Added LD_LIBRARY_PATH when generating the Tcl package index file
    in order to find the PDFlib shared library (bind/tcl/Makefile.in).


Documentation:
- Explains more of the PDF graphics model, and documents the
  restrictions and interactions among graphics-related functions
  (doc/PDFlib.pdf).


V1.92 (June 27, 1999)
=====================

Bug fixes and enhancements:
- PDF_translate() erroneously used the same value for both coordinates
  (p_gstate.c).
- A subtle "unreachable code" warning was issued by the Watcom
  compiler, and he was right (p_util.c).
- Fixed a bug in the GIF code which caused a crash on the Mac due to
  an improper variable initialization. The bug had been introduced
  in the transition to thread-safe GIF handling in 1.91, and didn't
  affect other platforms.
- Cleaned up several places which look like empty statements within
  a conditional (p_gif.c).
- Slightly changes the PDF output. Although legal PDF, some properties
  caused problems with PDFviewer, a non-Adobe PDF viewer for OpenStep
  written by Detlev Droege:
  - Don't count the newline character into the /Length key of colormap
    objects because this leads to problems in the PostScript output
    generated from the PDF (p_image.c).
  - Don't compress inline images (p_image.c).
- A missing initialization caused a crash on Windows (p_hyper.c).


API:
- Implemented PDF_set_fillrule() for setting the area algorithm used
  by PDF_fill(), PDF_fill_stroke(), PDF_closepath_fill_stroke(), and
  PDF_clip() (pdflib.h, p_gstate.c, p_draw.c). This change was
  requested and implemented by Evgeny Stambulchik
  <fnevgeny@plasma-gate.weizmann.ac.il>.
- Allows for dynamic font configuration by adding all UPR categories
  to the list of supported parameters in PDF_set_parameter() (p_basic.c,
  p_util.c).


Build process, distribution, and platform support:
- Added some compiler-dependent conditionals in order to make the
  C++ binding work with non-ANSI compilers (bind/cpp/pdflib.hpp, pdflib.cpp).
- Improves compatibility with OpenStep 4.x:
  - Added an include file required for getopt (util/compile_metrics.c).
  - Enhanced configure for shared libraries on OpenStep 4.x (configure.in).
  - Don't build the C++ binding (configure.in).
- Removed the additional Makefiles for MS VC++ and the complete port
  subdirectory from the distribution (port/msvc/*).


Bindings:
- SWIG:
  - Made PDF_boot() and PDF_shutdown public in order to avoid problems
    with the SWIG wrapper files which may use them (pdflib.h).
  - Made the exception jump buffers for the SWIG bindings static which
    they should have been anyway (pdflib.i).
  - Adds the define PDFLIB_STATIC to the project files for the SWIG
    bindings on Windows because we don't want to export the core
    PDFlib  functions from the DLL in the SWIG case.

- Java:
  - Adds a MS VC++ project file for the Java binding (bind/java/Java.dsp).

- Tcl
  - Adds a MS VC++ project file for the Tcl binding (bind/tcl/Tcl.dsp).

- Perl
  - Adds a MS VC++ project file for the Perl binding (bind/perl/Perl.dsp).
  - Introduces patches and quirks to support PDFlib with ActivePerl on
    Win32. Although our configuration works for a certain software
    combination, all issues are documented (pdflib/pdflib.i, perl/readme.txt).
  - Changed the order in which Perl executable names are searched. The
    more likely name "perl" now is searched first (configure.in).
  - Don't map bool to char in the Perl module on NeXT, since the Perl
    include files contain special handling for bool which breaks with our
    usual defines (configure.in, bind/perl/Makefile.in).

- Python
  - Adds a MS VC++ project file for the Python binding (bind/python/Python.dsp).


Documentation:
- doc/compatibility.txt had some deprecated advice on the use of PDF_close().
- Added several clarifications and corrections to the manual.
- Adds a table of tested version numbers for the language bindings to the
  manual.
- Reduced the number of fonts used in the manual.
- Delivers the manual in PDF 1.2 format to avoid triggering a PostScript
  error when printing PDF 1.3 files with color images from Acrobat 3.
- Changed the page size format of the manual in order to cut down the
  total number of pages.


V1.91 (June 18, 1999)
=====================

Bug fixes and enhancements:
- Fixed a typo involving a printf %s format in an error message (p_font.c).
- Fixed two NULL pointer accesses for AFMs without a Weight entry
  (p_afmparse.c, p_font.c).
- Extends the AFM parser which was required for correctly processing certain
  non-Adobe AFM files (p_afmparse.c):
  - Added the new key "Characters" to the AFM parser. The value is ignored
    since it is duplicated in "StartCharMetrics".
  - Changes the handling of the "Version" key in AFMs such that arbitrary
    strings are allowed after the keyword, not only single tokens.
  - Changes the handling of the "Encoding" key in AFMs such that it is
    optional, not required (p_afmparse.c).
- Allow blank lines and comment lines in upr files (p_util.c).
- Removed the remaining non-const globals in the GIF module, thus making
  GIF processing thread-safe (p_gif.c, p_intern.h).
- Adds multithreading for Win32 to the test bed (test/pdftest.c). This
  nicely demonstrates PDFlib's thread-safety.
- Changes the debug configuration and output machinery to a more flexible
  system with control over individual debug facilities.
- Adds const to the PDF_set_font declaration and definition.
- Removed sys_errlist from makepsres in order to make it POSIX compliant.
- Added some cleanup code for places discovered with a purify session:
  - The resource handling machinery didn't close the handle to the
    resource file (p_util.c).
  - The client-provided resource file name wasn't freed (p_basic.c).
  - The base structure for ligatures in the AFM parser wasn't freed
    (p_afmparse.c).
- Changed the cleanup routines to make sure the output file is closed
  in case of error (p_basic.c).
- Two non-initalized members of the PDF struct caused a core dump at 
  clean-up time under rare circumstances (p_basic.c, p_image.c).
- Adjusted the output format of float values to the limits documented in
  the PDF spec (p_util.c).
- The annotation border style and color were not correctly initialized
  due to a typo (p_basic.c).
- The transition info didn't get properly initialized (p_hyper.c).

API:
- (Again) bundles PDF_close_file() and PDF_close_fp() to PDF_close() since
  clients should not be affected by the way in which the PDF had been
  opened.
- Slightly rearranged some functions to other C modules in order to
  make the API structure and manual clearer.
- Removed PDF_finalize() from the API and reworked PDF_delete() so
  that it may be used for cleanup in case of error.
- Changed the error handler's signature to include PDF * to make it
  easier for client-supplied handlers to do a PDF_delete(p) (p_basic.c,
  p_intern.h, pdflib.i).
- Changed the first argument of the memory management procedures back
  to PDF *, since the client can retrieve his own opaque pointer via
  PDF_get_opaque().


Build process, distribution, and platform support:
- Added several casts in order to pacify the CodeWarrior compiler.
- Added a Macintosh-encoded variant to the sample text in pdftest.c.
- The configure script set the TIFF include path even when no TIFF support
  was installed/found (configure.in).
- Adds the AFM files to the distribution (again), and moves pdflib.upr to
  the directory where the AFMs live (fonts/*.afm, fonts/*.upr).
- Adds a --with-debug option to the configure script which activates the
  debugging facilities, and implies building PDFlib as a static library.
- Adds a test for the JPEG library to the configure script since the
  JPEG library is needed by some versions of the TIFF library.
- Changes a couple of places for compilation with the Watcom compiler:
  - Maps the __WATCOMC__ #define to WIN32 (p_config.h).
  - Introduced a typedef for the first function argument of PDF_new2()
    since the Watcom compiler issues a dubious warning otherwise (pdflib.h).
  - Includes io.h for the unlink() declaration (p_basic.c).
- Changed the sample images included in the distribution (pdflib.gif,
  tm.g3, acroweb_j.tif)
- Removed the makepsres program from the distribution.
- Adds compiler optimize flags by adding $CFLAGS to $DEFINES (configure.in).


Bindings:
- All SWIG bindings:
  - The dist target in the main makefile called the version target, resulting
    in updated access times for the SWIG-generated wrapper files. This in
    turn resulted in SWIG being launched unnecessarily on the client system.
    We now simply touch the wrapper files before preparing the tar file.

- Java:
  - PDF_boot() and PDF_shutdown need not be available to the Java API
    since PDFlib booting is done automatically for the Java binding.
  - The hello example didn't obey the new PDF_findfont() semantics
    (bind/java/hello.java).

- Perl:
  - Fixed a typo (1 should be -1) in the font error handling line (hello.pl).

- C:
  - Moved hello.c and pdfclock.c to a separate directory bind/c.
  - A bug in the configure.in script prevented the test rules for the C
    and C++ bindings from being executed.
  - The C hello example didn't obey the new/open_file semantics
    (bind/c/hello.c).

- C++:
  - Renamed the bind/c++ directory to bind/cpp in order to avoid problems
    with some older build environments (Makefile.in, PDFlib.dsw, configure.in).
  - Reworks the C++ binding in order to make it work with the Watcom compiler:
    - Don't use namespaces
    - Special string handling, including conversion to chars.
    - Adds a macro to change the conversion of C++ string to C chars since
      Watcom doesn't support the ANSI conforming c_str() method.
    - Removes the page loop and the sleep() call which had inadvertently
      been left over.
  - A bug in the configure.in script prevented the test rules for the C
    and C++ bindings from being executed.
  - Changed the PDF constructor in order to allow for client-supplied
    error and memory management routines, and adds default NULL values for
    these.


Documentation:
- Switches to version 7 of the Aladdin Free Public License, and includes
  the license text as PDF (doc/license.pdf).
- Includes brief API documentation files for the SWIG-generated language
  bindings (bind/*/*.doc).
- Includes the updated and reworked edition of the PDFlib manual
  (doc/PDFlib.pdf).


V1.90 (June 2, 1999)
====================

New Features:
- Makes PDFlib thread-safe by removing the remaining few writable globals.
- Use magic numbers for image file formats (imagepdf.c)
- Supports Unix PostScript Resource files (*.upr) for describing the AFM 
  and font file names, and an environment variable pointing to the resource
  file.
- User-defined document information field (in addition to Title, Author, etc.)
- Unicode-enables bookmarks, text annotations, and document info entries
  (p_hyper.c, p_annots.c, p_text.c).
- Changed the encoding vectors according to PDF 1.3. The most relevant
  change is the inclusion of /Euro in WinAnsi and PDFDoc encodings
  (ansi_e.h, pdfdoc_e.h)
- File attachment, launch, link, weblink and text annotations (p_annots.c).
- Add file type and creator on the Mac (p_basic.c).
- Nested bookmarks (p_hyper.c).
- Changes the API name of the bookmark function from PDF_add_outline to
  the more intuitive PDF_add_bookmark (p_hyper.c)
- Removes the limits on number of pages, page contents, and number of objects
  and introduced dynamic reallocation (p_hyper.c, p_basic.c, p_annots.c).
- Generates a PDF-1.3 header (Acrobat 4 files). According to the PDF spec
  this should work OK also for older viewers as long as no PDF 1.3
  specific feature is used in the PDF file.
- Introduces Zlib compression for images and file attachments.
- Completely reworked the font handling. Font metrics caching now avoids
  many AFM lookups, which dramatically speeds up PDFlib (up to a factor of 20!).
- Implemented in-core font metrics data. This completely eliminates the
  need for external AFM files. Using the supplied utility compile_metrics
  arbitrary metrics files can be compiled into the PDFlib source code.
- Adjusted the page size validation to Acrobat 4's larger limits (p_basic.c).
- New functions to query current font name and size (p_font.c)
- Introduced version numbers for the shared library and versioning schemes
  for the scripting API (except Python)
- Eliminated all enums at the API level and replaced them with string
  arguments.
- Eliminated the individual PDF_close_[TIFF|GIF|JPEG|CCITT|memory_image]
  since PDF_close_image handles it all.
- User-adjustable debug level.
- Introduced PDF_new(), PDF_new2(), and PDF_delete, as well as PDF_open_file()
  and PDF_close_file() and PDF_open_fp() and PDF_close_fp().
- Made the page size parameters float in order to accomodate PDF 1.3.


Bindings:
- Largely improved the Perl, Tcl, and Python bindings.
- Introduced the Java binding via JNI (bind/java).
- Introduced a C++ wrapper class for PDFlib (bind/cpp).
- Introduced versioning if the language supports it (currently
  Perl and Tcl; the Java binding uses transparent shared library versioning).
- Binds the TIFFlib and zlib libraries into the shared library for
  the PDFlib scripting bindings, thereby making the TIFF and compression
  features available to all SWIG bindings.
- Improved the SWIG-generated documentation for the scripting APIs.
- Introduced language-specific exception handling as offered by SWIG.
  Exception handling for Java is done outside of SWIG.
- Explicitly sets the "C" locale in order to avoid the Java VM messing up
  our decimal separators by setting a bad locale.
- Introduced a Visual Basic binding with a specialized DLL and a type
  library.


Other:

- Restructured the distribution directory tree.
- Streamlined the API for better scripting support.
- Added a file which documents changes to the API.
- Introduced versioning also at the API level and in the shared object naming.
- Changed the error handler interface to a fixed string, as opposed to a
  variable number of arguments.
- Introduced error/exception classes which replace the former
  error types, and are passed through to the scripting API.
- Reworks and cuts down the AFM parser, and makes it re-entrant.
- Installs NULL error and warning handlers in TIFFlib in order to
  avoid messages from opening corrupt TIFF files. The caller will be
  notified via the return code.
- Introduced "const" for all char * arguments in the API.


V1.0 (February 1999) (not publicly released)
============================================

No new featues, only bug fixes and improved platform support.

Platform support:

- Changed all library clients so that main() is declared with return
  type int.
- Many casts and other minor changes in order to get rid of
  MS Visual C++ 6.0 warnings (*.c, *.h).
- Included project and workspace files for MS Visual C++ 6.0 in the fileset
  (PDFlib.dsp, PDFlib.dsw).
- Removed Watcom makefile from the fileset (makefile.wat).
- Switch to autoconf support (configure, configure.in, Makefile.in)
- Added Mac build support and file type/creator entries (p_basic.c)


Bug fixes:

- Extended close routine (p_gif.c, p_jpeg.c)
- Page height and width were exchanged in the interface of PDF_begin_page()
  as well as in the manual. Funnily enough, the MediaBox was also written
  with both in the wrong order, thereby correcting things. However, the
  demo clients used the parameters in the intended order. This fix only
  clarifies the meaning of width and height, but doesn't change the
  behavior of clients.
- PDF output file is no longer closed in the library in order to
  be consistent with the opening in the client. This INCOMPATIBLE
  change means that all library clients now must close the PDF output
  file themselves!
- Fixed a core dump bug in the TIFF handler (p_tiff.c)
- Fixes bug where a font could get written to the PDF with wrong
  encoding information.


V0.7b2 (August 1998) (only for a single customer)
=================================================

New features:

- Added CCITT support for passing through G3 or G4 compressed
  bitmap data (p_ccitt.c, pdf.h).
- Changes to the image interface (p_ccitt.c, p_jpeg.c, p_tiff.c,
  p_gif.c, pdf.h)

Bug fixes:

- Changed the get_2bytes macro to a function since the macro
  didn't guarantee the evaluation order, which lead to problems
  when analyzing JPEGs on BeOS (p_jpeg.c).
- Added a check for Acrobat-compatible page size (1"-45", or
  72pt-3240pt) in PDF_begin_page(). This is necessary to work around
  restrictions in Adobe's Acrobat implementation (p_basic.c).

Minor enhancements:

- Several makefile cleanups (makefile.gcc).


V0.6 (08 July 1998)
===================

New features:

- Added SWIG support, as suggested and basically implemented by
  Rainer Schaaf (Rainer.Schaaf@T-Online.de). SWIG support allows us
  to use PDFlib routines from Tcl, Perl, and Python.
  (makefile, pdflib.i, pdftcl_wrap.c pdfperl_wrap.c, pdfpython_wrap.c,
  pdflib.pm).
- New directory structure: BINDINGS directory contains subdirectory
  for several PDFlib language bindings. Currently these are
  C, CGI, Perl, Tcl, Python (yes, I know that CGI is not a language).
- Included scripting samples (BINDINGS/*/pdfclock.[pl|tcl|py],
  BINDINGS/*/hello.[pl|tcl|py]).
- Added new function PDF_setpolydash, suggested and implemented
  by Evgeny Stambulchik <fnevgeny@plasma-gate.weizmann.ac.il>
  (p_gstate.c, pdf.h).

Bug fixes and minor enhancements:

- Fix trivial (but fatal) free/fclose bug (p_font.c)
- Slightly change syntax of pdfgraph sample program: fill and
  stroke is denoted by 'F' instead of 'B' (pdfgraph.c)
- Shorten the version string (pdf.h)
- Add cast (p_basic.c)
- Conditionally typedef bool because of conflicts in VC++ (pdf.h and p_port.h)
- Add cast (p_font.c)
- Delete old BOOL typedef (pdf.h)
- Renamed function parseFile to pdf_parseFile in order to avoid name
  clashes with other software packages. This change was requested
  by Evgeny Stambulchik for the xmgr package. This package uses T1lib
  which also includes a copy of Adobe's AFM parser. (afmparse.c,
  afmparse.h, p_font.c).
- Fixed typo in the Goethe demo text (pdfdemo.c).
- Adjusted demo data to new setrgbcolor interface (test/graphdata).
- Add PDF_HAS_BOOL define. However, it doesn't really fix the multiple 
  boolean define/typedef/enum problem (p_port.h).
- Removed const from PDF_info struct members. This change is related
  to SWIG support, although the necessity of the change is not yet
  fully understood (pdf.h).
- Enhances the AFM parser to recognize AFM files according to the AFM 4.1
  specification, especially the "CharWidth" keyword.


V0.5 (25 February 98)
=====================
Portability aids, bug fixes and other improvements from several contributors:

- JPEG images could be closed multiply (p_jpeg.c)
- Introduce Mac and Win32 porting defs (p_port.h)
- Use define for path separator which is needed for the Mac's ":"
  (p_port.h, p_font.h)
- Rename structure member private to private_data for C++ compatibility
  (pdf.h, p_font.c, p_gif.c, p_jpeg.c, p_tiff.c)
- NeXT portability: include libc.h (imagepdf.c, pdfclock.c, pdfgraph.c, 
  text2pdf.c)
- Don't use malloc.h (afmparse.c)
- Change variable handling in make build process (makefile)
- Fix bug in octal character representation (p_text.c)
- Introduce word and character spacing functions (p_text.c)
- Fix subtle bug in font embedding: fonts with additional data after
  the zeros portion were not properly embedded (p_font.c)

Environment bindings:
- Introduces BINDINGS directory which will collect several language and
  environment bindings for PDFlib.
- Sample CGI script for the PDFclock example (BINDINGS/CGI/clock.cgi)

Several bugfixes, due to Detlev Droege's comments after
testing with his PDFviewer:

- Avoid empty /Filter arrays for uncompressed binary images (p_image.c).
- Change erroneous number of color components in demo page (pdfdemo.c).
- Implement consistency check for color components vs. color space
  (p_image.c)
- Write binary magic number for all files (ASCII and binary) (p_basic.c).
- Change "Producer" to "Creator" in sample application (hello.c).
- AFM handler crashed in case the AFM parser gave up on certain AFMs (p_font.c).
- AFM parser didn't correctly handle newer version 4.0 AFMs (afmparse.c).
- Use AFM 4.0 key "StdVW" for a more accurate /StemV in font descriptor 
  (p_font.c).
- API CHANGE: Change RGB parameters from byte to float since
  gray values are float parameters too (p_color.c).


V0.4 (8 September 97)
=====================
First public release.

- Generating multiple PDFs with embedded images resulted in wrong
  XObject numbers for the second and following PDFs. Use image_number
  from the PDF structure instead of a static variable.
  (p_image.c, p_basic.c)
- Makefile for Watcom C 10.6 included in the distribution, support
  Windows build (makefile.wat).
