Trevor, try turning off "Smooth Line Art" in Acrobat Reader (Preferences,
Page Display). If the effects go away, you'll know that it's
anti-aliasing that causes this. I'll bet it's that but we can't do much
about it. Won't happen in print. HTH

On 30.08.2010 21:05:15 Trevor Nicholls wrote:
> Hi
> 
> Where my input XML contains "fragment" elements I am generating fo:blocks
> with a grey background and black border. Consecutive fragments are coalesced
> into what looks like a single block with one outer border (but they need to
> be separate fo:blocks so that page breaks occur at a block boundary). 
> 
> This is working, but I am getting some edge effects. These are apparent as
> faint ghostly lines where the block boundaries occur - these must be due to
> some sort of rounding/floating arithmetic as they do not appear consistently
> at every boundary nor do they appear consistently on all
> screens/resolutions.
> 
> I presume I am not the first person to see this kind of artefact, but Google
> hasn't helped me find a solution. Can anyone here help me? Do I need to
> overlay the blocks somehow (and how does one do that anyway)?
> 
> Thanks for any hints
> Trevor
> 
> ===
> 
> The relevant xsl-fo templates are these:
> 
>   <xsl:attribute-set name="fragment.base.set">
>     <xsl:attribute name="font-family">Courier, monospace</xsl:attribute>
>     <xsl:attribute name="white-space-treatment">preserve</xsl:attribute>
>     <xsl:attribute name="white-space-collapse">false</xsl:attribute>
>     <xsl:attribute name="keep-together.within-page">always</xsl:attribute>
>     <xsl:attribute name="font-size">9pt</xsl:attribute>
>     <xsl:attribute name="background-color">#e0e0e0</xsl:attribute>
>     <xsl:attribute name="padding-before">3pt</xsl:attribute>
>     <xsl:attribute name="padding-after">3pt</xsl:attribute>
>     <xsl:attribute name="padding-start">6pt</xsl:attribute>
>     <xsl:attribute name="padding-end">6pt</xsl:attribute>
>     <xsl:attribute name="margin">0</xsl:attribute>
>     <xsl:attribute name="border-style">solid</xsl:attribute>
>     <xsl:attribute name="border-width">0.25mm</xsl:attribute>
>   </xsl:attribute-set>
>   
>   <xsl:attribute-set name="fragment.set"
> use-attribute-sets="fragment.base.set">
>     <xsl:attribute name="border-color">black</xsl:attribute>
>     <xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
>     <xsl:attribute name="space-before.optimum">0.5em</xsl:attribute>
>     <xsl:attribute name="space-before.maximum">0.6em</xsl:attribute>
>     <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
>     <xsl:attribute name="space-after.optimum">0.5em</xsl:attribute>
>     <xsl:attribute name="space-after.maximum">0.6em</xsl:attribute>
>   </xsl:attribute-set>
>   
>   <xsl:attribute-set name="fragment.top.set"
> use-attribute-sets="fragment.base.set">
>     <xsl:attribute name="border-top-color">black</xsl:attribute>
>     <xsl:attribute name="border-left-color">black</xsl:attribute>
>     <xsl:attribute name="border-right-color">black</xsl:attribute>
>     <xsl:attribute name="border-bottom-color">#e0e0e0</xsl:attribute>
>     <xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
>     <xsl:attribute name="space-before.optimum">0.5em</xsl:attribute>
>     <xsl:attribute name="space-before.maximum">0.6em</xsl:attribute>
>     <xsl:attribute name="space-after">0em</xsl:attribute>
>   </xsl:attribute-set>
>   
>   <xsl:attribute-set name="fragment.middle.set"
> use-attribute-sets="fragment.base.set">
>     <xsl:attribute name="border-top-color">#e0e0e0</xsl:attribute>
>     <xsl:attribute name="border-left-color">black</xsl:attribute>
>     <xsl:attribute name="border-right-color">black</xsl:attribute>
>     <xsl:attribute name="border-bottom-color">#e0e0e0</xsl:attribute>
>     <xsl:attribute name="space-before">0em</xsl:attribute>
>     <xsl:attribute name="space-after">0em</xsl:attribute>
>   </xsl:attribute-set>
>   
>   <xsl:attribute-set name="fragment.bottom.set"
> use-attribute-sets="fragment.base.set">
>     <xsl:attribute name="border-top-color">#e0e0e0</xsl:attribute>
>     <xsl:attribute name="border-left-color">black</xsl:attribute>
>     <xsl:attribute name="border-right-color">black</xsl:attribute>
>     <xsl:attribute name="border-bottom-color">black</xsl:attribute>
>     <xsl:attribute name="space-before">0em</xsl:attribute>
>     <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
>     <xsl:attribute name="space-after.optimum">0.5em</xsl:attribute>
>     <xsl:attribute name="space-after.maximum">0.6em</xsl:attribute>
>   </xsl:attribute-set>
>   
>   <xsl:template
> match="fragment[not(preceding-sibling::*[1][self::fragment])]">
>     <xsl:apply-templates select="." mode="inlist" />
>   </xsl:template>
> 
>   <xsl:template match="fragment" mode="inlist">
>     <xsl:choose>
>       <xsl:when test="not(preceding-sibling::*[1][self::fragment])">
>         <xsl:choose>
>           <xsl:when test="not(following-sibling::*[1][self::fragment])">
>             <!-- sole fragment -->
>             <fo:block xsl:use-attribute-sets="fragment.set" >
>               <xsl:apply-templates />
>             </fo:block>
>           </xsl:when>
>           <xsl:otherwise>
>             <!-- first fragment -->
>             <fo:block xsl:use-attribute-sets="fragment.top.set" >
>               <xsl:apply-templates />
>             </fo:block>
>           </xsl:otherwise>
>         </xsl:choose>
>       </xsl:when>
>       <xsl:otherwise>
>         <xsl:choose>
>           <xsl:when test="not(following-sibling::*[1][self::fragment])">
>             <!-- last fragment -->
>             <fo:block xsl:use-attribute-sets="fragment.bottom.set" >
>               <xsl:apply-templates />
>             </fo:block>
>           </xsl:when>
>           <xsl:otherwise>
>             <!-- middle fragment -->
>             <fo:block xsl:use-attribute-sets="fragment.middle.set" >
>               <xsl:apply-templates />
>             </fo:block>
>           </xsl:otherwise>
>         </xsl:choose>
>       </xsl:otherwise>
>     </xsl:choose>
>     <xsl:apply-templates select="following-sibling::*[1][self::fragment]"
> mode="inlist" />
>   </xsl:template>
> 
> 



Jeremias Maerki


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to