快速业务通道

在 Java 开发过程中支持双向字符集语言(BiDi) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

在 Java 开发过程中支持双向字符集语言(BiDi)

时间:2011-04-30 IBM 赵一三

BiDi 是什么

W3C 对双向字符集语言(即 BiDi)进行了如下的定义:

双向字符集语言通常是指文字可以从左到右(LTR)和从右到左(RTL)双向书写的文字。 例如,阿拉伯和希伯来语言的文字书写通常是从右到左,但是其中的其它字符集(例如拉丁 文字)依然保持从左到右的格式。当然其它的语言文字,例如英文,如果包含阿拉伯或者希 伯来文字摘要的话,也可以是双向书写的。通常将主方向称为全局方向。

对于介绍一种的新的知识或者技术,笔者通常习惯于从“what、 why、who、how”几个方 面来进行讲述。即 BiDi 是什么,这在本节中作了介绍。为什么需要支持 BiDi,这会在下一 节中介绍。随后则偏重于介绍作为一名 Java 软件开发人员在支持 BiDi 的时候要考虑哪些 问题,如何做才能实现 BiDi 支持,以及一些常见的问题和解决技巧。

为什么需要 BiDi 支持

对于使用双向字符集地区的人来说,对于本国文字和其它字符集文字,例如和英语混排的 情况,在纸面上书写将是一件需要有规划技巧的事情。如下所示:

CIBARA english CIBARA

CIBARA 代表阿拉伯字符,english 代表英语字符。书写者需要从右到左书写字符“A”“ R”“A”“B”“I”“C”,在纸面就变成 CIBARA。随后要书写英文字符 english,这段字 符要从左到右显示,这就需要书写者要先规划合适的空白来书写文字,然后继续下面的阿拉 伯字符的显示。否则要么空间不够,写不下那么多文字,要么留下一段空白影响文档的整体 结构。

计算机的出现对双向字符集的录入应该是一大福音,上面所述的空白规划将不再是问题。 当计算机切换到 BiDi 文字的录入方式后,对于一般的双向字符集字符,例如阿拉伯文字, 显示将遵循全局方向从右到左(RTL)。当需要输入英文字符的时候,计算机将自动处理英文 字符的显示,将先输入的字符自动向左边排,后输入的字符显示在前面字符的右侧,将先输 入的文字顶到了左侧,而录入光标将一直停留在英文录入的最右侧,依次处理随后的文字录 入,并显示。这样录入者就不用关心这段英文文字将占据多大空间,而且英文内容保持了从 左到右(LTR)的方向。当用户需要输入阿拉伯文字的时候,阿拉伯字符将自动放置到英文内 容的左侧,录入光标也跟随到了阿拉伯字符的左侧,开始正常的从右到左(RTL)的录入,并 显示。

计算机软件要在使用双向字符集的地区(主要是中东地区)销售、使用,如果没有 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 的转变,以及控件的布 局。例

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号