diff options
-rw-r--r-- | fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java | 12 | ||||
-rw-r--r-- | fop/test/layoutengine/disabled-testcases.xml | 16 |
2 files changed, 15 insertions, 13 deletions
diff --git a/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java b/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java index 8d9e9722c..476860704 100644 --- a/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java +++ b/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java @@ -1018,12 +1018,20 @@ public class TextLayoutManager extends LeafNodeLayoutManager { /** {@inheritDoc} */ public void hyphenate(Position pos, HyphContext hyphContext) { - GlyphMapping mapping = getGlyphMapping(((LeafPosition) pos).getLeafPos() + changeOffset); + int glyphIndex = ((LeafPosition) pos).getLeafPos() + changeOffset; + GlyphMapping mapping = getGlyphMapping(glyphIndex); int startIndex = mapping.startIndex; int stopIndex; boolean nothingChanged = true; Font font = mapping.font; + // skip hyphenation if previously hyphenated using soft hyphen + if (mapping.isHyphenated || (glyphIndex > 0 && getGlyphMapping(glyphIndex - 1).isHyphenated)) { + stopIndex = mapping.endIndex; + hyphContext.updateOffset(stopIndex - startIndex); + startIndex = stopIndex; + } + while (startIndex < mapping.endIndex) { MinOptMax newIPD = MinOptMax.ZERO; boolean hyphenFollows; @@ -1078,7 +1086,7 @@ public class TextLayoutManager extends LeafNodeLayoutManager { new GlyphMapping(startIndex, stopIndex, 0, letterSpaceCount, newIPD, hyphenFollows, false, false, font, -1, null), - ((LeafPosition) pos).getLeafPos() + changeOffset)); + glyphIndex)); nothingChanged = false; } startIndex = stopIndex; diff --git a/fop/test/layoutengine/disabled-testcases.xml b/fop/test/layoutengine/disabled-testcases.xml index b211b5bf5..8138492d5 100644 --- a/fop/test/layoutengine/disabled-testcases.xml +++ b/fop/test/layoutengine/disabled-testcases.xml @@ -87,13 +87,13 @@ <testcase> <name>NPE for table inside an inline</name> <file>inline_block_nested_3.xml</file> - <description>Placing a table as a child of an fo:inline produces a + <description>Placing a table as a child of an fo:inline produces a NullPointerException.</description> </testcase> <testcase> <name>Keeps on inline-container are not implemented, yet.</name> <file>inline-container_keeps.xml</file> - <description>The keep-with-previous and keep-with-next properties have not been implemented on + <description>The keep-with-previous and keep-with-next properties have not been implemented on inline-container yet. They will be treated as if they had the value "auto".</description> </testcase> <testcase> @@ -135,14 +135,14 @@ <testcase> <name>Page breaking doesn't deal with IPD changes</name> <file>page-breaking_4.xml</file> - <description>Page breaking currently doesn't support changing available IPD + <description>Page breaking currently doesn't support changing available IPD between pages of a single page-sequence. Element list generation has to be reset to redetermine line breaks in this case.</description> </testcase> <testcase> <name>Overflow handing is incomplete</name> <file>page-breaking_6.xml</file> - <description>Line breaking is not 100% correct when there's too little space. + <description>Line breaking is not 100% correct when there's too little space. Overflows are not detected and warned.</description> </testcase> <testcase> @@ -186,7 +186,7 @@ <testcase> <name>table-cell empty area with marker.xml</name> <file>table-cell_empty_area_with_marker.xml</file> - <description>A table-cell producing an empty area does currently not add any markers to a page. + <description>A table-cell producing an empty area does currently not add any markers to a page. See TODO entry in AreaAdditionUtil.</description> </testcase> <testcase> @@ -197,12 +197,6 @@ case should be revisited.</description> </testcase> <testcase> - <name>Soft hyphen with normal hyphenation enabled</name> - <file>block_shy_linebreaking_hyph.xml</file> - <description>A soft hyphen should be a preferred as break compared to a - normal hyphenation point but is not. Background info: see JIRA FOP-2466.</description> - </testcase> - <testcase> <name>Page-keep not respected in multi-column layout</name> <file>keep_within-page_multi-column_overflow.xml</file> <description>The block should cause overflow in the |