最近在研究一些小语种,比如阿拉伯语Arabic,这些语言显示与其他语言,比如英语、中文、日文,韩文,在显示上有很大区别,它们都是基本都是从右向左显示,正好与常见的文字显示方式相反,另外如果在这些小语种语言里再夹杂一些数字,英文或符号,却又是从左向右显示,也就是说,这些语言显示是双向的,一开始以为全世界文字显示都是一个方向LTR,看到这些国家的语言后,才知道原来还有一种与我们通常认为的正好相反的显示方式。
为了处理这样的文字,有一套专门的算法,叫[UBA](http://www.unicode.org/reports/tr9/)(unicode bidirectional algorithm),有兴趣可以阅读这个算法。另外,针对这样的算法,还有一个专门的工具叫[fribidi](https://www.fribidi.org/),它是开源的,这个工具定义了一些函数接口,使用这些函数,就可以很方便的处理像Arabic这样从右向左RTL双向显示的文字。下面主要介绍下在i586环境和ARM环境下的编译与使用:
###i586环境
在ubuntu14.04 32bits机器上编译,一般ubuntu环境默认会支持gcc编译,以及包含Glib库,所以这里没有什么前提条件,下载解压后,按步骤操作就可以编译成功执行。
####下载
目前版本是fribidi-0.19.7.tar.bz2
####配置编译
jack@jxes-VirtualBox:~/samba_share/fnt$ tar xjf fribidi-0.19.7.tar.bz2
jack@jxes-VirtualBox:~/samba_share/fnt/fribidi-0.19.7$ ./configure --prefix=/home/jack/a //prefix指定安装目录,如果不指定,默认是安装到系统user/bin,或user/local/bin下的
jack@jxes-VirtualBox:~/samba_share/fnt/fribidi-0.19.7$ make
编译成功后:
jack@jxes-Virtual