]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
FOP-2789: fix text overlapping issue in rl content
authorMatthias Reischenbacher <matthias@apache.org>
Fri, 27 Apr 2018 00:33:04 +0000 (00:33 +0000)
committerMatthias Reischenbacher <matthias@apache.org>
Fri, 27 Apr 2018 00:33:04 +0000 (00:33 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1830287 13f79535-47bb-0310-9956-ffa450edef68

fop-core/src/main/java/org/apache/fop/layoutmgr/inline/AbstractPageNumberCitationLayoutManager.java
fop/test/layoutengine/standard-testcases/page-number-citation_writing-mode_rl_bug2789.xml [new file with mode: 0644]

index ee4143982dd4fc2c355b5985d88ddb7b6b9fc3c4..2e1b7f2ae3d856fd0b303867ae5b99b87c01a2d8 100644 (file)
@@ -124,7 +124,9 @@ public abstract class AbstractPageNumberCitationLayoutManager extends LeafNodeLa
         TextArea text;
         if (resolved) {
             text = new TextArea();
-            text.addWord(citationString, 0);
+            int bidiLevel = getBidiLevel();
+            text.setBidiLevel(bidiLevel);
+            text.addWord(citationString, getStringWidth(citationString), null, null, null, 0);
         } else {
             UnresolvedPageNumber unresolved = new UnresolvedPageNumber(citation.getRefId(), font,
                     getReferenceType());
diff --git a/fop/test/layoutengine/standard-testcases/page-number-citation_writing-mode_rl_bug2789.xml b/fop/test/layoutengine/standard-testcases/page-number-citation_writing-mode_rl_bug2789.xml
new file mode 100644 (file)
index 0000000..3dccad9
--- /dev/null
@@ -0,0 +1,62 @@
+<?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 fo:page-number-citation in a RTL writing-mode context.
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="Arial" writing-mode="rl-tb">
+      <fo:layout-master-set>
+        <fo:simple-page-master margin="20mm" master-name="odd" page-height="297mm" page-width="210mm">
+          <fo:region-body/>
+            </fo:simple-page-master>
+        </fo:layout-master-set>
+        <fo:page-sequence master-reference="odd" writing-mode="rl-tb">
+          <fo:flow flow-name="xsl-region-body">
+            <fo:block>AASDFASDFASDFASDF</fo:block>
+            <fo:block break-before="page">B</fo:block>
+            <fo:block break-before="page">B</fo:block>
+            <fo:block break-before="page">A</fo:block>
+            <fo:block break-before="page">A</fo:block>
+            <fo:block break-before="page">A</fo:block>
+            <fo:block break-before="page">A</fo:block>
+            <fo:block break-before="page">A</fo:block>
+            <fo:block break-before="page">A</fo:block>
+            <fo:block break-before="page">A</fo:block>
+            <fo:block break-before="page">A</fo:block>
+            <fo:block break-before="page">A</fo:block>
+            <fo:block id="b1">A</fo:block>
+            <fo:block id="b3" break-before="page">
+              البيانات <fo:page-number-citation ref-id="b1"/>.
+            </fo:block>
+          </fo:flow>
+        </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <eval expected="13" xpath="count(//pageSequence/pageViewport)"/>
+    <eval expected="." xpath="//pageViewport[@nr=13]/page/regionViewport/regionBody/mainReference/span/flow/block/lineArea/text[1]/word"/>
+    <eval expected="12" xpath="//pageViewport[@nr=13]/page/regionViewport/regionBody/mainReference/span/flow/block/lineArea/text[2]/word"/>
+    <eval expected="3000" xpath="//pageViewport[@nr=13]/page/regionViewport/regionBody/mainReference/span/flow/block/lineArea/text[1]/@ipd"/>
+    <eval expected="12000" xpath="//pageViewport[@nr=13]/page/regionViewport/regionBody/mainReference/span/flow/block/lineArea/text[2]/@ipd"/>
+    <eval expected="51000" xpath="//pageViewport[@nr=13]/page/regionViewport/regionBody/mainReference/span/flow/block/lineArea/text[3]/@ipd"/>
+  </checks>
+</testcase>