aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Steiner <ssteiner@apache.org>2022-07-12 13:08:29 +0000
committerSimon Steiner <ssteiner@apache.org>2022-07-12 13:08:29 +0000
commitb063d27e718e0a307f566b483e4e358e81939b05 (patch)
treeea69b7d4eee755f4a0a710a881fb6f647385771c
parentb91fc313ebc360793966acaba52624cc7f2436ed (diff)
downloadxmlgraphics-fop-b063d27e718e0a307f566b483e4e358e81939b05.tar.gz
xmlgraphics-fop-b063d27e718e0a307f566b483e4e358e81939b05.zip
FOP-3081: Fix change ipd for linefeed-treatment=preserve
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1902677 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--fop-core/src/main/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java6
-rw-r--r--fop/test/layoutengine/standard-testcases/flow_changing-ipd_6.xml74
2 files changed, 80 insertions, 0 deletions
diff --git a/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java b/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java
index e135b4310..260c01c4e 100644
--- a/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java
+++ b/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java
@@ -653,6 +653,12 @@ public class LineLayoutManager extends InlineStackingLayoutManager
LeafPosition restartPosition) {
log.trace("Restarting line breaking from index " + restartPosition.getIndex());
int parIndex = restartPosition.getLeafPos();
+
+ for (int i = 0; i < parIndex; i++) {
+ knuthParagraphs.remove(0);
+ }
+ parIndex = 0;
+
KnuthSequence paragraph = knuthParagraphs.get(parIndex);
if (paragraph instanceof Paragraph) {
((Paragraph) paragraph).ignoreAtStart = 0;
diff --git a/fop/test/layoutengine/standard-testcases/flow_changing-ipd_6.xml b/fop/test/layoutengine/standard-testcases/flow_changing-ipd_6.xml
new file mode 100644
index 000000000..2555770cb
--- /dev/null
+++ b/fop/test/layoutengine/standard-testcases/flow_changing-ipd_6.xml
@@ -0,0 +1,74 @@
+<?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 a list can be relaid out when a change in ipd happens across pages.
+ </p>
+ </info>
+ <fo>
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="PageFront" page-width="8.5in" page-height="11in" margin-bottom="4mm" margin-right="6mm" margin-top="5mm" margin-left="7mm">
+ <fo:region-body margin-bottom="24.87mm" margin-right="55.03mm" margin-top="0mm" margin-left="0mm" region-name="letterPageBody"/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name="AlternativePage" page-width="8.5in" page-height="11in" margin-bottom="4mm" margin-right="6mm" margin-top="5mm" margin-left="7mm">
+ <fo:region-body margin-right="0mm" margin-bottom="24.87mm" margin-top="24.87mm" margin-left="0mm" region-name="letterPageBody"/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name="BackPage" page-width="11in" page-height="8.5in" margin-bottom="4mm" margin-right="6mm" margin-top="5mm" margin-left="7mm">
+ <fo:region-body margin-bottom="24.87mm" margin-right="0mm" margin-top="0mm" margin-left="0mm" region-name="letterPageBody" />
+ </fo:simple-page-master>
+ <fo:page-sequence-master master-name="LetterPages">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference page-position="first" master-reference="PageFront"/>
+ <fo:conditional-page-master-reference page-position="rest" master-reference="AlternativePage"/>
+ <fo:conditional-page-master-reference page-position="last" master-reference="BackPage"/>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </fo:layout-master-set>
+ <fo:page-sequence initial-page-number="auto" force-page-count="auto" master-reference="LetterPages">
+ <fo:flow flow-name="letterPageBody">
+ <fo:block linefeed-treatment="preserve" background-color="orange">1abitasse platea dictumst quisque sagittis. Orci sagittis eu volutpat odio facilisis mauris sit amet massa. Sed turpis tincidunt id aliquet risus feugiat in ante. Scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam malesuada. Sed blandit libero volutpat sed. Pulvinar etiam non quam lacus suspendisse faucibus. Leo a diam sollicitudin tempor id eu nisl nunc mi. Sapien eget mi proin sed libero enim. Amet nisl purus in mollis nunc. Ut placerat orci nulla pellentesque dignissim enim. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Eget felis eget nunc lobortis mattis aliquam.
+2orta lorem mollis aliquam ut porttitor. In mollis nunc sed id semper risus in hendrerit. Nibh ipsum consequat nisl vel. Nibh ipsum consequat nisl vel pretium lectus quam id. Mi eget mauris pharetra et. Lacus sed viverra tellus in hac. Odio euismod lacinia at quis risus sed vulputate. Sociis natoque penatibus et magnis dis parturient. Nunc faucibus a pellentesque sit amet porttitor eget. Cras ornare arcu dui vivamus arcu felis bibendum ut. Sit amet massa vitae tortor condimentum lacinia. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius.
+3uis at consectetur lorem donec massa sapien faucibus et molestie. Id venenatis a condimentum vitae sapien pellentesque habitant morbi. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Viverra aliquet eget sit amet. Varius vel pharetra vel turpis nunc eget lorem dolor sed. Enim nec dui nunc mattis enim ut. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Sit amet mauris commodo quis imperdiet. Est sit amet facilisis magna etiam tempor orci. Porttitor leo a diam sollicitudin tempor id eu nisl nunc. Netus et malesuada fames ac. Diam quam nulla porttitor massa id neque aliquam vestibulum morbi.
+4lacerat orci nulla pellentesque dignissim enim. Felis eget velit aliquet sagittis id consectetur purus ut faucibus. Turpis egestas sed tempus urna et pharetra pharetra. Pellentesque massa placerat duis ultricies. Accumsan sit amet nulla facilisi morbi tempus iaculis. Ultrices vitae auctor eu augue ut lectus arcu bibendum at. Nisi lacus sed viverra tellus in hac habitasse platea. Viverra orci sagittis eu volutpat odio. Lobortis elementum nibh tellus molestie nunc non blandit. Mauris augue neque gravida in fermentum et sollicitudin ac. Arcu cursus vitae congue mauris. Quam pellentesque nec nam aliquam sem et tortor.
+5ellus integer feugiat scelerisque varius morbi enim nunc faucibus. Eu feugiat pretium nibh ipsum consequat nisl. Aenean pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Integer enim neque volutpat ac tincidunt vitae. Pellentesque elit eget gravida cum. Elementum pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Eget egestas purus viverra accumsan in nisl nisi scelerisque. Cum sociis natoque penatibus et. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc. Morbi quis commodo odio aenean sed adipiscing diam donec. Vitae congue eu consequat ac felis donec. Ac tortor vitae purus faucibus.
+6ellus mauris a diam maecenas sed enim. Vitae semper quis lectus nulla. Nunc consequat interdum varius sit amet. Id faucibus nisl tincidunt eget nullam. Scelerisque mauris pellentesque pulvinar pellentesque. Sed adipiscing diam donec adipiscing tristique risus nec feugiat in. Dui vivamus arcu felis bibendum ut tristique. Vel turpis nunc eget lorem dolor sed viverra. Odio eu feugiat pretium nibh ipsum consequat nisl vel pretium. Turpis tincidunt id aliquet risus. Libero nunc consequat interdum varius sit amet mattis vulputate enim. Pellentesque elit eget gravida cum sociis natoque.
+7aculis eu non diam phasellus vestibulum lorem sed risus ultricies. Etiam tempor orci eu lobortis elementum nibh. Faucibus et molestie ac feugiat. Elementum eu facilisis sed odio morbi quis commodo odio. Scelerisque eleifend donec pretium vulputate sapien. Sed turpis tincidunt id aliquet risus. Massa eget egestas purus viverra accumsan. Turpis massa sed elementum tempus egestas sed. Sem nulla pharetra diam sit amet nisl suscipit adipiscing. Proin sed libero enim sed faucibus turpis in eu. Morbi quis commodo odio aenean. Proin sagittis nisl rhoncus mattis rhoncus.
+8u non diam phasellus vestibulum lorem sed risus ultricies tristique. Lectus mauris ultrices eros in cursus. Odio aenean sed adipiscing diam donec adipiscing tristique risus nec. Commodo quis imperdiet massa tincidunt nunc. Interdum varius sit amet mattis vulputate enim nulla aliquet porttitor. Semper viverra nam libero justo. Duis at tellus at urna. Volutpat maecenas volutpat blandit aliquam etiam erat. Feugiat in ante metus dictum at tempor commodo ullamcorper a. Ultricies leo integer malesuada nunc vel risus commodo. Adipiscing vitae proin sagittis nisl rhoncus mattis rhoncus urna neque. Sem fringilla ut morbi tincidunt augue interdum velit.
+9attis aliquam faucibus purus in massa tempor. Congue mauris rhoncus aenean vel. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Ut ornare lectus sit amet est placerat in egestas erat. Pellentesque habitant morbi tristique senectus et netus et. Est velit egestas dui id ornare arcu odio ut sem. Orci nulla pellentesque dignissim enim. Sed vulputate odio ut enim blandit volutpat. Accumsan tortor posuere ac ut. Malesuada proin libero nunc consequat interdum. In pellentesque massa placerat duis ultricies lacus. Nibh tortor id aliquet lectus proin nibh nisl condimentum.
+10ismod nisi porta lorem mollis aliquam ut porttitor leo. Vel pharetra vel turpis nunc. Commodo viverra maecenas accumsan lacus. Quisque sagittis purus sit amet volutpat. Suspendisse interdum consectetur libero id faucibus nisl. Viverra nam libero justo laoreet sit amet. Etiam tempor orci eu lobortis. Pharetra pharetra massa massa ultricies mi quis hendrerit. Vitae congue eu consequat ac felis donec. Libero justo laoreet sit amet cursus sit amet. Phasellus faucibus scelerisque eleifend donec pretium. Habitant morbi tristique senectus et.
+11tae nunc sed velit dignissim sodales ut eu sem integer. Justo laoreet sit amet cursus sit. Id volutpat lacus laoreet non curabitur gravida arcu ac. Ultrices in iaculis nunc sed augue lacus viverra. Maecenas volutpat blandit aliquam etiam erat. Quisque non tellus orci ac auctor augue. Massa sapien faucibus et molestie ac feugiat sed lectus. Quis auctor elit sed vulputate mi. Odio morbi quis commodo odio aenean. Aliquam sem fringilla ut morbi tincidunt augue interdum. Turpis egestas pretium aenean pharetra magna ac. Mauris nunc congue nisi vitae suscipit tellus mauris a.
+12am vel quam elementum pulvinar etiam. Scelerisque mauris pellentesque pulvinar pellentesque. Adipiscing tristique risus nec feugiat in fermentum posuere urna. Erat pellentesque adipiscing commodo elit. Bibendum at varius vel pharetra vel turpis nunc eget lorem. Ante metus dictum at tempor commodo ullamcorper. Arcu ac tortor dignissim convallis aenean et tortor. A scelerisque purus semper eget duis at. At tempor commodo ullamcorper a lacus vestibulum sed. Vitae elementum curabitur vitae nunc sed velit. Venenatis tellus in metus vulputate eu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus.
+13spendisse ultrices gravida dictum fusce ut placerat orci nulla. Id volutpat lacus laoreet non. Bibendum arcu vitae elementum curabitur vitae nunc sed velit dignissim. Leo a diam sollicitudin tempor id eu. Vel orci porta non pulvinar neque laoreet. Quis imperdiet massa tincidunt nunc. Porttitor eget dolor morbi non arcu risus quis varius. Ac odio tempor orci dapibus ultrices. Enim diam vulputate ut pharetra. Ullamcorper eget nulla facilisi etiam dignissim diam quis enim lobortis. Pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Quis vel eros donec ac odio tempor orci dapibus.
+14as semper auctor neque vitae tempus quam pellentesque nec. Sagittis eu volutpat odio facilisis mauris sit amet. Blandit turpis cursus in hac habitasse platea. Quis auctor elit sed vulputate mi sit amet mauris commodo. Laoreet sit amet cursus sit amet dictum sit amet. Mattis molestie a iaculis at erat pellentesque adipiscing commodo. Cras pulvinar mattis nunc sed blandit libero volutpat sed. Volutpat consequat mauris nunc congue. Volutpat diam ut venenatis tellus in metus vulputate eu. Massa sapien faucibus et molestie ac feugiat sed. Pretium lectus quam id leo in vitae. Pretium vulputate sapien nec sagittis aliquam malesuada bibendum arcu.
+15rta nibh venenatis cras sed felis eget velit. Nisl nisi scelerisque eu ultrices vitae. Accumsan lacus vel facilisis volutpat est velit. Facilisis gravida neque convallis a cras semper auctor neque vitae. Tempor id eu nisl nunc mi ipsum. Adipiscing commodo elit at imperdiet dui accumsan sit. Tellus in metus vulputate eu scelerisque felis. Magna etiam tempor orci eu lobortis. Mattis enim ut tellus elementum sagittis vitae. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Eget est lorem ipsum dolor sit amet consectetur.
+16rmentum odio eu feugiat pretium nibh ipsum. Cras sed felis eget velit aliquet sagittis id consectetur. Amet commodo nulla facilisi nullam vehicula ipsum a. Nibh tellus molestie nunc non blandit massa enim nec. Urna neque viverra justo nec ultrices dui. Orci sagittis eu volutpat odio. Auctor augue mauris augue neque. Felis eget velit aliquet sagittis id consectetur purus ut faucibus. In ornare quam viverra orci sagittis eu. Pharetra sit amet aliquam id. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Vivamus arcu felis bibendum ut.
+17gnissim enim sit amet venenatis urna cursus eget nunc. Commodo viverra maecenas accumsan lacus vel facilisis volutpat. Velit aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Diam quis enim lobortis scelerisque fermentum dui. Vitae tempus quam pellentesque nec nam. Luctus venenatis lectus magna fringilla urna porttitor rhoncus d</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+</fo:root>
+ </fo>
+ <checks>
+ <eval expected="3" xpath="count(//pageViewport)" />
+ <eval expected="1abitasse" xpath="//pageViewport[1]//word" />
+ <eval expected="7aculis" xpath="//pageViewport[2]//lineArea[4]//word" />
+ <eval expected="14as" xpath="//pageViewport[3]//lineArea[3]//word" />
+ </checks>
+</testcase>