Author: matthias Date: Sat Jul 27 13:57:02 2019 New Revision: 1863872 URL: http://svn.apache.org/viewvc?rev=1863872&view=rev Log: FOP-2855: apply patch from Juan for fixing letter spacing of spaces inside white-space=pre text
Added: xmlgraphics/fop/trunk/fop/test/layoutengine/standard-testcases/block_letter-spacing_white-space_pre.xml Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java?rev=1863872&r1=1863871&r2=1863872&view=diff ============================================================================== --- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java (original) +++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java Sat Jul 27 13:57:02 2019 @@ -844,8 +844,15 @@ public class TextLayoutManager extends L font.mapChar(ch); // preserved space or non-breaking space: // create the GlyphMapping object - mapping = new GlyphMapping(nextStart, nextStart + 1, 1, 0, wordSpaceIPD, false, true, - breakOpportunity, spaceFont, level, null); + MinOptMax areaIPD; + if (prevMapping != null && prevMapping.isSpace) { + areaIPD = wordSpaceIPD.minus(letterSpaceIPD); + } else { + areaIPD = wordSpaceIPD; + } + + mapping = new GlyphMapping(nextStart, nextStart + 1, 1, 0, areaIPD, false, true, + breakOpportunity, spaceFont, level, null); thisStart = nextStart + 1; } else if (CharUtilities.isFixedWidthSpace(ch) || CharUtilities.isZeroWidthSpace(ch)) { // create the GlyphMapping object Added: xmlgraphics/fop/trunk/fop/test/layoutengine/standard-testcases/block_letter-spacing_white-space_pre.xml URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop/test/layoutengine/standard-testcases/block_letter-spacing_white-space_pre.xml?rev=1863872&view=auto ============================================================================== --- xmlgraphics/fop/trunk/fop/test/layoutengine/standard-testcases/block_letter-spacing_white-space_pre.xml (added) +++ xmlgraphics/fop/trunk/fop/test/layoutengine/standard-testcases/block_letter-spacing_white-space_pre.xml Sat Jul 27 13:57:02 2019 @@ -0,0 +1,45 @@ +<?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. +--> +<testcase> + <info> + <p> + This test checks block level letter-spacing when having white-spaces. + </p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <fo:layout-master-set> + <fo:simple-page-master master-name="A4" page-height="297mm" page-width="210mm" margin="20mm"> + <fo:region-body/> + </fo:simple-page-master> + </fo:layout-master-set> + <fo:page-sequence master-reference="A4"> + <fo:flow flow-name="xsl-region-body"> + <fo:block letter-spacing="0.5pt" white-space="pre">A A A A A A A A x<fo:inline font-size="70%" vertical-align="top">2</fo:inline></fo:block> + <fo:block letter-spacing="0.5pt" white-space="pre">A A A A x<fo:inline font-size="70%" vertical-align="top">2</fo:inline></fo:block> + <fo:block letter-spacing="0.5pt" white-space="pre"> x<fo:inline font-size="70%" vertical-align="top">2</fo:inline></fo:block> + </fo:flow> + </fo:page-sequence> + </fo:root> + </fo> + <checks> + <eval expected="105220" xpath="//flow/block[1]/lineArea/text/@ipd"/> + <eval expected="86548" xpath="//flow/block[2]/lineArea/text/@ipd"/> + <eval expected="68376" xpath="//flow/block[3]/lineArea/text/@ipd"/> + </checks> +</testcase> --------------------------------------------------------------------- To unsubscribe, e-mail: fop-commits-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-commits-h...@xmlgraphics.apache.org