王文娟,吾守尔斯拉木,努尔麦麦提尤鲁瓦斯,邓俊
(1.新疆大学信息科学与工程学院,新疆乌鲁木齐830046;2.新疆大学多语种信息技术重点实验室,新疆乌鲁木齐830046)
随着信息技术尤其是移动互联网的发展,对多种系统平台上支持维吾尔文的需求日趋增高,对支持维吾尔文的系统和应用软件有着越来越迫切的需求,但维吾尔文的特点使得其处理方式不同于西文、中文,且更复杂,这给软件开发带来了很大的困难.基于Android平台的维吾尔文本阅读器的实现是目前需要解决且具有应用创新价值.迄今为止,Android原生ROM上的文本阅读器和第三方阅读器产品均不能正确显示维吾尔文本,存在维吾尔文字体支持不全和维吾尔文字符不能连笔黏合等问题.本文通过分析维吾尔文本在多款Android文本阅读器中打开时出现的显示问题,研究出解决正确显示维吾尔文本方法,最终实现了Android维吾尔文本阅读器.
维吾尔文有32个字母,120多个字符形式[1],属阿拉伯语系的拼音文字.它与现在各个平台上可以处理的西文和汉字有很大的区别.维吾尔文具有字符连笔、字符不等宽、右向输入、单一字符在单词中因位置不同有不同形状等特点[2].
维吾尔文字符分为具有确定Unicode编码的名义字符形式和字符在维吾尔文单词中所处位置的不同而显现出不同形状的变体显现形式[3,4].其中名义字符形式属于基本标准区编码范围,变体显现形式属于扩展区编码范围[5,6].维吾尔文字母的名义形式以及依据所处单词位置的不同而呈现的变体显现形式如图1所示.
图1 维文字符变体显现形式
维吾尔文单词由一个或者若干个字母组成,字母会根据所处单词中位置而发生形状的改变并进行精确的字符连笔黏合,如图2所示.
图2 维文字符连笔黏合
电子书阅读器是模拟纸质书的阅读方式用于阅读电子文本的产品.阅读电子文档的电子设备最早追溯到1974年来自施乐公司的Palo Alto Research Center由Nicholas Sheridon发明的名为Gyricon[7]的电子墨水技术.1998年推出的“火箭电子书”(Rockete Book)被业界普遍认为是市场上第一部电子书阅读器.2004年SONY公司在日本推出的Librie电子书阅读器是世界首个大规模量产商业化采用电泳显示器件或者称为电子墨水的产品,它标志着整个电子书阅读器行业进入了一个新的时代.2010年11月明基(BenQ)公告其6寸的电子书阅读器产品nReader K60推向市场.如今随着Android系统设备的普及,越来越多的移动客户端在此平台进行开发.基于Android的电子书阅读器软件将提升电子阅读的显示方式和普及其使用范围.电子书阅读器产业的发展带动了电子图书个人消费的增长,使得电子图书从B2B市场开始走向B2C市常 从而推动了整个出版产业的数字化进程[8].
目前Android应用市场的电子书阅读器在打开维吾尔文文本时均出现维文显示异常的现象.这是由于维吾尔文具有字符连笔、不等宽、右向输入、单一字符在词中因位置不同有不同形状等特点,导致阅读器不能良好支持维吾尔文本显示.
通过在Windows7系统下使用记事本软件打开维吾尔文本和Android2.3平台下的iReader阅读器打开SD卡中维吾尔文本显示效果分别如图3,4所示.
分析图3,4得出显示维吾尔文本存在两方面的问题:
1)Android系统缺少维吾尔文字体库导致某些维吾尔文字符显示成方块;
2)维吾尔文字符没有完成字符间的自动选形,即没有根据字符所处单词的位置进行连笔黏合.
阅读器不支持维吾尔文显示的原因:(1)Android从1.1到4.0版本的发展过程中虽然在Unicode国际化方面逐渐改进和增强,但仍然存在对中国少数民族语言文字不兼容或者兼容性不好的情况;(2)Android不支持维吾尔文是缺少维文字体库和维文自动选形引擎.因此要让阅读器支持维吾尔文本就要在其应用层中解决维文字体库的添加和维文字符自动选形处理.
图3 WIN7平台记事本软件打开维吾尔文本
图4 Android2.3平台iReader软件打开维吾尔文本
综上所述正确显示维吾尔文本需要解决两个基本难点:
1)在阅读器应用层添加维吾尔文字体库;
2)维吾尔文字符自动选形处理.
Android维文阅读器架构设计如图5所示.该软件基于Android系统底层文本排版引擎支持,在应用层完成阅读器功能模块和维文显示渲染引擎的设计,最后实现维吾尔文文本的正确显示.
图5 维文阅读器架构
让该款维文阅读器能像电脑平台记事本软件那样方便阅读本地硬盘中的维吾尔文本,主要实现如下功能:
1)支持SD卡文本自动查找操作;
2)模拟翻书效果;
3)阅读模式(夜间、日间模式切换)设置;
4)阅读字体大小设置;
5)阅读书签管理.
维文文本显示渲染引擎负责对SD存储卡中的维吾尔文本中的维文字符进行字体和选形的渲染工作,引擎结构如图6所示.
阅读器打开文本时先判断该文本的字符集编码区域,若属于西文、汉字等编码字符集,则采用传统方式打开文本;若属于维吾尔文编码字符集(维吾尔文的基本标准区编码范围在U+0600–U+06FF之间),则由维文显示渲染引擎进行渲染,流程如图7.
图6 维文文本显示渲染引擎结构
图7 维文文本渲染流程
维吾尔语在形态结构上属黏着语类型[9],处理维吾尔文自动选形的基本思想是把维吾尔语分解成若干个维吾尔文字符.把维吾尔语文本切割成逐个字符串输入自动选形模块,通过依据前面输入的维吾尔文字符和控制字符来确定当前维吾尔文字符的输入状态.在接收到维吾尔文字符数据后,依据该状态对维吾尔文字符或字符串进行选形,按照字符在词中出现的位置自动选择其对应的字形编码来替换该维吾尔文字符标准区编码,使前后字母的字形能准确相连[10].维吾尔文字符选形规则如图8.
设当前需要选形的维吾尔文字符为i,则i–1和i+1分别是当前字符前面和后面的字符[11].规定i–1,i,i+1字符值为0,表示非维文字符或者特殊字符,字符值为1时表示维吾尔文字符.根据字符值的不同判断字符的选形情况而实现维吾尔文自动选形算法规则.
Android系统没有提供维吾尔文字体库,因此默认不支持维文字符.在程序开发过程中通过使用Android SDK提供的setTypeface类可引入外部字体库文件,维文字体渲染的核心思想是使用setTypeface方法引入Android工程目录assets/font文件夹中的维文字体库UKK_TuzTom.ttf,在自动选形的基础上完成维吾尔文字体渲染,流程如图9.
图8 维文字符自动选形处理规则
图9 字体渲染流程
如图10所示,维吾尔文本在该款Android维文阅读器中完成了维文字体的添加和维文字符的连笔黏合,显示正确且美观.
图10 维文阅读器
通过Android平台多款文本阅读器对维吾尔文本的测试显示效果的对比和研究,结合维吾尔文自身的特点,开发、设计并实现能正确显示维吾尔文本的Android阅读器.该款自主研发的维文阅读器是首款脱离Android原生系统对维吾尔语不支持的影响、在应用层完成维吾尔文显示渲染引擎开发的阅读器.
新疆少数民族常用的语言除维吾尔语还有哈萨克语、柯尔克孜语,这三种语言的文字特点和语法习惯一致,只是个别字母的字符集编码不一样[12].通过对渲染引擎进行修改及补充容易实现哈萨克语、柯尔克孜语文本阅读器,这将大力推进新疆国民经济和社会信息化发展,加快少数民族地区信息化建设和促进信息产业发展.