gmazza 2004/03/07 09:52:43 Modified: src/java/org/apache/fop/fo FOText.java src/java/org/apache/fop/fo/flow Block.java Log: Fix of leading-space problem in HEAD. (A single leading space of the first inline child of the block object was being incorrectly retained.) Revision Changes Path 1.16 +0 -4 xml-fop/src/java/org/apache/fop/fo/FOText.java Index: FOText.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOText.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- FOText.java 1 Mar 2004 23:50:26 -0000 1.15 +++ FOText.java 7 Mar 2004 17:52:43 -0000 1.16 @@ -168,10 +168,6 @@ } else if (curIndex == length) { curIndex = --length; } -// Temporary until leading space problem in 1.0 fixed -// System.out.println("\n\nremove called: ca = \"" + -// new String(ca) + "\", length/node length: " + length -// + ", " + ca.length); } 1.13 +17 -0 xml-fop/src/java/org/apache/fop/fo/flow/Block.java Index: Block.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/Block.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- Block.java 27 Feb 2004 17:44:23 -0000 1.12 +++ Block.java 7 Mar 2004 17:52:43 -0000 1.13 @@ -246,6 +246,11 @@ if (firstInlineChild != null) { boolean bInWS = false; boolean bPrevWasLF = false; + + /* bSeenNonWSYet 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); @@ -279,7 +284,13 @@ && (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(); + } } } break; @@ -300,6 +311,11 @@ } else { if (bWScollapse) { bInWS = true; + // remove the linefeed if no word in block + // encountered yet + if (!bSeenNonWSYet) { + charIter.remove(); + } } charIter.replaceChar('\u0020'); } @@ -323,6 +339,7 @@ case CharUtilities.NONWHITESPACE: /* Any other character */ bInWS = bPrevWasLF = false; + bSeenNonWSYet = true; lfCheck.reset(); break; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]