如何在Apache FOP中设置全局字体系列?

时间:2013-07-19 08:04:48

标签: java apache pdf fonts apache-fop

这是我以前用过的:

 <fo:block font-family="Tahoma">Text</fo:block>

如何指定“Tahoma”是整个文档的字体系列?

我正在寻找相当于CSS的

body {
  font-family: "Tahoma";
}

4 个答案:

答案 0 :(得分:15)

如果要为整个文档设置默认字体,可以在fo:root中设置它。它应该被没有指定font-family的每个子节点继承。

<fo:root font-family="Tahoma">
    <!-- rest of document -->
</fo:root>

答案 1 :(得分:3)

您可以使用节点fo:wrapper将属性继承到其content-childs

<fo:page-sequence master-reference="A4-portrait">
    <fo:flow flow-name="xsl-region-body">
        <fo:wrapper font-size="10pt" font-family="Tahoma">
            <fo:block>
                Text <xsl:value-of select="name"/>
            </fo:block>
            <fo:block>
                Another text
            </fo:block>
        </fo:wrapper>
    </fo:flow>   
</fo:page-sequence>

答案 2 :(得分:0)

  <fonts>
    <referenced-fonts>
      <match font-family="Tahoma"/>
    </referenced-fonts>
  </fonts>

OR

<fo:page-sequence master-reference="A4-portrait">
  <fo:flow flow-name="xsl-region-body">
    <fo:block font-size="10pt" font-family="Tahoma">
      Text <xsl:value-of select="name"/>
    </fo:block>
  </fo:flow>   
</fo:page-sequence>

答案 3 :(得分:0)

如果您实际上没有一个元素可以匹配您的特定字体,那么就无法像在CSS中那样完成此操作。 如果你想要的只是设置一个字体除了一些例外,将其设置为&lt; fo:root&gt;然后在你需要时改变它应该做的伎俩。 无论字体是默认字体还是通过配置文件定义,都无济于事。

编辑:

相当于

body {   font-family: "Tahoma"; }

将是

<xsl:template match="body">
    <fo:block font-family="Tahoma">
        Content
    </fo:block>
</xsl:template>