gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:03:09 25 4
gpt4 key购买 nike

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

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

Image showing FOP output with bullet points and text left-aligned

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

Image showing Ibex output with bullet points and text right-aligned as expected

我看了一些以前的问题,比如 FOP apache - support Hebrew letters这有助于找到一些需要的 Java/FOP 特定更改和我尝试过的一些路线。引用文档在这里 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 属性,在这种情况下似乎不正确

关于xsl-fo - Apache FOP 能否显示 RTL 语言(例如希伯来语)并使项目符号点和其他内容右对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62778876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com