I think this is one for Finn :-) at least I am not sure how to fix it.

The line-height property has a special inheritance rule. If it is a 
number (and the enum "normal" is considered a number) inherit the 
specified value otherwise inherit the calculated value. In the current 
system if the specified value is a percentage it still inherits the 
percentage that is the specified value not the calculated value. 
Example:

<fo:block line-height="150%">This and the following 2 blocks all should 
have the same line-height of 18000mpt but don't. They behave like the 
next set of blocks with a <number> line height.
    <fo:block font-size="larger">
        line-height should be 18000 but is 14.4pt*1.5
    </fo:block>
    <fo:block font-size="smaller">
        line-height should be 18000 but is 10pt*1.5
    </fo:block>
</fo:block>
<fo:block line-height="1.5">line-height=12pt*1.5
    <fo:block font-size="larger">line-height=14.4pt*1.5</fo:block>
    <fo:block font-size="smaller">line-height=10pt*1.5</fo:block>
</fo:block>

I am not sure how to fix it as the current implementation converts a 
<number> into a percentage to obtain the specific inheritance behaviour 
for <number> specs.

I'll attach a layout engine testcase (with the two failing cases 
commented out) for this as well if a committer wants to check it in.

Manuel
<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright 2005 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: text-decoration1.xml 198408 2005-02-09 21:38:31Z jeremias $ -->
<testcase>
  <info>
    <p>
      This test checks line height
    </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 line-height="normal">line-height="normal"
            <fo:block font-size="larger">font-size="larger"</fo:block>
            <fo:block font-size="smaller">font-size="smaller"</fo:block>
          </fo:block>
          <fo:block line-height="150%">line-height="150%"
            <fo:block font-size="larger">font-size="larger"</fo:block>
            <fo:block font-size="smaller">font-size="smaller"</fo:block>
          </fo:block>
          <fo:block line-height="20pt">line-height="20pt"
            <fo:block font-size="larger">font-size="larger"</fo:block>
            <fo:block font-size="smaller">font-size="smaller"</fo:block>
          </fo:block>
          <fo:block line-height="1.5">line-height="1.5"
            <fo:block font-size="larger">font-size="larger"</fo:block>
            <fo:block font-size="smaller">font-size="smaller"</fo:block>
          </fo:block>
        </fo:flow>
      </fo:page-sequence>
    </fo:root>
  </fo>
  <checks>
    <eval expected="14400" xpath="//flow/block[1]/lineArea/@bpd"/>
    <eval expected="17280" xpath="//flow/block[1]/block[1]/lineArea/@bpd"/>
    <eval expected="12000" xpath="//flow/block[1]/block[2]/lineArea/@bpd"/>
    <eval expected="18000" xpath="//flow/block[2]/lineArea/@bpd"/>
    <!-- bugs here
    <eval expected="18000" xpath="//flow/block[2]/block[1]/lineArea/@bpd"/>
    <eval expected="18000" xpath="//flow/block[2]/block[2]/lineArea/@bpd"/>
    -->
    <eval expected="20000" xpath="//flow/block[3]/lineArea/@bpd"/>
    <eval expected="20000" xpath="//flow/block[3]/block[1]/lineArea/@bpd"/>
    <eval expected="20000" xpath="//flow/block[3]/block[2]/lineArea/@bpd"/>
    <eval expected="18000" xpath="//flow/block[4]/lineArea/@bpd"/>
    <eval expected="21600" xpath="//flow/block[4]/block[1]/lineArea/@bpd"/>
    <eval expected="15000" xpath="//flow/block[4]/block[2]/lineArea/@bpd"/>
  </checks>
</testcase>

Reply via email to