2011-11-24 89 views
1

我需要修改現有的Java應用程序以顯示阿拉伯語中的一些(靜態)文本。問題是這個Java應用程序運行在僅支持Java 1.1的設備上(是的,我知道,我必須忍受這一點)。Java中的阿拉伯語文本AWT

我知道Swing支持RTL語言,但是我只能使用AWT。該應用程序不使用任何重量級組件;所有文字均使用Graphics.drawString()繪製。

這可能嗎? (我的意思是沒有從頭開始實現文本渲染引擎)。有人可以指出現有的例子嗎?任何有用的建議?

謝謝!

回答

0

我已經設法成功地解決了這個問題,將arabic "reshaper"算法用於預處理字符串中的每個阿拉伯文字與自定義BiDi實現。

到目前爲止我嘗試過的所有情況下,渲染效果都非常好。

只是爲了防止其他人出現同樣的問題,無論是Java 1.1還是其他任何不支持本地阿拉伯語的環境(實際上上面鏈接的整形器最初是從Android編寫的)。

編輯:

原路段不工作了,但代碼現已在github上:https://github.com/agawish/Better-Arabic-Reshaper/

+0

現在,不幸的是,該鏈接似乎被打破... – RobertG

+1

嗨羅伯特。謝謝你的提醒。我正在使用工作鏈接更新答案。 – Grodriguez

1

如果它確實是靜態的,請製作一些位圖。你不會讓渲染工作。

+0

埃姆,但是這是爲什麼?我猜那裏有開發人員用阿拉伯文編寫應用程序,根本不使用Java .. – Grodriguez

+0

Java 1.1?回到古代,沒有人甚至在Java中遠程考慮複雜的腳本和RTL。 ICU項目可能有一個巨大的圖書館插件,但我懷疑任何人在6年內看過它。 – bmargulies