<?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>
