$Id$

==============================================================================
  APACHE FOP  -  README
==============================================================================

Contents of this file:
 - What is FOP?
 - Legal Information
 - Where to get help?
 - How do I build FOP?
 - How do I run FOP?
 - Release Notes

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


What is FOP?
------------

Apache FOP is a print formatter driven by XSL formatting objects. It is a Java
application that reads a formatting object tree conforming to the XSL 1.1
Recommendation (05 December 2006) and then turns it into a PDF document,
certain other output formats or allows you to preview it directly on screen.
Note that not all parts of the XSL 1.1 specification have yet been
implemented.

Apache FOP is part of Apache's XML Graphics project. The homepage of Apache 
FOP is http://xmlgraphics.apache.org/fop/.
    
    
Legal Information
-----------------

Apache FOP 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 FOP can be found in the 
"lib/README.txt" file.

Here is a list of files included in Apache FOP but not published under Apache
License version 2.0:
- K3 3 of 9 barcode font (TrueType)
  File: examples/fo/advanced/K3.TTF
  Info: examples/fo/advanced/K3.README
- DejaVu LGC Serif font (TrueType)
  File: test/resources/fonts/DejaVuLGCSerif.ttf
  Info: test/resources/fonts/DejaVuLGCSerif.LICENSE

    
Where to get help?
------------------
    
http://xmlgraphics.apache.org/fop/gethelp.html
    
A mailing list where you can get all your questions about FOP answered is at 
fop-users@xmlgraphics.apache.org. You can subscribe by sending an empty mail 
to fop-users-subscribe@xmlgraphics.apache.org.

Before you post any questions, please have a look at the FAQ at 
http://xmlgraphics.apache.org/fop/faq.html and FO help page at 
http://xmlgraphics.apache.org/fop/fo.html.

Please report bugs to bugzilla at http://issues.apache.org/bugzilla/


How do I build FOP?
-------------------

If you've downloaded a binary distribution, you don't need to build
FOP.

Otherwise, please follow the instructions found here:
http://xmlgraphics.apache.org/fop/stable/compiling.html

[TEMPORARY]

Until the above referenced instructions are updated, one of the following
may be used to build FOP:

Building with Maven (preferred)

% mvn clean install

Building with Ant (deprecated)

% ant -f fop/build.xml clean all

How do I run FOP?
-----------------

Simply by typing "fop" on the command-line. Without any parameters you
will receive a screen with instruction on how to call FOP from the
command-line.

For more details, see:
http://xmlgraphics.apache.org/fop/stable/running.html

[TEMPORARY]

Note that FOP command line scripts and build results from ant will be found
under the ./fop sub-directory.

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

Version 2.4
===========

Major Changes in Version 2.4
----------------------------

* Require Java 7 or later
* Drop dependency on Avalon-Framework
* Add change bar generation
* Add support for Khmer complex script

This release also contains a number of bug fixes.

Version 2.3
===========

Major Changes in Version 2.3
----------------------------

* Support for unicode Surrogate pairs
* OTF fonts not working on Mac Preview

This release also contains a number of bug fixes.

Version 2.2
===========

Major Changes in Version 2.2
----------------------------

* PCL Color support
* Allow generation of bold/italic versions of fonts for PDF
* Allow to convert OTF fonts to Type 1 for Postscript
* Deduplicate PDF content streams
* Update to PDFBox 2
* Transition from Ant to Maven Build Process

This release also contains a number of bug fixes.

Version 2.1
===========

Major Changes in Version 2.1
----------------------------

* Add PreloaderRawPNG to handle images ImageIO cant
* Support Barcode4J page number
* Support CMYK JPEG in AFP
* Support IPD change on last page
* Support PDF/UA
* Support TrueType fonts in PCL
* Support Truetype for AFP
* Support for PDF/A-3

This release also contains a number of bug fixes.

Version 2.0
===========

Java 6 or later is the minimum runtime environment needed.

Because of changes to the API, the version number has been bumped to 2.0.

Major Changes in Version 2.0
----------------------------

* Side float support
* Whitespace Management Extension
* fo:inline-container partial support
* Improved support for complex scripts
* PDF Linearization
* Support OpenType CFF fonts
* Subset support for Type 1 fonts
* Support for AES 256 PDF encryption
* SVG graphics can use FOP custom fonts

This release also contains a number of bug fixes.

Version 1.1
===========

This release of Apache FOP primarily addresses bug fixes and also adds a number
of new features. See below for details.

Compliance
----------

This release implements the XSL 1.0 and 1.1 recommendations to a relatively
high degree of compliance. See the compliance page
http://xmlgraphics.apache.org/fop/compliance.html for further details.

Known issues
------------

A detailed list of known issues in this release is available at
http://xmlgraphics.apache.org/fop/1.1/knownissues_overview.html.

Major Changes in Version 1.1
----------------------------

* Adds support for complex scripts.
* Adds support for TTF fonts in PostScript.
* Adds support for PDF Object Streams.
* Adds support for PDF 128-bit encryption.

A more detailed list of changes in this release is available at
http://xmlgraphics.apache.org/fop/1.1/changes_1.1.html.

A more detailed list of changes in this and earlier releases is available at
http://xmlgraphics.apache.org/fop/changes.html.

Version 1.0
===========

This is a production grade release of Apache FOP.
It contains many bug fixes and new features. See below for details.

Compliance
----------

This release implements the XSL 1.0 and 1.1 recommendations to a high
degree of compliance. See the compliance page
http://xmlgraphics.apache.org/fop/compliance.html for a detailed
overview.

Known issues
------------

The known issues of this release are listed at
http://xmlgraphics.apache.org/fop/1.0/knownissues_overview.html.

Major Changes in Version 1.0
----------------------------

* Added support for addressing all glyphs available in a Type 1 font
* Added support for auto-configuring TrueType Collections. XML font
  metrics files for *.ttc fonts are not required anymore.
* Added support for rendering pages using Java Printing System.
* Support character-by-character font-selection strategy on
  fo:character element.
* Implemented word-by-ford font-selection strategy on text.
* AFP Output: Various enhancements
* FOP now creates ToUnicode CMaps for single-byte fonts that don't use
  built-in encodings
* Introduced a new, additional intermediate format optimized for
  performance. See the intermediate format documentation for details.
* Added an initial set of extensions for prepress support.
* Added limited support for different page widths within a page-sequence.
* Added support for TrueType fonts with symbol character maps (like
  "Wingdings" and "Symbol").
* Added an event handling framework which allows to get better feedback
  from within FOP with the ability to customize problem management.

The long list of changes in this release is available at
http://xmlgraphics.apache.org/fop/1.0/changes_1.0.html.

The long list of changes in this and earlier releases is available at
http://xmlgraphics.apache.org/fop/changes.html.

Version 0.95
============

This is a production grade release of Apache FOP.
It contains many bug fixes and new features. See below for details.

Compliance
----------

This release implements the XSL 1.0 and 1.1 recommendations to a high
degree of compliance. See the compliance page
http://xmlgraphics.apache.org/fop/compliance.html for a detailed
overview.

Known issues
------------

The known issues of this release are listed at
http://xmlgraphics.apache.org/fop/0.95/knownissues_overview.html.

Major Changes in Version 0.95
-----------------------------

* Add new fox:external-document extension element that allows to insert whole
  documents into a page-sequence (JM)
* Add support for background on fo:table-column and fo:table-header/footer/body
  elements (VH)
* Add support for conditional borders in tables (VH)
* Add support for scale-down-to-fit and scale-up-to-fit (JM)
* Fix various bugs and performance problems with external graphics by
  introducing a new image loading framework (JM)

The long list of changes in this release is available at
http://xmlgraphics.apache.org/fop/0.95/changes_0.95.html.

The long list of changes in this and earlier releases is available at
http://xmlgraphics.apache.org/fop/changes.html.

Changes since Version 0.95beta
------------------------------
Please refer to the list of changes on the web:
http://xmlgraphics.apache.org/fop/changes.html


Version 0.94
============

This is the second production grade release of the new FOP codebase.
It contains many bug fixes and new features. See below for details.

Compliance
----------

This release implements the XSL 1.0 and 1.1 recommendations to a high
degree of compliance. See the compliance page
http://xmlgraphics.apache.org/fop/compliance.html for a detailed
overview.

Known issues
------------

The known issues of this release are listed at
http://xmlgraphics.apache.org/fop/0.94/knownissues_overview.html.

Major Changes in Version 0.94
-----------------------------

* Add support for font auto-detection (JM) Thanks to Adrian Cumiskey
* Add support for the border-collapsing model in tables (VH, JM)
* Add support for named destinations in PDF (JB)
* Add support for UAX#14 type line breaking (MM)

The long list of changes in this release is available at
http://xmlgraphics.apache.org/fop/0.94/changes_0.94.html.

The long list of changes in this and earlier releases is available at
http://xmlgraphics.apache.org/fop/changes.html.


Version 0.93
============

This is the first production grade release of the new FOP codebase.

* It contains the new API first introduced in release 0.92
  beta. The preceding API has been removed.
* This release again contains many bug fixes and new features. See
  below for details.

Compliance
----------

This release implements the XSL 1.0 and 1.1 recommendations to a high
degree of compliance. See the compliance page
http://xmlgraphics.apache.org/fop/compliance.html for a detailed
overview.

Known issues
------------

The known issues of this release are listed at
http://xmlgraphics.apache.org/fop/knownissues.html.

Upgrading
---------

You may experience different behaviour compared to version
0.20.5. Please consult the "Upgrading" page
(http://xmlgraphics.apache.org/fop/stable/upgrading.html) for
details.

Major Changes in Version 0.93
-----------------------------

* Added support for the use of Open Type fonts (BD)
* Support for the rgb-icc() function and for a proprietary cmyk()
  function (for device CMYK colors only through the PDF renderer so
  far). (JM) Thanks to Peter Coppens. Fixes 40729.
* Enabled Copy/Paste from PDF content in Acrobat Reader for
  text using embedded TrueType fonts. (BD) Thanks to Adam Strzelecki,
  Victor Mote. Fixes 5535.
* Added support for PDF/A-1b and PDF/X-3:2003. (Note: this may still
  be a bit incomplete. Feedback is welcome!)
* The Java2DRenderer (and therefore the print and bitmap renderers) is
  now offering the same quality as the PDF and PS renderers. Note:
  There can still be little differences between PDF and Print/PNG/TIFF
  because the latter uses a different font metrics source.
* Automatic support for all fonts available to the Java2D subsystem
  for all Java2D-descendant renderers (TIFF, PNG, print, AWT).

The long list of changes in this release is available at
http://xmlgraphics.apache.org/fop/0.93/changes_0.93.html.

The long list of changes in this and earlier releases is available at
http://xmlgraphics.apache.org/fop/changes.html.

The Apache FOP team asks you for your continued feedback on the
software.  We're also interested in success stories with the new
release. So if the latest version works fine for you, please tell us!
And if it doesn't, you may tell us as well, of course. ;-)

Release notes for older FOP versions can be found on:
http://xmlgraphics.apache.org/fop/relnotes.html
