diff options
-rw-r--r-- | src/documentation/content/xdocs/compliance.ihtml | 6 | ||||
-rw-r--r-- | src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java | 15 | ||||
-rw-r--r-- | status.xml | 3 | ||||
-rwxr-xr-x | test/layoutengine/standard-testcases/block_line-height-shift-adjustment.xml | 111 |
4 files changed, 126 insertions, 9 deletions
diff --git a/src/documentation/content/xdocs/compliance.ihtml b/src/documentation/content/xdocs/compliance.ihtml index 60b69b9b7..ac87a6f0b 100644 --- a/src/documentation/content/xdocs/compliance.ihtml +++ b/src/documentation/content/xdocs/compliance.ihtml @@ -3965,11 +3965,11 @@ <td class="no"> no </td> - <td class="no"> - no + <td class="yes"> + yes </td> <td align="center"> - + [0.93] Supported in fop-trunk only </td> </tr> <tr> diff --git a/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java index b3e1e33ba..f4480c4e9 100644 --- a/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java @@ -447,12 +447,15 @@ public class LineLayoutManager extends InlineStackingLayoutManager if (!ac.usesInitialBaselineTable() || ac.getAlignmentBaselineIdentifier() != EN_BEFORE_EDGE && ac.getAlignmentBaselineIdentifier() != EN_AFTER_EDGE) { - int alignmentOffset = ac.getTotalAlignmentBaselineOffset(); - if (alignmentOffset + ac.getAltitude() > lineLead) { - lineLead = alignmentOffset + ac.getAltitude(); - } - if (ac.getDepth() - alignmentOffset > lineFollow) { - lineFollow = ac.getDepth() - alignmentOffset; + if (fobj.getLineHeightShiftAdjustment() == EN_CONSIDER_SHIFTS + || ac.getBaselineShiftValue() == 0) { + int alignmentOffset = ac.getTotalAlignmentBaselineOffset(); + if (alignmentOffset + ac.getAltitude() > lineLead) { + lineLead = alignmentOffset + ac.getAltitude(); + } + if (ac.getDepth() - alignmentOffset > lineFollow) { + lineFollow = ac.getDepth() - alignmentOffset; + } } } else { if (ac.getHeight() > maxIgnoredHeight) { diff --git a/status.xml b/status.xml index 9c20e0433..4b1f1727e 100644 --- a/status.xml +++ b/status.xml @@ -28,6 +28,9 @@ <changes> <release version="FOP Trunk"> + <action context="Code" dev="MM" type="add"> + Added support for line-height-shift-adjustment property. + </action> <action context="Code" dev="SP" type="add"> Added support for the system property fop.home to cli.Main.getJARList(). diff --git a/test/layoutengine/standard-testcases/block_line-height-shift-adjustment.xml b/test/layoutengine/standard-testcases/block_line-height-shift-adjustment.xml new file mode 100755 index 000000000..65b6b7749 --- /dev/null +++ b/test/layoutengine/standard-testcases/block_line-height-shift-adjustment.xml @@ -0,0 +1,111 @@ +<?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 the line-height-shift-adjustment property. + </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" margin="4pt 0pt 4pt 0pt" font-size="14pt" line-height-shift-adjustment="consider-shifts"> + Consider + <fo:inline font-size="10pt" + baseline-shift="sub" + background-color="yellow">baseline-shift="sub"</fo:inline> + shifts + </fo:block> + <fo:block background-color="silver" margin="4pt 0pt 4pt 0pt" font-size="14pt" line-height-shift-adjustment="disregard-shifts"> + Disregard + <fo:inline font-size="10pt" + baseline-shift="sub" + background-color="yellow">baseline-shift="sub"</fo:inline> + shifts + </fo:block> + <fo:block background-color="silver" margin="4pt 0pt 4pt 0pt" font-size="14pt" line-height-shift-adjustment="consider-shifts"> + Consider + <fo:inline font-size="10pt" + baseline-shift="super" + background-color="yellow">baseline-shift="super"</fo:inline> + shifts + </fo:block> + <fo:block background-color="silver" margin="4pt 0pt 4pt 0pt" font-size="14pt" line-height-shift-adjustment="disregard-shifts"> + Disregard + <fo:inline font-size="10pt" + baseline-shift="super" + background-color="yellow">baseline-shift="super"</fo:inline> + shifts + </fo:block> + <fo:block background-color="silver" margin="4pt 0pt 4pt 0pt" font-size="14pt" line-height-shift-adjustment="consider-shifts"> + Consider + <fo:inline font-size="10pt" + baseline-shift="30%" + background-color="yellow">baseline-shift="30%"</fo:inline> + shifts + </fo:block> + <fo:block background-color="silver" margin="4pt 0pt 4pt 0pt" font-size="14pt" line-height-shift-adjustment="disregard-shifts"> + Disregard + <fo:inline font-size="10pt" + baseline-shift="30%" + background-color="yellow">baseline-shift="30%"</fo:inline> + shifts + </fo:block> + <fo:block background-color="silver" margin="4pt 0pt 4pt 0pt" font-size="14pt" line-height-shift-adjustment="consider-shifts"> + Consider + <fo:inline font-size="10pt" + baseline-shift="-30%" + background-color="yellow">baseline-shift="-30%"</fo:inline> + shifts + </fo:block> + <fo:block background-color="silver" margin="4pt 0pt 4pt 0pt" font-size="14pt" line-height-shift-adjustment="disregard-shifts"> + Disregard + <fo:inline font-size="10pt" + baseline-shift="-30%" + background-color="yellow">baseline-shift="-30%"</fo:inline> + shifts + </fo:block> + </fo:flow> + </fo:page-sequence> + </fo:root> + </fo> + <checks> + <eval expected="14737" xpath="//flow/block[1]/lineArea[1]/@bpd"/> + + <eval expected="12950" xpath="//flow/block[2]/lineArea[1]/@bpd"/> + + <eval expected="17400" xpath="//flow/block[3]/lineArea[1]/@bpd"/> + + <eval expected="12950" xpath="//flow/block[4]/lineArea[1]/@bpd"/> + + <eval expected="15118" xpath="//flow/block[5]/lineArea[1]/@bpd"/> + + <eval expected="12950" xpath="//flow/block[6]/lineArea[1]/@bpd"/> + + <eval expected="17162" xpath="//flow/block[7]/lineArea[1]/@bpd"/> + + <eval expected="12950" xpath="//flow/block[8]/lineArea[1]/@bpd"/> + </checks> +</testcase> |