diff options
author | Vincent Hennebert <vhennebert@apache.org> | 2012-09-04 14:34:12 +0000 |
---|---|---|
committer | Vincent Hennebert <vhennebert@apache.org> | 2012-09-04 14:34:12 +0000 |
commit | 9508968e6e53525d87c2620b77753f28032e7779 (patch) | |
tree | 6326db6962750134ac69449a2a5733fcac965c1a | |
parent | 45102ae251426c0ec72d479d06d62c651a228825 (diff) | |
download | xmlgraphics-fop-9508968e6e53525d87c2620b77753f28032e7779.tar.gz xmlgraphics-fop-9508968e6e53525d87c2620b77753f28032e7779.zip |
Bugzilla 53827: When an fo:block has a non-zero value for its text-indent property and is broken over two pages of different widths, then the first line on the second page is missing one word and appears indented.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1380667 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java | 4 | ||||
-rw-r--r-- | status.xml | 5 | ||||
-rw-r--r-- | test/layoutengine/standard-testcases/flow_changing-ipd_text-indent.xml | 57 |
3 files changed, 66 insertions, 0 deletions
diff --git a/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java index 00cd427d9..ac3f8f878 100644 --- a/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java @@ -649,6 +649,10 @@ public class LineLayoutManager extends InlineStackingLayoutManager log.trace("Restarting line breaking from index " + restartPosition.getIndex()); int parIndex = restartPosition.getLeafPos(); KnuthSequence paragraph = knuthParagraphs.get(parIndex); + if (paragraph instanceof Paragraph) { + ((Paragraph) paragraph).ignoreAtStart = 0; + isFirstInBlock = false; + } paragraph.subList(0, restartPosition.getIndex() + 1).clear(); Iterator<KnuthElement> iter = paragraph.iterator(); while (iter.hasNext() && !iter.next().isBox()) { diff --git a/status.xml b/status.xml index 89f9bf4d2..b8fc34aa8 100644 --- a/status.xml +++ b/status.xml @@ -62,6 +62,11 @@ documents. Example: the fix of marks layering will be such a case when it's done. --> <release version="FOP Trunk" date="TBD"> + <action context="Layout" dev="VH" type="fix" fixes-bug="53827"> + When an fo:block has a non-zero value for its text-indent property and is broken over two + pages of different widths, then the first line on the second page is missing one word and + appears indented. + </action> <action context="Renderers" dev="MH" type="fix" fixes-bug="53790"> Prevented the TIFF configurator from overriding the Bitmap configurator unless CCITT compression is enabled. diff --git a/test/layoutengine/standard-testcases/flow_changing-ipd_text-indent.xml b/test/layoutengine/standard-testcases/flow_changing-ipd_text-indent.xml new file mode 100644 index 000000000..0d1d141a9 --- /dev/null +++ b/test/layoutengine/standard-testcases/flow_changing-ipd_text-indent.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- $Id$ --> +<testcase> + <info> + <p> + This test checks that the text-indent property plays nicely with changing IPD. + </p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <fo:layout-master-set> + <fo:simple-page-master master-name="wide-page" + page-height="40pt" page-width="220pt" margin="10pt"> + <fo:region-body/> + </fo:simple-page-master> + <fo:simple-page-master master-name="narrow-page" + page-height="60pt" page-width="180pt" margin="10pt"> + <fo:region-body/> + </fo:simple-page-master> + <fo:page-sequence-master master-name="pages"> + <fo:single-page-master-reference master-reference="wide-page"/> + <fo:single-page-master-reference master-reference="narrow-page"/> + </fo:page-sequence-master> + </fo:layout-master-set> + + <fo:page-sequence master-reference="pages"> + <fo:flow flow-name="xsl-region-body" text-align="justify" font-size="8pt" line-height="10pt"> + <fo:block text-indent="2em">Setting a non-zero value for the “text-indent” property on an + fo:block should not cause loss of text. Setting a non-zero value for the “text-indent” + property on an fo:block should not cause loss of text.</fo:block> + </fo:flow> + </fo:page-sequence> + + </fo:root> + </fo> + <checks> + <eval expected="non-" xpath="//pageViewport[1]//lineArea[2]//word[position()=last()]"/> + <eval expected="" xpath="//pageViewport[2]//lineArea[1]/@start-indent"/> + <eval expected="zero" xpath="//pageViewport[2]//lineArea[1]//word[1]"/> + </checks> +</testcase> |