You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2006/04/10 09:39:03 UTC

svn commit: r392901 - in /xmlgraphics/fop/trunk: src/java/org/apache/fop/layoutmgr/inline/ src/java/org/apache/fop/util/ test/layoutengine/ test/layoutengine/standard-testcases/

Author: jeremias
Date: Mon Apr 10 00:39:01 2006
New Revision: 392901

URL: http://svn.apache.org/viewcvs?rev=392901&view=rev
Log:
List NBSP under adjustable spaces in CharUtilities.
Generate space elements in the area tree from spaces in fo:character.
Clearly mark test cases which test for NBSP.
Document failure to generate adjustable spaces from fo:character in a disabled test case.
Adjust checks to the fact the fo:character can now also generate spaces.
Enable block_white-space-collapse_2.xml again

Added:
    xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_1.xml
      - copied, changed from r392699, xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_2.xml
    xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_2.xml   (with props)
Removed:
    xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_2.xml
Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/util/CharUtilities.java
    xmlgraphics/fop/trunk/test/layoutengine/disabled-testcases.xml
    xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space-collapse_1.xml
    xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_4.xml

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java?rev=392901&r1=392900&r2=392901&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java Mon Apr 10 00:39:01 2006
@@ -32,6 +32,7 @@
 import org.apache.fop.area.Trait;
 import org.apache.fop.traits.MinOptMax;
 import org.apache.fop.traits.SpaceVal;
+import org.apache.fop.util.CharUtilities;
 
 import java.util.List;
 import java.util.LinkedList;
@@ -73,12 +74,17 @@
     }
 
     private org.apache.fop.area.inline.TextArea getCharacterInlineArea(Character node) {
-        org.apache.fop.area.inline.TextArea ch 
+        org.apache.fop.area.inline.TextArea text 
             = new org.apache.fop.area.inline.TextArea();
-        ch.addWord(String.valueOf(node.getCharacter()), 0);
-        TraitSetter.setProducerID(ch, node.getId());
-        TraitSetter.addTextDecoration(ch, fobj.getTextDecoration());
-        return ch;
+        char ch = node.getCharacter();
+        if (CharUtilities.isAnySpace(ch)) {
+            text.addSpace(ch, 0, CharUtilities.isAdjustableSpace(ch));
+        } else {
+            text.addWord(String.valueOf(ch), 0);
+        }
+        TraitSetter.setProducerID(text, node.getId());
+        TraitSetter.addTextDecoration(text, fobj.getTextDecoration());
+        return text;
     }
 
     /** @see org.apache.fop.layoutmgr.LayoutManager#getNextKnuthElements(LayoutContext, int) */

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/util/CharUtilities.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/util/CharUtilities.java?rev=392901&r1=392900&r2=392901&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/util/CharUtilities.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/util/CharUtilities.java Mon Apr 10 00:39:01 2006
@@ -61,6 +61,8 @@
     public static final char ZERO_WIDTH_SPACE = '\u200B';
     /** zero-width no-break space (= byte order mark) */
     public static final char ZERO_WIDTH_NOBREAK_SPACE = '\uFEFF';
+    /** soft hyphen */
+    public static final char SOFT_HYPHEN = '\u00AD';
     
     
     /**
@@ -142,7 +144,7 @@
         //TODO: are there other kinds of adjustable spaces?
         return
             (c == '\u0020'    // normal space
-            /*|| c == ''*/);
+            || c == NBSPACE); // no-break space
     }
     
     /**

Modified: xmlgraphics/fop/trunk/test/layoutengine/disabled-testcases.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/disabled-testcases.xml?rev=392901&r1=392900&r2=392901&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/disabled-testcases.xml (original)
+++ xmlgraphics/fop/trunk/test/layoutengine/disabled-testcases.xml Mon Apr 10 00:39:01 2006
@@ -57,11 +57,10 @@
     stacking constraints which it shouldn't.</description>
   </testcase>
   <testcase>
-    <name>block white-space-collapse 2</name>
-    <file>block_white-space-collapse_2.xml</file>
-    <description>First line-break occurs after the fifth space following the
-    word 'each'. Trailing spaces not removed in layout. Note: the test passes
-    in case of text-align="justify".</description>
+    <name>block white-space nbsp 2</name>
+    <file>block_white-space_nbsp_2.xml</file>
+    <description>The nbsp given as an fo:character is not adjustable and therefore
+    the justification does not work in this case.</description>
   </testcase>
   <testcase>
     <name>block word-spacing</name>

Modified: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space-collapse_1.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space-collapse_1.xml?rev=392901&r1=392900&r2=392901&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space-collapse_1.xml (original)
+++ xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space-collapse_1.xml Mon Apr 10 00:39:01 2006
@@ -103,8 +103,7 @@
     <eval expected="6" xpath="count(//flow/block[1]/lineArea[1]/text[1]/space)"/>
     <eval expected="2" xpath="count(//flow/block[1]/lineArea[1]/text[2]/word)"/>
     <eval expected="1" xpath="count(//flow/block[1]/lineArea[1]/text[2]/space)"/>
-    <eval expected="1" xpath="count(//flow/block[1]/lineArea[1]/text[3]/word)"/>
-    <eval expected=" " xpath="//flow/block[1]/lineArea[1]/text[3]/word"/>
+    <eval expected="1" xpath="count(//flow/block[1]/lineArea[1]/text[3]/space)"/>
     <eval expected="1" xpath="count(//flow/block[1]/lineArea[1]/text[4]/word)"/>
     
     <eval expected="3" xpath="count(//flow/block[2]/block[1]/lineArea[1]/text/word)"/>

Modified: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_4.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_4.xml?rev=392901&r1=392900&r2=392901&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_4.xml (original)
+++ xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_4.xml Mon Apr 10 00:39:01 2006
@@ -88,7 +88,7 @@
       
       <box w="6672"/>
 
-      <skip>11</skip>
+      <skip>12</skip>
     </element-list>
     <eval expected="62040" xpath="//block[@prod-id='l-sp']/lineArea/text/@ipd"/>
     <eval expected="word" xpath="local-name(//block[@prod-id='l-sp']/lineArea/text/*[1])"/>
@@ -125,7 +125,7 @@
       
       <box w="6672"/>
 
-      <skip>15</skip>
+      <skip>16</skip>
     </element-list>
     <eval expected="60168" xpath="//block[@prod-id='l-thin-space']/lineArea/text/@ipd"/>
     <eval expected="word" xpath="local-name(//block[@prod-id='l-thin-space']/lineArea/text/*[1])"/>
@@ -162,7 +162,7 @@
       
       <box w="6672"/>
 
-      <skip>15</skip>
+      <skip>16</skip>
     </element-list>
     <eval expected="57768" xpath="//block[@prod-id='l-hair-space']/lineArea/text/@ipd"/>
     <true xpath="//block[@prod-id='l-hair-space']/lineArea/text/*[2]/@adj = 'false'"/>
@@ -192,7 +192,7 @@
       
       <box w="6672"/>
 
-      <skip>19</skip>
+      <skip>20</skip>
     </element-list>
     <eval expected="55368" xpath="//block[@prod-id='l-zwsp']/lineArea/text/@ipd"/>
     <true xpath="//block[@prod-id='l-zwsp']/lineArea/text/*[2]/@adj = 'false'"/>
@@ -207,7 +207,7 @@
       
       <box w="26016"/>
 
-      <skip>11</skip>
+      <skip>12</skip>
     </element-list>
     <eval expected="55368" xpath="//block[@prod-id='l-nosp']/lineArea/text/@ipd"/>
 
@@ -246,7 +246,7 @@
       
       <box w="6672"/>
 
-      <skip>23</skip>
+      <skip>24</skip>
     </element-list>
     <eval expected="60168" xpath="//block[@prod-id='c-thin-space']/lineArea/text/@ipd"/>
     <eval expected="word" xpath="local-name(//block[@prod-id='c-thin-space']/lineArea/text/*[1])"/>
@@ -277,7 +277,7 @@
       
       <box w="6672"/>
 
-      <skip>5</skip>
+      <skip>6</skip>
     </element-list>
     <eval expected="190804" xpath="//block[@prod-id='j-sp']/lineArea/text/@ipd"/>
     <eval expected="42921" xpath="//block[@prod-id='j-sp']/lineArea/text/@twsadjust"/>
@@ -300,7 +300,7 @@
       
       <box w="6672"/>
 
-      <skip>7</skip>
+      <skip>8</skip>
     </element-list>
     <eval expected="104277" xpath="//block[@prod-id='j-thin-space']/lineArea/text/@ipd"/>
     <eval expected="44109" xpath="//block[@prod-id='j-thin-space']/lineArea/text/@twsadjust"/>
@@ -325,7 +325,7 @@
       
       <box w="6672"/>
 
-      <skip>9</skip>
+      <skip>10</skip>
     </element-list>
     <eval expected="84280" xpath="//block[@prod-id='j-zwsp']/lineArea/text/@ipd"/>
     <eval expected="28912" xpath="//block[@prod-id='j-zwsp']/lineArea/text/@twsadjust"/>
@@ -350,7 +350,7 @@
       
       <box w="6672"/>
 
-      <skip>5</skip>
+      <skip>6</skip>
     </element-list>
     <eval expected="182404" xpath="//block[@prod-id='lsj-sp']/lineArea/text/@ipd"/>
     <eval expected="32121" xpath="//block[@prod-id='lsj-sp']/lineArea/text/@twsadjust"/>
@@ -374,7 +374,7 @@
       
       <box w="6672"/>
 
-      <skip>7</skip>
+      <skip>8</skip>
     </element-list>
     <eval expected="104777" xpath="//block[@prod-id='lsj-thin-space']/lineArea/text/@ipd"/>
     <eval expected="28609" xpath="//block[@prod-id='lsj-thin-space']/lineArea/text/@twsadjust"/>
@@ -400,7 +400,7 @@
       
       <box w="6672"/>
 
-      <skip>9</skip>
+      <skip>10</skip>
     </element-list>
     <eval expected="85480" xpath="//block[@prod-id='lsj-zwsp']/lineArea/text/@ipd"/>
     <eval expected="14112" xpath="//block[@prod-id='lsj-zwsp']/lineArea/text/@twsadjust"/>

Copied: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_1.xml (from r392699, xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_2.xml)
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_1.xml?p2=xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_1.xml&p1=xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_2.xml&r1=392699&r2=392901&rev=392901&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_2.xml (original)
+++ xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_1.xml Mon Apr 10 00:39:01 2006
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  Copyright 2005 The Apache Software Foundation
+  Copyright 2005-2006 The Apache Software Foundation
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -18,7 +18,7 @@
 <testcase>
   <info>
     <p>
-      This test checks non breaking white space.
+      This test checks non breaking white space (nbsp).
     </p>
   </info>
   <fo>
@@ -30,9 +30,10 @@
       </fo:layout-master-set>
       <fo:page-sequence master-reference="normal" white-space-collapse="true">
         <fo:flow flow-name="xsl-region-body">
-          <fo:block background-color="silver">&#160;single&#160;nbsp&#160;around&#160;</fo:block>
-          <fo:block background-color="red">&#160;</fo:block>
-          <fo:block background-color="silver">&#160;&#160;after&#160;&#160;empty&#160;&#160;line&#160;&#160;</fo:block>
+          <fo:block background-color="silver" id="single">&#160;single&#160;nbsp&#160;around&#160;</fo:block>
+          <fo:block background-color="red" id="only">&#160;</fo:block>
+          <fo:block background-color="silver" id="double">&#160;&#160;after&#160;&#160;empty&#160;&#160;line&#160;&#160;</fo:block>
+          <fo:block background-color="silver" id="single-justify" text-align="justify" text-align-last="justify" space-before="5pt">&#160;single&#160;nbsp&#160;around&#160;</fo:block>
         </fo:flow>
       </fo:page-sequence>
     </fo:root>
@@ -44,5 +45,61 @@
     <eval expected="1" xpath="count(//flow/block[2]/lineArea/text/space)"/>
     <eval expected="11100" xpath="//flow/block[3]/lineArea/@bpd"/>
     <eval expected="8" xpath="count(//flow/block[3]/lineArea/text/space)"/>
+    <eval expected="11100" xpath="//flow/block[4]/lineArea/@bpd"/>
+    <eval expected="3" xpath="count(//flow/block[4]/lineArea/text/space)"/> <!-- trailing nbsp is removed by LineLM -->
+    
+    <!-- nbsp must be adjustable -->
+    <true xpath="not(//flow/block[4]/lineArea/text/space[1]/@adj = 'false')"/>
+    
+    <element-list category="line" id="single">
+      <box w="3336"/>
+      <box/>
+      <box w="3336"/>
+      <box/>
+      <box w="3336"/>
+      <box/>
+      <box w="3336"/>
+      <skip>3</skip>
+    </element-list>
+    
+    <element-list category="line" id="only">
+      <box w="3336"/>
+      <skip>3</skip>
+    </element-list>
+    
+    <element-list category="line" id="double">
+      <box w="3336"/>
+      <box w="3336"/>
+      <box/>
+      <box w="3336"/>
+      <box w="3336"/>
+      <box/>
+      <box w="3336"/>
+      <box w="3336"/>
+      <box/>
+      <box w="3336"/>
+      <box w="3336"/>
+      <skip>3</skip>
+    </element-list>
+    
+    <element-list category="line" id="single-justify">
+      <box w="0"/>
+      <penalty p="INF"/>
+      <glue w="3336" y="1668" z="1112"/>
+      <box/>
+      <box w="0"/>
+      <penalty p="INF"/>
+      <glue w="3336" y="1668" z="1112"/>
+      <box/>
+      <box w="0"/>
+      <penalty p="INF"/>
+      <glue w="3336" y="1668" z="1112"/>
+      <box/>
+      <box w="0"/>
+      <penalty p="INF"/>
+      <glue w="3336" y="1668" z="1112"/>
+      <skip>3</skip>
+    </element-list>
+    
   </checks>
 </testcase>

Added: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_2.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_2.xml?rev=392901&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_2.xml (added)
+++ xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_2.xml Mon Apr 10 00:39:01 2006
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2006 The Apache Software Foundation
+
+  Licensed 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 non breaking white space (nbsp) specified as fo:character. 
+      This is to check if a nbsb as fo:character is processed the same way as a normal nbsb.
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
+          <fo:region-body/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="normal" white-space-collapse="true">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block background-color="silver">&#160;single<fo:character character="&#160;"/>nbsp&#160;around&#160;</fo:block>
+
+          <fo:block background-color="silver" text-align="justify" text-align-last="justify" space-before="5pt">&#160;single&#160;nbsp&#160;around&#160;</fo:block>
+          <fo:block background-color="silver" text-align="justify" text-align-last="justify">&#160;single<fo:character character="&#160;"/>nbsp&#160;around&#160;</fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <eval expected="11100" xpath="//flow/block[1]/lineArea/@bpd"/>
+    <eval expected="4" xpath="count(//flow/block[1]/lineArea/text/space)"/>
+    <!-- //flow/block[2] is only for reference -->
+    <eval expected="11100" xpath="//flow/block[3]/lineArea/@bpd"/>
+    <eval expected="3" xpath="count(//flow/block[3]/lineArea/text/space)"/> <!-- last nbsp is removed by LineLM -->
+    
+    <!-- twsadjust must be the same for block 2 and 3 as they are supposed to be equivalent -->
+    <true xpath="//flow/block[2]/lineArea/text[1]/@twsadjust = //flow/block[3]/lineArea/text[1]/@twsadjust"/>
+  </checks>
+</testcase>

Propchange: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_2.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_white-space_nbsp_2.xml
------------------------------------------------------------------------------
    svn:keywords = Id



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org