<?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 block level letter-spacing.
    </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>Next block has no letter-spacing property:</fo:block>
          <fo:block>Default space between characters is defined to be 0pt, i.e., 
          glyph-areas stacked with no extra space between the allocation-rectangles
          of the glyph-areas.</fo:block>
          <fo:block>Next block has letter-spacing="normal":</fo:block>
          <fo:block letter-spacing="normal">Default space between characters is defined to be 0pt, i.e., 
          glyph-areas stacked with no extra space between the allocation-rectangles
          of the glyph-areas.</fo:block>
          <fo:block>Next block has letter-spacing="0pt":</fo:block>
          <fo:block letter-spacing="0pt">Default space between characters is defined to be 0pt, i.e., 
          glyph-areas stacked with no extra space between the allocation-rectangles
          of the glyph-areas.</fo:block>
          <fo:block>Next block has letter-spacing="2pt":</fo:block>
          <fo:block letter-spacing="2pt">Default space between characters is defined to be 0pt, i.e., 
          glyph-areas stacked with no extra space between the allocation-rectangles
          of the glyph-areas.</fo:block>
          <fo:block>Next block has letter-spacing.optimum="2pt" letter-spacing.minimum="0pt" letter-spacing.maximum="4pt":</fo:block>
          <fo:block letter-spacing.optimum="2pt" letter-spacing.minimum="0pt" letter-spacing.maximum="4pt">Default space between characters is defined to be 0pt, i.e., 
          glyph-areas stacked with no extra space between the allocation-rectangles
          of the glyph-areas.</fo:block>
        </fo:flow>
      </fo:page-sequence>
    </fo:root>
  </fo>
  <checks>
    <true xpath="not(//flow/block[1]/lineArea/text/@tlsadjust)"/>
    <eval expected="2000" xpath="//flow/block[8]/lineArea[1]/text/@tlsadjust"/>
    <eval expected="2000" xpath="//flow/block[8]/lineArea[2]/text/@tlsadjust"/>
    <eval expected="2000" xpath="//flow/block[8]/lineArea[3]/text/@tlsadjust"/>
    <eval expected="2000" xpath="//flow/block[8]/lineArea[4]/text/@tlsadjust"/>
  </checks>
  <if-checks xmlns:if="http://xmlgraphics.apache.org/fop/intermediate">
    <eval expected="Default space between characters is defined to be 0pt, i.e.," xpath="//if:text[2]"/>
    <eval expected="0" xpath="//if:text[2]/@x"/>
    <eval expected="24666" xpath="//if:text[2]/@y"/>
    <true xpath="not(//if:text[2]/@dx)"/>

    <eval expected="Default space between characters is defined to" xpath="//if:text[14]"/>
    <eval expected="0" xpath="//if:text[14]/@x"/>
    <eval expected="197466" xpath="//if:text[14]/@y"/>
    <eval expected="2000" xpath="//if:text[14]/@letter-spacing"/>
    <true xpath="not(//if:text[14]/@word-spacing)"/>
    <true xpath="not(//if:text[14]/@dx)"/>

    <eval expected="Default space between characters is defined to be" xpath="//if:text[20]"/>
    <eval expected="0" xpath="//if:text[20]/@x"/>
    <eval expected="283866" xpath="//if:text[20]/@y"/>
    <eval expected="1938" xpath="//if:text[20]/@letter-spacing"/>
    <eval expected="-40" xpath="//if:text[20]/@word-spacing"/>
    <true xpath="not(//if:text[20]/@dx)"/>

    <eval expected="2000" xpath="//if:text[21]/@letter-spacing"/>
    <true xpath="not(//if:text[21]/@word-spacing)"/>
    <true xpath="not(//if:text[21]/@dx)"/>

    <eval expected="1364" xpath="//if:text[22]/@letter-spacing"/>
    <eval expected="-362" xpath="//if:text[22]/@word-spacing"/>
    <true xpath="not(//if:text[22]/@dx)"/>
  </if-checks>
</testcase>
