2009-08-18 352 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包。