avoidbreak 在 pdflib 8 中无法正常工作

avoidbreak is not correctly working in pdflib 8

我有一个文本,单词“Versicherungs-Lebenslagen”应该只在连字符处断开。这行得通,但是如果 space.
足够的话,世界 Lebenslagen 应该保持在同一条线上 在我的图片中,下一行是单词。

我在 API DOC, page 86 中阅读的 pdflib 代码是:

haben wir Services für alle <avoidbreak=true>„Versicherungs<avoidbreak=false>-<avoidbreak=true>Lebenslagen“<avoidbreak=false> eingerichtet:

我还使用了标签 <avoidbreak><noavoidbreak>,正如我在 java examples for pdflib 9

中看到的那样
haben wir Services für alle <avoidbreak>„Versicherungs<noavoidbreak>-<avoidbreak>Lebenslagen“<noavoidbreak> eingerichtet:

有人知道这个问题吗?

我猜,这与你使用的特殊引号有关。 “ (Unicode U+201C ) 被定义为 opening/left 字符。因此,textflow 换行算法之后不会直接换行。

当您重新定义此字符的字符 class 时,您可以解决此问题。

tf = p.create_textflow("haben wir Services f&uuml;r alle 
        <avoidbreak=true>&#x201E;Versicherungs<avoidbreak=false>-
        <avoidbreak=true>Lebenslagen&#x201c;<avoidbreak=false> eingerichtet:", 
    "fontname Arial encoding=unicode fontsize=20 charref 
        charclass={ close U+201C open U+201E}");
p.fit_textflow(tf, 50, 500, 350, 700, "showborder");

(你应该直接在 hello.java 示例中使用此代码)

另请参阅 PDFlib 8 教程,第 8.2.8 章 "Controlling the standard Linebreak Algorithm" 了解更多详细信息。