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-sequence
和 flow
节点也没有任何区别。
目的是让我们可以将环境变量传递给 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 属性,在这种情况下似乎不正确
我一直在努力理解 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-sequence
和 flow
节点也没有任何区别。
目的是让我们可以将环境变量传递给 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 属性,在这种情况下似乎不正确