对齐不同字体大小的表内容

时间:2016-07-19 08:53:30

标签: pdf-generation xsl-fo apache-fop

我正在填写一个不同大小的文本表(左栏Helvetica 6pt,右列Times 8pt),但文本的基线没有对齐 - 左侧文本明显高于右栏中的文本。我怎么做得好听?使用 FOP 2.1

一种方法是添加line-height=...但是我需要设置行高到什么值才能获得与现在相同的垂直间距?

是不是有更通用的方式?

    <fo:block-container position="absolute" top="27mm" left="125mm" width="75mm" font-family="Times" font-size="8pt">
        <fo:table table-layout="fixed">
            <fo:table-column column-width="2.7cm"/>
            <fo:table-column column-width="4cm"/>
            <fo:table-body>
                <fo:table-row>
                    <fo:table-cell>
                        <fo:block margin-top="12pt" font-size="6pt" font-family="Helvetica">Contact:</fo:block>
                    </fo:table-cell>
                    <fo:table-cell>
                        <fo:block margin-top="12pt">Normally me</fo:block>
                    </fo:table-cell>
                </fo:table-row>
                <fo:table-row>
                    <fo:table-cell>
                        <fo:block font-size="6pt">&#xa0;</fo:block>
                    </fo:table-cell>
                    <fo:table-cell>
                        <fo:block>Manager</fo:block>
                    </fo:table-cell>
                </fo:table-row>
                <fo:table-row>
                    <fo:table-cell>
                        <fo:block font-size="6pt" font-family="Helvetica">email:</fo:block>
                    </fo:table-cell>
                    <fo:table-cell>
                        <fo:block>dings@bums</fo:block>
                    </fo:table-cell>
                </fo:table-row>
            </fo:table-body>
        </fo:table>
    </fo:block-container>

2 个答案:

答案 0 :(得分:1)

更多研究和评论更多亮点:line-height="inherit"

<fo:block font-size="6pt" font-family="Helvetica" line-height="inherit">

在左栏的所有区块中 在这种情况下没有在任何地方指定显式行大小。

答案 1 :(得分:1)

以印刷方式和您描述的情况说话,如果您希望两个列共享相同的基线,则您的较大字体8点Times Roman应该是设置行间距(或者前导)的字体),而不是你的小一个。

8点时报预计从一个基线下降到下一个基线的默认值为8点。任何比这更低的和它从上线下降的风险可能会撞到下线的上升部分;因此,您无法减少其间距以匹配隔壁的6点Helvetica。

如果左侧文本高于右侧,则可能是因为首先通过下降到基线来定位字形,然后放置文本。因此,6点Helvetica在设定之前下降6点; 8点时间在设定之前下降8点,并且您正在考虑未对准。确定哪些列具有最大前导值,通过添加适当数量的行间引导来设置其他列以匹配它,这应该使事物保持一致。 (然而,你的小脸仍然看起来相当空白;你可能会考虑将它们提升以匹配该表行中的最大点大小。)