在 Java 开发过程中支持双向字符集语言(BiDi)
2010-03-15 00:00:00 来源:WEB开发网计算机软件要在使用双向字符集的地区(主要是中东地区)销售、使用,如果没有 BiDi 的支持,将是一件不可能的事情。对 BiDi 的支持也是软件国际化(globalization)标准重要的组成部分,没有 BiDi 的支持就不能说对软件实现了国际化的支持。世界上各大软件公司都把对 BiDi 的支持作为产品能否发布的一个重要考核指标。
事实上对 BiDi 的支持,要考虑的内容非常多,从底层 BiDi 算法(例如 ICU4J)、编码(Unicode)、存储、输入法、直至开发工具的支持。然而作为一名开发人员(本文主要针对 Java 开发人员),其实不需要了解太多底层实现的细节。针对不同的软件图形库,只需要很少的代码层面的处理就可以实现对 BiDi 的支持。如果读者想要了解更多 BiDi 层面的知识、术语,例如 logical order、visual order 等等可以参照 developeWorkss 或者 W3C 上的其它文章。
Java 1.5 对 BiDi 的支持
Java SDK 不同的版本对 BiDi 的支持能力也是不一样的。本文的示例以及代码片段主要是针对 JDK 1.5 的版本。
Java 提供了 AWT 和 Swing 两种图形库,这两种图形库对 BiDi 的支持是不一样的。软件对 BiDi 展示层面的支持包含整个软件界面的布局从 LTR 到 RTL 的转变,以及控件的布局。例如 ComboBox 的下拉箭头从左边移到右边,控件里面的文字的布局转换,文字的录入等等。
AWT
AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是 Java 提供的用来构建和设置 Java 图形用户界面的基本工具。这个工具包提供了一套与本地图形界面进行交互的接口。AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系。当我们利用 AWT 来构件图形用户界面的时候,实际上是在利用操作系统所提供的图形库。对于 BiDi 来讲,AWT 组件里面的文字布局实际上依赖于底层操作系统。另外,AWT 组件对 BiDi 要求的控件布局也有诸多缺陷,因此 Java 软件开发人员如果要开发支持 BiDi 的应用程序,就不要采用 AWT。
更多精彩
赞助商链接