一种Android浏览器处理复杂文本的方法

文档序号:6425058阅读:302来源:国知局
专利名称:一种Android浏览器处理复杂文本的方法
一种Android浏览器处理复杂文本的方法
技术领域
本发明属于计算机软件领域,是Android平台上Web浏览器的一个扩展,以支持诸如阿拉伯文、希伯来等复杂文本的整形和显示处理,从而实现Web浏览器的多国语言支持功能。
背景技术
目前世界上的语言主要有LTR-TTB (从左向右,从上向下)、RTL-TTB (从右到左,从上向下)和TTB-RTL(从上向下,从右向左)三种书写体系。LTR-TTB方式的文本逻辑和可视顺序基本上是一致的,但RTL-TTB方式则不然,如图1所示。相对一般语言字符(如拉丁文,从左到右按线性方式布局)来说,这种允许双向渲染、具有上下文相关显形(即根据相邻字符而显现不同字型)、具有组合字符、具有特殊的断字和对齐规则等特征的文字被称为复杂文字,又把由复杂文字书写的文章段落称为复杂文本。Android平台自带的Web浏览器仅仅支持LTR-TTB方式的书写体系,因此无法正确地处理属于RTL-TTB方式的书写体系文字,如阿拉伯文字(用于阿拉伯语、波斯语、普什图语和乌尔都语)和希伯来文字(用于希伯来语和意第绪语),更是无法完成双向文本(即 RTL和LTR字符同时存在的情况)在浏览器中的正确布局和显示。Android系统自带的Web浏览器并不支持复杂文本的整形与显示,即不能够进行双向性、字符重排序、上下文相关显形、文本对齐和断字断行等相关特征的语言处理,在浏览此类语言的网页时,如阿拉伯语、希伯来语、叙利亚语、泰文、越南语、印度语系,由于不正确的文本渲染,势必会影响用户阅读,给用户造成不便。

发明内容本发明所要要解决的技术问题在于提供一种Android浏览器处理复杂文本的方法,对复杂文本进行处理以满足不同语言阅读习惯的需求。本发明采用以下技术方案解决上述技术问题一种Android浏览器处理复杂文本的方法,包括如下步骤步骤一分片处理模块依据Unicode标准化组织定义的双向算法将字符串分成多个条目,要求每个条目中的字符具有同样的语言和方向属性,再将每个条目标记成片段 (run),每个片段中的字符具有同样的风格、字体、尺寸,以便整形引擎处理;步骤二 整形处理模块根据输入片段(rim)的分析,调用不同的文字处理器,如阿拉伯文处理器、希伯来文处理器、印度文处理器,这些文字处理器封装了各个语言文字特征的处理规则;步骤三方向处理模块负责将整形后的字型序列按文字的双向属性、字距进行调整及排序;步骤四将处理后的复杂文本序列交由Skia图形引擎的文本函数接口执行输出, 从而完成复杂文本的正确渲染。
本发明的优点在于经过复杂文本的整形处理及字符重排序,使得浏览器能够正确渲染包含混合方向的网页内容,满足了用户从左到右或从右到左的阅读习惯。

下面参照附图结合实施例对本发明作进一步的描述。图1是英语和阿拉伯文混合的双向文本示意图。图2是Android系统中Web浏览器的基本工作流程图。图3是本发明复杂文本处理流程图。
具体实施方式Android系统中Web浏览器的基本工作流程如图2所示,为使浏览器支持复杂文本的布局和渲染,必须修改浏览器的布局/渲染处理模块。对于复杂文本语言,输入的Unicode字符串必须经过布局整形引擎处理,才能得到正确的显现字型序列及字型之间正确的位置数据。图3为本发明复杂文本处理流程图。 按照先后顺序可分为3大处理模块分片处理模块、整形处理模块、方向处理模块。具体步骤如下步骤一分片处理模块依据Unicode标准化组织定义的双向算法将字符串分成多个条目,要求每个条目中的字符具有同样的语言和方向属性,再将每个条目标记成片段 (run),每个片段中的字符具有同样的风格、字体、尺寸,以便整形引擎处理;步骤二 整形处理模块根据输入片段(rim)的分析,调用不同的文字处理器,如阿拉伯文处理器、希伯来文处理器、印度文处理器,这些文字处理器封装了各个语言文字特征的处理规则;步骤三方向处理模块负责将整形后的字型序列按文字的双向属性、字距进行调整及排序;步骤四将处理后的复杂文本序列交由Skia图形引擎的文本函数接口执行输出, 从而完成复杂文本的正确渲染。本发明采用了支持OpenType字体的复杂排版特性的轻量级的HarfBuzz整形布局引擎来完成复杂文本的整形处理,使用分片及方向处理模块来完成双向性的支持,即使在绘制大量双向文本的情况下,也不会影响效率,且能够精确的显示和布局网页内容。
权利要求
1.一种Android浏览器处理复杂文本的方法,其特征在于包括如下步骤步骤一分片处理模块依据Unicode标准化组织定义的双向算法将字符串分成多个条目,要求每个条目中的字符具有同样的语言和方向属性,再将每个条目标记成片段,每个片段中的字符具有同样的风格、字体、尺寸,以便整形引擎处理;步骤二整形处理模块根据输入片段的分析,调用不同的文字处理器,这些文字处理器封装了各个语言文字特征的处理规则;步骤三方向处理模块负责将整形后的字型序列按文字的双向属性、字距进行调整及排序;步骤四将处理后的复杂文本序列交由Skia图形引擎的文本函数接口执行输出,从而完成复杂文本的正确渲染。
2.如权利要求1所述的一种Android浏览器处理复杂文本的方法,其特征在于所述文字处理器包括阿拉伯文处理器、希伯来文处理器、印度文处理器、泰文处理器。
全文摘要
一种Android浏览器处理复杂文本的方法,包括分片处理模块依据Unicode标准化组织定义的双向算法将字符串分成多个条目,要求每个条目中的字符具有同样的语言和方向属性,再将每个条目标记成片段;整形处理模块根据输入片段的分析,调用不同的文字处理器;方向处理模块负责将整形后的字型序列按文字的双向属性、字距进行调整及排序将处理后的复杂文本序列交由Skia图形引擎的文本函数接口执行输出,从而完成复杂文本的正确渲染。本发明经过复杂文本的整形处理及字符重排序,使得浏览器能够正确渲染包含混合方向的网页内容,满足了用户从左到右或从右到左的阅读习惯。
文档编号G06F17/25GK102194004SQ201110139439
公开日2011年9月21日 申请日期2011年5月25日 优先权日2011年5月25日
发明者周海发 申请人:福州瑞芯微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1