gpt4 book ai didi

c++ - ICU 布局示例以不同于 Microsoft 记事本和 Word 的方式呈现文本

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:02 28 4
gpt4 key购买 nike

我有一个双向文本

1002   -ابو ماجد الانصاري

大多数编辑器 notepad++、notepad 等都按此处显示的方式显示文本。但是,当我通过 ICU 处理此文本时,数字向右移动,然后是空格和连字符,然后是阿拉伯语。 ICU 的示例应用程序 layout.exe 也显示右侧的数字。我修改了 paragraphlayout.cpp 并设置了所有可能的重新排序模式,但结果仍然相同:

See Problem Text here

有人可以帮助配置 ICU 以像其他显示引擎那样提供输出吗。

最佳答案

如果我没理解错的话,您的文本“以”数字“开头”,然后是连字符和文本。记事本和其他编辑器让您选择“书写方向”。如果您选择从右到左,您会得到与屏幕截图相同的结果,

RTL screenshot

如果要保持从左到右的书写方向,可以显式设置

ubidi_setPara(para, "1002   -ابو ماجد الانصاري", ‭25, UBIDI_LTR, NULL, pErrorCode);

或者您可以将 U+202A ( LEFT-TO-RIGHT EMBEDDING ) 嵌入到您的字符串中,以强制执行此方向。如果您的代码是用 C++ 编写的,您可以编写如下内容

icu::UnicodeString string_to_layout = "\x202a";
string_to_layout += "1002 -ابو ماجد الانصاري";

而且您不能使用 string_to_layout 作为 renderParagraph() 的输入参数(参见 http://icu-project.org/apiref/icu4c-latest/ubidi_8h.htm)。

关于c++ - ICU 布局示例以不同于 Microsoft 记事本和 Word 的方式呈现文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47326951/

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