You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by Buckman Ekow <eb...@sopragroup.com> on 2006/08/16 17:10:05 UTC

FOP : Leaders problem

> Hello,
> 
> I'm working with FOP 0.92 and trying to use fo:leader.
> I've got problem when i'm using two fo:leader in one fo:block.
> 
> FOP generates :
> Text one fisrt line ....................................................
> ....................................................................text
> 		  							    on second line
> 
> or
> 
> Text one fisrt line ....................................................
>         .....................Several text on second line with fdkdlkllkf
>  		                                fdjkldflklkllklllsddss fjdks
> 
> I'd like to generate:
> 
> Text one fisrt line ....................................................
> .....................................................text on second line
> 
> or
> 
> Text one fisrt line ....................................................
> ......Several text on second line with fdkdlkllkf fdjkldflklkllklllsddss
>    				                                           fjdks
> 
> 
> Following the XSL sample:
> <xsl:template name="GEN-tmpl-generate-leader">
> 	<!-- Parameters definition -->
> 	<xsl:param name="param-left" select="''"/>
> 	<xsl:param name="param-right" select="''"/>
> 	<xsl:param name="param-wide" select="$PAGEL-var-at4-flow-width"/>
> 
> 	<!--Variables definition-->
> 	<!-- Maximum length of the addition of the 2 variables-->
> 	<xsl:variable name="var-len-max">
> 		<xsl:if test="$QRL-var-solution-current-style-name='default'">
> 			<xsl:value-of select="($param-wide - 10) "/>
> 		</xsl:if>
> 		<xsl:if test="$QRL-var-solution-current-style-name='smoke'">
> 			<xsl:value-of select="($param-wide - 10)"/>
> 		</xsl:if>
> 	</xsl:variable>
> 	<xsl:variable name="var-average-character-size">
> 		<xsl:if test="$QRL-var-solution-current-style-name='default'">
> 			<xsl:value-of select="3"/>
> 		</xsl:if>
> 		<xsl:if test="$QRL-var-solution-current-style-name='smoke'">
> 			<xsl:value-of select="4"/>
> 		</xsl:if>
> 	</xsl:variable>
> 	<!-- Calculate length of two params -->
> 	<xsl:variable name="var-left">
> 		<xsl:value-of select="$param-left"/>
> 	</xsl:variable>
> 	<xsl:variable name="var-right">
> 		<xsl:value-of select="$param-right"/>
> 	</xsl:variable>
> 	<!-- We consider that in helvetica, the characters " " , "I", "1", "/" =
> have a length equals to zero.
> 		, we replace them by an empty space.-->
> 	<xsl:variable name="var-len-left" =
> select=3D"string-length(translate($var-left,' I/1.',''))"/>
> 	<xsl:variable name="var-len-right" =
> select=3D"string-length($var-right)"/>
> 	<!--xsl:variable name="var-len-right" =
> select=3D"string-length(translate($var-right,' I/1.',''))"/-->
> 	<xsl:variable name="var-len">
> 		<xsl:value-of select="$var-len-left + $var-len-right"/>
> 	</xsl:variable>
> 
> 	<!-- following length, use one block or two blocks-->
> 	<xsl:choose>
> 		<xsl:when test="$var-len*$var-average-character-size &lt; =
> $var-len-max">
> 			<fo:block text-align="justify">
> 				<xsl:copy-of select="$param-left"/>
> 				<fo:leader leader-pattern="dots"  leader-length.maximum="100%" =
> leader-length.optimum="{$param-wide}mm"/>
> 				<xsl:copy-of select="$param-right"/>
> 			</fo:block>
> 		</xsl:when>
> 		<xsl:when test="$var-len-right*$var-average-character-size &gt; =
> $var-len-max">
> 			<fo:block text-align="justify">
> 				<xsl:copy-of select="$param-left"/>
> 				<fo:leader leader-pattern="dots"  leader-length.maximum="100%" =
> leader-length.optimum="{$param-wide}mm"/>
> 			</fo:block>
> 			<fo:block text-align="justify" text-align-last="right">
> 				<fo:leader leader-pattern="dots"  leader-length.maximum="0%" =
> leader-length.minimum="{$param-wide - ($var-len-right + 10)}mm" =
> leader-length.optimum="{$param-wide - ($var-len-right + 10)}mm"/>
> 				<xsl:copy-of select="$param-right"/>
> 			</fo:block>	=09
> 		</xsl:when>	=09
> 		<xsl:otherwise>
> 			<fo:block text-align="justify">
> 				<xsl:copy-of select="$param-left"/>
> 				<fo:leader leader-pattern="dots"  leader-length.maximum="100%" => 
> leader-length.optimum="{$param-wide}mm"/>
> 			</fo:block>
> 			<fo:block text-align="justify">
> 				<fo:leader leader-pattern="dots"  leader-length.maximum="100%" =
> leader-length.optimum="{$param-wide - $var-len-right -10}mm"/>
> 				<xsl:copy-of select="$param-right"/>
> 			</fo:block>
> 		</xsl:otherwise>
> 	</xsl:choose>
> </xsl:template>
> 
> 
> Somebody have any idea ?
> Thanks and reguards.
> 
> Cordialement.
>  
> Ekow Buckman
> Sopra group 
> Division Midi-Pyrénées
> Agence Aéronautique & Spatial
> Tel.: +33 (0)5 34 56 73 61
> email : ebuckman@sopragroup.com <ma...@sopragroup.com>
> 
> 

Re: FOP : Leaders problem

Posted by Jeremias Maerki <de...@jeremias-maerki.ch>.
Not sure what to do here. Sorry. Looks like some side-effects from our
line-breaking algorithm.

On 16.08.2006 17:10:05 Buckman Ekow wrote:
> > Hello,
> > 
> > I'm working with FOP 0.92 and trying to use fo:leader.
> > I've got problem when i'm using two fo:leader in one fo:block.
> > 
> > FOP generates :
> > Text one fisrt line ....................................................
> > ....................................................................text
> > 		  							    on second line
> > 
> > or
> > 
> > Text one fisrt line ....................................................
> >         .....................Several text on second line with fdkdlkllkf
> >  		                                fdjkldflklkllklllsddss fjdks
> > 
> > I'd like to generate:
> > 
> > Text one fisrt line ....................................................
> > .....................................................text on second line
> > 
> > or
> > 
> > Text one fisrt line ....................................................
> > ......Several text on second line with fdkdlkllkf fdjkldflklkllklllsddss
> >    				                                           fjdks
> > 
> > 
> > Following the XSL sample:
> > <xsl:template name="GEN-tmpl-generate-leader">
> > 	<!-- Parameters definition -->
> > 	<xsl:param name="param-left" select="''"/>
> > 	<xsl:param name="param-right" select="''"/>
> > 	<xsl:param name="param-wide" select="$PAGEL-var-at4-flow-width"/>
> > 
> > 	<!--Variables definition-->
> > 	<!-- Maximum length of the addition of the 2 variables-->
> > 	<xsl:variable name="var-len-max">
> > 		<xsl:if test="$QRL-var-solution-current-style-name='default'">
> > 			<xsl:value-of select="($param-wide - 10) "/>
> > 		</xsl:if>
> > 		<xsl:if test="$QRL-var-solution-current-style-name='smoke'">
> > 			<xsl:value-of select="($param-wide - 10)"/>
> > 		</xsl:if>
> > 	</xsl:variable>
> > 	<xsl:variable name="var-average-character-size">
> > 		<xsl:if test="$QRL-var-solution-current-style-name='default'">
> > 			<xsl:value-of select="3"/>
> > 		</xsl:if>
> > 		<xsl:if test="$QRL-var-solution-current-style-name='smoke'">
> > 			<xsl:value-of select="4"/>
> > 		</xsl:if>
> > 	</xsl:variable>
> > 	<!-- Calculate length of two params -->
> > 	<xsl:variable name="var-left">
> > 		<xsl:value-of select="$param-left"/>
> > 	</xsl:variable>
> > 	<xsl:variable name="var-right">
> > 		<xsl:value-of select="$param-right"/>
> > 	</xsl:variable>
> > 	<!-- We consider that in helvetica, the characters " " , "I", "1", "/" =
> > have a length equals to zero.
> > 		, we replace them by an empty space.-->
> > 	<xsl:variable name="var-len-left" =
> > select=3D"string-length(translate($var-left,' I/1.',''))"/>
> > 	<xsl:variable name="var-len-right" =
> > select=3D"string-length($var-right)"/>
> > 	<!--xsl:variable name="var-len-right" =
> > select=3D"string-length(translate($var-right,' I/1.',''))"/-->
> > 	<xsl:variable name="var-len">
> > 		<xsl:value-of select="$var-len-left + $var-len-right"/>
> > 	</xsl:variable>
> > 
> > 	<!-- following length, use one block or two blocks-->
> > 	<xsl:choose>
> > 		<xsl:when test="$var-len*$var-average-character-size &lt; =
> > $var-len-max">
> > 			<fo:block text-align="justify">
> > 				<xsl:copy-of select="$param-left"/>
> > 				<fo:leader leader-pattern="dots"  leader-length.maximum="100%" =
> > leader-length.optimum="{$param-wide}mm"/>
> > 				<xsl:copy-of select="$param-right"/>
> > 			</fo:block>
> > 		</xsl:when>
> > 		<xsl:when test="$var-len-right*$var-average-character-size &gt; =
> > $var-len-max">
> > 			<fo:block text-align="justify">
> > 				<xsl:copy-of select="$param-left"/>
> > 				<fo:leader leader-pattern="dots"  leader-length.maximum="100%" =
> > leader-length.optimum="{$param-wide}mm"/>
> > 			</fo:block>
> > 			<fo:block text-align="justify" text-align-last="right">
> > 				<fo:leader leader-pattern="dots"  leader-length.maximum="0%" =
> > leader-length.minimum="{$param-wide - ($var-len-right + 10)}mm" =
> > leader-length.optimum="{$param-wide - ($var-len-right + 10)}mm"/>
> > 				<xsl:copy-of select="$param-right"/>
> > 			</fo:block>	=09
> > 		</xsl:when>	=09
> > 		<xsl:otherwise>
> > 			<fo:block text-align="justify">
> > 				<xsl:copy-of select="$param-left"/>
> > 				<fo:leader leader-pattern="dots"  leader-length.maximum="100%" => 
> > leader-length.optimum="{$param-wide}mm"/>
> > 			</fo:block>
> > 			<fo:block text-align="justify">
> > 				<fo:leader leader-pattern="dots"  leader-length.maximum="100%" =
> > leader-length.optimum="{$param-wide - $var-len-right -10}mm"/>
> > 				<xsl:copy-of select="$param-right"/>
> > 			</fo:block>
> > 		</xsl:otherwise>
> > 	</xsl:choose>
> > </xsl:template>
> > 
> > 
> > Somebody have any idea ?
> > Thanks and reguards.
> > 
> > Cordialement.
> >  
> > Ekow Buckman
> > Sopra group 
> > Division Midi-Pyr�n�es
> > Agence A�ronautique & Spatial
> > Tel.: +33 (0)5 34 56 73 61
> > email : ebuckman@sopragroup.com <ma...@sopragroup.com>
> > 
> > 



Jeremias Maerki