]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
fixed some text wrapping problems
authorKeiron Liddle <keiron@apache.org>
Tue, 25 Sep 2001 11:59:18 +0000 (11:59 +0000)
committerKeiron Liddle <keiron@apache.org>
Tue, 25 Sep 2001 11:59:18 +0000 (11:59 +0000)
and improved the wrapping test

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194482 13f79535-47bb-0310-9956-ffa450edef68

src/org/apache/fop/layout/LineArea.java
test/xml/bugtests/wrap.fo

index a3129feb564e849e72cf2100cce676afcd8b14e2..1a424470f99e2cccd92572f918a50cb55fe645ec 100644 (file)
@@ -432,42 +432,49 @@ public class LineArea extends Area {
 
                     if (this.wrapOption == WrapOption.WRAP) {
 
-                        int ret=wordStart;
-
                         if (hyphProps.hyphenate == Hyphenate.TRUE) {
+                            int ret = wordStart;
                             ret = this.doHyphenation(dataCopy, i, wordStart,
                                                      this.getContentWidth()
                                                      - (finalWidth
                                                         + spaceWidth
                                                         + pendingWidth));
 
+                            // current word couldn't be hypenated
+                            // couldn't fit first word
+                            // I am at the beginning of my line
+                            if ((ret == wordStart) &&
+                                (wordStart == start) &&
+                                (finalWidth == 0)) {
+
+                                MessageHandler.error(">");
+                                addSpacedWord(new String(data, wordStart, wordLength - 1),
+                                              ls,
+                                              finalWidth + spaceWidth
+                                              + embeddedLinkStart,
+                                              spaceWidth, textState, false);
+
+                                finalWidth += wordWidth;
+                                wordWidth = 0;
+                                ret = i;
+                            }
+                            return ret;
+                        } else if (wordStart == start) {
+                            // first word
+                            overrun = true;
+                            // if not at start of line, return word start
+                            // to try again on a new line
+                            if (finalWidth > 0) {
+                                return wordStart;
+                            }
+                        } else {
+                            return wordStart;
                         }
 
-
-                        if ((ret == wordStart) &&      // current word couldn't be hypenated
-                            (wordStart == start) &&    // couldn't fit first word
-                            (finalWidth == 0)) {       // I am at the beginning of my line
-
-                            MessageHandler.error(">");
-
-                            addSpacedWord(new String(data, wordStart, wordLength - 1),
-                                          ls,
-                                          finalWidth + spaceWidth
-                                          + embeddedLinkStart,
-                                          spaceWidth, textState, false);
-
-                            finalWidth += wordWidth;
-                            wordWidth = 0;
-
-                            ret = i;
-                        }
-
-                        return ret;
                     }
                 }
             }
-        }                                        // end of iteration over text
-
+        } // end of iteration over text
 
         if (prev == TEXT) {
 
index 1e263905576b1db9468d0eae1691c8945993e804..c1e4b6272cb205bbb42b9eb7b0569ddf55d9b352 100644 (file)
              <fo:region-body margin-top="3cm" margin-bottom="3cm"/>
              <fo:region-after extent="2.5cm"/>
            </fo:simple-page-master>
+      <fo:simple-page-master master-name="no-overflow"
+                    page-height="25cm"
+                    page-width="20cm"
+                    margin-top="1cm"
+                    margin-bottom="1cm"
+                    margin-left="1.5cm"
+                    margin-right="1.5cm">
+        <fo:region-before extent="2.5cm"/>
+        <fo:region-body overflow="hidden" margin-top="3cm" margin-bottom="3cm"/>
+        <fo:region-after extent="2.5cm"/>
+      </fo:simple-page-master>
        </fo:layout-master-set>
 
        <fo:page-sequence master-name="simplePM">
            <fo:flow flow-name="xsl-region-body">
+      <fo:block>
+This test is to check a number of different possibilities when dealing with
+text being wrapped at the end of an area.
+      </fo:block>
                        <fo:block wrap-option="no-wrap">
                                <fo:inline>This is a simple fo block.This is a simple fo block.This is a simple fo block.</fo:inline>
                                <fo:inline>This is a simple fo block.This is a simple fo block.This is a simple fo block.</fo:inline>
                                This is simple fo block.This is simple fo block.This is simple fo block.This is simple fo block.
                                This is simple fo block.This is simple fo block.This is simple fo block.This is simple fo block.
                        </fo:block>
+      <fo:block space-before.optimum="10pt">
+Some examples in a table.
+      </fo:block>
+<fo:table border-style="solid" border-width="1pt" border-color="blue">
+<fo:table-column column-width="50pt"/>
+<fo:table-body>
+<fo:table-row>
+<fo:table-cell>
+      <fo:block>
+a normal paragraph with spaces and normal words
+      </fo:block>
+</fo:table-cell>
+</fo:table-row>
+<fo:table-row>
+<fo:table-cell>
+      <fo:block wrap-option="no-wrap" space-before.optimum="5pt">
+a normal paragraph with spaces and normal words
+      </fo:block>
+</fo:table-cell>
+</fo:table-row>
+<fo:table-row>
+<fo:table-cell>
+      <fo:block space-before.optimum="5pt">
+areallylongwordwhichisreallymanywords
+      </fo:block>
+</fo:table-cell>
+</fo:table-row>
+<fo:table-row>
+<fo:table-cell>
+      <fo:block wrap-option="no-wrap" space-before.optimum="5pt">
+areallylongwordwhichisreallymanywords
+      </fo:block>
+</fo:table-cell>
+</fo:table-row>
+<fo:table-row>
+<fo:table-cell>
+      <fo:block space-before.optimum="5pt"
+                language="en"
+                country="GB"
+                hyphenate="true"
+                hyphenation-push-character-count="2"
+                hyphenation-remain-character-count="2">
+words with hypenation the activated when doing lots of wrapping
+      </fo:block>
+</fo:table-cell>
+</fo:table-row>
+<fo:table-row>
+<fo:table-cell>
+      <fo:block space-before.optimum="5pt"
+                language="en"
+                country="GB"
+                hyphenate="true"
+                hyphenation-push-character-count="2"
+                hyphenation-remain-character-count="2">
+interdependancy is a nice long word
+      </fo:block>
+</fo:table-cell>
+</fo:table-row>
+<fo:table-row>
+<fo:table-cell>
+      <fo:block space-before.optimum="5pt"
+                wrap-option="no-wrap"
+                language="en"
+                country="UK"
+                hyphenate="true"
+                hyphenation-push-character-count="2"
+                hyphenation-remain-character-count="2">
+words with hypenation the activated when not doing lots of wrapping
+      </fo:block>
+</fo:table-cell>
+</fo:table-row>
+</fo:table-body>
+</fo:table>
                </fo:flow>
        </fo:page-sequence>
+  <fo:page-sequence master-name="no-overflow">
+      <fo:flow flow-name="xsl-region-body">
+      <fo:block wrap-option="no-wrap">
+        <fo:inline>This is a simple fo block.This is a simple fo block.This is a simple fo block.</fo:inline>
+        <fo:inline>This is a simple fo block.This is a simple fo block.This is a simple fo block.</fo:inline>
+        <fo:inline>This is a simple fo block.This is a simple fo block.This is a simple fo block.</fo:inline>
+        <fo:inline>This is a simple fo block.This is a simple fo block.This is a simple fo block.</fo:inline>
+
+        <fo:block space-before.optimum="1cm" wrap-option="wrap">
+          <fo:inline>This is a simple fo block.This is a simple fo block.This is a simple fo block.</fo:inline>
+          <fo:inline>This is a simple fo block.This is a simple fo block.This is a simple fo block.</fo:inline>
+          <fo:inline>This is a simple fo block.This is a simple fo block.This is a simple fo block.</fo:inline>
+        </fo:block>
+        This is simple fo block.This is simple fo block.This is simple fo block.This is simple fo block.
+        This is simple fo block.This is simple fo block.This is simple fo block.This is simple fo block.
+      </fo:block>
+    </fo:flow>
+  </fo:page-sequence>
 </fo:root>