===============================
PDFlib 5.0.3 (January 21, 2004)
===============================

Bug fixes and minor improvements
================================

- Autmatically changes the encoding to "builtin" for the combination of
  fontname=Symbol and encoding=winansi, since this combination cannot
  reasonably be used.

- Improves using the "page" option of PDF_load_image() for image formats
  which do not support multiple images within a file. Instead of ignoring
  the option we now expect page=1, and call will fail for larger numbers.
  This facilitates common code for a mixture of single- and multi-page
  image files in various formats.

- Implements the "spotcolorlookup" parameter as a workaround for inaccurate
  CMYK alternate colors in third-party software.

- Ignores the "monospace" option if the font is embedded since Acrobat does
  not apply modified metrics to embedded fonts.

- No longer raises the warnings "OpenType font x does not contain glyph name y" 
  and "Encoding x was adapted to font y" for OpenType fonts since they are
  not really relevant to users, but instead force them to disable font warnings
  completely.

- Added support for abbreviated PFMs for monospaced fonts which do not
  contain any ExtentTable.

- Issue a warning "codepage x not supported" if encoding or hypertextencoding
  was set to "auto" on a Windows system, and the current system locale is a
  multi-byte non-Unicode codepage (e.g. 932, Japanese). In order to resolve
  this the user must explicitly set the encoding (e.g. "unicode"), and supply
  text in the corresponding format to PDFlib. Only C, Perl, Python and PHP are
  affected; Unicode-aware language bindings are not affected.

- PDF_show_boxed() did not allow strings with more than 8191 characters
  when called from Unicode capable language bindings (COM, Java, .NET, Tcl).

- The checks for valid handles were not strict enough. Invalid handles for
  fonts, PDI documents and pages, color spaces, images, patterns, and
  shadings would be accepted if the value was one larger than the largest
  valid handle. As a result, PDFlib would not complain about the client's
  error, and generate invalid PDF instead. Clients which used only unmodified
  handles as returned by PDFlib functions are not at all affected. Also,
  the checks for valid handles in option lists were not affected.
  
- PDF_fill_imageblock() and PDF_fill_pdfblock() could crash when called
  with a block name that did not exist on the page.

- Incorrect ToUnicode CMaps were generated under very specific conditions,
  resulting in a message "Attempt to release an unlocked object" with the
  find feature in Acrobat 5. In Acrobat 6 the message didn't appear, but
  the find and text select features were unavailable. The problem appears
  in the following two situations:

  - TrueType fonts with subsetting enabled, autocidfont=false, an encoding
    which contains at least one glyph outside of Adobe's Standard Latin
    list, and less than ca. 90 different characters are used in the document.

  - TrueType fonts with subsetting enabled, autocidfont=true (which is the
    default), and the number of different characters used in the document
    is less than one third of the number of glyph IDs in the font.

- PDI didn't accept PDFs with the entry "/Count 0 /Kids []" in a /Pages
  node, although these are generated by some PDF creators, and are not
  explicitly prohibited by the PDF reference. Now such nodes are ignored.

- Reject BMP, JPEG, PNG, and TIFF images with more than one color component
  when the "mask" option is supplied (since masks must be 1-channel images),
  and allow GIFs as soft masks for compatibility with PDF 1.4 and above.

- Changing the "wordspacing" parameter didn't work correctly when the
  "topdown" parameter was set to true.

- The space glyph could be missing from a generated font subset if glyphs
  which are not present in the font were substituted with a space, and
  the subset didn't yet contain any space character.
  
- Implements the "preserveoldpantonenames" parameter which preserves
  old-style Pantone spot color names instead of converting them to the
  equivalent new names.

- Introduces a compile-time switch (PDF_WIN98) which allows building a
  version for Windows systems without full Unicode support (Windows 95/98/ME).
  This affects only the host font feature, and replaces the Unicode-
  compatible font name scheme with an ASCII-only scheme. Therefore,
  Japanese host font names are not supported with such a special build.

- Images with wrong color spaces for PDF/X didn't obey the "imagewarning"
  parameter or option, i.e. they always triggered an exception instead of
  returning -1.
  
- Ignoring embedded ICC profiles in JPEG images with the "nohonoriccprofile"
  option didn't work, i.e. an ICCBased color space was generated nevertheless.

- JPEG images with an APP2 marker other than ICC (e.g. FlashPix) could
  result in damaged PDF output since JPEG markers of the embedded
  thumbnail image could get confused with markers of the full image. In
  particular, this affected the width and height entries, resulting in
  bad pixel size entries in the generated PDF.

- The "spot" color space for the fillcolor and strokecolor options of the
  PDF_fill_*block() functions didn't work properly.

- The PDF_fill_*block() functions didn't place the block border and background
  correctly when "topdown" was true.

- Exceptions thrown by functions which optionally return -1 in case of
  failure would erroneously be logged as -1 (instead of the real exception
  number) in the PDFlib trace.

- Fixes a buglet in the pdfimage.c sample program.

- Use internal printf() replacement for the trace feature to avoid problems
  with NULL string arguments. Otherwise in rare cases the trace feature could
  cause a crash in some environments, particularly with non-GCC compilers.

- Modified generation of font name prefixes for subset fonts to ensure
  identical behavior on all platforms (only relevant for comparing files,
  but not relevant to users).

- Removed inappropriate EBCDIC conversion of the Trapped DocInfo key.

- On Windows PostScript Type 1 host fonts can be used with "iso8859-1" and
  "unicode" encoding in addition to "winansi".

- PostScript Type 1 host fonts couldn't be embedded on Windows. This situation
  even resulted in an empty error message string and a bad -1 exception number.
  The exception was issued within PDF_close(), and not within PDF_load_font().

- Works around an error message issued by Acrobat in a very rare font-related
  situations. All of the following conditions must be true to trigger the
  error message:
  - Acrobat 6 (but not any earlier versions)
  - OpenType font with PostScript outlines
  - subsetting enabled
  - 8-bit encoding
  - character code maps to Unicode (via the font's cmap), but the CFF
    table does not map the code to a glyph name, so that the font's .notdef
    character (=glyph id 0) will be displayed

  To solve this PDFlib now always includes glyph id 0 for TrueType and
  OpenType subsets.

- On EBCDIC platforms the "userpassword" and "masterpassword" parameters and
  option weren't properly converted to ASCII before applying them.

- Fixed a glitch related to freeing TrueType font names on EBCDIC platforms.


Bindings
========

- C, Perl, Python, PHP
  - Explicitly set the "hypertextencoding" parameter in the samples
    in order to avoid problems with winansi-encoded text for PDF_set_info()
    on Japanese systems.

- C
  - Changed the silent/verbose handling in the pdflibdl.c module so that
    error messages can be disabled from the compiler command line by
    supplying -DPDF_SILENT.

  - Reworked the DLL loading mechanism since it couldn't be used with
    PDF_TRY/PDF_CATCH, and fixed a bug which went unnoticed (storing the
    DLL handle in the read-only API structure).

- C++
 - Changed the throw statements in pdflib.hpp to the stricter 
   PDFlib::Exception instead of Exception.

 - Added a version test to the C++ wrapper to check for the PDFlib version
   loaded from an external library. This means that an external PDFlib
   DLL/shared library must provide an exact match of major/minor/revision
   number. Otherwise the C++ wrapper will refuse to work.

  - Fixed a wrong throw statement in the C++ wrapper.

- COM
  - Changed the GUID because functions have been removed. As a result,
    applications should be re-compiled against the new version provided
    early binding is used.

- Java
  - PDF_get_parameter() and PDF_get_pdi_parameter() didn't apply proper
    EBCDIC processing to the returned strings.

- Tcl
  - Adds instructions on how to build a binary for Tcl 8.3 and above on
    Mac OS X. This also involved a minor extension in the Tcl wrapper code.
    
- Python
  - The Python wrapper for PDF_create_pvf() incorrectly assumed simple strings
    for the data argument instead of binary strings.


Build system, packaging and platforms
=====================================

- The host encoding feature (pulling encoding via the iconv() facility
  was disabled on MVS due to a glitch in the preprocessor statements.

- Adds documentation on how to build PDFlib from source code with MS Visual
  Studio .NET. This also involved a few changes in the structure of the
  VS 6 project files on which the build process with VS .NET is based.

- Minor changes for IA64/Itanium compatibility.

- Minor tweaks for OpenVMS compatibility.

- Fixed a few warning is libs/tiff and bind/pdflib/tcl for gcc 3.3 on
  Mac OS X.

- Reworked the build system to facilitate the use of makefiles on platforms
  where the configure script is not available, such as OpenVMS, or Windows
  with a command-line compiler.

- Various minor bugfixes for EBCDIC systems.

- "make install" didn't work with PDFlib Lite and PDFlib source code packages
  on Unix systems due to a minor glitch in the main Makefile.



=================================
PDFlib 5.0.2 (September 16, 2003)
=================================

New features
============

- Font names can be supplied as Unicode to PDF_load_font() in the C, C++,
  COM, Java, and .NET bindings. This is useful when access to localized
  host fonts on Windows is required, such as on Japanese localized systems.
  In the C interface the len parameter must be supplied to trigger this
  new Unicode feature.

- Extends the font machinery so that fonts with non-English names can be
  found as host fonts on localized Windows systems, which is especially
  useful for using Japanese host fonts on Japanese systems: Unicode font
  names can be supplied in UTF-8 format with BOM to PDF_load_font() and
  the second part of a HostFont configuration line. The font name will be
  converted to UTF-16 LE, and host fonts with this name will be found.
  This scheme also works for TTC font files.

- Implements the "vdp/blockcount" key for PDF_get_pdi_value().

- Facilitates the detection of bad font options supplied by the client as
  follows: when the fontstyle or monospace options in PDF_load_font() were
  supplied for fonts which don't allow it, the function raised an exception
  (if the fontwarning option or parameter was true), or silently ignored the
  option (if fontwarning was false). In both cases it was impossible for the
  client to find out the cause _and_ continue generating his PDF output, 
  possibly with a different font.  Now PDF_load_font() returns with a -1 error
  code in this situation when fontwarning is false. Thanks to the new support
  for requesting message strings after a failed function call the client can
  find out the reason of the failure.
  
- When an API function fails with a -1 error return code the message string
  containing the reason and the error number (which would be visible in an
  exception if the various warning parameters are set) can now be retrieved
  with PDF_get_errmsg(), PDF_get_errnum(), and PDF_get_apiname(). All
  examples demonstrate how to use this feature, which results in much more
  useful error messages.

- Makes the trace feature public (parameters "trace", "tracefile", and
  "tracemsg").

- Implements the "monospace" option for PDF_load_font() to facilitate
  metrics calculations with CJK fonts for applications which do not
  require sophisticated typography.

- Re-implements "pdistrict" as a global parameter and option for PDF_open_pdi(),
  PDF_open_pdi_callback(), PDF_open_pdi_page(), and PDF_process_pdi(). If
  true, certain flavors of malformed PDF which may result in non-conforming
  PDF output are rejected upon import.  This affects only certain very rare
  flavors of illegal PDF. Default is false.


Workarounds for Acrobat 6 problems
==================================

- Link borders didn't display properly since optional keys in the border style
  dictionary are apparently required by Acrobat 6.


Bug fixes and minor improvements
================================

- PDF_stringwidth() incorrectly took wordspacing into account even in
  situations where it doesn't apply, such as unicode, glyphid, non-AGL
  encodings, or subsetting.

- The "colorize" feature didn't work for GIF images, palettized PNG, palettized
  TIFF, and palettized BMP images (for images with a color palette it is only
  reasonable for pure grayscale images anyway).

- When using hypertext functions with PDFlib Lite on localized CJK Windows
  systems in a non-Unicode capable language (including C, C++) resulted in
  an exception "Unicode ... not supported in this configuration".

- Allows "builtin" encoding for TrueType and OpenType fonts even if
  the entries in the OS/2 table of the font are incompatible with its
  cmap table.

- Disables font subsetting for TrueType and OpenType fonts if the font has
  been subset already, as determined by a "+" sign at byte 6 (zero-based)
  in the font name. This is a precaution against problems with double-
  subsetting fonts.

- Fine-tuning and bugfixing in the Unicode handling:

  - UniJIS-UCS2-HW-H/V are now implemented as UCS-compatible CMaps which means
    they can now be used in Unicode-capable bindings, and BOMs will be
    properly processed. While PDF_stringwidth() still returns a width of 0,
    the monospace, charspacing, and wordspacing options will be honored so
    that the length of text can be calculated where all glyphs have a width
    of 500 or 1000.

  - UTF-8 BOMs will be detected in text and hypertext strings if
    [hyper]textformat = auto and hypertextencoding is not an 8-bit encoding.

  - Fixed an obscure bug in the UTF-8 string conversion code which resulted
    in erroneous "illegal UTF-8 sequence" exceptions.

  - If hypertextformat = utf16* and hypertextencoding != 8-bit encoding
    (i.e. empty or "unicode") hypertext strings were converted wrongly.

  - If hypertextformat = bytes and hypertextencoding = 8-bit encoding hypertext
    strings were not converted into the supplied encoding at all. Hypertext
    containing non-Latin-1 characters was converted wrongly.

  - In Unicode-capable bindings hypertext was converted wrongly for
    hypertextencoding = 8-bit encoding if it contained Latin-1 characters.

- The "fontname" parameter now returns the internal name of a TrueType
  or OpenType host font, and not the font name supplied to PDF_load_font().

- The "font" and "fontsize" options of PDF_fill_textblock() could only
  be provided in tandem. However, it also makes sense to provide only
  a font handle in the option list, and take the fontsize property from
  the block definition.

- Improved PDF/X-3 generation for compatibility with validation tools:
  - Creates the /Info key in the OutputIntents dictionary. This key is
    optional according to the PDF reference, but PDF/X-3 Inspector and
    Acrobat 6 Preflight apparently require it (possibly caused by the
    older Adobe Technical Note 5413 which says it is required).
  - The /RegistryName key was misspelled as /Registry.

- Removed the check of the supplied PostScript font name against the one
  found in the PFM or AFM file. This allows the client to use an arbitrary
  alias name for a PostScript font instead of the exact internal font name,
  which is often hard to determine.

- The length of strings passed to PDF_stringwidth() is no longer limited.

- Disallows "." and ".." as file names.

- Fixes bugs in the coordinate handling when the "topdown" parameter was true:

  - Positive charspacing values moved characters to the left instead of to
    the right.

  - PDF_fit_textline() and PDF_fit_image() could place text or images in
    wrong positions for certain combinations of the "position" and "fitmethod"
    options.

- EBCDIC-conversion and sorting of destination names was carried out
  in the wrong order, which may have resulted in an unsorted list on
  EBCDIC platforms.

- Silently ignore duplicate destination names supplied to PDF_add_nameddest()
  instead of throwing an exception.

- Detect and reject JPEG images with multiple scans per frame since these
  are not supported in Acrobat ("missing data for an image" in Acrobat 6,
  wrong colors in earlier versions).

- Added a validity check to detect malformed UTF-16 strings, and throws an
  exception for UTF-16 strings containing an odd number of characters.

- PDFlib Lite crashed when a UCS2 CMap was supplied for one of the standard
  CJK fonts.

- PDFlib could crash when invalid syntax was supplied for a color option
  in one of the PDF_fill_*block() functions.

- PDF_arc() and PDF_arcn() generated incorrect output for certain angles
  when the topdown parameter was set to true.

- Ignores leading @ character (Windows notation for vertical fonts) when
  searching for host fonts on Windows.

- Disallows applying the "fontstyle" option to PDF core fonts.

- Improves PDF_add_nameddest():
  - Parameter checking for the "name" parameter was missing.

  - Due to a typo writing the /Limits entry for destination names could result
    in a crash, depending on the length of the first and last (alphabetically)
    destination names.

- PDI erroneously converted Unicode document info strings on EBCDIC platforms,
  which could result in wrong strings returned by PDF_get_pdi_parameter().

- PDF_open_pdi_callback() couldn't open encrypted documents even if the
  proper master password was supplied.

- Fixed a crash which could happen in very rare situations: a TrueType or
  OpenType font was loaded as a virtual file, but didn't contain the
  requested font. In this case PDFlib would crash while trying to raise
  an exception. This is highly unlikely to occur in real-world applications,
  though.

- On Mac OS the Carbon build of PDFlib Lite didn't link because of a missing
  helper function (FSPathMakeFSSpec).

- Improves the logic for finding the "proper" internal name of TrueType and
  OpenType fonts. Previously certain Japanese fonts (like those contained in
  dfjhsmw3.ttc) couldn't be processed because PDFlib expected the internal
  PostScript name which is usually not known to the user. For OpenType fonts
  this also fixed the bug that the /FontName key in the PDF name didn't
  contain the font's PostScript name, but rather its TrueType name. However,
  Acrobat accepted these font dictionaries nevertheless.

- Using textformat utf8 could potentially result in a crash.

- Due to a missing initialization palette entries for PNG, TIFF, or BMP images
  could be wrong in rare circumstances when many similar palettes were used.

- On Windows unknown encoding names with more than four characters have
  not been rejected, but instead interpreted as the system code page.

- Added code for detecting EFAX TIFF files (*.jfx) which have a directory
  count of 0.

- PDF_load_image() could crash with the option "reftype url" and parameter
  imagetype = raw.

- Using CID fonts on EBCDIC platforms resulted in bad PDF output because
  the /Registry and /Ordering strings haven't been converted to ASCII.

- In rare cases PDI would seek one byte beyond EOF when using the
  PDF_open_pdi_callback() interface.

- The "filename" option in "bookmarkdest" parameters and option lists didn't
  get proper EBCDIC treatment.

- The "scale" option for PDF_fit_image() and PDF_fit_pdi_page() didn't allow
  negative scaling factors.

- The left margin for PDF_continue_text() has been reset by underlined text.

- Text positioning could be wrong (text placed at (0, 0)) when a text output
  sequence was interrupted by save/restore.

- PDI could not read PDFs with indirect objects in the OutputIntents array.
  Ironically, this affected PDF/X files generated with PDFlib.

- Some glyphs in a TrueType or OpenType font could get missing or wrong widths
  in a PDF output, resulting in overlapping text or bad character spacing.
  This occurred only in a very rare combination of conditions including
  active font subsetting, several contiguous glyphs having a width of 0, and
  some interaction with parameters of the space-saving algorithm for generating
  the glyph widths array.

- The timezone entry in the document info could be off by one minute in
  some cases due to a rounding/truncation problem.

- Kerning pairs and values were wrong for encoding "glyphid" in TrueType
  and OpenType fonts.

- Some kerning pairs in TrueType and OpenType fonts could get lost. This
  happened when at least one of the kerned characters used a glyph id
  which was mapped to multiple Unicode values in the font. Most importantly,
  a glyph which was mapped both to space and no-break space characters
  wouldn't kern.


Bindings
========

- All
  - Added wrappers for the PDF_get_errmsg(), PDF_get_errnum(), and
    PDF_get_apiname() functions.

- C++
  - A systematic bug in the C++ wrapper resulted in excessive memory usage.
    Although the memory was not leaked, memory requirements could be
    considerably higher than in other bindings.

- Cobol
  - Adds the PDF_get_buffer() wrapper function.

- COM
  - Removed the wrappers for the deprecated functions PDF_setgray*() and
    PDF_setrgbcolor*() in order to reduce the total number of API functions
    in the COM wrapper.

- .NET
  - Adds an alternate DLL edition of the PDFlib .NET binding in order to
    work around the .NET framework bug which thwarts use of the standard
    PDFlib .NET edition with ASP.NET.

  - The reason for failed file operations (access denied, file not found, 
    etc.) could be wrong in an unpredictable manner due to different
    implementations of the Windows GetLastError() function in managed vs.
    unmanaged code.


Samples
=======

- All samples in all language bindings:
  Use new method of retrieving detailed error information after a PDFlib
  function call failed even when no exception was thrown.

- C samples:
  - removes a few stray references to stderr.

- C clients: pdfimpose
  - Added the -v option for specifying the PDF output version number

- C++
  - Replaced the deprecated overloaded PDFlib method open() with the standard
    open_file() in the samples.

- COM
  Added exception handling to the VBS/ASP and VB samples.


Build system, packaging and platforms
=====================================

- Introduces disk images (.dmg) for Mac OS.

- Adds a configure option for building xplinked binaries on zSeries.

- The C++ binding is enabled for PDFlib Lite by default in the configure
  script. It can still be disabled by using "configure --disable-cpp" in
  case of problems with the local C++ compiler.

- Always uses config/install-sh for installing files instead of a system-
  supplied install tool which may be present.

- Adds a version for OpenVMS.

- Adds a workaround for an incompatibility between older and newer versions
  of glibc. Most prominently, the problem was present on RedHat 9 systems
  which was the first Linux distribution to use the newer glibc version
  by default.

- Switches the iSeries build to Terraspace malloc to work around the 16MB
  restriction of the standard malloc (requires V4R5 or above).

- Updated the project files to CodeWarrior 8.

- Mac OS X
  Added code for dynamically loading the PDFlib shared library at runtime.

- The grid.pdf helper file was missing from all packages.


===========================
PDFlib 5.0.1 (May 27, 2003)
===========================

New features
============

- Special handling for ZapfDingbats font in block definitions: for this
  font encoding "builtin" is always used.

- Support for EUDC fonts created with Microsoft's eudcedit.exe tool (*.tte
  fonts). This involved minor modifications to the TrueType name table
  entry selection logic.

- Implements the "glyphwarning" parameter which controls PDFlib's behavior
  for characters which are missing from a font.

- Additions to block processing:
  - Implements block property overrides through the option lists of
    all PDF_fill_*block() functions. In addition "font" can be used
    to supply a font handle instead of a font name via "fontname".

  - Implements the "auto" keyword for the "fitmethod" property.

  - Implements the "fontstyle" property in PDF_fill_textblock().

  - Implements the "fontwarning" option in PDF_fill_textblock().

  - Implements the "imagewarning" option in PDF_fill_imageblock().

- Implements the new keyword "auto" for the "fitmethod" option
  of PDF_fit_image(), PDF_fit_textline(), and PDF_fit_pdi_page().

- Implements the "color", "fontstyle", and "filename" options for the
  bookmarkdest parameter.

- Implements the "fontstyle" option in PDF_load_font() for artificial
  bold and italic styles with TrueType and OpenType fonts.

- Accepts the following spot color name suffixes in Pantone color names
  for compatibility with previous versions of the Pantone libraries:
  CV, CVC, CVP, CVU, CVV.
  This allows for better spot color name compatibility with old applications
  which implement the old Pantone names, such as Adobe Illustrator 8.


Bug fixes
=========

- Two glyph IDs from the MingLiu TrueType font cannot be used. Instead of
  complaining about "corrupt TrueType font" PDFlib now issues a warning,
  and replaces the problematic glyphs with glyph ID 0.

- Type 1 text fonts with a PFM file cannot be used with "builtin" encoding,
  so this encoding is changed to "winansi". However, if the same font/encoding
  combination is requested again later it won't be found in the cache due to
  the adjusted encoding. This behavior has been changed so that the font will
  now be found, instead of allocating a new font and (potentially) embedding
  the same font multiply.

- Jumping out of a page description sequence could result in a wrong error
  message "Compression error (deflateEnd) ". This could be provoked in C,
  but mainly affected Java clients when a Java exception was thrown by
  the client, and PDF_delete() called upon cleanup.

- Encryption didn't work properly on 64-bit architectures with 32-bit integers.

- Due to a triple error working with default gray/RGB/CMYK color spaces
  was not possible in PDF/X-3 mode: PDFlib wrongly complained about missing
  default color spaces even if they were set.

- Fixed a memory leak in PDI when a page was used multiply.

- CID fonts (including the standard CJK fonts) generated corrupt PDF output
  when encryption was used.

- Fixed a typo in the CJK metrics data array which had nasty consequences:

  - PDF output for MSungStd-Light-Acro had two /W arrays, which may result
    in wrong glyph widths.

  - PDF output for STSongStd-Light-Acro didn't include any /W array, resulting
    in wrong glyph widths.

- The "kerning" property didn't work in PDF_fill_textblock().

- The option list parser could erroneously complain "option Y not supported
  for PDF version 1.X" although the option actually should be supported.

- Fixed a scaling bug with multi-strip TIFF images: the scaling factors
  of the first and last strip were exchanged. As a result the height of
  the top-most strip was reduced, and the height of the bottom-most strip
  was increased, which in turn shifted all image strips to the top.

- Fonts contained in TrueType collection (.ttc) files didn't work as host
  fonts on Windows due to a bug in a Windows GDI function (confirmed by
  Microsoft). A workaround suggested by Microsoft technical support now
  allows proper access of TTC fonts as host fonts. Previously these triggered
  a message "Corrupt font file".

- Fine-tuned the TrueType cmap selection logic in order to properly
  process some unusual barcode fonts, and fix an obscure bug:

  - Fonts which only contained a (1, 0) (= Mac) cmap could not be used with
    "glyphid" or "unicode" encoding.

  - Fonts with an empty (3, 1) (=Windows) cmap and a (1, 0) (=Mac) cmap
    could not be used with "macroman" encoding.

- The encoding entries for Type 3 fonts used the names of predefined
  encodings (such as WinAnsi), which triggers a bug in Acrobat. We now
  always write the encoding vector explicitly to work around the Acrobat bug.

- The sample upr file distributed with all packages didn't list all
  possible resource categories at the beginning, leading to problems
  when it was extended for more category sections.

- An incorrect exception "Corrupt TrueType font file" was thrown when
  all of the following conditions were true:
  - A TrueType font had a certain format 4 cmap property (idRangeOffset = 65535)
  - Encoding "unicode" or "glyphid" was requested
  - Character code 65535 was supplied.

- The positioning of contents placed with any of the PDF_fill*() functions
  was wrong for block PDFs with either a /Rotate key other than 0, or a
  CropBox or MediaBox with an origin other than (0, 0);

- The "pdiusebox" parameter and option were not implemented (PDI).

- The font names for TTC fonts can be specified with space characters as
  well as with hyphen characters as separators for the name parts
  (e.g., "MS-Mincho" as well as "MS Mincho").

- PDF_stringwidth() returned the wrong widths (i.e., not the width of the
  space character) for characters in a Type 1 font when both of the following
  conditions were true:

  - Encoding "unicode" has been supplied to PDF_load_font().

  - The glyph name resulting from mapping the Unicode value via AGL is
    not contained in the font, or AGL does not contain any entry for this
    Unicode value.

- Fixed a bug in the timezone generation for the ModDate and CreationDate
  entries which occured for rare combinations of time zone and date.


Bindings
========

- All Unicode-capable bindings: COM, Java, .NET, Tcl

  - Setting the "Trapped" document info key didn't work because of a
    wrong check for allowed values.

  - Using the UniJIS-UCS2-HW-H/V CMaps resulted in a wrong error message 
    "Using 'UCS-2' encoding instead of 'UniJIS-UCS2-HW-V' for font"
    although these CMaps are actually UCS-2 compatible.

  - Characters outside of Latin-1 did not work with show_boxed(), but were
    replaced with space or .notdef characters. Since show_boxed() does not
    support Unicode strings this has been cured by a new Unicode-capable
    function PDF_show_boxed2() in the core. All Unicode-capable wrappers
    use this new function.

  - Carriage return and linefeed characters did not work in show_boxed().


- .NET

  - The "SearchPath" feature didn't work due to a dysfunctional Windows
    .NET API method.


- PHP
  - Exception strings included the error number and API name twice.

  - Synchronized ext/pdf/pdf.c with the current PHP CVS version (1.112.2.5).

  - PDF_get_value(p, "font", 0) returned an incorrect value for the font
    handle because the handle adjustment code was missing.


Packaging
=========

- COM and .NET installer
  - Added the registry template pdflib.reg.


Samples
=======

- businesscard: changed the value of the "fitmethod" option to "auto"
  wich is more appropriate for this kind of application.

- businesscard: added the "pdiwarning" option to facilitate problem analysis
  when fonts are missing.


=============================
PDFlib 5.0.0 (March 31, 2003)
=============================

New features, Changes, and Bug Fixes
====================================

- Too numerous to list here, see the manual for a list of new features
  in PDFlib 5.

- Major changes in the build environment, and a complete rework of the
  source code tree.
