【问题标题】:Internationalized word wrapping in JavaJava 中的国际化自动换行
【发布时间】:2009-08-18 17:36:38
【问题描述】:

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

是否有现有的软件包可以做到这一点?我一个都没见过。如果没有,谁能告诉我一个处理这种情况的好算法?如果需要,该代码将有权访问与要包装的文本的语言相对应的Locale 对象。贪心算法(每行尽可能多的文本)就可以了。

【问题讨论】:

    标签: java internationalization word-wrap


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      ICU4J 库似乎可以满足您的需求。见boundary analysis。给出的示例适用于 ICU4C,因此使用 C/C++,但也可以在 Java 包中使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多