While looking into the support for the Soft Hyphen the area of
hyphenation combined with kerning is causing me trouble.
Aside 1: our fonts page claims we don't support kerning but I believe we
do.
Aside 2: Our tests are based on setting the base14kerning flag. I don't
think this flag is documented anywhere on the fop site. Can it be set
in the config file?
I wrote a simple test under fop 0.93 and noticed that the ipd of text
areas with the combination of kerning and hyphenation are not correctly
calculated (at least I think so). With the Base 14 sans-serif font at
20pt we get:
Word "vanda" alone on a line: ipd=53980
Word "vandavanda" alone on a line: ipd=107560 (53980+53980-400)
Word "vandavandavanda" alone on a line: ipd=161140
(53980+53980+53980-400-400)
If we now take the word "vandavandavandavanda" and get it hyphenated
after the 3rd "vanda" the line containing "vandavandavanda-" reports an
ipd of 168800 which is incorrect. I think it should be 161140 + 6660
(width of hyphen) = 167800.
Before I investigate this more can someone else check this and see if
they get similar results.
I have attached the test case I have constructed.
Manuel
<?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 some kerning plus hyphenation rules.
</p>
</info>
<cfg>
<base14kerning>true</base14kerning>
</cfg>
<fo>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg" language="en">
<fo:layout-master-set>
<fo:simple-page-master master-name="normal" page-width="2.5in" page-height="10in" margin="5pt">
<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" font-size="10pt">
<fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt" font-size="20pt">
vanda
</fo:block>
<fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt" font-size="20pt">
vandavanda
</fo:block>
<fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt" font-size="20pt">
vandavandavanda
</fo:block>
<fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt" font-size="20pt" hyphenate="true">
vandavandavandavandavandavandavanda
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</fo>
<checks>
<eval expected="53980" xpath="//flow/block[1]/lineArea[1]/text/@ipd"/>
<eval expected="107560" xpath="//flow/block[2]/lineArea[1]/text/@ipd"/>
<eval expected="161140" xpath="//flow/block[3]/lineArea[1]/text/@ipd"/>
<eval expected="3" xpath="count(//flow/block[4]/lineArea)"/>
<eval expected="167600" xpath="//flow/block[4]/lineArea[1]/text/@ipd"/>
<eval expected="167600" xpath="//flow/block[4]/lineArea[2]/text/@ipd"/>
<eval expected="53980" xpath="//flow/block[4]/lineArea[3]/text/@ipd"/>
</checks>
</testcase>