From cd6650db7f1a2061c7cfc750b0f09cdd034a86bb Mon Sep 17 00:00:00 2001 From: Glen Mazza Date: Mon, 15 Dec 2003 22:39:01 +0000 Subject: [PATCH] Hyphenation/Quotation problem fixed ("quoted strings" not breaking properly.) Patch #25512 by Simon Pepping (spepping at leverkruid dot nl). git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197039 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/fop/layoutmgr/LineLayoutManager.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java b/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java index 62014219e..d04bdd5ab 100644 --- a/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java @@ -322,7 +322,7 @@ public class LineLayoutManager extends InlineStackingLayoutManager { prevBP = getBestBP(vecPossEnd); } // Backup child LM if necessary - if (bp != prevBP && !prevBP.couldEndLine()) { + if (bp != prevBP && !prevCouldEndLine(prevBP)) { reset(); } @@ -396,6 +396,20 @@ public class LineLayoutManager extends InlineStackingLayoutManager { return true; } + /** Test whether all breakposs in vecInlineBreaks + back to and including prev could end line */ + private boolean prevCouldEndLine(BreakPoss prev) { + ListIterator bpIter = + vecInlineBreaks.listIterator(vecInlineBreaks.size()); + boolean couldEndLine = true; + while (bpIter.hasPrevious()) { + BreakPoss bp = (BreakPoss) bpIter.previous(); + couldEndLine = bp.couldEndLine(); + if (!couldEndLine || bp == prev) break; + } + return couldEndLine; + } + private HyphContext getHyphenContext(BreakPoss prev, BreakPoss newBP) { // Get a "word" to hyphenate by getting characters from all -- 2.39.5