svn commit: r1884753 - in /xmlgraphics/fop/trunk: fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java fop/test/layoutengine/disabled-testcases.xml

[email protected] Wed, 23 Dec 2020 13:37:05 -0000
Newsgroups gmane.text.xml.fop.cvs
Message-ID <[email protected]>
Author: cbowditch
Date: Wed Dec 23 13:37:05 2020
New Revision: 1884753

URL: http://svn.apache.org/viewvc?rev=1884753&view=rev
Log:
FOP-2960; fix + test

Modified:
    xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
    xmlgraphics/fop/trunk/fop/test/layoutengine/disabled-testcases.xml

Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java?rev=1884753&r1=1884752&r2=1884753&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java Wed Dec 23 13:37:05 2020
@@ -1018,12 +1018,20 @@ public class TextLayoutManager extends L
 
     /** {@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 L
                       new GlyphMapping(startIndex, stopIndex, 0,
                                      letterSpaceCount, newIPD, hyphenFollows,
                                      false, false, font, -1, null),
-                        ((LeafPosition) pos).getLeafPos() + changeOffset));
+                            glyphIndex));
                 nothingChanged = false;
             }
             startIndex = stopIndex;

Modified: xmlgraphics/fop/trunk/fop/test/layoutengine/disabled-testcases.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop/test/layoutengine/disabled-testcases.xml?rev=1884753&r1=1884752&r2=1884753&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop/test/layoutengine/disabled-testcases.xml (original)
+++ xmlgraphics/fop/trunk/fop/test/layoutengine/disabled-testcases.xml Wed Dec 23 13:37:05 2020
@@ -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