diff options
Diffstat (limited to 'src/java/org/apache/fop/layoutmgr/inline')
-rw-r--r-- | src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java | 7 | ||||
-rw-r--r-- | src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java | 11 |
2 files changed, 11 insertions, 7 deletions
diff --git a/src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java index 26dc8c3b4..3d1291480 100644 --- a/src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java @@ -75,11 +75,14 @@ public class CharacterLayoutManager extends LeafNodeLayoutManager { } private org.apache.fop.area.inline.TextArea getCharacterInlineArea(Character node) { - org.apache.fop.area.inline.TextArea text + org.apache.fop.area.inline.TextArea text = new org.apache.fop.area.inline.TextArea(); char ch = node.getCharacter(); if (CharUtilities.isAnySpace(ch)) { - text.addSpace(ch, 0, CharUtilities.isAdjustableSpace(ch)); + // add space unless it's zero-width: + if (!CharUtilities.isZeroWidthSpace(ch)) { + text.addSpace(ch, 0, CharUtilities.isAdjustableSpace(ch)); + } } else { text.addWord(String.valueOf(ch), 0); } diff --git a/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java index 7e14f49da..8d6c13670 100644 --- a/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java @@ -23,7 +23,6 @@ import java.util.ArrayList; import java.util.List; import java.util.LinkedList; import java.util.ListIterator; -import java.util.NoSuchElementException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -378,7 +377,7 @@ public class TextLayoutManager extends LeafNodeLayoutManager { iTotalAdjust += (iWordSpaceDim - wordSpaceIPD.opt) * iWScount; if (iTotalAdjust != iDifference) { // the applied adjustment is greater or smaller than the needed one - log.trace("TextLM.addAreas: error in word / letter space adjustment = " + log.trace("TextLM.addAreas: error in word / letter space adjustment = " + (iTotalAdjust - iDifference)); // set iTotalAdjust = iDifference, so that the width of the TextArea // will counterbalance the error and the other inline areas will be @@ -458,11 +457,13 @@ public class TextLayoutManager extends LeafNodeLayoutManager { areaInfo = (AreaInfo) vecAreaInfo.get(i); if (areaInfo.isSpace) { // areaInfo stores information about spaces - // add the spaces to the TextArea + // add the spaces - except zero-width spaces - to the TextArea for (int j = areaInfo.iStartIndex; j < areaInfo.iBreakIndex; j++) { char spaceChar = textArray[j]; - textArea.addSpace(spaceChar, 0, - CharUtilities.isAdjustableSpace(spaceChar)); + if (!CharUtilities.isZeroWidthSpace(spaceChar)) { + textArea.addSpace(spaceChar, 0, + CharUtilities.isAdjustableSpace(spaceChar)); + } } } else { // areaInfo stores information about a word fragment |