使用Apache FOP调整字体大小XSL-FO

时间:2018-10-21 17:33:33

标签: xslt fonts xsl-fo apache-fop docbook

我有以下Docbook 5.1文档

<?xml version="1.0" encoding="UTF-8"?>
<book xmlns="http://docbook.org/ns/docbook"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    version="5.1">
    <info>
        <title>Test</title>
    </info>
    <chapter>
        <title>Switchs of <systemitem class="domainname">corp.net</systemitem></title>
        <para>
            Switchs: <systemitem class="fqdomainname">switch-<replaceable>id</replaceable>.corp.net</systemitem>.
        </para>
    </chapter>
</book>

我使用以下自定义样式表

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:import href="http://docbook.sourceforge.net/release/xsl-ns/current/fo/profile-docbook.xsl"/>
    <xsl:param name="monospace.font.family">Liberation Mono</xsl:param>
    <xsl:attribute-set name="monospace.properties">
        <!-- XXX -->
    </xsl:attribute-set>
</xsl:stylesheet>

不幸的是,我使用的等宽字体太大,所以我想缩小 缩小到衬线字体大小的85%。

我尝试的第一件事是

<xsl:attribute name="font-size">0.85em</xsl:attribute>

它工作得很好,除非有嵌套的等宽文本。在这种情况下,内在的 太小了。

然后我尝试了

<xsl:attribute name="font-size">
    <xsl:value-of select="$body.font.master * 0.85"/>
    <xsl:text>pt</xsl:text>
</xsl:attribute>

当等宽文本位于较大尺寸的文本(例如标题)中时,此方法将无效。

我已阅读http://docbook.sourceforge.net/release/xsl/1.78.1/doc/fo/monospace.properties.html,建议使用font-size-adjust,但FOP 2.3不支持它。

有没有一种模拟font-size-adjust行为的方法?

0 个答案:

没有答案