2009-08-18 88 views
1

我需要良好的Java封装处理。不是很难,除了一个皱纹:因为我正在研究一个国际化的应用程序,它需要正确处理中文,日文和韩文文本。在这些语言中,字符之间会出现换行,因为字符本身就是字,并且没有空格。不仅如此,由于该文本可能包含以拉丁字符呈现的外来词,因此这些词必须专门处理,并且不会像文本的其余部分那样在字符之间断开。包装需要支持文本和图形上下文(以字符或像素单位表示的坐标)。Java中的国际化单词封装

有没有这样做的现有包?我还没有见过。如果没有,任何人都可以给我看一个处理这种情况的好算法吗?如果需要,代码将访问与要包装文本的语言相对应的对象Locale。贪婪的算法(每行占用尽可能多的文本)很好。

回答

3

BreakIterator在这里应该有助于将字符序列分解为单词。如果这不够,我会检查ICU project,看它是否有更好的东西(一些Java实现来自那里)。图形处理将取决于您的GUI库,但AWT/Swing Font API支持确定线条度量。 (如果你没有'Locale'实例,你可以使用Unicode blocks做启发式的尝试。)

1

看来ICU4J库可能会做你所需要的。见boundary analysis。给出的例子是针对ICU4C的,因此使用C/C++,但也应该使用Java包。