代码之家  ›  专栏  ›  技术社区  ›  Alfe

如何使用FOP在XML-FO中指定2ch缩进

  •  4
  • Alfe  · 技术社区  · 8 年前

    不幸的是,当我指定如下长度时 "2ch" ,FOP生成此错误消息:

    [ERROR] PropertyMaker - Unknown length unit 'ch'
    

    ch 0 性格所以AFAIU这应该有效,但仍然无效。

    ix 也不起作用)。这个 em

    是否有FOP支持的完整长度单位列表?

    有没有其他方法可以实现我的目标,通过具体数量的字符缩进?我需要一个像 1.3em

    1 回复  |  直到 8 年前
        1
  •  3
  •   Community Mohan Dere    6 年前

    中定义的度量单位 XSL recommendation 是:

    • cm (厘米)
    • mm
    • in (英寸)
    • pt (点数)
    • pc (picas)
    • px (像素)
    • em (当前字体大小)

    FOP支持他们所有人 mpt (毫秒),但正如您所注意到的,它们都不是指单间距字体的字符宽度。

    其他格式化程序可能支持其他度量单位,例如我看到的 AntennaHouse XSLFormatter 支架 ch .

    如果你只需要一个 text-indent (即仅针对第一行),您可以使用 非间断空格 :

    <fo:block>&#x00A0;&#x00A0;Lorem ipsum dolor ...</fo:block>
    

    如果您提前知道块将只生成一条线,您也可以使用 为了便于FO文件的可读性:

    <fo:block white-space-treatment="preserve" 
        white-space-collapse="false">  Lorem ipsum dolor ...</fo:block>
    

    在最常见的情况下(如果您想定义 start-indent end-indent , ...), 您可以使用字体信息计算精确值:

    1. 创建字体指标

      java -classpath build/fop.jar:fop/lib/avalon-framework-api-4.3.1.jar:fop/lib/commons-logging-1.0.4.jar:fop/lib/commons-io-1.3.1.jar:fop/lib/xmlgraphics-commons-svn-trunk.jar org.apache.fop.fonts.apps.TTFReader -enc ansi /path/to/font.ttf metrics.xml

    2. 打开 metrics.xml <char idx="29" wdt="600"/> (the wdt 价值可以不同,但对所有人来说都应该相同 char

    3. wdt公司 是字符的宽度,单位为毫秒:将其乘以 font-size

    例如: 600 x 12 x 2=14400mpt=14.4pt=带