Implemented the resolution of collapsing borders in the FO tree, for every situation (normal, cell at the top of a page, cell broken), taking conditionality, headers and footers into account.
Minor tweaks:
* only add text to a fo:wrapper if it is not a direct flow-descendant
* error if an fo:wrapper that is a direct flow-descendant contains inline-level children
Adrian Cumiskey [Wed, 12 Dec 2007 12:24:10 +0000 (12:24 +0000)]
* Added an SVG handler and Graphics2D implementation for AFP which injects AFP GOCA structured fields into the AFPDataStream.
* Fixed many checkstyle problems.
* Updated xmlgraphics-commons-1.3svn.jar to include changes to TextHandler
Updated xmlgraphics from SVN
Added autodetection of fonts in jar files (x-font and x-font-truetype)
Added files needed for testcase
Please note: Actual testcase is still missing!
Jeremias Maerki [Mon, 3 Dec 2007 10:16:27 +0000 (10:16 +0000)]
Log RuntimeExceptions during rendering so that they are at least visible somewhere if someone doesn't set an ErrorListener on the XSLT processor (this could lead to exceptions being swallowed). This is a temporary measure until we have time to improve the exception handling in FOP.
The original problem that led to this change was: "The number of this PDFNumber must not be empty" while producing a PDF/A with customized filter entries in the PDF configuration. The exception was a follow-up exception after a PDFConformanceException that was swallowed by a default ErrorListener.
Chris Bowditch [Tue, 20 Nov 2007 16:49:13 +0000 (16:49 +0000)]
bug fix: memory leak in PropertyCache. Fix provided by Jeremias. There are still some thread synchronization issues to be addressed in the PropertyCache. See the following thread for details: http://mail-archives.apache.org/mod_mbox/xmlgraphics-fop-dev/200711.mbox/%3cBAY117-DAV109E36CC066889386AB917FB870@phx.gbl%3e
Bugfix in tables: wrong element generation by the merging algorithm when glues must be produced to cope with conditional spaces. The corresponding length was added twice: one in the glue itself and one in the following box.
Jeremias Maerki [Tue, 20 Nov 2007 15:56:33 +0000 (15:56 +0000)]
Bugfix: Bugfix for URI resolution: Make StreamSources without system identifier work again.
Bugfix: Close streams opened by test font resolution in font configuration (the font URIs will be resolved again later anyway).
Better error message when the loading of font metric files doesn't work due to missing information in the returned Source instances.
Jeremias Maerki [Sun, 18 Nov 2007 16:56:09 +0000 (16:56 +0000)]
Bugzilla #43605:
Added methods for page-number-citation and page-number-citation-last in FOEventHandler.java
Submitted by: V. Schappert <vschappert.at.bloomberg.net>
Patch modified by Jeremias:
Bugfix: FOEventHandler.startPageNumberCitation() was also called in the case of a page-number-citation-last. Introduced abstract base classes to avoid this.
Jeremias Maerki [Sun, 18 Nov 2007 10:48:53 +0000 (10:48 +0000)]
ApacheCon US is over.
OSSSummit was cancelled/postponed.
Added example for total page count using XSL 1.1
Adjusted total page count example to new FOP API. (Thanks to Miroslav Gregan for the hint)
Jeremias Maerki [Thu, 15 Nov 2007 13:28:58 +0000 (13:28 +0000)]
Bugzilla #43143:
Had to remove the Expert(Subset) Encoding detection as this caused problems with a barcode font that used dfCharset=2 but was not using ExpertSubset encoding. To detect Expert(Subset)Encoding, the AFM needs to be parsed. And since we don't support that encoding, yet, the fallback to WinAnsiEncoding should work well enough.
Reduced visibility of some methods and constructors from public to package-private, as a consequence of the move of *GridUnit to the fo.flow.table package
Moved the creation of grid units to the FO tree building stage. Brought a few improvements along with the move:
- bugfix: border-resolution for border-end on row-spanning cells was wrong
- bugfix: in case of missing cells the border-end of the table was applied to an inner cell, instead of the cell in the last column (but missing cells aren't painted yet :-\)
- bugfix: in collapsing-border model, border-before and -after specified on table-column were applied to every cell of the column, instead of only the first and the last ones
- border resolution is now made progressively when possible, and no longer triggers the fetching of all the rows of the table
Added testcases for the border conflict resolution (between the various elements of a table and not only the cells)
Jeremias Maerki [Tue, 13 Nov 2007 12:44:29 +0000 (12:44 +0000)]
Filter single quotes from the filenames as this will interfere with font-family parsing.
Fixed bug: InputStream opened by URL.openConnection() wasn't closed which leads to "too many open files" when you have lots of fonts on Java 1.4.
Jeremias Maerki [Tue, 13 Nov 2007 12:40:38 +0000 (12:40 +0000)]
Improved PFM loading:
- Fixed bug with Flags (resulted in bad PDFs for certain fonts)
- Warn about possible charset problems.
- Fixed bug for "last char" (probably a copy/paste mistake)
Jeremias Maerki [Mon, 12 Nov 2007 09:40:16 +0000 (09:40 +0000)]
Avoid null values in generated Font classes so the encoding can be inspected.
Don't warn about missing hyphenation characters for fonts such as Symbol and ZapfDingbats which don't have the default hyphenation character.
Jeremias Maerki [Mon, 12 Nov 2007 08:27:46 +0000 (08:27 +0000)]
Issue a clear warning if the selected hyphenation character is not available in a font. Otherwise you'd just get a "glyph not available" error and you wonder why the hell FOP wants to use that character.
Jeremias Maerki [Sun, 11 Nov 2007 15:30:34 +0000 (15:30 +0000)]
Bugzilla #43835:
Bugfix: Use Font.getName() (logical font name) instead of Font.getFontName() (localized) when registering fonts from AWT.
Submitted by: David Churavy <churavy.at.kadel.cz>
Jeremias Maerki [Fri, 9 Nov 2007 08:33:52 +0000 (08:33 +0000)]
Bugfix: An invalid PDF was created if a grayscale JPEG image with an sRGB profile was embedded undecoded. I didn't find any other way than to disable the the ICC profile in this case.
Jeremias Maerki [Thu, 8 Nov 2007 18:36:01 +0000 (18:36 +0000)]
Another improvement for font auto-detection:
Some TrueType fonts have multiple font family names which we haven't extracted so far. All these names are now exposed as a Set of Strings.
An example: Futura Book BT has two font families: Futura (Mac platform) and Futura Bk BT (Windows platform).
Jeremias Maerki [Thu, 8 Nov 2007 15:13:24 +0000 (15:13 +0000)]
Improved font auto-detection and handling of AWT-supplied fonts in order to achieve better results when using multiple output formats. Whenever possible, the font names appearing in the operating system can also be used in XSL-FO.
Better distinction between Font Family Name ("Arial"), Full Font Name ("Arial Bold") and PostScript Name ("Arial-BoldMT"). This allows a better generation of FontTriplets. The same is done for AWT fonts where I have switch from font-family detection to enumerating all java.awt.Font instances so I can extract Family Name, Full Name and PostScript Name. FontInfoFinder and AWT's FontSetup are synchronized as well as possible at this time.
Register "extra-bold" (weight 800) and "light" (weight 200) in triplets when detected.
Tweaked FontInfo.fontLookup() for better fallback behaviour. This approach is rapidly nearing its flexibility limits. We should rethink the FontTriplet structure.
Fixed font-autodetection so fonts with uppercase extensions are detected, too.
Made the way TrueType fonts are embedded in PDF compliant to the specification so viewers correctly identify subset fonts. The name prefix in MultiByteFont was incorrect.
Support the detection of the special Type 1 Symbol font. Symbol used to be detected with "ExpertSubsetEncoding" instead of "SymbolEncoding".
Type1FontLoader tries to construct a "full name" from the PostScript name. This is a temporary hack until we have a PFB or PFA parser.