xmlgraphics-fop-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From man...@apache.org
Subject svn commit: r330576 - in /xmlgraphics/fop/trunk: src/java/org/apache/fop/fo/ src/java/org/apache/fop/fo/flow/ src/java/org/apache/fop/layoutmgr/ src/java/org/apache/fop/layoutmgr/inline/ src/java/org/apache/fop/render/xml/ test/layoutengine/ test/layou...
Date Thu, 03 Nov 2005 16:21:12 GMT
Author: manuel
Date: Thu Nov  3 08:20:50 2005
New Revision: 330576

URL: http://svn.apache.org/viewcvs?rev=330576&view=rev
Log:
Fixed white space handling during refinement, added test cases, corrected error in graphics handling

Added:
    xmlgraphics/fop/trunk/test/layoutengine/testcases/block_linefeed-treatment.xml   (with props)
    xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_1.xml   (with props)
    xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_2.xml   (with props)
    xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_1.xml   (with props)
    xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_2.xml   (with props)
    xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space_1.xml
      - copied unchanged from r330012, xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse.xml
Removed:
    xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse.xml
Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/InlineCharIterator.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Block.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Character.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/AbstractGraphicsLayoutManager.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/xml/XMLRenderer.java
    xmlgraphics/fop/trunk/test/layoutengine/disabled-testcases.txt

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/InlineCharIterator.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/InlineCharIterator.java?rev=330576&r1=330575&r2=330576&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/InlineCharIterator.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/InlineCharIterator.java Thu Nov  3 08:20:50 2005
@@ -22,10 +22,13 @@
 import org.apache.fop.util.CharUtilities;
 import java.util.NoSuchElementException;
 
-
+/**
+ * A recursive char iterator that indicates boundaries by returning
+ * an EOT char.
+ */
 public class InlineCharIterator extends RecursiveCharIterator {
-    private boolean bStartBoundary = false;
-    private boolean bEndBoundary = false;
+    private boolean startBoundary = false;
+    private boolean endBoundary = false;
 
     /**
      * @param fobj the object for whose character contents and for whose
@@ -39,20 +42,25 @@
 
 
     private void checkBoundaries(CommonBorderPaddingBackground bpb) {
-        bStartBoundary = (bpb.getBorderStartWidth(false) > 0
+        /* Current understanding is that an <fo:inline> is always a boundary for
+         * whitespace collapse if it has a border or not
+        startBoundary = (bpb.getBorderStartWidth(false) > 0
                        || bpb.getPaddingStart(false, null) > 0); // TODO do we need context here?
-        bEndBoundary = (bpb.getBorderEndWidth(false) > 0
+        endBoundary = (bpb.getBorderEndWidth(false) > 0
                      || bpb.getPaddingEnd(false, null) > 0); // TODO do we need context here?
+         */
+        startBoundary = true;
+        endBoundary = true;
     }
 
     /**
      * @return true if there are more characters
      */
     public boolean hasNext() {
-        if (bStartBoundary) {
+        if (startBoundary) {
             return true;
         }
-        return (super.hasNext() || bEndBoundary);
+        return (super.hasNext() || endBoundary);
         /* If super.hasNext() returns false,
          * we return true if we are going to return a "boundary" signal
          * else false.
@@ -64,8 +72,8 @@
      * @throws NoSuchElementException if there are no more characters
      */
     public char nextChar() throws NoSuchElementException {
-        if (bStartBoundary) {
-            bStartBoundary = false;
+        if (startBoundary) {
+            startBoundary = false;
             return CharUtilities.CODE_EOT;
         }
         try {
@@ -73,8 +81,8 @@
         } catch (NoSuchElementException e) {
             // Underlying has nothing more to return
             // Check end boundary char
-            if (bEndBoundary) {
-                bEndBoundary = false;
+            if (endBoundary) {
+                endBoundary = false;
                 return CharUtilities.CODE_EOT;
             } else {
                 throw e;

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Block.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Block.java?rev=330576&r1=330575&r2=330576&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Block.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Block.java Thu Nov  3 08:20:50 2005
@@ -375,23 +375,41 @@
 
     private void handleWhiteSpace() {
         //getLogger().debug("fo:block: handleWhiteSpace");
-        if (firstInlineChild != null) {
-            boolean bInWS = false;
-            boolean bPrevWasLF = false;
-            
-            /* seenNonWSYet is an indicator used for trimming all leading 
-               whitespace for the first inline child of the block
-            */
-            boolean bSeenNonWSYet = false;
-            RecursiveCharIterator charIter =
-              new RecursiveCharIterator(this, firstInlineChild);
-            LFchecker lfCheck = new LFchecker(charIter);
-
-            while (charIter.hasNext()) {
-                char currentChar = charIter.nextChar();
-                switch (CharUtilities.classOf(currentChar)) {
-                    case CharUtilities.XMLWHITESPACE:
-                        /* Some kind of whitespace character, except linefeed. */
+        if (firstInlineChild == null) {
+            return; // Nothing to do
+        }
+        
+        boolean inWS = false; // True if we are in a run of white space
+        /*
+         * True if the last non white space char seen was a linefeed.
+         * We start from the beginning of a line so it defaults to True.
+         */
+        boolean prevWasLF = true; 
+
+        RecursiveCharIterator charIter =
+          new RecursiveCharIterator(this, firstInlineChild);
+        EOLchecker lfCheck = new EOLchecker(charIter);
+
+        while (charIter.hasNext()) {
+            char currentChar = charIter.nextChar();
+            int currentCharClass = CharUtilities.classOf(currentChar);
+            if (currentCharClass == CharUtilities.LINEFEED
+                && linefeedTreatment == EN_TREAT_AS_SPACE) {
+                // if we have a linefeed and it is suppose to be treated
+                // like a space, that's what we do and continue
+                currentChar = ' ';
+                charIter.replaceChar(' ');
+                currentCharClass = CharUtilities.classOf(currentChar);
+            }
+            switch (CharUtilities.classOf(currentChar)) {
+                case CharUtilities.XMLWHITESPACE:
+                    /* Some kind of whitespace character, except linefeed. */
+                    if (inWS && whiteSpaceCollapse == EN_TRUE) {
+                        // We are in a run of whitespace and should collapse
+                        // Just delete the char
+                        charIter.remove();
+                    } else {
+                        // Do the white space treatment here
                         boolean bIgnore = false;
 
                         switch (whiteSpaceTreatment) {
@@ -399,14 +417,16 @@
                                 bIgnore = true;
                                 break;
                             case Constants.EN_IGNORE_IF_BEFORE_LINEFEED:
-                                bIgnore = lfCheck.nextIsLF();
+                                bIgnore = linefeedTreatment == Constants.EN_PRESERVE
+                                            && lfCheck.nextIsLF();
                                 break;
                             case Constants.EN_IGNORE_IF_SURROUNDING_LINEFEED:
-                                bIgnore = (bPrevWasLF
-                                           || lfCheck.nextIsLF());
+                                bIgnore = (prevWasLF
+                                           || (linefeedTreatment == Constants.EN_PRESERVE
+                                               && lfCheck.nextIsLF()));
                                 break;
                             case Constants.EN_IGNORE_IF_AFTER_LINEFEED:
-                                bIgnore = bPrevWasLF;
+                                bIgnore = prevWasLF;
                                 break;
                             case Constants.EN_PRESERVE:
                                 // nothing to do now, replacement takes place later
@@ -415,111 +435,79 @@
                         // Handle ignore and replacement
                         if (bIgnore) {
                             charIter.remove();
-                        } else if (whiteSpaceCollapse == EN_TRUE) {
-                            if (bInWS || (linefeedTreatment == Constants.EN_PRESERVE
-                                        && (bPrevWasLF || lfCheck.nextIsLF()))) {
-                                charIter.remove();
-                            } else {
-                                // this is to retain a single space between words
-                                bInWS = true;
-                                // remove the space if no word in block 
-                                // encountered yet
-                                if (!bSeenNonWSYet) {
-                                    charIter.remove();
-                                } else {
-                                    if (currentChar != '\u0020') {
-                                        charIter.replaceChar('\u0020');
-                                    }
-                                }
-                            }
                         } else {
-                            // !bWScollapse
+                            // this is to retain a single space between words
+                            inWS = true;
                             if (currentChar != '\u0020') {
                                 charIter.replaceChar('\u0020');
                             }
                         }
-                        break;
-
-                    case CharUtilities.LINEFEED:
-                        /* A linefeed */
-                        lfCheck.reset();
-                        bPrevWasLF = true; // for following whitespace
+                    }
+                    break;
 
-                        switch (linefeedTreatment) {
-                            case Constants.EN_IGNORE:
-                                charIter.remove();
-                                break;
-                            case Constants.EN_TREAT_AS_SPACE:
-                                if (bInWS) {
-                                    // only if bWScollapse=true
-                                    charIter.remove();
-                                } else {
-                                    if (whiteSpaceCollapse == EN_TRUE) {
-                                        bInWS = true;
-                                        // remove the linefeed if no word in block 
-                                        // encountered yet
-                                        if (!bSeenNonWSYet) {
-                                            charIter.remove();
-                                        }
-                                    }
-                                    charIter.replaceChar('\u0020');
-                                }
-                                break;
-                            case Constants.EN_TREAT_AS_ZERO_WIDTH_SPACE:
-                                charIter.replaceChar('\u200b');
-                                // Fall through: this isn't XML whitespace
-                            case Constants.EN_PRESERVE:
-                                bInWS = false;
-                                break;
-                        }
-                        break;
+                case CharUtilities.LINEFEED:
+                    /* A linefeed */
+                    switch (linefeedTreatment) {
+                        case Constants.EN_IGNORE:
+                            charIter.remove();
+                            break;
+                        case Constants.EN_TREAT_AS_ZERO_WIDTH_SPACE:
+                            charIter.replaceChar(CharUtilities.ZERO_WIDTH_SPACE);
+                            inWS = false;
+                            break;
+                        case Constants.EN_PRESERVE:
+                            lfCheck.reset();
+                            inWS = false;
+                            prevWasLF = true; // for following whitespace
+                            break;
+                    }
+                    break;
 
-                    case CharUtilities.EOT:
-                        // A "boundary" objects such as non-character inline
-                        // or nested block object was encountered.
-                        // If any whitespace run in progress, finish it.
-                        // FALL THROUGH
-
-                    case CharUtilities.UCWHITESPACE: // Non XML-whitespace
-                    case CharUtilities.NONWHITESPACE:
-                        /* Any other character */
-                        bInWS = bPrevWasLF = false;
-                        bSeenNonWSYet = true;
-                        lfCheck.reset();
-                        break;
-                }
+                case CharUtilities.EOT:
+                    // A "boundary" objects such as non-character inline
+                    // or nested block object was encountered.
+                    // If any whitespace run in progress, finish it.
+                    // FALL THROUGH
+
+                default:
+                    /* Any other character */
+                    inWS = prevWasLF = false;
+                    lfCheck.reset();
+                    break;
             }
-            firstInlineChild = null;
         }
+        firstInlineChild = null;
     }
 
-    private static class LFchecker {
-        private boolean bNextIsLF = false;
+    private static class EOLchecker {
+        private boolean nextIsEOL = false;
         private RecursiveCharIterator charIter;
 
-        LFchecker(RecursiveCharIterator charIter) {
+        EOLchecker(RecursiveCharIterator charIter) {
             this.charIter = charIter;
         }
 
         boolean nextIsLF() {
-            if (bNextIsLF == false) {
+            if (nextIsEOL == false) {
                 CharIterator lfIter = charIter.mark();
                 while (lfIter.hasNext()) {
-                    char c = lfIter.nextChar();
-                    if (c == '\n') {
-                        bNextIsLF = true;
-                        break;
-                    } else if (CharUtilities.classOf(c)
-                            != CharUtilities.XMLWHITESPACE) {
-                        break;
+                    int charClass = CharUtilities.classOf(lfIter.nextChar());
+                    if (charClass == CharUtilities.LINEFEED) {
+                        nextIsEOL = true;
+                        return nextIsEOL;
+                    } else if (charClass != CharUtilities.XMLWHITESPACE) {
+                        return nextIsEOL;
                     }
                 }
+                // No more characters == end of block == end of line
+                nextIsEOL = true;
+                return nextIsEOL;
             }
-            return bNextIsLF;
+            return nextIsEOL;
         }
 
         void reset() {
-            bNextIsLF = false;
+            nextIsEOL = false;
         }
     }
      

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Character.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Character.java?rev=330576&r1=330575&r2=330576&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Character.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/Character.java Thu Nov  3 08:20:50 2005
@@ -18,15 +18,12 @@
 
 package org.apache.fop.fo.flow;
 
-import org.xml.sax.Locator;
-
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.datatypes.ColorType;
 import org.apache.fop.datatypes.Length;
 import org.apache.fop.fo.CharIterator;
 import org.apache.fop.fo.FONode;
 import org.apache.fop.fo.FObj;
-import org.apache.fop.fo.OneCharIterator;
 import org.apache.fop.fo.PropertyList;
 import org.apache.fop.fo.ValidationException;
 import org.apache.fop.fo.properties.CommonAural;
@@ -39,6 +36,11 @@
 import org.apache.fop.fo.properties.KeepProperty;
 import org.apache.fop.fo.properties.Property;
 import org.apache.fop.fo.properties.SpaceProperty;
+import org.apache.fop.util.CharUtilities;
+
+import org.xml.sax.Locator;
+
+import java.util.NoSuchElementException;
 
 /**
  * This class represents the flow object 'fo:character'. Its use is defined by
@@ -156,8 +158,7 @@
      * @see org.apache.fop.fo.FObj#charIterator
      */
     public CharIterator charIterator() {
-        return new OneCharIterator(character);
-        // But what if the character is ignored due to white space handling?
+        return new TextCharIterator();
     }
 
     /**
@@ -270,4 +271,31 @@
         return FO_CHARACTER;
     }
     
+    private class TextCharIterator extends CharIterator {
+
+        private boolean bFirst = character != CharUtilities.CODE_EOT;
+        
+        public boolean hasNext() {
+            return bFirst;
+        }
+
+        public char nextChar() {
+            if (bFirst) {
+                bFirst = false;
+                return character;
+            } else {
+                throw new NoSuchElementException();
+            }
+        }
+
+        public void remove() {
+            character = CharUtilities.CODE_EOT;
+        }
+
+        public void replaceChar(char c) {
+            character = c;
+        }
+
+    }
+
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java?rev=330576&r1=330575&r2=330576&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java Thu Nov  3 08:20:50 2005
@@ -78,6 +78,7 @@
 import org.apache.fop.layoutmgr.list.ListBlockLayoutManager;
 import org.apache.fop.layoutmgr.list.ListItemLayoutManager;
 import org.apache.fop.layoutmgr.table.TableLayoutManager;
+import org.apache.fop.util.CharUtilities;
 
 /**
  * The default LayoutManager maker class
@@ -287,7 +288,10 @@
 
     public static class CharacterLayoutManagerMaker extends Maker {
         public void make(FONode node, List lms) {
-            lms.add(new CharacterLayoutManager((Character) node));
+            Character foCharacter = (Character) node;
+            if (foCharacter.getCharacter() != CharUtilities.CODE_EOT) {
+                lms.add(new CharacterLayoutManager(foCharacter));
+            }
         }
     }
 

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/AbstractGraphicsLayoutManager.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/AbstractGraphicsLayoutManager.java?rev=330576&r1=330575&r2=330576&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/AbstractGraphicsLayoutManager.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/AbstractGraphicsLayoutManager.java Thu Nov  3 08:20:50 2005
@@ -117,7 +117,7 @@
         if (len.getEnum() != EN_AUTO) {
             if (len.getEnum() == EN_SCALE_TO_FIT) {
                 if (bpd != -1) {
-                    cwidth = bpd;
+                    cheight = bpd;
                 }
             } else {
                 cheight = len.getValue(this);

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/xml/XMLRenderer.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/xml/XMLRenderer.java?rev=330576&r1=330575&r2=330576&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/xml/XMLRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/xml/XMLRenderer.java Thu Nov  3 08:20:50 2005
@@ -200,7 +200,7 @@
             handleSAXException(saxe);
         }
     }
-    
+   
     /**
      * Adds a new attribute to the protected member variable "atts".
      * @param name name of the attribute

Modified: xmlgraphics/fop/trunk/test/layoutengine/disabled-testcases.txt
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/disabled-testcases.txt?rev=330576&r1=330575&r2=330576&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/disabled-testcases.txt (original)
+++ xmlgraphics/fop/trunk/test/layoutengine/disabled-testcases.txt Thu Nov  3 08:20:50 2005
@@ -1,8 +1,12 @@
 block-container_reference-orientation_bug36391.xml
 block-container_space-before_space-after_3.xml
 block_font-stretch.xml
+block_linefeed-treatment.xml
 block_padding_2.xml
 block_space-before_space-after_8.xml
+block_white-space-collapse_2.xml
+block_white-space-treatment_1.xml
+block_white-space-treatment_2.xml
 block_word-spacing.xml
 block_word-spacing_text-align_justify.xml
 external-graphic_oversized.xml

Added: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_linefeed-treatment.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/testcases/block_linefeed-treatment.xml?rev=330576&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/testcases/block_linefeed-treatment.xml (added)
+++ xmlgraphics/fop/trunk/test/layoutengine/testcases/block_linefeed-treatment.xml Thu Nov  3 08:20:50 2005
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2005 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- $Id$ -->
+<testcase>
+  <info>
+    <p>
+      This test checks white space handling for linefeed-treatment.
+      This currently fails because
+        a) Preserved linefeeds in fo:character are not handled correctly
+        b) ZWSP are not handled correctly
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
+          <fo:region-body/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="normal" white-space-collapse="true">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block linefeed-treatment="treat-as-space" background-color="silver" margin="1pt 0pt 1pt 0pt">
+treat-as-space
+all<fo:character character="&#xa;"/>linefeeds
+</fo:block>
+          <fo:block linefeed-treatment="ignore" background-color="silver" margin="1pt 0pt 1pt 0pt">
+ignore
+all<fo:character character="&#xa;"/>linefeeds
+</fo:block>
+          <fo:block linefeed-treatment="preserve" background-color="silver" margin="1pt 0pt 1pt 0pt">
+preserve
+all<fo:character character="&#xa;"/>linefeeds
+</fo:block>
+          <fo:block linefeed-treatment="treat-as-zero-width-space" background-color="silver" margin="1pt 0pt 1pt 0pt">
+treat-as-zero-width-space
+all<fo:character character="&#xa;"/>linefeeds
+</fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <eval expected="2" xpath="count(//flow/block[1]/lineArea[1]/text[1]/word)"/>
+    <eval expected="1" xpath="count(//flow/block[1]/lineArea[1]/text[1]/space)"/>
+    <eval expected="1" xpath="count(//flow/block[1]/lineArea[1]/char)"/>
+    <eval expected="1" xpath="count(//flow/block[1]/lineArea[1]/text[2]/word)"/>
+    <eval expected="0" xpath="count(//flow/block[1]/lineArea[1]/text[2]/space)"/>
+
+    <eval expected="1" xpath="count(//flow/block[2]/lineArea[1]/text[1]/word)"/>
+    <eval expected="0" xpath="count(//flow/block[2]/lineArea[1]/text[1]/space)"/>
+    <eval expected="1" xpath="count(//flow/block[2]/lineArea[1]/text[2]/word)"/>
+    <eval expected="0" xpath="count(//flow/block[2]/lineArea[1]/text[2]/space)"/>
+    
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[1]/text)"/>
+    <eval expected="1" xpath="count(//flow/block[3]/lineArea[2]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[2]/text/space)"/>
+    <eval expected="1" xpath="count(//flow/block[3]/lineArea[3]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[3]/text/space)"/>
+    <eval expected="1" xpath="count(//flow/block[3]/lineArea[4]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[4]/text/space)"/>
+    
+    <eval expected="1" xpath="count(//flow/block[4]/lineArea[1]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[4]/lineArea[1]/text/space)"/>
+    
+  </checks>
+</testcase>

Propchange: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_linefeed-treatment.xml
------------------------------------------------------------------------------
    svn:executable = *

Propchange: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_linefeed-treatment.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Added: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_1.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_1.xml?rev=330576&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_1.xml (added)
+++ xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_1.xml Thu Nov  3 08:20:50 2005
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2005 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- $Id$ -->
+<testcase>
+  <info>
+    <p>
+      This test checks basic white space handling for white-space-collapse="true".
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
+          <fo:region-body/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="normal" white-space-collapse="true">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">  
+            spaces  
+            before  
+            and  
+            after  
+            each  
+            word  <fo:character character="&#xa;" />
+<fo:character character=" " /><fo:character character=" " />          and  
+            linefeeds<fo:character character=" " /><fo:character character=" " />
+            everywhere <fo:character character=" " />
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">  
+            <fo:block background-color="orange">
+              nested block level  
+            </fo:block>
+            <fo:block background-color="red">
+              nested block level  
+            </fo:block>
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">
+            <fo:inline background-color="orange">
+              inline level  
+            </fo:inline>
+            <fo:inline background-color="red">
+              inline level  
+            </fo:inline>
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">
+            block level  
+            <fo:inline background-color="orange">
+              inline level  
+            </fo:inline>
+            block
+            <fo:inline background-color="red">
+              inline level 
+            </fo:inline>
+            block level  
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">  
+            <fo:inline background-color="orange">
+              inline level  
+              <fo:inline background-color="red">
+              nested inline level  
+              </fo:inline>
+            </fo:inline>
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">  
+            <fo:inline background-color="orange">
+              <fo:inline background-color="red">
+                nested inline level  
+              </fo:inline>
+              inline level  
+            </fo:inline>
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">  
+            block level
+            <fo:inline background-color="orange">
+              <fo:inline background-color="red">
+                nested inline level  
+              </fo:inline>
+              inline level  
+            </fo:inline>
+            block level  
+          </fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <eval expected="6" xpath="count(//flow/block[1]/lineArea[1]/text[1]/word)"/>
+    <eval expected="6" xpath="count(//flow/block[1]/lineArea[1]/text[1]/space)"/>
+    <eval expected="2" xpath="count(//flow/block[1]/lineArea[1]/text[2]/word)"/>
+    <eval expected="1" xpath="count(//flow/block[1]/lineArea[1]/text[2]/space)"/>
+    <eval expected="1" xpath="count(//flow/block[1]/lineArea[1]/text[3]/word)"/>
+    <eval expected="1" xpath="count(//flow/block[1]/lineArea[1]/char)"/>
+    
+    <eval expected="3" xpath="count(//flow/block[2]/block[1]/lineArea[1]/text/word)"/>
+    <eval expected="2" xpath="count(//flow/block[2]/block[1]/lineArea[1]/text/space)"/>
+    <eval expected="3" xpath="count(//flow/block[2]/block[2]/lineArea[1]/text/word)"/>
+    <eval expected="2" xpath="count(//flow/block[2]/block[2]/lineArea[1]/text/space)"/>
+    
+    <eval expected="2" xpath="count(//flow/block[3]/lineArea[1]/inlineparent[1]/text/word)"/>
+    <eval expected="2" xpath="count(//flow/block[3]/lineArea[1]/inlineparent[1]/text/space)"/>
+    <eval expected="1" xpath="count(//flow/block[3]/lineArea[1]/text[1]/space)"/>
+    <eval expected="2" xpath="count(//flow/block[3]/lineArea[1]/inlineparent[2]/text/word)"/>
+    <eval expected="2" xpath="count(//flow/block[3]/lineArea[1]/inlineparent[2]/text/space)"/>
+    
+    <eval expected="2" xpath="count(//flow/block[4]/lineArea[1]/text[1]/word)"/>
+    <eval expected="2" xpath="count(//flow/block[4]/lineArea[1]/text[1]/space)"/>
+    <eval expected="2" xpath="count(//flow/block[4]/lineArea[1]/inlineparent[1]/text/word)"/>
+    <eval expected="3" xpath="count(//flow/block[4]/lineArea[1]/inlineparent[1]/text/space)"/>
+    <eval expected="1" xpath="count(//flow/block[4]/lineArea[1]/text[2]/word)"/>
+    <eval expected="2" xpath="count(//flow/block[4]/lineArea[1]/text[2]/space)"/>
+    <eval expected="2" xpath="count(//flow/block[4]/lineArea[1]/inlineparent[2]/text/word)"/>
+    <eval expected="3" xpath="count(//flow/block[4]/lineArea[1]/inlineparent[2]/text/space)"/>
+    <eval expected="2" xpath="count(//flow/block[4]/lineArea[1]/text[3]/word)"/>
+    <eval expected="2" xpath="count(//flow/block[4]/lineArea[1]/text[3]/space)"/>
+    
+    <eval expected="2" xpath="count(//flow/block[5]/lineArea[1]/inlineparent[1]/text/word)"/>
+    <eval expected="2" xpath="count(//flow/block[5]/lineArea[1]/inlineparent[1]/text/space)"/>
+    <eval expected="3" xpath="count(//flow/block[5]/lineArea[1]/inlineparent[1]/inlineparent[1]/text/word)"/>
+    <eval expected="3" xpath="count(//flow/block[5]/lineArea[1]/inlineparent[1]/inlineparent[1]/text/space)"/>
+
+    <eval expected="3" xpath="count(//flow/block[6]/lineArea[1]/inlineparent[1]/inlineparent[1]/text/word)"/>
+    <eval expected="3" xpath="count(//flow/block[6]/lineArea[1]/inlineparent[1]/inlineparent[1]/text/space)"/>
+    <eval expected="2" xpath="count(//flow/block[6]/lineArea[1]/inlineparent[1]/text/word)"/>
+    <eval expected="2" xpath="count(//flow/block[6]/lineArea[1]/inlineparent[1]/text/space)"/>
+
+    <eval expected="2" xpath="count(//flow/block[7]/lineArea[1]/text[1]/word)"/>
+    <eval expected="2" xpath="count(//flow/block[7]/lineArea[1]/text[1]/space)"/>
+    <eval expected="1" xpath="count(//flow/block[7]/lineArea[1]/inlineparent[1]/text[1]/space)"/>
+    <eval expected="3" xpath="count(//flow/block[7]/lineArea[1]/inlineparent[1]/inlineparent[1]/text/word)"/>
+    <eval expected="4" xpath="count(//flow/block[7]/lineArea[1]/inlineparent[1]/inlineparent[1]/text/space)"/>
+    <eval expected="2" xpath="count(//flow/block[7]/lineArea[1]/inlineparent[1]/text[2]/word)"/>
+    <eval expected="3" xpath="count(//flow/block[7]/lineArea[1]/inlineparent[1]/text[2]/space)"/>
+    <eval expected="2" xpath="count(//flow/block[7]/lineArea[1]/text[2]/word)"/>
+    <eval expected="2" xpath="count(//flow/block[7]/lineArea[1]/text[2]/space)"/>
+  </checks>
+</testcase>

Propchange: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_1.xml
------------------------------------------------------------------------------
    svn:executable = *

Propchange: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_1.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Added: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_2.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_2.xml?rev=330576&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_2.xml (added)
+++ xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_2.xml Thu Nov  3 08:20:50 2005
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2005 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- $Id$ -->
+<testcase>
+  <info>
+    <p>
+      This test checks basic white space handling for white-space-collapse="false".
+      The test currently fails because white space around formatter generated
+      linebreaks is not removed correctly.
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
+          <fo:region-body/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="normal" white-space-collapse="false">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">  
+            spaces  
+            before  
+            and  
+            after  
+            each  
+            word  <fo:character character="&#xa;" />
+<fo:character character=" " /><fo:character character=" " />          and  
+            linefeeds<fo:character character=" " /><fo:character character=" " />
+            everywhere<fo:character character=" " /> 
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">  
+            <fo:block background-color="orange">
+              nested block level  
+            </fo:block>
+            <fo:block background-color="red">
+              nested block level  
+            </fo:block>
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">
+            <fo:inline background-color="orange">
+              inline level  
+            </fo:inline>
+            <fo:inline background-color="red">
+              inline level  
+            </fo:inline>
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">
+            block level  
+            <fo:inline background-color="orange">
+              inline level  
+            </fo:inline>
+            block
+            <fo:inline background-color="red">
+              inline level 
+            </fo:inline>
+            block level  
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">  
+            <fo:inline background-color="orange">
+              inline level  
+              <fo:inline background-color="red">
+              nested inline level  
+              </fo:inline>
+            </fo:inline>
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">  
+            <fo:inline background-color="orange">
+              <fo:inline background-color="red">
+                nested inline level  
+              </fo:inline>
+              inline level  
+            </fo:inline>
+          </fo:block>
+          <fo:block background-color="silver" margin="1pt 0pt 1pt 0pt">  
+            block level
+            <fo:inline background-color="orange">
+              <fo:inline background-color="red">
+                nested inline level  
+              </fo:inline>
+              inline level  
+            </fo:inline>
+            block level  
+          </fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <!-- The tests are currently incomplete but enough to fail -->
+    <eval expected="8" xpath="count(//flow/block[1]/lineArea[1]/text/word)"/>
+    <eval expected="35" xpath="count(//flow/block[1]/lineArea[1]/text/space)"/>
+    <eval expected="1" xpath="count(//flow/block[1]/lineArea[2]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[1]/lineArea[2]/text/space)"/>
+    
+  </checks>
+</testcase>

Propchange: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_2.xml
------------------------------------------------------------------------------
    svn:executable = *

Propchange: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-collapse_2.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Added: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_1.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_1.xml?rev=330576&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_1.xml (added)
+++ xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_1.xml Thu Nov  3 08:20:50 2005
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2005 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- $Id$ -->
+<testcase>
+  <info>
+    <p>
+      This test checks white space handling for white-space-treatment
+      with white-spcae-collapse="true".
+      The test currently fails because white space around formatter generated
+      linebreaks is not removed correctly.
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
+          <fo:region-body/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="normal" white-space-collapse="true">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block white-space-treatment="ignore-if-surrounding-linefeed" background-color="silver" margin="1pt 0pt 1pt 0pt">
+  ignore-if-surrounding-linefeed  
+  all  
+  spaces  
+</fo:block>
+          <fo:block white-space-treatment="ignore" background-color="silver" margin="1pt 0pt 1pt 0pt">
+  ignore  
+  all  
+  spaces  
+</fo:block>
+          <fo:block white-space-treatment="preserve" background-color="silver" margin="1pt 0pt 1pt 0pt">
+  preserve  
+  all  
+  spaces  
+</fo:block>
+          <fo:block white-space-treatment="ignore-if-before-linefeed" background-color="silver" margin="1pt 0pt 1pt 0pt">
+  ignore-if-before-linefeed  
+  all  
+  spaces  
+</fo:block>
+          <fo:block white-space-treatment="ignore-if-after-linefeed" background-color="silver" margin="1pt 0pt 1pt 0pt">
+  ignore-if-after-linefeed  
+  all  
+  spaces  
+</fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <!-- The tests are currently incomplete but enough to fail -->
+    <eval expected="3" xpath="count(//flow/block[1]/lineArea[1]/text/word)"/>
+    <eval expected="2" xpath="count(//flow/block[1]/lineArea[1]/text/space)"/>
+
+    <eval expected="1" xpath="count(//flow/block[2]/lineArea[1]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[2]/lineArea[1]/text/space)"/>
+    
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[1]/text)"/>
+    <eval expected="1" xpath="count(//flow/block[3]/lineArea[2]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[2]/text/space)"/>
+    <eval expected="1" xpath="count(//flow/block[3]/lineArea[3]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[3]/text/space)"/>
+    <eval expected="1" xpath="count(//flow/block[3]/lineArea[4]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[4]/text/space)"/>
+    
+    <eval expected="1" xpath="count(//flow/block[4]/lineArea[1]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[4]/lineArea[1]/text/space)"/>
+    
+  </checks>
+</testcase>

Propchange: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_1.xml
------------------------------------------------------------------------------
    svn:executable = *

Propchange: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_1.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Added: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_2.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_2.xml?rev=330576&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_2.xml (added)
+++ xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_2.xml Thu Nov  3 08:20:50 2005
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2005 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- $Id$ -->
+<testcase>
+  <info>
+    <p>
+      This test checks white space handling for white-space-treatment.
+      with white-spcae-collapse="false".
+      The test currently fails because white space around formatter generated
+      linebreaks is not removed correctly.
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
+          <fo:region-body/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="normal" white-space-collapse="false">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block white-space-treatment="ignore-if-surrounding-linefeed" background-color="silver" margin="1pt 0pt 1pt 0pt">
+  ignore-if-surrounding-linefeed                                                                    
+  all                                                                                              
+  spaces                                                                                           
+</fo:block>
+          <fo:block white-space-treatment="ignore" background-color="silver" margin="1pt 0pt 1pt 0pt">
+  ignore  
+  all  
+  spaces  
+</fo:block>
+          <fo:block white-space-treatment="preserve" background-color="silver" margin="1pt 0pt 1pt 0pt">
+  preserve                                                                                         
+  all                                                                                              
+  spaces                                                                                           
+</fo:block>
+          <fo:block white-space-treatment="ignore-if-before-linefeed" background-color="silver" margin="1pt 0pt 1pt 0pt">
+  ignore-if-before-linefeed  
+  all  
+  spaces  
+</fo:block>
+          <fo:block white-space-treatment="ignore-if-after-linefeed" background-color="silver" margin="1pt 0pt 1pt 0pt">
+  ignore-if-after-linefeed  
+  all  
+  spaces  
+</fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <!-- The tests are currently incomplete but enough to fail -->
+    <eval expected="3" xpath="count(//flow/block[1]/lineArea[1]/text/word)"/>
+    <eval expected="2" xpath="count(//flow/block[1]/lineArea[1]/text/space)"/>
+
+    <eval expected="1" xpath="count(//flow/block[2]/lineArea[1]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[2]/lineArea[1]/text/space)"/>
+    
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[1]/text)"/>
+    <eval expected="1" xpath="count(//flow/block[3]/lineArea[2]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[2]/text/space)"/>
+    <eval expected="1" xpath="count(//flow/block[3]/lineArea[3]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[3]/text/space)"/>
+    <eval expected="1" xpath="count(//flow/block[3]/lineArea[4]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[3]/lineArea[4]/text/space)"/>
+    
+    <eval expected="1" xpath="count(//flow/block[4]/lineArea[1]/text/word)"/>
+    <eval expected="0" xpath="count(//flow/block[4]/lineArea[1]/text/space)"/>
+    
+  </checks>
+</testcase>

Propchange: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_2.xml
------------------------------------------------------------------------------
    svn:executable = *

Propchange: xmlgraphics/fop/trunk/test/layoutengine/testcases/block_white-space-treatment_2.xml
------------------------------------------------------------------------------
    svn:keywords = Id



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


Mime
View raw message