← Prev in month ← Prev in thread

<menuchoice> FOP quirk

From
Alexey Neyman <>
Date
2013-05-10T23:23:07+00:00
ID
2467970.U2mcoLqq1t@mistral
Thread
<menuchoice> FOP quirk
Hi all, and especially Bob (since you introduced the code below),

 

I am seeing a weird formatting artifact with FOP, where the arrow introduced between the parts of <menuchoice> sequence results in an increase of line height. It is especially visible where that line is a part of list item, as the list marker ends up being near the top of the line rather than in a middle. A screenshot is attached, and another one shows (with thin colored boxes) the height of the elements inside a <menuchoice>)

 

I traced this to the the following XSL code in fo/inline.xsl:

 

  <xsl:variable name="mm.separator">

    <xsl:choose>

      <xsl:when test="($fop.extensions != 0 or $fop1.extensions != 0 ) and

                contains($menuchoice.menu.separator, '&#x2192;')">

        <fo:inline font-family="Symbol">

          <xsl:copy-of select="$menuchoice.menu.separator"/>

        </fo:inline>

      </xsl:when>

      <xsl:otherwise>

        <xsl:copy-of select="$menuchoice.menu.separator"/>

      </xsl:otherwise>

    </xsl:choose>

  </xsl:variable>

 

If I remove that fo:inline, <menuchoice> is formatted correctly. We don't use Symbol font, and we don't have it in fop.cfg. For that reason, we have $symbol.font.family set to empty value in our customization. Yet, this template bypasses the $symbol.font.family and attempts to use Symbol font directly. It maybe a font issue (having a glyph which exceeds the font size?), but the core issue is why DocBook XSL is attempting to use a font it wasn't configured to use?

 

I tried to dig the history what this workaround was trying to solve, but the commit message is not very descriptive:

 

Author:	       bobstayton

Date:	          Fri Apr 22 07:27:58 2005 UTC (8 years ago)

Changed paths:	1

Log Message:	

Fix menuchoice.menu.separator for FOP.

 

Can you shed some light as to what issue this code tries to fix? Removing this <xsl:choice> and using $menuchoice.menu.separator seems to work fine for me (using FOP 1.1). If it is kept, is it possible to: add "and $symbol.font.family != ''" to <xsl:when/>, and set font-family to "{$symbol.font.family}"?

 

Regards,

Alexey.

 

 

 

If removal

Attachment:
snapshot.png

Description: PNG image

Attachment:
snapshot-boxes.png

Description: PNG image
← Prev in month ← Prev in thread