Hi,
Below is a patch to prevent AWTRender from drawing an invisible
border when the value for border-width is too small. The patch
basically says that no matter how small the border-width is, it will
always render at least 1 pixel on the target graphics context.
I leave it to others to rule on the correctness of this approach
(makes sense to me) and thereby commit the patch or not.
Note however that for the sample fo attached,
(border-width is 0.1pt) both -awt and -print
fail to render a border, while -pdf does.
[Separate problem that the borders are in the wrong place
for all renderers..]
The attached sample fo was submitted to this list earlier by
[EMAIL PROTECTED]
' Best,
-Ralph LaChance
---------------------- patch --------------------------------
/**
* draw a filled rectangle in the current color.
* Force 1 pixel wide area if the size rounds to zero.
*
* @param x the x position of left edge in millipoints
* @param y the y position of top edge in millipoints
* @param w the width in millipoints
* @param h the height in millipoints
* @param drawAsOutline true for draw, false for fill
*/
// helper function by aml/rlc to correct integer roundoff problems
//
protected void addRect(int x, int y, int w, int h,
boolean drawAsOutline) {
int startx = (x + 500) / 1000;
int starty = pageHeight - ((y + 500) / 1000);
int endx = (x + w + 500) / 1000;
int endy = pageHeight - ((y + h + 500) / 1000);
if (drawAsOutline)
graphics.drawRect(startx, starty, endx - startx, endy - starty);
else
{
//don't round down to zero
if (w != 0 && endx == startx) endx++;
if (h != 0 && endy == starty) endy++;
graphics.fillRect(startx, starty, endx - startx, endy - starty);
}
}
---------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<fo:root
xmlns:fo="http://www.w3.org/1999/XSL/Format"><fo:layout-master-set><fo:simple-page-master
margin-right="1cm" margin-left="1cm" margin-bottom="1cm" margin-top="1cm"
master-name="cover-page"><fo:region-body
display-align="center"/></fo:simple-page-master><fo:simple-page-master
margin-right="1cm" margin-left="1cm" margin-bottom="1cm" margin-top="1cm"
master-name="plain-page"><fo:region-body margin-right="1.5cm" margin-left="1.5cm"
margin-top="14pt"/><fo:region-before extent="1.5cm"/><fo:region-after
extent="1.5cm"/></fo:simple-page-master><fo:page-sequence-master
master-name="cover"><fo:single-page-master-reference
master-name="cover-page"/></fo:page-sequence-master><fo:page-sequence-master
master-name="toc"><fo:single-page-master-reference
master-name="plain-page"/></fo:page-sequence-master><fo:page-sequence-master
master-name="body"><fo:single-page-master-reference
master-name="plain-page"/></fo:page-sequence-master></fo:layout-master-set><fo:page-sequence
master-name="cover"><fo:flow flow-name="xsl-region-body"><fo:block
text-align="center">Document Title</fo:block><fo:block text-align="center"/><fo:block
text-align="center"/><fo:block
text-align="center">Alcatel</fo:block></fo:flow></fo:page-sequence><fo:page-sequence
master-name="toc"><fo:flow flow-name="xsl-region-body"><fo:block>Table of
Contents:</fo:block><fo:block>1 part title<fo:leader
leader-pattern="dots"/><fo:page-number-citation ref-id="N11"/><fo:block>1.1 Part
Title<fo:leader leader-pattern="dots"/><fo:page-number-citation
ref-id="N19"/><fo:block>1.1.1 Part Title<fo:leader
leader-pattern="dots"/><fo:page-number-citation
ref-id="N3F"/></fo:block></fo:block><fo:block>1.2 Part Title<fo:leader
leader-pattern="dots"/><fo:page-number-citation
ref-id="N88"/></fo:block></fo:block><fo:block>2 part title<fo:leader
leader-pattern="dots"/><fo:page-number-citation
ref-id="N92"/></fo:block></fo:flow></fo:page-sequence><fo:page-sequence
master-name="body"><fo:static-content flow-name="xsl-region-after"><fo:block
text-align="center">
p. <fo:page-number/> /
<fo:page-number-citation ref-id="terminator"/></fo:block></fo:static-content><fo:flow
flow-name="xsl-region-body"><fo:block id="N11"/>
<fo:block space-after.optimum="8pt" space-before.optimum="8pt"
color="white" background-color="black" end-indent="0cm" padding-bottom="0pt"
padding-top="2pt" text-align="center" font-size="16pt" start-indent="0cm">1 part
title</fo:block>
<fo:block space-after.optimum="6pt" space-before.optimum="6pt"
text-align="justify">A paragraph.</fo:block>
<fo:block id="N19" margin-left="1cm
">
<fo:block space-after.optimum="8pt" space-before.optimum="8pt"
color="white" background-color="black" end-indent="0cm" padding-bottom="0pt"
padding-top="2pt" text-align="center" font-size="16pt" start-indent="1cm">1.1 Part
Title</fo:block>
<fo:block space-after.optimum="6pt" space-before.optimum="6pt"
text-align="justify">This is paragraph.</fo:block>
<fo:block text-align="center"><fo:external-graphic
src="alcatel_logo.jpg"/><fo:block space-after.optimum="3pt" space-before.optimum="3pt">
caption: picture ripped from the
net</fo:block></fo:block>
<fo:list-block space-after.optimum="6pt"
space-before.optimum="6pt" provisional-distance-between-starts="18pt"
provisional-label-separation="3pt">
<fo:list-item space-after.minimum="3pt"
space-before.minimum="3pt"><fo:list-item-label end-indent="label-end()"><fo:block
text-align="start">1.</fo:block></fo:list-item-label><fo:list-item-body
start-indent="body-start()"><fo:block>an
item</fo:block></fo:list-item-body></fo:list-item>
<fo:list-item space-after.minimum="3pt"
space-before.minimum="3pt"><fo:list-item-label end-indent="label-end()"><fo:block
text-align="start">2.</fo:block></fo:list-item-label><fo:list-item-body
start-indent="body-start()"><fo:block>an item<fo:block/>with a
break</fo:block></fo:list-item-body></fo:list-item>
<fo:list-item space-after.minimum="3pt"
space-before.minimum="3pt"><fo:list-item-label end-indent="label-end()"><fo:block
text-align="start">3.</fo:block></fo:list-item-label><fo:list-item-body
start-indent="body-start()"><fo:block>
this item contains another list:
<fo:list-block space-after.optimum="6pt"
space-before.optimum="6pt" provisional-distance-between-starts="18pt"
provisional-label-separation="3pt">
<fo:list-item
space-after.minimum="3pt" space-before.minimum="3pt"><fo:list-item-label
end-indent="label-end()"><fo:block
text-align="start">a.</fo:block></fo:list-item-label><fo:list-item-body
start-indent="body-start()"><fo:block>an
item</fo:block></fo:list-item-body></fo:list-item>
<fo:list-item
space-after.minimum="3pt" space-before.minimum="3pt"><fo:list-item-label
end-indent="label-end()"><fo:block
text-align="start">b.</fo:block></fo:list-item-label><fo:list-item-body
start-indent="body-start()"><fo:block>an
item</fo:block></fo:list-item-body></fo:list-item>
</fo:list-block>
this was the list.
</fo:block></fo:list-item-body></fo:list-item>
</fo:list-block>
<fo:block id="N3F" margin-left="2cm
">
<fo:block space-after.optimum="8pt"
space-before.optimum="8pt" color="white" background-color="black" end-indent="0cm"
padding-bottom="0pt" padding-top="2pt" text-align="center" font-size="16pt"
start-indent="2cm">1.1.1 Part Title</fo:block>
<fo:block space-after.optimum="6pt"
space-before.optimum="6pt" text-align="justify">This is paragraph. This word is
<fo:inline font-weight="bold">stressed</fo:inline>.</fo:block>
<fo:block space-after.optimum="6pt"
space-before.optimum="6pt" text-align="justify">
<fo:inline font-family="monospace">this is
some <fo:inline font-weight="bold">stressed</fo:inline> code</fo:inline>.</fo:block>
<fo:block space-after.optimum="6pt"
space-before.optimum="6pt" text-align="justify">This is a <fo:inline
font-weight="bold">very <fo:inline font-weight="bold">stressed</fo:inline>
word</fo:inline>.</fo:block>
<fo:block><fo:table><fo:table-column
column-width="5cm"/><fo:table-column column-width="3cm"/><fo:table-column
column-width="3cm"/><fo:table-body><fo:table-row>
<fo:table-cell border-style="solid"
border-width="0.1pt"><fo:block space-after.optimum="3pt" space-before.optimum="3pt"
text-align="center">collumn</fo:block></fo:table-cell>
<fo:table-cell border-style="solid"
border-width="0.1pt"><fo:block space-after.optimum="3pt" space-before.optimum="3pt"
text-align="center">collumn</fo:block></fo:table-cell>
<fo:table-cell border-style="solid"
border-width="0.1pt"><fo:block space-after.optimum="3pt" space-before.optimum="3pt"
text-align="center">collumn</fo:block></fo:table-cell>
</fo:table-row><fo:table-row>
<fo:table-cell border-style="solid"
border-width="0.1pt"><fo:block space-after.optimum="3pt" space-before.optimum="3pt"
text-align="center">
<fo:inline
font-weight="bold">bold</fo:inline> collumn</fo:block></fo:table-cell>
<fo:table-cell border-style="solid"
border-width="0.1pt"><fo:block space-after.optimum="3pt" space-before.optimum="3pt"
text-align="center">collumn</fo:block></fo:table-cell>
<fo:table-cell border-style="solid"
border-width="0.1pt"><fo:block space-after.optimum="3pt" space-before.optimum="3pt"
text-align="center">collumn</fo:block></fo:table-cell>
</fo:table-row></fo:table-body></fo:table><fo:block space-after.optimum="3pt"
space-before.optimum="3pt">
caption: a first table</fo:block></fo:block>
</fo:block>
</fo:block>
<fo:block id="N88" margin-left="1cm
">
<fo:block space-after.optimum="8pt" space-before.optimum="8pt"
color="white" background-color="black" end-indent="0cm" padding-bottom="0pt"
padding-top="2pt" text-align="center" font-size="16pt" start-indent="1cm">1.2 Part
Title</fo:block>
<fo:block space-after.optimum="6pt" space-before.optimum="6pt"
text-align="justify">this is paragraph.</fo:block>
</fo:block>
</fo:flow></fo:page-sequence><fo:page-sequence
master-name="body"><fo:static-content flow-name="xsl-region-after"><fo:block
text-align="center">
p. <fo:page-number/> /
<fo:page-number-citation ref-id="terminator"/></fo:block></fo:static-content><fo:flow
flow-name="xsl-region-body"><fo:block id="N92"/>
<fo:block space-after.optimum="8pt" space-before.optimum="8pt"
color="white" background-color="black" end-indent="0cm" padding-bottom="0pt"
padding-top="2pt" text-align="center" font-size="16pt" start-indent="0cm">2 part
title</fo:block>
<fo:block space-after.optimum="6pt" space-before.optimum="6pt"
text-align="justify">A very small part.</fo:block>
<fo:block id="terminator"/></fo:flow></fo:page-sequence></fo:root>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]