You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by vh...@apache.org on 2007/08/08 19:37:46 UTC

svn commit: r563951 [1/2] - in /xmlgraphics/fop/branches/fop-0_94: ./ src/documentation/content/xdocs/ src/documentation/content/xdocs/trunk/ src/java/META-INF/services/ src/java/org/apache/fop/fo/ src/java/org/apache/fop/fo/properties/ src/java/org/ap...

Author: vhennebert
Date: Wed Aug  8 10:37:33 2007
New Revision: 563951

URL: http://svn.apache.org/viewvc?view=rev&rev=563951
Log:
Merged revisions 556566-556990,556992-556996,556998-557336,557338-557540,557542-557629,557631-557648,557651-558044,558046-559086,559088-562052,562054-562139,562141-562171,562173-562382,562384-563902,563904-563927 via svnmerge from 
https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk

........
  r557035 | adelmelle | 2007-07-17 21:29:40 +0200 (mar, 17 jui 2007) | 1 line
  
  Undo changes of r556112
........
  r557219 | manuel | 2007-07-18 12:40:12 +0200 (mer, 18 jui 2007) | 1 line
  
  Fixed incomplete support for Unicode word joiners
........
  r557272 | adelmelle | 2007-07-18 16:21:49 +0200 (mer, 18 jui 2007) | 1 line
  
  Correction of premature javadoc commit in r557035
........
  r557347 | manuel | 2007-07-18 20:06:09 +0200 (mer, 18 jui 2007) | 1 line
  
  Added support for keep-togther.within-line="always"
........
  r557612 | adelmelle | 2007-07-19 15:24:54 +0200 (jeu, 19 jui 2007) | 1 line
  
  Fix: add implementation of hashCode() and equals() to NumberProperty, to make the caching work as expected.
........
  r557814 | adelmelle | 2007-07-20 01:31:55 +0200 (ven, 20 jui 2007) | 1 line
  
  Cache CharacterProperty
........
  r557934 | jeremias | 2007-07-20 11:17:21 +0200 (ven, 20 jui 2007) | 1 line
  
  Fix bug in equals() that made caching effect-less.
........
  r558041 | adelmelle | 2007-07-20 18:20:23 +0200 (ven, 20 jui 2007) | 1 line
  
  Fix possible memory leak in PropertyCache
........
  r558042 | adelmelle | 2007-07-20 18:25:23 +0200 (ven, 20 jui 2007) | 1 line
  
  Remove method added only for quick debug.
........
  r558047 | adelmelle | 2007-07-20 18:51:51 +0200 (ven, 20 jui 2007) | 1 line
  
  Tweak: use generic boolean Maker.
........
  r558279 | vhennebert | 2007-07-21 11:37:08 +0200 (sam, 21 jui 2007) | 2 lines
  
  Fix javadoc error
........
  r558455 | manuel | 2007-07-22 04:55:46 +0200 (dim, 22 jui 2007) | 1 line
  
  Corrected issue with zero width spaces being given a non zero width
........
  r558456 | manuel | 2007-07-22 05:08:14 +0200 (dim, 22 jui 2007) | 1 line
  
  Changed my mind on handling of width calculation for zero width spaces and moved it into the Font class where other similar cases are already dealt with
........
  r559818 | jeremias | 2007-07-26 15:59:12 +0200 (jeu, 26 jui 2007) | 1 line
  
  rubico.com doesn't exist anymore.
........
  r560936 | cbowditch | 2007-07-30 14:20:15 +0200 (lun, 30 jui 2007) | 5 lines
  
  Bugzilla #42971 and #42956
  AFP Renderer Improvements
  Submitted by Adrian Cumiskey <dev.at.cumiskey.com>
........
  r561251 | jeremias | 2007-07-31 09:19:11 +0200 (mar, 31 jui 2007) | 4 lines
  
  Bugzilla #42956:
  AFP Renderer - No Operation Extension.
  Added missing file (including the bugfix for the right encoding).
  Submitted by: Adrian Cumiskey <dev.at.cumiskey.com>
........
  r561256 | cbowditch | 2007-07-31 09:54:02 +0200 (mar, 31 jui 2007) | 4 lines
  
  Bugzilla #42956:
  AFP Renderer - No Operation Extension.
  yet another missing file! The documentation!
  Submitted by: Adrian Cumiskey <dev.at.cumiskey.com>
........
  r561280 | jeremias | 2007-07-31 11:28:47 +0200 (mar, 31 jui 2007) | 2 lines
  
  AFP Renderer: Bugfix for 1 bit images where the width is not a multiple of 8.
  Essentially, I rewrote convertToGrayScaleImage() to properly padding at the end of each scanline if necessary.
........
  r561757 | cbowditch | 2007-08-01 12:39:58 +0200 (mer, 01 aoû 2007) | 3 lines
  
  Bugzilla #42956
  Second attempt at AFP NOP Extension
  Submitted by Adrian Cumiskey <dev.at.cumiskey.com>
........
  r561861 | vhennebert | 2007-08-01 18:30:44 +0200 (mer, 01 aoû 2007) | 2 lines
  
  Set visibility of fields to private
........
  r562908 | vhennebert | 2007-08-05 19:08:04 +0200 (dim, 05 aoû 2007) | 6 lines
  
  Add in status.xml the noticeable changes I made in the last couple of months:
  - support for conditional spaces in tables
  - fix several keeps and breaks issues in tables
  
  Plus add importance="high" to the font auto-detection addition
........

Added:
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPExtensionHandler.java
      - copied unchanged from r561861, xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPExtensionHandler.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPExtensionHandlerFactory.java
      - copied unchanged from r561861, xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/extensions/AFPExtensionHandlerFactory.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/modca/NoOperation.java
      - copied unchanged from r561861, xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/modca/NoOperation.java
Removed:
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/IntMap.java
Modified:
    xmlgraphics/fop/branches/fop-0_94/   (props changed)
    xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/compliance.ihtml
    xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/resources.xml
    xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/trunk/output.xml
    xmlgraphics/fop/branches/fop-0_94/src/java/META-INF/services/org.apache.fop.util.ContentHandlerFactory
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FONode.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FOPropertyMapping.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FOText.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/CharacterProperty.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/FixedLength.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/NumberProperty.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/PropertyCache.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fonts/Font.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fonts/truetype/TTFFile.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/layoutmgr/LayoutContext.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/AFPRenderer.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPElement.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPElementMapping.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPPageSetup.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/fonts/AFPFontReader.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/fonts/CharacterSet.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/modca/AFPDataStream.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/modca/AbstractPageObject.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CMYKColorSpace.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CharUtilities.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CloseBlockerOutputStream.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CommandLineLogger.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DOMBuilderContentHandlerFactory.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DataURIResolver.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DefaultErrorListener.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DelegatingContentHandler.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/QName.java
    xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/WriterOutputStream.java
    xmlgraphics/fop/branches/fop-0_94/status.xml
    xmlgraphics/fop/branches/fop-0_94/test/layoutengine/disabled-testcases.xml
    xmlgraphics/fop/branches/fop-0_94/test/layoutengine/standard-testcases/block_uax14_linebreaking.xml
    xmlgraphics/fop/branches/fop-0_94/test/layoutengine/standard-testcases/inline_keep-together.xml
    xmlgraphics/fop/branches/fop-0_94/test/layoutengine/standard-testcases/page-breaking_5.xml

Propchange: xmlgraphics/fop/branches/fop-0_94/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Aug  8 10:37:33 2007
@@ -1 +1 @@
-/xmlgraphics/fop/trunk:1-556565
+/xmlgraphics/fop/trunk:1-556990,556992-556996,556998-557336,557338-557540,557542-557629,557631-557648,557651-558044,558046-559086,559088-562052,562054-562139,562141-562171,562173-562382,562384-563927

Modified: xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/compliance.ihtml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/compliance.ihtml?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/compliance.ihtml (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/compliance.ihtml Wed Aug  8 10:37:33 2007
@@ -3692,8 +3692,13 @@
           <li>
             [0.93] works on all implemented block-level FOs, but not on inline-level FOs.          </li>
           <li>
-            [0.93] &lt;integer&gt; values are not supported.          </li>
-        </ul>      </td>
+            [0.93] &lt;integer&gt; values are not supported.
+          </li>
+          <li>
+            [Dev] &lt;integer&gt; values are not supported.
+          </li>
+        </ul>
+      </td>
     </tr>
     <tr>
       <td>

Modified: xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/resources.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/resources.xml?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/resources.xml (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/resources.xml Wed Aug  8 10:37:33 2007
@@ -219,7 +219,6 @@
           <li>[software] <jump href="http://www.scruffyware.com/products/foeditor/">FOEditor</jump> by Scruffy Software (Shareware)</li>
           <li>[software] <jump href="http://www.scriptura-xsl.com">Scriptura</jump> by Inventive Designers (commercial)</li>
           <li>[software] <jump href="http://www.xslfast.com">XSLfast</jump> by jCatalog Software AG (commercial)</li>
-          <li>[software] <jump href="http://www.rubico.com/styler">XML Report Styler</jump> by Rubico (commercial)</li>
           <li>[software] <jump href="http://www.metafocus.no/en/xultation_designer.php">Xultation Designer</jump> by Metafocus (commercial)</li>
           <li>[software] <jump href="http://web.assentis.com/products/products.php?navi=Products&amp;product_id=7">Assentis:DocDesign</jump> by Assentis Technologies (commercial)</li>
         </ul>

Modified: xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/trunk/output.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/trunk/output.xml?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/trunk/output.xml (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/documentation/content/xdocs/trunk/output.xml Wed Aug  8 10:37:33 2007
@@ -590,8 +590,7 @@
       </section>
       <section id="afp-tag-logical-element">
         <title>Tag Logical Element Extension</title>
-        <p>The tag-logical-element extension element allows to injects TLEs into the AFP output stream. Example: 
-          Example:</p>
+        <p>The tag-logical-element extension element allows to injects TLEs into the AFP output stream. Example:</p>
       <source><![CDATA[
     <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
      xmlns:afp="http://xmlgraphics.apache.org/fop/extensions/afp">
@@ -605,6 +604,24 @@
         <p>The tag-logical-element extension element can only occur within a simple-page-master.
         Multiple tag-logical-element extension elements within a simple-page-master are allowed.
         The name and value attributes are mandatory.
+        </p>
+      </section>
+      <section id="afp-no-operation">
+        <title>No Operation Extension</title>
+        <p>The no-operation extension provides the ability to carry up to 32K of comments or any other type
+        of unarchitected data into the AFP output stream. Example:</p>
+      <source><![CDATA[
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
+     xmlns:afp="http://xmlgraphics.apache.org/fop/extensions/afp">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="simple">
+          <afp:no-operation name="My NOP">insert up to 32k of character data here!</afp:no-operation>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+]]></source>
+        <p>The no-operation extension element can only occur within a simple-page-master.
+        Multiple no-operation extension elements within a simple-page-master are allowed.
+        The name attribute is mandatory.
         </p>
       </section>
     </section>

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/META-INF/services/org.apache.fop.util.ContentHandlerFactory
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/META-INF/services/org.apache.fop.util.ContentHandlerFactory?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/META-INF/services/org.apache.fop.util.ContentHandlerFactory (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/META-INF/services/org.apache.fop.util.ContentHandlerFactory Wed Aug  8 10:37:33 2007
@@ -1,2 +1,3 @@
+org.apache.fop.render.afp.extensions.AFPExtensionHandlerFactory
 org.apache.fop.render.ps.extensions.PSExtensionHandlerFactory
-org.apache.fop.fo.extensions.xmp.XMPContentHandlerFactory
\ No newline at end of file
+org.apache.fop.fo.extensions.xmp.XMPContentHandlerFactory

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FONode.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FONode.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FONode.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FONode.java Wed Aug  8 10:37:33 2007
@@ -103,6 +103,20 @@
     }
 
     /**
+     * Bind the given <code>PropertyList</code> to this node
+     * Does nothing by default. Subclasses should override this method 
+     * in case they want to use the properties available on the 
+     * <code>PropertyList</code>.
+     * 
+     * @param   propertyList    the <code>PropertyList</code>
+     * @throws  FOPException if there was an error when
+     *          processing the <code>PropertyList</code>
+     */
+    public void bind(PropertyList propertyList) throws FOPException {
+        //nop
+    }
+    
+    /**
      * Set the location information for this element
      * @param locator the org.xml.sax.Locator object
      */

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FOPropertyMapping.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FOPropertyMapping.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FOPropertyMapping.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FOPropertyMapping.java Wed Aug  8 10:37:33 2007
@@ -1076,9 +1076,8 @@
 
         // hyphenate
         m  = new EnumProperty.Maker(PR_HYPHENATE);
+        m.useGeneric(genericBoolean);
         m.setInherited(true);
-        m.addEnum("true", getEnumProperty(EN_TRUE, "TRUE"));
-        m.addEnum("false", getEnumProperty(EN_FALSE, "FALSE"));
         m.setDefault("false");
         addPropertyMaker("hyphenate", m);
 
@@ -1695,9 +1694,8 @@
 
         // treat-as-word-space
         m  = new EnumProperty.Maker(PR_TREAT_AS_WORD_SPACE);
+        m.useGeneric(genericBoolean);
         m.addEnum("auto", getEnumProperty(EN_AUTO, "AUTO"));
-        m.addEnum("true", getEnumProperty(EN_TRUE, "TRUE"));
-        m.addEnum("false", getEnumProperty(EN_FALSE, "FALSE"));
         m.setInherited(false);
         m.setDefault("auto");
         addPropertyMaker("treat-as-word-space", m);
@@ -2238,9 +2236,8 @@
 
         // precedence
         m  = new EnumProperty.Maker(PR_PRECEDENCE);
+        m.useGeneric(genericBoolean);
         m.setInherited(false);
-        m.addEnum("true", getEnumProperty(EN_TRUE, "TRUE"));
-        m.addEnum("false", getEnumProperty(EN_FALSE, "FALSE"));
         m.setDefault("false");
         addPropertyMaker("precedence", m);
 

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FOText.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FOText.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FOText.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/FOText.java Wed Aug  8 10:37:33 2007
@@ -30,6 +30,7 @@
 import org.apache.fop.fo.properties.CommonFont;
 import org.apache.fop.fo.properties.CommonHyphenation;
 import org.apache.fop.fo.properties.CommonTextDecoration;
+import org.apache.fop.fo.properties.KeepProperty;
 import org.apache.fop.fo.properties.Property;
 import org.apache.fop.fo.properties.SpaceProperty;
 
@@ -80,6 +81,7 @@
     private CommonFont commonFont;
     private CommonHyphenation commonHyphenation;
     private Color color;
+    private KeepProperty keepTogether;
     private Property letterSpacing;
     private SpaceProperty lineHeight;
     private int whiteSpaceTreatment;
@@ -165,6 +167,7 @@
         commonFont = pList.getFontProps();
         commonHyphenation = pList.getHyphenationProps();
         color = pList.get(Constants.PR_COLOR).getColor(getUserAgent());
+        keepTogether = pList.get(Constants.PR_KEEP_TOGETHER).getKeep();
         lineHeight = pList.get(Constants.PR_LINE_HEIGHT).getSpace();
         letterSpacing = pList.get(Constants.PR_LETTER_SPACING);
         whiteSpaceCollapse = pList.get(Constants.PR_WHITE_SPACE_COLLAPSE).getEnum();
@@ -553,6 +556,13 @@
      */
     public Color getColor() {
         return color;
+    }
+
+    /** 
+     * @return the "keep-together" property.
+     */
+    public KeepProperty getKeepTogether() {
+        return keepTogether;
     }
 
     /**

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/CharacterProperty.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/CharacterProperty.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/CharacterProperty.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/CharacterProperty.java Wed Aug  8 10:37:33 2007
@@ -25,8 +25,8 @@
 /**
  * Superclass for properties that wrap a character value
  */
-public class CharacterProperty extends Property {
-
+public final class CharacterProperty extends Property {
+    
     /**
      * Inner class for creating instances of CharacterProperty
      */
@@ -42,19 +42,27 @@
         public Property make(PropertyList propertyList, String value,
                              FObj fo) {
             char c = value.charAt(0);
-            return new CharacterProperty(c);
+            return CharacterProperty.getInstance(c);
         }
 
-    }    // end Character.Maker
+    }
+
+    /** cache containing all canonical CharacterProperty instances */
+    private static final PropertyCache cache = new PropertyCache();
 
-    private char character;
+    private final char character;
 
     /**
      * @param character character value to be wrapped in this property
      */
-    public CharacterProperty(char character) {
+    private CharacterProperty(char character) {
         this.character = character;
     }
+    
+    public static CharacterProperty getInstance(char character) {
+        return (CharacterProperty) cache.fetch(
+                        new CharacterProperty(character));
+    }
 
     /**
      * @return this.character cast as an Object
@@ -75,6 +83,24 @@
      */
     public String getString() {
         return new Character(character).toString();
+    }
+
+    /** 
+     * {@inheritDoc}
+     */
+    public boolean equals(Object obj) {
+        if (obj instanceof CharacterProperty) {
+            return (((CharacterProperty)obj).character == this.character);
+        } else {
+            return false;
+        }
+    }
+
+    /** 
+     * {@inheritDoc}
+     */
+    public int hashCode() {
+        return (int) character;
     }
 
 }

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/FixedLength.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/FixedLength.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/FixedLength.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/FixedLength.java Wed Aug  8 10:37:33 2007
@@ -151,7 +151,7 @@
      * @see java.lang.Object#equals(Object)
      */
     public boolean equals(Object obj) {
-        if (obj instanceof EnumProperty) {
+        if (obj instanceof FixedLength) {
             return (((FixedLength)obj).millipoints == this.millipoints);
         } else {
             return false;

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/NumberProperty.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/NumberProperty.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/NumberProperty.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/NumberProperty.java Wed Aug  8 10:37:33 2007
@@ -223,4 +223,20 @@
         return Color.black;
     }
 
+    /** {@inheritDoc} */
+    public int hashCode() {
+        return number.hashCode();
+    }
+    
+    /** {@inheritDoc} */
+    public boolean equals(Object o) {
+        if (o != null && o instanceof NumberProperty) {
+            NumberProperty np = (NumberProperty) o;
+            return (np.number == this.number
+                    || (this.number != null
+                        && this.number.equals(np.number)));
+        } else {
+            return false;
+        }
+    }
 }

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/PropertyCache.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/PropertyCache.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/PropertyCache.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fo/properties/PropertyCache.java Wed Aug  8 10:37:33 2007
@@ -19,6 +19,7 @@
 
 package org.apache.fop.fo.properties;
 
+import java.lang.ref.WeakReference;
 import java.util.Collections;
 import java.util.Map;
 import java.util.WeakHashMap;
@@ -44,12 +45,14 @@
      */
     public Property fetch(Property prop) {
         
-        Property cacheEntry = (Property) propCache.get(prop);
-        if (cacheEntry != null) {
-            return cacheEntry;
-        } else {
-            propCache.put(prop, prop);
-            return prop;
+        WeakReference ref = (WeakReference) propCache.get(prop);
+        if (ref != null) {
+            Property cacheEntry = (Property)ref.get();
+            if (cacheEntry != null) {
+                return cacheEntry;                
+            }
         }
+        propCache.put(prop, new WeakReference(prop));
+        return prop;
     }
 }

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fonts/Font.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fonts/Font.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fonts/Font.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fonts/Font.java Wed Aug  8 10:37:33 2007
@@ -284,8 +284,12 @@
                     width = 0;
                 } else if (c == '\u202F') {
                     width = getCharWidth(' ') / 2;
+                } else if (c == '\u2060') {
+                    width = 0;
                 } else if (c == '\u3000') {
                     width = getCharWidth(' ') * 2;
+                } else if (c == '\ufeff') {
+                    width = 0;
                 } else {
                     //Will be internally replaced by "#" if not found
                     width = getWidth(mapChar(c));

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fonts/truetype/TTFFile.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fonts/truetype/TTFFile.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fonts/truetype/TTFFile.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/fonts/truetype/TTFFile.java Wed Aug  8 10:37:33 2007
@@ -20,7 +20,6 @@
 package org.apache.fop.fonts.truetype;
 
 import java.io.IOException;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.List;
@@ -28,7 +27,6 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.fop.fonts.Glyphs;
-import org.apache.fop.util.IntMap;
 
 /**
  * Reads a TrueType file or a TrueType Collection.
@@ -111,8 +109,8 @@
     
     // internal mapping of glyph indexes to unicode indexes
     // used for quick mappings in this class
-    private IntMap glyphToUnicodeMap = new IntMap();
-    private IntMap unicodeToGlyphMap = new IntMap();
+    private Map glyphToUnicodeMap = new java.util.HashMap();
+    private Map unicodeToGlyphMap = new java.util.HashMap();
 
     private TTFDirTabEntry currentDirTab;
 
@@ -134,8 +132,8 @@
         UnicodeMapping(int glyphIndex, int unicodeIndex) {
             this.unicodeIndex = unicodeIndex;
             this.glyphIndex = glyphIndex;
-            glyphToUnicodeMap.put(glyphIndex, unicodeIndex);
-            unicodeToGlyphMap.put(unicodeIndex, glyphIndex);
+            glyphToUnicodeMap.put(new Integer(glyphIndex), new Integer(unicodeIndex));
+            unicodeToGlyphMap.put(new Integer(unicodeIndex), new Integer(glyphIndex));
         }
 
         /**
@@ -1505,7 +1503,7 @@
      * @throws IOException if glyphIndex not found
      */
     private Integer glyphToUnicode(int glyphIndex) throws IOException {
-        return new Integer(glyphToUnicodeMap.get(glyphIndex));
+        return (Integer) glyphToUnicodeMap.get(new Integer(glyphIndex));
     }
     
     /**
@@ -1517,7 +1515,7 @@
      */
     private Integer unicodeToGlyph(int unicodeIndex) throws IOException {
         final Integer result = 
-            new Integer(unicodeToGlyphMap.get(unicodeIndex));
+            (Integer) unicodeToGlyphMap.get(new Integer(unicodeIndex));
         if (result == null) {
             throw new IOException(
                     "Glyph index not found for unicode value " + unicodeIndex);

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/layoutmgr/LayoutContext.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/layoutmgr/LayoutContext.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/layoutmgr/LayoutContext.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/layoutmgr/LayoutContext.java Wed Aug  8 10:37:33 2007
@@ -71,7 +71,7 @@
     public static final int KEEP_WITH_PREVIOUS_PENDING = 0x400;
 
 
-    public int flags; // Contains some set of flags defined above
+    private int flags; // Contains some set of flags defined above
     /**
      * Total available stacking dimension for a "galley-level" layout
      * manager (Line or Flow). It is passed by the parent LM. For LineLM,
@@ -79,22 +79,22 @@
      * These LM <b>may</b> wish to pass this information down to lower
      * level LM to allow them to optimize returned break possibilities.
      */
-    MinOptMax stackLimit;
+    private MinOptMax stackLimit;
 
     /** True if current element list is spanning in multi-column layout. */
     private int nextSpan = Constants.NOT_SET;
 
     /** inline-progression-dimension of nearest ancestor reference area */
-    int refIPD;
+    private int refIPD;
 
     /** the writing mode established by the nearest ancestor reference area */
     private int writingMode = Constants.EN_LR_TB;
 
     /** Current pending space-after or space-end from preceding area */
-    SpaceSpecifier trailingSpace;
+    private SpaceSpecifier trailingSpace;
 
     /** Current pending space-before or space-start from ancestor areas */
-    SpaceSpecifier leadingSpace;
+    private SpaceSpecifier leadingSpace;
     
     /**
      * A list of pending marks (border and padding) on the after edge when a page break occurs. 

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java Wed Aug  8 10:37:33 2007
@@ -164,6 +164,8 @@
 
     private int lineStartBAP = 0;
     private int lineEndBAP = 0;
+    
+    private boolean keepTogether;
 
     /**
      * Create a Text layout manager.
@@ -213,6 +215,8 @@
         // in the SpaceVal.makeWordSpacing() method
         letterSpaceIPD = ls.getSpace();
         wordSpaceIPD = MinOptMax.add(new MinOptMax(spaceCharIPD), ws.getSpace());
+        
+        keepTogether = foText.getKeepTogether().getWithinLine().getEnum() == Constants.EN_ALWAYS;
 
     }
 
@@ -538,7 +542,7 @@
      */
     private static boolean isSpace(final char ch) {
         return ch == CharUtilities.SPACE
-            || ch == CharUtilities.NBSPACE
+            || CharUtilities.isNonBreakableSpace(ch)
             || CharUtilities.isFixedWidthSpace(ch);
     }
     
@@ -562,7 +566,7 @@
         while (iNextStart < textArray.length) {
             ch = textArray[iNextStart]; 
             boolean breakOpportunity = false;
-            byte breakAction = lbs.nextChar(ch);
+            byte breakAction = keepTogether? LineBreakStatus.PROHIBITED_BREAK : lbs.nextChar(ch);
             switch (breakAction) {
                 case LineBreakStatus.COMBINING_PROHIBITED_BREAK:
                 case LineBreakStatus.PROHIBITED_BREAK:
@@ -689,7 +693,7 @@
                         (short) 1, (short) 0,
                         wordSpaceIPD, false, true, breakOpportunity);
                 iThisStart = (short) (iNextStart + 1);
-            } else if (CharUtilities.isFixedWidthSpace(ch)) {
+            } else if (CharUtilities.isFixedWidthSpace(ch) || CharUtilities.isZeroWidthSpace(ch)) {
                 // create the AreaInfo object
                 MinOptMax ipd = new MinOptMax(font.getCharWidth(ch));
                 ai = new AreaInfo(iNextStart, (short) (iNextStart + 1),

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/AFPRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/AFPRenderer.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/AFPRenderer.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/AFPRenderer.java Wed Aug  8 10:37:33 2007
@@ -45,8 +45,8 @@
 import org.apache.fop.area.RegionReference;
 import org.apache.fop.area.RegionViewport;
 import org.apache.fop.area.Trait;
-import org.apache.fop.area.inline.Leader;
 import org.apache.fop.area.inline.Image;
+import org.apache.fop.area.inline.Leader;
 import org.apache.fop.area.inline.SpaceArea;
 import org.apache.fop.area.inline.TextArea;
 import org.apache.fop.area.inline.WordArea;
@@ -67,8 +67,8 @@
 import org.apache.fop.render.RendererContext;
 import org.apache.fop.render.afp.extensions.AFPElementMapping;
 import org.apache.fop.render.afp.extensions.AFPPageSetup;
-import org.apache.fop.render.afp.fonts.AFPFontInfo;
 import org.apache.fop.render.afp.fonts.AFPFont;
+import org.apache.fop.render.afp.fonts.AFPFontInfo;
 import org.apache.fop.render.afp.fonts.CharacterSet;
 import org.apache.fop.render.afp.fonts.FopCharacterSet;
 import org.apache.fop.render.afp.fonts.OutlineFont;
@@ -256,10 +256,10 @@
         this.fontInfo = inFontInfo;
         int num = 1;
         if (this.fontList != null && this.fontList.size() > 0) {
-            for (Iterator it = this.fontList.iterator(); it.hasNext(); ) {
+            for (Iterator it = this.fontList.iterator(); it.hasNext();) {
                 AFPFontInfo afi = (AFPFontInfo)it.next();
                 AFPFont bf = (AFPFont)afi.getAFPFont();
-                for (Iterator it2 = afi.getFontTriplets().iterator(); it2.hasNext(); ) {
+                for (Iterator it2 = afi.getFontTriplets().iterator(); it2.hasNext();) {
                     FontTriplet ft = (FontTriplet)it2.next();
                     this.fontInfo.addFontProperties("F" + num, ft.getName()
                                                     , ft.getStyle(), ft.getWeight());
@@ -271,21 +271,24 @@
             log.warn("No AFP fonts configured - using default setup");
         }
         if (this.fontInfo.fontLookup("sans-serif", "normal", 400) == null) {
-            CharacterSet cs  = new FopCharacterSet("T1V10500", "Cp500", "CZH200  ", 1, new Helvetica());
+            CharacterSet cs  = new FopCharacterSet("T1V10500", "Cp500", "CZH200  ",
+                    1, new Helvetica());
             AFPFont bf = new OutlineFont("Helvetica", cs);
             this.fontInfo.addFontProperties("F" + num, "sans-serif", "normal", 400);
             this.fontInfo.addMetrics("F" + num, bf);
             num++;
         }
         if (this.fontInfo.fontLookup("serif", "normal", 400) == null) {
-            CharacterSet cs  = new FopCharacterSet("T1V10500", "Cp500", "CZN200  ", 1, new TimesRoman());
+            CharacterSet cs  = new FopCharacterSet("T1V10500", "Cp500", "CZN200  ",
+                    1, new TimesRoman());
             AFPFont bf = new OutlineFont("Helvetica", cs);
             this.fontInfo.addFontProperties("F" + num, "serif", "normal", 400);
             this.fontInfo.addMetrics("F" + num, bf);
             num++;
         }
         if (this.fontInfo.fontLookup("monospace", "normal", 400) == null) {
-            CharacterSet cs  = new FopCharacterSet("T1V10500", "Cp500", "CZ4200  ", 1, new Courier());
+            CharacterSet cs  = new FopCharacterSet("T1V10500", "Cp500", "CZ4200  ",
+                    1, new Courier());
             AFPFont bf = new OutlineFont("Helvetica", cs);
             this.fontInfo.addFontProperties("F" + num, "monospace", "normal", 400);
             this.fontInfo.addMetrics("F" + num, bf);
@@ -293,7 +296,8 @@
         }
         if (this.fontInfo.fontLookup("any", "normal", 400) == null) {
             FontTriplet ft = this.fontInfo.fontLookup("sans-serif", "normal", 400);
-            this.fontInfo.addFontProperties(this.fontInfo.getInternalFontKey(ft), "any", "normal", 400);
+            this.fontInfo.addFontProperties(
+                    this.fontInfo.getInternalFontKey(ft), "any", "normal", 400);
         }
     }
 
@@ -340,7 +344,7 @@
      *
      * @see org.apache.fop.render.Renderer#preparePage(PageViewport)
      */
-    public void preparePage(PageViewport page) {
+    public void preparePage(PageViewport pageViewport) {
         // initializeRootExtensions(page);
 
         _currentFontFamily = "";
@@ -349,7 +353,7 @@
         _currentPageFonts.clear();
         _lineCache = new HashSet();
 
-        Rectangle2D bounds = page.getViewArea();
+        Rectangle2D bounds = pageViewport.getViewArea();
 
         _pageWidth = mpts2units(bounds.getWidth());
         _pageHeight = mpts2units(bounds.getHeight());
@@ -358,12 +362,12 @@
 
         _afpDataStream.startPage(_pageWidth, _pageHeight, 0);
 
-        renderPageObjectExtensions(page);
+        renderPageObjectExtensions(pageViewport);
 
         if (_pages == null) {
             _pages = new HashMap();
         }
-        _pages.put(page, _afpDataStream.savePage());
+        _pages.put(pageViewport, _afpDataStream.savePage());
 
     }
 
@@ -380,7 +384,7 @@
     }
 
     /**
-     * @see org.apache.fop.render.AbstractRenderer#startVParea(CTM, Rectangle2D)
+     * {@inheritDoc}
      */
     public void startVParea(CTM ctm, Rectangle2D clippingRect) {
         // dummy not used
@@ -436,7 +440,7 @@
     }
 
     /**
-     * @see org.apache.fop.render.AbstractRenderer#renderBlockViewport(BlockViewport, List)
+     * {@inheritDoc}
      */
     protected void renderBlockViewport(BlockViewport bv, List children) {
         // clip and position viewport if necessary
@@ -548,7 +552,7 @@
     /**
      * @see org.apache.fop.render.Renderer#renderPage(PageViewport)
      */
-    public void renderPage(PageViewport page) {
+    public void renderPage(PageViewport pageViewport) {
 
         // initializeRootExtensions(page);
 
@@ -558,27 +562,27 @@
         _currentPageFonts.clear();
         _lineCache = new HashSet();
 
-        Rectangle2D bounds = page.getViewArea();
+        Rectangle2D bounds = pageViewport.getViewArea();
 
         _pageWidth = mpts2units(bounds.getWidth());
         _pageHeight = mpts2units(bounds.getHeight());
 
-        if (_pages != null && _pages.containsKey(page)) {
+        if (_pages != null && _pages.containsKey(pageViewport)) {
 
-            _afpDataStream.restorePage((PageObject)_pages.remove(page));
+            _afpDataStream.restorePage((PageObject)_pages.remove(pageViewport));
 
         } else {
             // renderPageGroupExtensions(page);
 
             _afpDataStream.startPage(_pageWidth, _pageHeight, 0);
 
-            renderPageObjectExtensions(page);
+            renderPageObjectExtensions(pageViewport);
 
         }
 
         pushViewPortPos(new ViewPortPos());
 
-        renderPageAreas(page.getPage());
+        renderPageAreas(pageViewport.getPage());
 
         Iterator i = _currentPageFonts.values().iterator();
         while (i.hasNext()) {
@@ -610,25 +614,21 @@
     }
 
     /**
-     * Clip using a rectangular area.
-     * @see org.apache.fop.render.AbstractPathOrientedRenderer#clipRect(float, float, float, float)
+     * {@inheritDoc}
      */
     public void clipRect(float x, float y, float width, float height) {
         // TODO
     }
 
     /**
-     * Moves the current point to (x, y), omitting any connecting line segment.
-     * @see org.apache.fop.render.AbstractPathOrientedRenderer#moveTo(float, float)
+     * {@inheritDoc}
      */
     public void moveTo(float x, float y) {
         // TODO
     }
 
     /**
-     * Appends a straight line segment from the current point to (x, y). The
-     * new current point is (x, y).
-     * @see org.apache.fop.render.AbstractPathOrientedRenderer#lineTo(float, float)
+     * {@inheritDoc}
      */
     public void lineTo(float x, float y) {
         // TODO
@@ -644,8 +644,7 @@
     }
 
     /**
-     * Fill a rectangular area.
-     * @see org.apache.fop.render.AbstractPathOrientedRenderer#fillRect(float, float, float, float)
+     * {@inheritDoc}
      */
     public void fillRect(float x, float y, float width, float height) {
         /*
@@ -868,14 +867,13 @@
     protected RendererContext createRendererContext(int x, int y, int width, int height, Map foreignAttributes) {
         RendererContext context;
         context = super.createRendererContext(x, y, width, height, foreignAttributes);
-        context.setProperty(AFPRendererContextConstants.AFP_GRAYSCALE, 
+        context.setProperty(AFPRendererContextConstants.AFP_GRAYSCALE,
                 new Boolean(!this.colorImages));
         return context;
     }
 
     /**
-     * Draw an image at the indicated location.
-     * @see org.apache.fop.render.AbstractPathOrientedRenderer#drawImage(String, Rectangle2D, Map)
+     * {@inheritDoc}
      */
     public void drawImage(String url, Rectangle2D pos, Map foreignAttributes) {
         String name = null;
@@ -962,13 +960,15 @@
                         if (!fopimage.load(FopImage.BITMAP)) {
                             return;
                         }
-                        convertToGrayScaleImage(io, fopimage.getBitmaps());
+                        convertToGrayScaleImage(io, fopimage.getBitmaps(), 
+                                fopimage.getWidth(), fopimage.getHeight());
                     }
                 } else {
                     if (!fopimage.load(FopImage.BITMAP)) {
                         return;
                     }
-                    convertToGrayScaleImage(io, fopimage.getBitmaps());
+                    convertToGrayScaleImage(io, fopimage.getBitmaps(),
+                            fopimage.getWidth(), fopimage.getHeight());
                 }
             } else {
                 if (!fopimage.load(FopImage.BITMAP)) {
@@ -991,7 +991,8 @@
                     io.setImageIDESize((byte)24);
                     io.setImageData(fopimage.getBitmaps());
                 } else {
-                    convertToGrayScaleImage(io, fopimage.getBitmaps());
+                    convertToGrayScaleImage(io, fopimage.getBitmaps(),
+                            fopimage.getWidth(), fopimage.getHeight());
                 }
             }
         }
@@ -1019,7 +1020,7 @@
             }
         }
     }
-    
+
     /**
      * Draws a BufferedImage to AFP.
      * @param bi the BufferedImage
@@ -1039,7 +1040,7 @@
             //Serialize image
             writeImage(bi, baout);
             byte[] buf = baout.toByteArray();
-            
+
             //Generate image
             ImageObject io = _afpDataStream.getImageObject(afpx, afpy, afpw, afph);
             io.setImageParameters(
@@ -1053,16 +1054,16 @@
             } else {
                 //TODO Teach it how to handle grayscale BufferedImages directly
                 //because this is pretty inefficient
-                convertToGrayScaleImage(io, buf);
+                convertToGrayScaleImage(io, buf, bi.getWidth(), bi.getHeight());
             }
         } catch (IOException ioe) {
             log.error("Error while serializing bitmap: " + ioe.getMessage(), ioe);
         }
     }
-    
+
     /**
      * Establishes a new foreground or fill color.
-     * @see org.apache.fop.render.AbstractPathOrientedRenderer#updateColor(Color, boolean)
+     * {@inheritDoc}
      */
     public void updateColor(Color col, boolean fill) {
         if (fill) {
@@ -1107,7 +1108,7 @@
     }
 
     /**
-     * @see org.apache.fop.render.AbstractRenderer#renderImage(Image, Rectangle2D)
+     * {@inheritDoc}
      */
     public void renderImage(Image image, Rectangle2D pos) {
         String url = image.getURL();
@@ -1365,40 +1366,50 @@
      * Method to render the page extension.
      * <p>
      *
-     * @param page
+     * @param pageViewport
      *            the page object
      */
-    private void renderPageObjectExtensions(PageViewport page) {
+    private void renderPageObjectExtensions(PageViewport pageViewport) {
 
         _pageSegmentsMap = null;
-        if (page.getExtensionAttachments() != null
-            && page.getExtensionAttachments().size() > 0) {
+        if (pageViewport.getExtensionAttachments() != null
+            && pageViewport.getExtensionAttachments().size() > 0) {
             //Extract all AFPPageSetup instances from the attachment list on the s-p-m
-            Iterator i = page.getExtensionAttachments().iterator();
+            Iterator i = pageViewport.getExtensionAttachments().iterator();
             while (i.hasNext()) {
                 ExtensionAttachment attachment = (ExtensionAttachment)i.next();
                 if (AFPPageSetup.CATEGORY.equals(attachment.getCategory())) {
-                    AFPPageSetup aps = (AFPPageSetup)attachment;
-                    String element = aps.getElementName();
-                    if (AFPElementMapping.INCLUDE_PAGE_OVERLAY.equals(element)) { 
-                        String overlay = aps.getName();
-                        if (overlay != null) {
-                            _afpDataStream.createIncludePageOverlay(overlay);
+                    if (attachment instanceof AFPPageSetup) {
+                        AFPPageSetup aps = (AFPPageSetup)attachment;
+                        if (log.isDebugEnabled()) {
+                            log.debug(aps);
                         }
-                    } else if (AFPElementMapping.INCLUDE_PAGE_SEGMENT.equals(element)) { 
-                        String name = aps.getName();
-                        String source = aps.getValue();
-                        if (_pageSegmentsMap == null) {
-                            _pageSegmentsMap = new HashMap();
+                        String element = aps.getElementName();
+                        if (AFPElementMapping.INCLUDE_PAGE_OVERLAY.equals(element)) {
+                            String overlay = aps.getName();
+                            if (overlay != null) {
+                                _afpDataStream.createIncludePageOverlay(overlay);
+                            }
+                        } else if (AFPElementMapping.INCLUDE_PAGE_SEGMENT.equals(element)) {
+                            String name = aps.getName();
+                            String source = aps.getValue();
+                            if (_pageSegmentsMap == null) {
+                                _pageSegmentsMap = new HashMap();
+                            }
+                            _pageSegmentsMap.put(source, name);
+                        } else if (AFPElementMapping.TAG_LOGICAL_ELEMENT.equals(element)) {
+                            String name = aps.getName();
+                            String value = aps.getValue();
+                            if (_pageSegmentsMap == null) {
+                                _pageSegmentsMap = new HashMap();
+                            }
+                            _afpDataStream.createTagLogicalElement(name, value);
+                        } else if (AFPElementMapping.NO_OPERATION.equals(element)) {
+                            String content = aps.getContent();
+                            if (content != null) {
+                                _afpDataStream.createNoOperation(content);
+                            }
                         }
-                        _pageSegmentsMap.put(source, name);
-                    } else if (AFPElementMapping.TAG_LOGICAL_ELEMENT.equals(element)) { 
-                        String name = aps.getName();
-                        String value = aps.getValue();
-                        if (_pageSegmentsMap == null) {
-                            _pageSegmentsMap = new HashMap();
-                        }
-                        _afpDataStream.createTagLogicalElement(name, value);
                     }
                 }
             }
@@ -1430,32 +1441,53 @@
         return (int)Math.round(mpt / DPI_CONVERSION_FACTOR_240);
     }
 
-    private void convertToGrayScaleImage(ImageObject io, byte raw[]) {
+    /**
+     * Converts a byte array containing 24 bit RGB image data to a grayscale image.
+     * @param io the target image object
+     * @param raw the buffer containing the RGB image data
+     * @param width the width of the image in pixels
+     * @param height the height of the image in pixels
+     */
+    private void convertToGrayScaleImage(ImageObject io, byte[] raw, int width, int height) {
         int pixelsPerByte = 8 / bitsPerPixel;
-        byte bw[] = new byte[raw.length / (3 * pixelsPerByte)];
-        int k = 0;
-        for (int i = 0, j = 0; i < raw.length; i += 3, j++) {
-            if (j == pixelsPerByte) {
-                j = 0;
-                k++;
-            }
-            // see http://www.jguru.com/faq/view.jsp?EID=221919
-            double greyVal = 0.212671d * ((int) raw[i] & 0xff)
-                + 0.715160d * ((int) raw[i + 1] & 0xff)
-                + 0.072169d * ((int) raw[i + 2] & 0xff);
-            switch (bitsPerPixel) {
+        int bytewidth = (width / pixelsPerByte);
+        if ((width % pixelsPerByte) != 0) {
+            bytewidth++;
+        }
+        byte[] bw = new byte[height * bytewidth];
+        byte ib;
+        for (int y = 0; y < height; y++) {
+            ib = 0;
+            int i = 3 * y * width;
+            for (int x = 0; x < width; x++, i += 3) {
+                
+                // see http://www.jguru.com/faq/view.jsp?EID=221919
+                double greyVal = 0.212671d * ((int) raw[i] & 0xff)
+                    + 0.715160d * ((int) raw[i + 1] & 0xff)
+                    + 0.072169d * ((int) raw[i + 2] & 0xff);
+
+                switch (bitsPerPixel) {
                 case 1:
-                    if (greyVal > 128) {
-                        bw[k] |= (byte)(1 << j);
+                    if (greyVal < 128) {
+                        ib |= (byte)(1 << (7 - (x % 8)));
                     }
                     break;
                 case 4:
                     greyVal /= 16;
-                    bw[k] |= (byte)((byte)greyVal << (j * 4));
+                    ib |= (byte)((byte)greyVal << ((1 - (x % 2)) * 4));
                     break;
                 case 8:
-                    bw[k] = (byte)greyVal;
+                    ib = (byte)greyVal;
                     break;
+                default:
+                    throw new UnsupportedOperationException(
+                            "Unsupported bits per pixel: " + bitsPerPixel);
+                }
+                
+                if ((x % pixelsPerByte) == (pixelsPerByte - 1) || ((x + 1) == width)) {
+                    bw[(y * bytewidth) + (x / pixelsPerByte)] = ib;
+                    ib = 0;
+                }
             }
         }
         io.setImageIDESize((byte)bitsPerPixel);

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPElement.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPElement.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPElement.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPElement.java Wed Aug  8 10:37:33 2007
@@ -18,11 +18,11 @@
 /* $Id$ */
 
 package org.apache.fop.render.afp.extensions;
+
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.fo.Constants;
 import org.apache.fop.fo.FONode;
 import org.apache.fop.fo.ValidationException;
-import org.apache.fop.fo.XMLObj;
 
 /**
  * This class extends the org.apache.fop.extensions.ExtensionObj class. The
@@ -43,16 +43,6 @@
     }
 
     /** @see org.apache.fop.fo.FONode#getNamespaceURI() */
-    public String getNamespaceURI() {
-        return AFPElementMapping.NAMESPACE;
-    }
-
-    /** @see org.apache.fop.fo.FONode#getNormalNamespacePrefix() */
-    public String getNormalNamespacePrefix() {
-        return "afp";
-    }
-
-    /** @see org.apache.fop.fo.FONode#startOfNode() */
     protected void startOfNode() throws FOPException {
         super.startOfNode();
         //if (!AFPElementMapping.NAMESPACE.equals(parent.getNamespaceURI())

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPElementMapping.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPElementMapping.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPElementMapping.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPElementMapping.java Wed Aug  8 10:37:33 2007
@@ -45,6 +45,9 @@
 
     public static final String INCLUDE_PAGE_SEGMENT = "include-page-segment";
 
+    /** NOP */
+    public static final String NO_OPERATION = "no-operation";
+
     /**
      * The namespace used for AFP extensions
      */
@@ -79,6 +82,9 @@
             foObjs.put(
                 INCLUDE_PAGE_OVERLAY,
                 new AFPIncludePageOverlayMaker());
+            foObjs.put(
+                NO_OPERATION,
+                new AFPNoOperationMaker());
         }
 
     }
@@ -107,4 +113,9 @@
         }
     }
 
+    static class AFPNoOperationMaker extends ElementMapping.Maker {
+        public FONode make(FONode parent) {
+            return new AFPElement(parent, NO_OPERATION);
+        }
+    }
 }

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPPageSetup.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPPageSetup.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPPageSetup.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AFPPageSetup.java Wed Aug  8 10:37:33 2007
@@ -22,11 +22,17 @@
 import java.io.Serializable;
 
 import org.apache.fop.fo.extensions.ExtensionAttachment;
+import org.apache.fop.util.XMLizable;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
 
 /**
  * This is the pass-through value object for the PostScript extension.
  */
-public class AFPPageSetup implements ExtensionAttachment, Serializable {
+public class AFPPageSetup implements ExtensionAttachment, Serializable, XMLizable  {
+
+    private static final long serialVersionUID = 7190606822558332901L;
 
     /** The category URI for this extension attachment. */
     public static final String CATEGORY = "apache:fop:extensions:afp";
@@ -37,12 +43,15 @@
 
     private String value;
 
+    private String content;
+
     /**
      * Default constructor.
-     * @param name the name of the setup code object, may be null
+     * 
+     * @param elementName the name of the setup code object, may be null
      */
-    public AFPPageSetup(String name) {
-        this.elementName = name;
+    public AFPPageSetup(String elementName) {
+        this.elementName = elementName;
     }
 
     /** @return the name */
@@ -77,15 +86,49 @@
     public void setValue(String source) {
         this.value = source;
     }
-
+    
     /** @see org.apache.fop.fo.extensions.ExtensionAttachment#getCategory() */
     public String getCategory() {
         return CATEGORY;
     }
 
-    /** @see java.lang.Object#toString() */
+    /**
+     * @return the data
+     */
+    public String getContent() {
+        return content;
+    }
+
+    /**
+     * Sets the data
+     * @param content The byte data to set.
+     */
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    /** {@inheritDoc} */
     public String toString() {
         return "AFPPageSetup(element-name=" + getElementName() + " name=" + getName() + ")";
     }
 
+    private static final String ATT_NAME = "name";
+    private static final String ATT_VALUE = "value";
+
+    /** {@inheritDoc} */
+    public void toSAX(ContentHandler handler) throws SAXException {
+        AttributesImpl atts = new AttributesImpl();
+        if (name != null && name.length() > 0) {
+            atts.addAttribute(null, ATT_NAME, ATT_NAME, "CDATA", name);
+        }
+        if (value != null && value.length() > 0) {
+            atts.addAttribute(null, ATT_VALUE, ATT_VALUE, "CDATA", value);
+        }
+        handler.startElement(CATEGORY, elementName, elementName, atts);
+        if (content != null && content.length() > 0) {
+            char[] chars = content.toCharArray();
+            handler.characters(chars, 0, chars.length);
+        }
+        handler.endElement(CATEGORY, elementName, elementName);
+    }
 }

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java Wed Aug  8 10:37:33 2007
@@ -33,10 +33,13 @@
  */
 public abstract class AbstractAFPExtensionObject extends FONode {
 
-    private AFPPageSetup setupCode = null;
-
-    private String _name = null;
+    /**
+     * AFP setup code
+     */
+    private AFPPageSetup setupCode;
     
+    private String name;
+            
     /**
      * @see org.apache.fop.fo.FONode#FONode(FONode)
      * @param parent the parent formatting object
@@ -44,14 +47,11 @@
      */
     public AbstractAFPExtensionObject(FONode parent, String name) {
         super(parent);
-        _name = name;
-        setupCode = new AFPPageSetup(name);
+        this.name = name;
+        this.setupCode = new AFPPageSetup(name);
     }
 
-    /**
-     * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
-     * here, blocks XSL FO's from having non-FO parents.
-     */
+    /** {@inheritDoc} */
     protected void validateChildNode(Locator loc, String nsURI, String localName)
                 throws ValidationException {
         if (FO_URI.equals(nsURI)) {
@@ -60,8 +60,9 @@
     }
 
     /** @see org.apache.fop.fo.FONode */
-    protected void addCharacters(char[] data, int start, int length,
+    protected void addCharacters(char[] data, int start, int end,
                                  PropertyList pList, Locator locator) {
+        setupCode.setContent(new String(data, start, end - start));       
     }
 
     /** @see org.apache.fop.fo.FONode#getNamespaceURI() */
@@ -69,7 +70,7 @@
         return AFPElementMapping.NAMESPACE;
     }
 
-    /**@see org.apache.fop.fo.FONode#getNormalNamespacePrefix() */
+    /** {@inheritDoc} */
     public String getNormalNamespacePrefix() {
         return AFPElementMapping.NAMESPACE_PREFIX;
     }
@@ -91,8 +92,7 @@
             } else {
                 throw new FOPException(elementName + " must have a src attribute.");
             }
-        }
-        if (AFPElementMapping.TAG_LOGICAL_ELEMENT.equals(elementName)) {
+        } else if (AFPElementMapping.TAG_LOGICAL_ELEMENT.equals(elementName)) {
             name = attlist.getValue("value");
             if (name != null && name.length() > 0) {
                 setupCode.setValue(name);
@@ -114,8 +114,6 @@
 
     /** @see org.apache.fop.fo.FONode#getLocalName() */
     public String getLocalName() {
-        return _name;
+        return name;
     }
-
 }
-

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/fonts/AFPFontReader.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/fonts/AFPFontReader.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/fonts/AFPFontReader.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/fonts/AFPFontReader.java Wed Aug  8 10:37:33 2007
@@ -111,7 +111,7 @@
     /**
      * The collection of code pages
      */
-    private static HashMap _codePages = new HashMap();
+    private HashMap _codePages = new HashMap();
 
     /**
      * Load the font details and metrics into the CharacterSetMetric object,
@@ -120,7 +120,7 @@
      *
      * @param characterSet the CharacterSetMetric object to populate
      */
-    public static void loadCharacterSetMetric(CharacterSet characterSet) {
+    public void loadCharacterSetMetric(CharacterSet characterSet) {
 
         InputStream inputStream = null;
 
@@ -275,6 +275,11 @@
         }
 
         File directory = new File(url.getPath());
+        if (!directory.canRead()) {
+            String msg = "Failed to read directory " + url.getPath();
+            log.error(msg);
+            throw new FileNotFoundException(msg);
+        }
 
         final String filterpattern = codePage.trim();
         FilenameFilter filter = new FilenameFilter() {
@@ -606,4 +611,4 @@
         }
     }
 
-}
\ No newline at end of file
+}

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/fonts/CharacterSet.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/fonts/CharacterSet.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/fonts/CharacterSet.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/fonts/CharacterSet.java Wed Aug  8 10:37:33 2007
@@ -250,7 +250,8 @@
 
         if (!_isMetricsLoaded) {
 
-            AFPFontReader.loadCharacterSetMetric(this);
+            AFPFontReader afpFontReader = new AFPFontReader();
+            afpFontReader.loadCharacterSetMetric(this);
             _isMetricsLoaded = true;
 
         }

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/modca/AFPDataStream.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/modca/AFPDataStream.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/modca/AFPDataStream.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/modca/AFPDataStream.java Wed Aug  8 10:37:33 2007
@@ -571,6 +571,15 @@
     }
 
     /**
+     * Creates a NoOperation item
+     * 
+     * @param content byte data
+     */
+    public void createNoOperation(String content) {
+        _currentPage.createNoOperation(content);
+    }
+
+    /**
      * Start a new page group. When processing has finished on the current page
      * group the {@link #endPageGroup()}method must be invoked to mark the page
      * group ending.

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/modca/AbstractPageObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/modca/AbstractPageObject.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/modca/AbstractPageObject.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/render/afp/modca/AbstractPageObject.java Wed Aug  8 10:37:33 2007
@@ -357,6 +357,18 @@
     }
 
     /**
+     * Creates a NoOperation on the page.
+     *
+     * @param content the byte data
+     */
+    public void createNoOperation(String content) {
+
+        NoOperation noOp = new NoOperation(content);
+        _objects.add(noOp);
+
+    }
+
+    /**
      * Creates an IncludePageSegment on the current page.
      *
      * @param name
@@ -410,4 +422,4 @@
         return _rotation;
     }
 
-}
\ No newline at end of file
+}

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CMYKColorSpace.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CMYKColorSpace.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CMYKColorSpace.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CMYKColorSpace.java Wed Aug  8 10:37:33 2007
@@ -48,7 +48,7 @@
     }
 
     /**
-     * @see java.awt.color.ColorSpace#toRGB(float[])
+     * {@inheritDoc}
      */
     public float[] toRGB(float[] colorvalue) {
         return new float [] {
@@ -58,21 +58,21 @@
     }
 
     /**
-     * @see java.awt.color.ColorSpace#fromRGB(float[])
+     * {@inheritDoc}
      */
     public float[] fromRGB(float[] rgbvalue) {
         throw new UnsupportedOperationException("NYI");
     }
 
     /**
-     * @see java.awt.color.ColorSpace#toCIEXYZ(float[])
+     * {@inheritDoc}
      */
     public float[] toCIEXYZ(float[] colorvalue) {
         throw new UnsupportedOperationException("NYI");
     }
 
     /**
-     * @see java.awt.color.ColorSpace#fromCIEXYZ(float[])
+     * {@inheritDoc}
      */
     public float[] fromCIEXYZ(float[] colorvalue) {
         throw new UnsupportedOperationException("NYI");

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CharUtilities.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CharUtilities.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CharUtilities.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CharUtilities.java Wed Aug  8 10:37:33 2007
@@ -60,6 +60,8 @@
     public static final char NBSPACE = '\u00A0';
     /** zero-width space */
     public static final char ZERO_WIDTH_SPACE = '\u200B';
+    /** word joiner */
+    public static final char WORD_JOINER = '\u2060';
     /** zero-width no-break space (= byte order mark) */
     public static final char ZERO_WIDTH_NOBREAK_SPACE = '\uFEFF';
     /** soft hyphen */
@@ -106,6 +108,7 @@
      */
     public static boolean isZeroWidthSpace(char c) {
         return c == ZERO_WIDTH_SPACE           // 200Bh
+            || c == WORD_JOINER                // 2060h
             || c == ZERO_WIDTH_NOBREAK_SPACE;  // FEFFh (also used as BOM)
     }
 
@@ -115,7 +118,8 @@
      * @return true if the character has a fixed-width
      */
     public static boolean isFixedWidthSpace(char c) {
-        return (c >= '\u2000' && c <= '\u200B') || c == '\u3000';
+        return (c >= '\u2000' && c <= '\u200B') 
+                || c == '\u3000';
 //      c == '\u2000'                   // en quad
 //      c == '\u2001'                   // em quad
 //      c == '\u2002'                   // en space
@@ -142,6 +146,7 @@
             (c == NBSPACE       // no-break space
             || c == '\u202F'    // narrow no-break space
             || c == '\u3000'    // ideographic space
+            || c == WORD_JOINER // word joiner
             || c == ZERO_WIDTH_NOBREAK_SPACE);  // zero width no-break space
     }
 

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CloseBlockerOutputStream.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CloseBlockerOutputStream.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CloseBlockerOutputStream.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CloseBlockerOutputStream.java Wed Aug  8 10:37:33 2007
@@ -36,7 +36,7 @@
     }
 
     /**
-     * @see java.io.OutputStream#close()
+     * {@inheritDoc}
      */
     public void close() throws IOException {
         try {

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CommandLineLogger.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CommandLineLogger.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CommandLineLogger.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/CommandLineLogger.java Wed Aug  8 10:37:33 2007
@@ -74,49 +74,49 @@
     }
     
     /**
-     * @see org.apache.commons.logging.Log#isTraceEnabled()
+     * {@inheritDoc}
      */
     public final boolean isTraceEnabled() {
         return logLevel <= LOG_LEVEL_TRACE;
     }
 
     /**
-     * @see org.apache.commons.logging.Log#isDebugEnabled()
+     * {@inheritDoc}
      */
     public final boolean isDebugEnabled() {
         return logLevel <= LOG_LEVEL_DEBUG;
     }
 
     /**
-     * @see org.apache.commons.logging.Log#isInfoEnabled()
+     * {@inheritDoc}
      */
     public final boolean isInfoEnabled() {
         return logLevel <= LOG_LEVEL_INFO;
     }
     
     /**
-     * @see org.apache.commons.logging.Log#isWarnEnabled()
+     * {@inheritDoc}
      */
     public final boolean isWarnEnabled() {
         return logLevel <= LOG_LEVEL_WARN;
     }
 
     /**
-     * @see org.apache.commons.logging.Log#isErrorEnabled()
+     * {@inheritDoc}
      */
     public final boolean isErrorEnabled() {
         return logLevel <= LOG_LEVEL_ERROR;
     }
 
     /**
-     * @see org.apache.commons.logging.Log#isFatalEnabled()
+     * {@inheritDoc}
      */
     public final boolean isFatalEnabled() {
         return logLevel <= LOG_LEVEL_FATAL;
     }
     
     /**
-     * @see org.apache.commons.logging.Log#trace(java.lang.Object)
+     * {@inheritDoc}
      */
     public final void trace(Object message) {
         if (isTraceEnabled()) {
@@ -125,7 +125,7 @@
     }
 
     /**
-     * @see org.apache.commons.logging.Log#trace(java.lang.Object, java.lang.Throwable)
+     * {@inheritDoc}
      */
     public final void trace(Object message, Throwable t) {
         if (isTraceEnabled()) {
@@ -134,7 +134,7 @@
     }
 
     /**
-     * @see org.apache.commons.logging.Log#debug(java.lang.Object)
+     * {@inheritDoc}
      */
     public final void debug(Object message) {
         if (isDebugEnabled()) {
@@ -143,7 +143,7 @@
     }
 
     /**
-     * @see org.apache.commons.logging.Log#debug(java.lang.Object, java.lang.Throwable)
+     * {@inheritDoc}
      */
     public final void debug(Object message, Throwable t) {
         if (isDebugEnabled()) {
@@ -152,7 +152,7 @@
     }
 
     /**
-     * @see org.apache.commons.logging.Log#info(java.lang.Object)
+     * {@inheritDoc}
      */
     public final void info(Object message) {
         if (isInfoEnabled()) {
@@ -161,7 +161,7 @@
     }
 
     /**
-     * @see org.apache.commons.logging.Log#info(java.lang.Object, java.lang.Throwable)
+     * {@inheritDoc}
      */
     public final void info(Object message, Throwable t) {
         if (isInfoEnabled()) {
@@ -170,7 +170,7 @@
     }
 
     /**
-     * @see org.apache.commons.logging.Log#warn(java.lang.Object)
+     * {@inheritDoc}
      */
     public final void warn(Object message) {
         if (isWarnEnabled()) {
@@ -179,7 +179,7 @@
     }
 
     /**
-     * @see org.apache.commons.logging.Log#warn(java.lang.Object, java.lang.Throwable)
+     * {@inheritDoc}
      */
     public final void warn(Object message, Throwable t) {
         if (isWarnEnabled()) {
@@ -188,7 +188,7 @@
     }
 
     /**
-     * @see org.apache.commons.logging.Log#error(java.lang.Object)
+     * {@inheritDoc}
      */
     public final void error(Object message) {
         if (isErrorEnabled()) {
@@ -197,7 +197,7 @@
     }
 
     /**
-     * @see org.apache.commons.logging.Log#error(java.lang.Object, java.lang.Throwable)
+     * {@inheritDoc}
      */
     public final void error(Object message, Throwable t) {
         if (isErrorEnabled()) {
@@ -206,7 +206,7 @@
     }
 
     /**
-     * @see org.apache.commons.logging.Log#fatal(java.lang.Object)
+     * {@inheritDoc}
      */
     public final void fatal(Object message) {
         if (isFatalEnabled()) {
@@ -215,7 +215,7 @@
     }
 
     /**
-     * @see org.apache.commons.logging.Log#fatal(java.lang.Object, java.lang.Throwable)
+     * {@inheritDoc}
      */
     public final void fatal(Object message, Throwable t) {
         if (isFatalEnabled()) {

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DOMBuilderContentHandlerFactory.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DOMBuilderContentHandlerFactory.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DOMBuilderContentHandlerFactory.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DOMBuilderContentHandlerFactory.java Wed Aug  8 10:37:33 2007
@@ -52,12 +52,12 @@
         this.domImplementation = domImplementation;
     }
     
-    /** @see org.apache.fop.util.ContentHandlerFactory#getSupportedNamespaces() */
+    /** {@inheritDoc} */
     public String[] getSupportedNamespaces() {
         return new String[] {namespaceURI};
     }
 
-    /** @see org.apache.fop.util.ContentHandlerFactory#createContentHandler() */
+    /** {@inheritDoc} */
     public ContentHandler createContentHandler() throws SAXException {
         return new Handler();
     }
@@ -77,21 +77,21 @@
         }
         
         /**
-         * @see org.apache.fop.util.ContentHandlerFactory.ObjectSource#getObject()
+         * {@inheritDoc}
          */
         public Object getObject() {
             return getDocument();
         }
 
         /**
-         * @see org.apache.fop.util.ContentHandlerFactory.ObjectSource
+         * {@inheritDoc}
          */
         public void setObjectBuiltListener(ObjectBuiltListener listener) {
             this.obListener = listener;
         }
         
         /**
-         * @see org.apache.fop.util.DelegatingContentHandler#startDocument()
+         * {@inheritDoc}
          */
         public void startDocument() throws SAXException {
             //Suppress startDocument() call if doc has not been set, yet. It will be done later.
@@ -101,7 +101,7 @@
         }
 
         /**
-         * @see org.apache.fop.util.DelegatingContentHandler
+         * {@inheritDoc}
          */
         public void startElement(String uri, String localName, String qName, Attributes atts) 
                     throws SAXException {
@@ -125,7 +125,7 @@
         }
 
         /**
-         * @see org.apache.fop.util.DelegatingContentHandler#endDocument()
+         * {@inheritDoc}
          */
         public void endDocument() throws SAXException {
             super.endDocument();

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DataURIResolver.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DataURIResolver.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DataURIResolver.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DataURIResolver.java Wed Aug  8 10:37:33 2007
@@ -38,7 +38,7 @@
 public class DataURIResolver implements URIResolver {
 
     /**
-     * @see javax.xml.transform.URIResolver#resolve(java.lang.String, java.lang.String)
+     * {@inheritDoc}
      */
     public Source resolve(String href, String base) throws TransformerException {
         if (href.startsWith("data:")) {

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DefaultErrorListener.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DefaultErrorListener.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DefaultErrorListener.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DefaultErrorListener.java Wed Aug  8 10:37:33 2007
@@ -41,21 +41,21 @@
     }
     
     /**
-     * @see javax.xml.transform.ErrorListener#warning(javax.xml.transform.TransformerException)
+     * {@inheritDoc}
      */
     public void warning(TransformerException exc) {
         log.warn(exc.toString());
     }
 
     /**
-     * @see javax.xml.transform.ErrorListener#error(javax.xml.transform.TransformerException)
+     * {@inheritDoc}
      */
     public void error(TransformerException exc) throws TransformerException {
         throw exc;
     }
 
     /**
-     * @see javax.xml.transform.ErrorListener#fatalError(javax.xml.transform.TransformerException)
+     * {@inheritDoc}
      */
     public void fatalError(TransformerException exc)
             throws TransformerException {

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DelegatingContentHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DelegatingContentHandler.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DelegatingContentHandler.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/DelegatingContentHandler.java Wed Aug  8 10:37:33 2007
@@ -106,7 +106,7 @@
     // ==== EntityResolver
     
     /**
-     * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, java.lang.String)
+     * {@inheritDoc}
      */
     public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
         if (entityResolver != null) {
@@ -119,7 +119,7 @@
     // ==== DTDHandler
 
     /**
-     * @see org.xml.sax.DTDHandler#notationDecl(java.lang.String, java.lang.String, java.lang.String)
+     * {@inheritDoc}
      */
     public void notationDecl(String name, String publicId, String systemId) throws SAXException {
         if (dtdHandler != null) {
@@ -128,7 +128,7 @@
     }
 
     /**
-     * @see org.xml.sax.DTDHandler#unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
+     * {@inheritDoc}
      */
     public void unparsedEntityDecl(String name, String publicId, String systemId, 
             String notationName) throws SAXException {
@@ -140,42 +140,42 @@
     // ==== ContentHandler
     
     /**
-     * @see org.xml.sax.ContentHandler#setDocumentLocator(org.xml.sax.Locator)
+     * {@inheritDoc}
      */
     public void setDocumentLocator(Locator locator) {
         delegate.setDocumentLocator(locator);
     }
 
     /**
-     * @see org.xml.sax.ContentHandler#startDocument()
+     * {@inheritDoc}
      */
     public void startDocument() throws SAXException {
         delegate.startDocument();
     }
 
     /**
-     * @see org.xml.sax.ContentHandler#endDocument()
+     * {@inheritDoc}
      */
     public void endDocument() throws SAXException {
         delegate.endDocument();
     }
 
     /**
-     * @see org.xml.sax.ContentHandler#startPrefixMapping(java.lang.String, java.lang.String)
+     * {@inheritDoc}
      */
     public void startPrefixMapping(String prefix, String uri) throws SAXException {
         delegate.startPrefixMapping(prefix, uri);
     }
 
     /**
-     * @see org.xml.sax.ContentHandler#endPrefixMapping(java.lang.String)
+     * {@inheritDoc}
      */
     public void endPrefixMapping(String prefix) throws SAXException {
         delegate.endPrefixMapping(prefix);
     }
 
     /**
-     * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
+     * {@inheritDoc}
      */
     public void startElement(String uri, String localName, String qName, 
                 Attributes atts) throws SAXException {
@@ -183,35 +183,35 @@
     }
 
     /**
-     * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
+     * {@inheritDoc}
      */
     public void endElement(String uri, String localName, String qName) throws SAXException {
         delegate.endElement(uri, localName, qName);
     }
 
     /**
-     * @see org.xml.sax.ContentHandler#characters(char[], int, int)
+     * {@inheritDoc}
      */
     public void characters(char[] ch, int start, int length) throws SAXException {
         delegate.characters(ch, start, length);
     }
 
     /**
-     * @see org.xml.sax.ContentHandler#ignorableWhitespace(char[], int, int)
+     * {@inheritDoc}
      */
     public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {
         delegate.ignorableWhitespace(ch, start, length);
     }
 
     /**
-     * @see org.xml.sax.ContentHandler#processingInstruction(java.lang.String, java.lang.String)
+     * {@inheritDoc}
      */
     public void processingInstruction(String target, String data) throws SAXException {
         delegate.processingInstruction(target, data);
     }
 
     /**
-     * @see org.xml.sax.ContentHandler#skippedEntity(java.lang.String)
+     * {@inheritDoc}
      */
     public void skippedEntity(String name) throws SAXException {
         delegate.skippedEntity(name);
@@ -220,7 +220,7 @@
     // ==== LexicalHandler
     
     /**
-     * @see org.xml.sax.ext.LexicalHandler#startDTD(java.lang.String, java.lang.String, java.lang.String)
+     * {@inheritDoc}
      */
     public void startDTD(String name, String publicId, String systemId) throws SAXException {
         if (lexicalHandler != null) {
@@ -230,7 +230,7 @@
     }
 
     /**
-     * @see org.xml.sax.ext.LexicalHandler#endDTD()
+     * {@inheritDoc}
      */
     public void endDTD() throws SAXException {
         if (lexicalHandler != null) {
@@ -239,7 +239,7 @@
     }
 
     /**
-     * @see org.xml.sax.ext.LexicalHandler#startEntity(java.lang.String)
+     * {@inheritDoc}
      */
     public void startEntity(String name) throws SAXException {
         if (lexicalHandler != null) {
@@ -248,7 +248,7 @@
     }
 
     /**
-     * @see org.xml.sax.ext.LexicalHandler#endEntity(java.lang.String)
+     * {@inheritDoc}
      */
     public void endEntity(String name) throws SAXException {
         if (lexicalHandler != null) {
@@ -257,7 +257,7 @@
     }
 
     /**
-     * @see org.xml.sax.ext.LexicalHandler#startCDATA()
+     * {@inheritDoc}
      */
     public void startCDATA() throws SAXException {
         if (lexicalHandler != null) {
@@ -266,7 +266,7 @@
     }
 
     /**
-     * @see org.xml.sax.ext.LexicalHandler#endCDATA()
+     * {@inheritDoc}
      */
     public void endCDATA() throws SAXException {
         if (lexicalHandler != null) {
@@ -275,7 +275,7 @@
     }
 
     /**
-     * @see org.xml.sax.ext.LexicalHandler#comment(char[], int, int)
+     * {@inheritDoc} int, int)
      */
     public void comment(char[] ch, int start, int length) throws SAXException {
         if (lexicalHandler != null) {
@@ -286,7 +286,7 @@
     // ==== ErrorHandler
 
     /**
-     * @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException)
+     * {@inheritDoc}
      */
     public void warning(SAXParseException exception) throws SAXException {
         if (errorHandler != null) {
@@ -295,7 +295,7 @@
     }
 
     /**
-     * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException)
+     * {@inheritDoc}
      */
     public void error(SAXParseException exception) throws SAXException {
         if (errorHandler != null) {
@@ -304,7 +304,7 @@
     }
 
     /**
-     * @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException)
+     * {@inheritDoc}
      */
     public void fatalError(SAXParseException exception) throws SAXException {
         if (errorHandler != null) {

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/QName.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/QName.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/QName.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/QName.java Wed Aug  8 10:37:33 2007
@@ -99,12 +99,12 @@
         return getPrefix() != null ? getPrefix() + ':' + getLocalName() : getLocalName();
     }
 
-    /** @see java.lang.Object#hashCode() */
+    /** {@inheritDoc} */
     public int hashCode() {
         return this.hashCode;
     }
 
-    /** @see java.lang.Object#equals(java.lang.Object) */
+    /** {@inheritDoc} */
     public boolean equals(Object obj) {
         if (obj == null) {
             return false;
@@ -122,7 +122,7 @@
         return false;
     }
 
-    /** @see java.lang.Object#toString() */
+    /** {@inheritDoc} */
     public String toString() {
         return prefix != null
                 ? (prefix + ":" + localName)

Modified: xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/WriterOutputStream.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/WriterOutputStream.java?view=diff&rev=563951&r1=563950&r2=563951
==============================================================================
--- xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/WriterOutputStream.java (original)
+++ xmlgraphics/fop/branches/fop-0_94/src/java/org/apache/fop/util/WriterOutputStream.java Wed Aug  8 10:37:33 2007
@@ -50,21 +50,21 @@
     }
 
     /**
-     * @see java.io.OutputStream#close()
+     * {@inheritDoc}
      */
     public void close() throws IOException {
         writer.close();
     }
 
     /**
-     * @see java.io.OutputStream#flush()
+     * {@inheritDoc}
      */
     public void flush() throws IOException {
         writer.flush();
     }
 
     /**
-     * @see java.io.OutputStream#write(byte[], int, int)
+     * {@inheritDoc}
      */
     public void write(byte[] buf, int offset, int length) throws IOException {
         if (encoding != null) {
@@ -75,14 +75,14 @@
     }
 
     /**
-     * @see java.io.OutputStream#write(byte[])
+     * {@inheritDoc}
      */
     public void write(byte[] buf) throws IOException {
         write(buf, 0, buf.length);
     }
 
     /**
-     * @see java.io.OutputStream#write(int)
+     * {@inheritDoc}
      */
     public void write(int b) throws IOException {
         write(new byte[] {(byte)b});



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org