Apache FOP 能否显示 RTL 语言(例如希伯来语)并使项目符号点和其他内容右对齐?

Can Apache FOP display RTL languages such as Hebrew with bullet-points and other content right aligned?

我一直在努力理解 Apache FOP 如何处理希伯来语以及其他潜在的 rtl 脚本。

生成文档时,内容似乎仍然保持左对齐,包括要点:

我之前在 .Net 中使用 Ibex 工作,它按预期处理了这个 FO 文件:

我查看了之前的一些问题,例如 FOP apache - support Hebrew letters which helped find some of the Java/FOP specific changes needed and some routes I tried. The reference docs here https://xmlgraphics.apache.org/fop/2.2/complexscripts.html 也有关于要添加的一些标签的信息,但没有解决问题,所以我希望我只是错过了一些明显的东西,而不是这个只是没有在 FOP 中是可能的。

这是我在两个处理器中使用的带有一些 Lorem Ipsum 文本的精简 FOP:

<?xml version="1.0" encoding="UTF-16"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="core" page-height="297mm" page-width="210mm" margin-left="5mm"
                           margin-right="5mm" margin-top="9mm" margin-bottom="10mm">
      <fo:region-body region-name="Content" margin-left="5mm" margin-right="10mm" margin-top="10mm" margin-bottom="5mm"
                      column-gap="10mm" writing-mode="rl-tb" direction="rtl"/>
    </fo:simple-page-master>
  </fo:layout-master-set>
  <fo:page-sequence master-reference="core">
    <fo:flow flow-name="Content" font-family="Arial Unicode MS">
      <fo:block>
        <fo:block>קסאם מדינות מה. מיזם חשמל מיזמי רבה בה, לעריכת ופיתוחה פוליטיקה מתן מה:</fo:block>
        <fo:block>
          <fo:list-block>
            <fo:list-item>
              <fo:list-item-label end-indent="label-end()">
                <fo:block>●</fo:block>
              </fo:list-item-label>
              <fo:list-item-body start-indent="body-start()">
                <fo:block>קסאם מדינות מה. מיזם חשמל מיזמי רבה בה, לעריכת ופיתוחה פוליטיקה מתן מה.</fo:block>
              </fo:list-item-body>
            </fo:list-item>
          </fo:list-block>
        </fo:block>
      </fo:block>
    </fo:flow>
  </fo:page-sequence>
</fo:root>

我试过在文本周围添加 <fo:bidi-override unicode-bidi="embed" direction="rtl"> 节点,但它似乎对 FOP 没有影响,在 ibex 中也不需要。

language="hebr" script="he" 添加到 page-sequenceflow 节点也没有任何区别。

目的是让我们可以将环境变量传递给 FO 文件,例如“rtl”和“rl-tb”(Ibex 如何处理)。如果这可以实现,但我们需要两个单独的文件用于 rtl 和 ltr,这始终是一个选项。最终这将用于多种语言,包括俄语、土耳其语、韩语等,因此拥有一个通用文件绝对是首选!

一个队友在我不在的时候设法解决了这个问题——writing-mode 属性需要在 page-sequence 节点上,例如:

<?xml version="1.0" encoding="UTF-16" ?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="core" page-height="297mm" page-width="210mm" margin-left="5mm"
                           margin-right="5mm" margin-top="9mm" margin-bottom="10mm">
      <fo:region-body region-name="Content" margin-left="5mm" margin-right="10mm" margin-top="10mm" margin-bottom="5mm"
                      column-gap="10mm"/>
    </fo:simple-page-master>
  </fo:layout-master-set>
  <fo:page-sequence master-reference="core" writing-mode="rl-tb">
    <fo:flow flow-name="Content" font-family="Arial Unicode MS">
      <fo:block>
        <fo:block>קסאם מדינות מה. מיזם חשמל מיזמי רבה בה, לעריכת ופיתוחה פוליטיקה מתן מה:</fo:block>
        <fo:block>
          <fo:list-block>
            <fo:list-item>
              <fo:list-item-label end-indent="label-end()">
                <fo:block>●</fo:block>
              </fo:list-item-label>
              <fo:list-item-body start-indent="body-start()">
                <fo:block>קסאם מדינות מה. מיזם חשמל מיזמי רבה בה, לעריכת ופיתוחה פוליטיקה מתן מה.</fo:block>
              </fo:list-item-body>
            </fo:list-item>
          </fo:list-block>
        </fo:block>
      </fo:block>
    </fo:flow>
  </fo:page-sequence>
</fo:root>

我曾尝试 fo:region-body 节点上的 writing-mode 和 text-direction 属性,在这种情况下似乎不正确