如何删除自定义粗细 XSL:FO 的文本

How can I strike text with custom thickness XSL:FO

我用text-decoration="line-through"敲击文字,但发现粗细不合适

<fo:inline text-decoration="line-through">
...
</fo:inline>

我尝试使用,但找不到覆盖文本的方法。有什么办法可以调整打击的粗细吗?或者使用 fo:leader 做同样事情的方法?

XSL 1.1 中没有 属性 用于指定 text-decoration 行的宽度。 (FWIW,AH Formatter 有一个扩展名 属性:https://www.antennahouse.com/product/ahf66/ahf-ext.html#axf.text-line-width。)

使用 fo:leader 可能会有问题,因为您可能无法完全正确地设置宽度。

您也许可以对带有顶部或底部边框的 fo:inline-container 做一些事情,并使用 fo:inline-containerfo:block 中的文本的基线偏移来玩弄技巧在 fo:inline-container 中,fo:inline-container 是 lowered/raised 以进行删除线,而文本是 raised/lowered 以回到原始基线。

您应该能够将 padding-bottom 设置为 font-height 的负 1/2 并加上 bottom-border。像这样,如果说 font-size 是 24pt.

        <fo:block>Testing line-through 
            <fo:inline text-decoration="line-through">
                I have regular line-through
            </fo:inline>
        </fo:block>
        <fo:block space-before="48pt">Testing line-through 
            <fo:inline border-bottom="5px solid black" padding-bottom="-12pt">
                I have custom line-through
            </fo:inline>
        </fo:block>

这在 RenderX 中导致:

不幸的是,在 FOP 中尝试的任何操作都不起作用,因为它显然不遵守 fo:inline 上的任何边距或填充设置。