BiDi简介

BiDi 的英文全称是 bi-directional language ,即双向字符集语言。这种语言主要包括希伯来语、阿拉伯语和乌尔都语等。它们的最大特点就是允许双向文本 也就是说,他们的本土语言书写顺序是从右往左,而其中的英文单词或商标符号从左向右显示。

 

BiDi 算法是为了在计算机世界里实现 BiDi 效果的而产生的。 BiDi 算法用于指定文本的文字方向。 BiDi 文本是指通常在一段文本中包含两种文字方向,水平 LTR 方向 (从左到右)的文本中包含 RTL 方向 (从右到左)的文本,或是 RTL 方向 的文本中包含 LTR 方向 的文本,主方向称为全局方向。

使用 RTL 方向的语言主要是在中东地区,如阿拉伯语和希伯来语。在这些语言中全局方向是 RTL ,但是文本中嵌入的数字和其它 LTR 方向 语言的地址、缩写以及引用会使用 LTR 方向。实现 BiDi 算法和对字符串进行重排序的类库称为存储布局引擎( Storage Layout Engine )。

 

逻辑顺序( Logical Order 视觉顺序( Visual Order

逻辑顺序和视觉顺序是 BiDi 中两个重要的概念,逻辑顺序指的是人们阅读和从键盘上输入的文字顺序,文本在内存里也是以逻辑顺序存储的。视觉顺序则是文本在屏幕或是打印机中显示的顺序。

如下面的例子,小写字母代表英语等 LTR 方向 语言,大写字母代表阿拉伯语等 RTL 方向 语言,假设全局方向为 LTR

视觉顺序: English CIBARA text

逻辑顺序: English ARABIC text

在输入的时候采用逻辑顺序,由于全局方向是 LTR ,因此以 LTR 方向将 English 输入和显示之后,输入 ARABIC 时会以 RTL 方向 对文本进行显示,即 CIBARA ,但是会以 ARABIC 的顺序进行存储。输入 text 时又会以 LTR 方式进行输入和显示。

 

在显示或打印文本的时候,需要对文本进行重排序,将逻辑顺序转换为视觉顺序,某些文本以 LTR 方向显示,某些文本以 RTL 方向显示。 Unicode 标准规定了一种从逻辑顺序到视觉顺序的转换算法,通常以整个段落作为输入,屏幕的换行也会影响 BiDi 算法输出文本的实际显示位置。重排序算法的输出也用于光标的移动和选择。

除了显示文本以外, Unicode 对于计算机内部文本的处理,如拷贝,排序,查找等,都是以逻辑顺序处理的。这些操作依赖于字符匹配的顺序,因此必须以统一的顺序进行存储和处理。有的遗留系统为了避免在显示的时候对文本重排序,以视觉顺序对文本进行存储,在跟这些系统交换数据的时候,需要将数据从视觉顺序转换为逻辑顺序或是从逻辑顺序转换为视觉顺序。这种不是为了显示目的的转换称为存储布局转换( Storage Layout transformation )。

 

除了对 键盘 , Locale, 字体等 NLS National Language Support 基本的支持之外, BiDi 还支持:

l         Text reordering

l         Shaping

l         Geometry mirroring, Right_to_Left geometry

ICU4J

ICU(International Component for Unicode) IBM 与开源组织合作研究 , 基于 "IBM 公共许可证 " 的用于支持软件国际化的开源项目。 ICU 实现了对数字、日期、货币等提供国际化支持,提供了强大的 BIDI 算法,对阿拉伯语和希伯来语等 BiDi 语言提供了完善的支持。 ICU 分为 ICU4J ICU4C ,分别对应 Java c/c++ 平台。 ICU4J Sun JDK1.1 采用并随 JDK 版本更新。最新的 ICU4J 库可以从 http://icu-project.org/ 网站上下载。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值