これをインスピレーションとして使用し、独自のルールを設定してください。
<fo:block text-align="justify" text-align-last="right">
<fo:inline>Some text on the left</fo:inline>
<fo:leader leader-pattern="dots" leader-length.minimum="2in" leader-length.optimum="2in" leader-length.maximum="3in"/>
<fo:inline>a long piece of text on the right that has wrapped</fo:inline>
</fo:block>
<fo:block text-align="justify" text-align-last="right">
<fo:inline>Some text</fo:inline>
<fo:leader leader-pattern="dots" leader-length.minimum="2in" leader-length.optimum="2in" leader-length.maximum="3in"/>
<fo:inline>a long piece of text on the right that has wrapped and is even longer</fo:inline>
</fo:block>
あなたが止めることができない唯一のものは、点の下に来るほど長い右手の線ですが、あなたはそれを要件として指定していません. もしそうなら、それに対する解決策はないと思います。また、行が短すぎる場合は、右揃えになります。ラップのみを強制するには、最小/最大値を使用する必要があります。
フォント サイズがわかっている場合は、左右の要素の文字数を数え、合計文字数に応じてテンプレートまたはこのサンプルを呼び出すことができます。

カウントについては、このテンプレートのように、「50」文字をリーダーの長さで調整して正しい結果を得ることができます。
<xsl:template name="processitem">
<xsl:choose>
<xsl:when test="string-length(left) + string-length(right) > 50">
<fo:block text-align="justify" text-align-last="right">
<fo:inline><xsl:value-of select="left"/></fo:inline>
<fo:leader leader-pattern="dots" leader-length.minimum="2in" leader-length.optimum="2in" leader-length.maximum="4in"/>
<fo:inline><xsl:value-of select="right"/></fo:inline>
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block text-align-last="justify">
<fo:inline><xsl:value-of select="left"/></fo:inline>
<fo:leader leader-pattern="dots"/>
<fo:inline><xsl:value-of select="right"/></fo:inline>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
いくつかのサンプル データを使用して、これをレンダリングしました。
