【问题标题】:Problems with hyphenation using FOP 2.0使用 FOP 2.0 的断字问题
【发布时间】:2016-04-26 22:25:39
【问题描述】:

我在工作场所创建了一个小型 Java Swing 应用程序来生成 XML 文件的 PDF。我需要启用连字符,因为表格中有一些文本超出了单元格边界。

我已经下载了 FOP 的 OFFO 编译断字模式,并将 fop-hyph.jar 文件与我的 fop.jar 放在我的“lib”文件夹中。

当我运行应用程序时,我收到以下错误:

Jan 20, 2016 2:57:43 PM org.apache.fop.hyphenation.Hyphenator getHyphenationTree
SEVERE: Couldn't find hyphenation pattern for lang="en",country="US".

我正在使用 FOP 2.0,并且我的 fop.xconf 文件中有以下条目:

<hyphenation-pattern lang="en">en_US</hyphenation-pattern>

我也试过了,没有任何区别:

<hyphenation-pattern lang="en" country="US">en_US</hyphenation-pattern>

在我输入的 XSL-FO 文件的根目录上:

<fo:root font-family="Helvetica" language="en" country="US" hyphenate="true">

让这个工作我缺少什么?其他一切正常,可以正确创建 PDF。

【问题讨论】:

    标签: java xsl-fo apache-fop


    【解决方案1】:

    根据hyphenation pattern installation instruction,美式英语的模式文件称为en.xml,所以在配置文件中你应该有:

    <hyphenation-pattern lang="en">en</hyphenation-pattern>
    

    顺便说一句,配置文件中的条目仅在您想要与默认行为不同时才需要,因此在这种情况下您可以完全省略它

    【讨论】:

    • 好的,因此删除“_US”会删除错误消息。我在安装说明中阅读了此内容,但仍然以某种方式误解了它。我的表中仍然没有连字符。是否防止 &lt;fo:inline&gt; 元素连字?我收到一条错误消息,指出它们溢出了允许的区域。
    • 如果尽管fo:root 上存在hyphenate="true",但某些文本没有连字符,原因可能是:(a) hyphenate="false"fo:block 上文本的祖先; (b) keep-together="always"(其中涉及keep-together.within-line="always")在文本的祖先上; (c) 文本不是文本 :-)(断字规则不适用于数字序列)。
    • 数字可能是问题所在,字符串看起来像 23-00-00-01A-251A-A。有没有办法解决数字问题?
    • 您可以在生成 FO 文件时在字符串中插入一些 零宽度空格 (&amp;#x200B;); FOP 将能够使用这些不可见的空间作为突破点。对此有问答:我只能找到this one,但我很确定还有其他人。
    • 将它们放在每个'-'之前和之后,它就起作用了。再次感谢。
    猜你喜欢
    • 2021-01-16
    • 2023-03-28
    • 1970-01-01
    • 2010-12-04
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多