Выравнивание содержимого таблицы разным шрифтом

pdf-generation xsl-fo apache-fop

382 просмотра

2 ответа

1868 Репутация автора

Я заполняю таблицу текстом другого размера (левый столбец 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>
Автор: Stefan Hegny Источник Размещён: 19.07.2016 08:53

Ответы (2)


1 плюс

1868 Репутация автора

Решение

Дополнительные исследования и комментарии, освещающие ситуацию: line-height="inherit"

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

во всех блоках левого столбца делает это в этом случае без указания явного размера строки в любом месте.

Автор: Stefan Hegny Размещён: 19.07.2016 10:04

1 плюс

264 Репутация автора

Говоря типографски и для ситуации, которую вы описываете, если вы хотите, чтобы оба столбца имели одинаковую базовую линию, ваш больший шрифт, 8-точечный Times Roman, должен быть тем, чтобы задать межстрочный интервал (или начальный), а не меньший один.

Времена из 8 пунктов ожидают, что по умолчанию будет 8 пунктов от одной базовой линии к следующей. Меньше, чем это, и его потомки от верхней линии рискуют врезаться в восходящие на нижней линии; таким образом, вы не можете уменьшить расстояние между строками, чтобы соответствовать 6-точечному Helvetica по соседству.

Если левый текст выходит выше правого, это, вероятно, связано с тем, что глифы позиционируются, сначала опускаясь до базовой линии, а затем размещая текст. Таким образом, 6-балльная Helvetica падает до 6 баллов; Времена из 8 пунктов снижаются на 8 пунктов перед установкой, и вы смотрите на смещение. Определите, какой из ваших столбцов будет иметь наибольшее начальное значение, установите другие столбцы, соответствующие ему, добавив соответствующее количество межстрочных отводов, и это должно поддерживать согласованность между собой. (Однако ваши меньшие лица все еще будут выглядеть довольно пробелами; вы можете просто увеличить их, чтобы они соответствовали наибольшему размеру точки в этой строке таблицы.)

Автор: acg_so Размещён: 19.07.2016 03:12
Вопросы из категории :
32x32