$Id$

==============================================================================
  APACHE XML GRAPHICS COMMONS  -  README
==============================================================================

Contents of this file:
 - What is Apache XML Graphics Commons?
 - Where to get help?
 - How do I build Apache XML Graphics Commons?
 - Legal information
 - Release Notes

==============================================================================


What is Apache XML Graphics Commons?
---------------------------------------

It is a place where the Apache Batik and Apache FOP share commonly used 
components. Many components in here are also usable and useful stand-alone.
    
Documentation
---------------------    

The documentation can be found under:
http://xmlgraphics.apache.org/commons/

Where to get help?
---------------------    

Please subscribe to the general@xmlgraphics.apache.org mailing list by sending
an empty mail to general-subscribe@xmlgraphics.apache.org. All you questions
about XML Graphics Commons will be answered there.    

Please report bugs to JIRA at http://issues.apache.org/jira/ (project
XMLGraphicsCommons).


How do I build Apache XML Graphics Commons?
----------------------------------------------

If you've downloaded a binary distribution of Apache FOP or Apache Batik, 
you don't need to build XML Graphics Commons. It is distributed with these
two products.

Otherwise, install Apache Ant (http://ant.apache.org) and run "ant" from the
command-line in the directory where you find "build.xml".

Legal information
--------------------

Apache XML Graphics Commons is published under the Apache License 
version 2.0. For the license text, please see the following files:
- LICENSE
- NOTICE

Legal information on libraries used by Apache XML Graphics Commons, i.e. 
its dependencies, can be found in the "lib/README.txt" file.

Apache XML Graphics Commons contains unmodified copies of the Adobe Glyph
List and the ITC Zapf Dingbats Glyph List, available from:
http://www.adobe.com/devnet/opentype/archives/glyph.html

License labeling (according to http://www.apache.org/legal/3party.html):
- Multi-Licensed
- Source Available
- No Reciprocity Required

==============================================================================
  KNOWN ISSUES
==============================================================================

- PostScript output: When TexturePaint is used with PSGraphics2D, the output
  violates the DSC specification. Extracting single pages from a multi-page
  PostScript file can result in errors.

==============================================================================
  RELEASE NOTES
==============================================================================

For more detailed info about the changes, please see:
http://xmlgraphics.apache.org/commons/changes.html

Version 2.8
--------------

Minor release to be used with FOP 2.8

Version 2.7
--------------

Minor release to be used with FOP 2.7

Version 2.6
--------------

Minor release to be used with FOP 2.6

Version 2.4
--------------

Minor release to be used with FOP 2.4

Version 2.3
--------------

Minor release to be used with FOP 2.3

Version 2.2
--------------

* Transition from Ant to Maven Build Process

Minor release to be used with FOP 2.2

Version 2.1
--------------

Minor release to be used with FOP 2.1

Version 2.0.1
--------------

Minor release to be used with FOP 2.0

Version 2.0
--------------

The main new feature is the introduction of a URI resolution framework that
makes it easier to control resource access in a cloud environment. Because of
changes to the API, the version number has been bumped to 2.0.

This release also contains a number of bug fixes.

Version 1.5
--------------

This release of Apache XML Graphics Commons  primarily addresses bug fixes
and also adds a number of new features.

Version 1.4
-----------

This release adds the option to generate smaller PostScript files,
support for the AdobeStandardCyrillic encoding, RefinedImageFlavor,
TexturePaint support for PSGraphics2D (PostScript tiling patterns),
improvements to the XMP framework, optimization for PostScript state
handling in (E)PSDocumentGraphics2D, and more. In addition it contains
a number of bug fixes.

Version 1.3.1
--------------

This release is mostly a bugfix release for the image loading framework that
has been introduced in version 1.3.

Version 1.3
--------------

The most important addition in this release is an image loading framework
which supports all sorts of different image formats (bitmap and vector) and
is highly extensible.
Besides that there were a larger number of smaller additions and bugfixes.
Support for Java 1.3 has been dropped. Java 1.4 or later is required now.

Version 1.2
--------------

This release mainly adds support for CMYK and GRAY color spaces for PSGenerator.

Version 1.1
--------------

This release adds an XMP metadata framework and brings improvements for the
ImageWriter package plus some minor fixes mainly in the PostScript area.

Version 1.0
--------------

This is the first release of Apache XML Graphics Commons. There are currently
no known issues with the code.
