维吾尔文网页研究及Android维文浏览器的实现
2014-02-27吾守尔斯拉木艾尼宛尔托乎提袁廷磊赵志成
邓 俊,吾守尔·斯拉木,艾尼宛尔·托乎提,袁廷磊,赵志成
(新疆大学 信息科学与工程学院,新疆 乌鲁木齐 830046)
1 引言
目前全球互联网用户总量已经达到17亿左右。市场调研公司Gartner的最新调查显示手机将在2013年超越PC成为最流行的网页浏览工具。3G无线网络的快速发展以及智能手机的快速普及,尤其是基于Android平台设备异军突起,让大家可以更加快速便捷的通过移动设备接入互联网。
新疆是多民族聚居、多元文化融合的地区,少数民族语言文字不仅是日常生活重要的交流工具,更作为民族文化的载体承载着各民族绵长的历史和过往的繁荣。为让更多的人了解中国新疆少数民族同胞文化,让新疆多方面完美地展现全国走向世界,就需要借助互联网的这一有力的臂膀。针对目前Android平台在国内市场的普及以及它自身具有的潜在发展力,结合新疆多种少数民族文化融合的背景,让民族朋友通过Android手机浏览器访问维吾尔文网站来共享互联网信息是目前需要解决且具有应用创新意义的事情。截至作者完稿时Android原生ROM手机及平板上的系统浏览器和第三方浏览器均不能正确显示新疆少数民族文字网页,存在字体支持不全以及字符不能连笔粘合等问题。
通过多款Android手机浏览器在访问维文网站时出现的问题进行详细对比和深入研究,总结出访问维文网站需要攻克的难点,并设计维文浏览器架构,最后编码实现维文浏览器。
2 维吾尔语文字及维文网页的研究
2.1 维吾尔语文字研究
维吾尔文属于阿拉伯语系的拼音文字,它与现在各个平台上可以处理的汉字和西文有很大的区别[1]。维吾尔文具有字符连笔、不等宽、右向输入、单一字符在词中因位置不同有不同形状(首写形、中写形、尾写形和独写形)等特点[2]。阿拉伯文在Unicode中有基本阿拉伯文(U+0060—U+06FF)和扩充阿拉伯文(U+FE70—U+FEFF)两种格式。其中不但包含所有阿拉伯语字符和符号,还有一定的空间给予用户扩充。维吾尔文借用阿拉伯语和部分波斯文字母,所以维吾尔文的编码可以在阿拉伯文编码的基础上扩充[3]。维吾尔文的基本标准区编码范围在U+0600—U+06FF之间,用于进行信息交换、传输和保存。
维吾尔文字符分为名义字符形式和变体显现形式[4]。其中名义字符形式是指在Unicode中有确定编码的名义表现形式,属于基本标准区编码范围;变体显现形式是指字母字符由于在维吾尔文字中所处的位置的不同而实际显现出不同形式的字符,属于扩展区编码范围[5]。图1所示是维文字母的名义形式以及依据所处单词位置的不同而呈现的变体显现形式。
维吾尔文单词由一个或者多个字母组成,如前所述每个字母会根据所处单词中位置的不同而发生形状的变化并进行字符的连笔黏合[6],如图2所示。
图2 维文单词组合及字符连笔黏合
2.2 维吾尔文网页的研究
(1) 网页编码及字体库
网页编码以UTF-8编码为主,UTF-8是一种支持多语言的国际化编码格式,能够让不同语言操作系统和浏览器的用户访问各种语言文字网站时不用下载语言包即可正常浏览,维吾尔文网站亦采用UTF-8编码。在字体方面,绝大部分维文网站挂载压缩字库EOT文件,少数维文网站挂载EOT字体库的同时添加TTF字体。目前Android系统只支持TTF格式字体文件[7]。基于Android WebKit内核的浏览器访问挂载EOT字体库的网站时,浏览器调用Android系统字体库,访问挂载TTF字体的网站时,浏览器可以显示网站引入的外部TTF字体效果。
(2) HTML解析及网页挂载字体方法
网页使用级联样式表CSS文件挂载外部字体,CSS内容如:@font-face{font-family: "Alpida";src: url("/ulinix.eot");}。通过该代码片段即可引入网站服务器中根域名下/ulinix.eot字体库。
3 Android浏览器
3.1 浏览器的发展
浏览器是基于超文本传输协议的客户端软件[9]。Android浏览器基于WebKit引擎,WebKit是开源的浏览器网页排版引擎,包括WebCore排版引擎和JSCore脚本引擎,但Android 2.2开始采用Google自主研发的V8 JS解析引擎。Android 2.2、2.3和Chrome 5.0.328.0均采用WebKit r54731内核版本。
Android SDK对WebKit进行了封装,提供WebView接口供开发人员使用,无需了解WebKit细节就可以将浏览器集成到应用程序中。项目使用WebView及其他Android SDK提供的接口在应用层开发维文浏览器。
安卓市场的手机浏览器发展至今逐渐形成三大阵营。第一类是以Chrome、Firefox、360、海豚等浏览器为代表的阵营,这类浏览器的网页解析工作大部分基于Android系统的WebKit内核,Firefox基于Gecko内核[10],特点是高度还原页面特性,解析渲染出和电脑版浏览器一样的效果;第二类是以UC浏览器(U2内核)、Opera Mini(欧朋)、QQ、百度等浏览器为代表的阵营,采用服务器/客户端混合运算架构,这类浏览器的内核实际在“云端”,通过服务器对网页数据进行实时压缩处理,然后下发到客户端解析,特点是可以快速获取页面内容,并节省网络流量;第三类是UC8.0.6及以上版本 (U3内核)的自主内核浏览器。第三代UC内核采用无损云压缩引擎技术,对页面的解析和渲染完全依靠U3内核,不再依靠服务器。与U2内核的云压缩引擎不同,无损云压缩引擎不会对页面进行转码,只对页面中的部分可压缩元素进行处理,发送到客户端后再对压缩过的数据进行解压。使用U3内核不仅可以对网页进行无损的完全解析,而且可以实现云端架构独有的省流量、高效等特点[11]。
发展至今,国内外Android市场的手机浏览器在访问维吾尔文网页时仍均出现文字显示异常的现象。这是由于阿拉伯语语系文字具有字符连笔、不等宽、右向输入、单一字符在词中因位置不同有不同形状等特点导致Webkit内核或云服务器端不能正确解析维文造成的。要正确显示维文网页就必须架构维文网页渲染引擎。
3.2 浏览维文网页效果的比较
通过多款浏览器对维文网址导航(www.ulinix.com)网站进行访问得出访问效果对比表(表1)。
表1 维文网页浏览效果对比表
续表
1) 若网页服务器端挂载EOT格式字体库,Android浏览器调用系统TTF字体渲染导致维文字符显示不全,出现方块。
2) 维文字符没有连笔粘合,即没有完成字符之间的自动选形。
3) 网页内容还原失真。
正确显示维文网页需要解决三个问题:
1) 维文TTF字体库的添加;
2) 维文字符自动选形;
3) 正确解析维文网页。
3.3 Android浏览器不支持维文网页的原因
Android系统从早期的Android 1.1到4.0版本,虽然在国际化方面逐渐改进和增强,但针对中国少数民族语言文字存在不兼容情况,且大部分手机生产厂商为考虑到手机硬件性能等各方面因素在定制手机ROM的时候阉割了不常用的模块,其中包括对阿拉伯语系的支持。Android系统不能支持维吾尔文正确显示是缺少维文字体库和维文自动选形引擎。要让浏览器支持维吾尔文网站就要在访问网站时完成维文字体的添加和对网页中维文字符完成自动选形处理。
最新的Android 4.0.3系统对阿拉伯语系文字显示良好,但使用第三方浏览器(如欧朋、UC)等基于云服务或自主内核的浏览器)访问维文网页时依然出现字符显示不全和维文字符无自动选形的情况。
4 维文浏览器的设计
4.1 架构设计
Android操作系统采用开源浏览器排版和渲染引擎WebKit[12],通过调用WebKit提供的各种接口和核心模块实现网页浏览器的各项功能。维文网页解析引擎服务于UI显示框架之下,用于完成自动选形及维文字体渲染的工作。浏览器架构设计如图3所示。
图3 浏览器架构图
4.2 功能设计
为让手机浏览器能像电脑浏览器方便访问互联网上的各种维文网页内容和信息资源,手机浏览器主要需要实现以下功能:
1) 支持正确显示维吾尔文网站内容。
从以上所列史料可以看出,相较于宋初人的褒贬参半,南渡之后的众人立场一致。司马光之时北宋王朝根基已稳,但知识、思想与信仰世界的危机依然存在,因为要从根本上确立国家的权威和民族的信心,主要应当依赖于人们对于同一文明和共同伦理的认同。 〔23〕(P177)
2) 支持常用的网络传输协议,如HTTP、HTTPS、FTP、SSL、TLS。
3) 支持JAVASCRIPT脚本的事件触发和执行,解析网页脚本实现对DOM树的解析和操控。
4) 支持CSS实现其规则和属性的解析和应用。
5) 支持文件的多线程下载,实现对MIME文档类型的识别和处理。
6) 支持多页面的打开与页面之间的手势切换操作。
7) 支持夜间模式。
8) 支持浏览器用户属性设置。
9) 支持常用图像文件格式。
4.3 维文网页渲染引擎
图4 维文网页渲染引擎结构
网页渲染引擎又称网页排版引擎,负责取得网页HTML、XML、CSS、图像等内容并进行字体库的渲染。维文网页渲染引擎的功能是在WebKit引擎的基础上增加维文自动选形和维文字体渲染,结构如图4所示。将维文网页HTML解析成DOM树进行遍历[13],渲染过程采用分段传输、分段解析渲染策略,分段解析HTML并完成自动选形及字体渲染。分段策略提高了效率,有利于浏览器的交互性能,但算法复杂度增加。
4.4 URL请求流程
维文浏览器在请求URL并进行显示时,先判断该页面的文字编码区域,若属于中英文网页,则采用传统浏览器请求显示URL的方式,基于WebKit内核并调用系统字体对网页进行渲染显示;若属于维吾尔文网页,则由维文网页渲染引擎和WebKit同时对网页进行渲染。URL请求流程如图5所示。
4.5 自动选形模块
维吾尔语在形态结构上属黏着语类型[14],处理维吾尔文自动选形的基本思想是把维吾尔语分解成若干个维吾尔文字符组成。把维吾尔语文本语料输入自动选形模块,该模块依据前面输入的维吾尔文字符和控制字符来确定当前维吾尔文的输入状态,在接收到维吾尔文字符数据后,依据该状态对维吾尔文字符或字符串进行选形, 按照字符在词中出现的位置自动选择其对应的首写形、中写形、尾写形或独写形字形编码(扩展区编码)来替换该维吾尔文字符标准区编码, 使前后字母的字形能准确相连。设置当前需要选形的字符为i,则i-1和i+1分别是当前字符前面和后面的字符[15]。约定当 i-1,i,i+1字符值为0表示非维文字符或者特殊字符,字符值为1时表示维文字符,根据字符值的不同判断字符的选形情况,使用N-S盒图来表示自动选形模块的算法和程序的运行流程,如图6所示。
图5 URL请求流程图
图6 自动选形算法N-S盒图
4.6 维文字体渲染模块
Android WebView没有提供挂载外部字体库的接口,无法像其他控件调用setTypeface方法引入外部字库。维文字体渲染模块的核心算法是使用CSS引入Assets文件夹中的字库,在自动选形的基础上完成挂载维文字体。维文字库渲染流程如图7所示。
图7 维文字库渲染流程
4.7 维文浏览器运行效果展示
Android 2.3系统浏览器访问www.ulinix.com显示效果如图8所示;维文浏览器显示效果如表2和图9所示,比较得出该款Android手机维文浏览器解析维文网页的显示效果和IE电脑版浏览器的显示效果一致,高度还原维文网页页面特性。
图8 Android 2.3系统浏览器显示效果
表2 维文网页浏览效果对比表
5 结语
通过Android平台多款浏览器浏览维文网页的显示效果的对比和研究,结合维文文字特点,设计出正确显示维吾尔文网页的Android浏览器。该款自主研发的维文浏览器是国内外首款脱离Android原生系统对维吾尔文不支持的影响,在应用层进行维文网页渲染引擎开发的Android浏览器。
然而新疆地区使用的语言除维吾尔语还有哈萨克语、柯尔克孜语,这三种语言的文字特点和语法习惯一致,只是个别字母的字符集编码不一样。通过对渲染引擎进行修改及补充,实现哈萨克语、柯尔克孜语文字网页浏览器,这将大力推进新疆国民经济和社会信息化发展,加快少数民族地区信息化建设和促进信息产业发展。
[1] 缪成,袁保社,吾守尔·斯拉木,李莉.维、哈、柯、汉、英多文种处理平台的设计与实现[J].计算机工程,2004,30(10):71-73.
[2] 靳简明,丁晓青,彭良瑞,王华.印刷维吾尔文本切割[J].中文信息学报,2005,18(5):76-83.
[3] DB65/2190-2005,信息交换用维吾尔文、哈萨克文、柯尔克孜文编码字符集、基本集与扩展集[S].
[4] 苏国平,缪成,夏国平.基于OpenType的维哈柯文自动选形引擎的设计与实现[J].中文信息学报, 2007,21(4):116-121.
[5] 赵永进,郭大庆,卢有飞,等.维文软件中排版关键技术的研究与实现[J].计算机工程与应用,2007,43(22):106-108.
[6] 卢有飞,张伟,张岩,等.维文版Office设计中关键技术的研究与实现[J].中文信息学报,2007,21(2):112-116.
[7] 董治江,吴健,钟义信.在ICU中实现少数民族文字的处理[J].中文信息学报,2004,18(2):66-72.
[8] Crescenzi V,Mecca G.Merialdo,P Roadrunner.Towards Automatic Data Extraction from Large Web Sites[A].In International Conference on Very Large Data Bases(VLDB2001)[C].Roma,Italy:September l,2001,1-14.
[9] 杨留慧,雷航,郭文生.嵌入式浏览器解析排版并行化研究与设计[J].计算机应用,2011,31(12):331-332.
[10] Gecko[EB/OL].http://zh.wikipedia.org/wiki/Gecko.
[11] 浏览器[EBOL]. http://baike.baidu.com/view/7718.htm.
[12] Stringer,M.Sussex,Brighton,UK.The Webkit tangible user interface:a case study of iterative prototyping[J].Pervasive Computing,IEEE,2005,11(21):35-41.
[13] 张瑞雪,宋明秋.逆序解析DOM树及网页正文信息提取[J].计算机科学,2011,38(4):213-215.
[14] http://baike.baidu.com/view/3117338.htm中国少数民族语言文[DB/OL].
[15] 热依曼·吐尔逊,吾守尔·斯拉木.维吾尔文手机输入关键技术研究与实现[J].中文信息学报,2005,20(2):72-77.