一种手持设备文字排版对齐的方法技术

技术编号:2877844 阅读:161 留言:0更新日期:2012-04-11 18:40
一种手持设备文字排版对齐的方法,包括以下步骤:首先,由手持设备的读入装置读入文字流,然后再由字符分析器对文字流进行分析处理,最后通过显示模块将文字显示在手持设备的显示装置上供人们阅读; 其特征在于:对文字流进行分析处理的字符分析器包括一个用于分析文字流中的字符单元的基础字符单元分析器,以及两个核心模块-断行模块和空白分配模块,断行模块利用基础字符单元分析器,决定在文字流的什么部位可以断行,从而保证文字排版能够遵守中文排版规则(如标点禁排规则、不可拆单元规则),而空白分配模块则在基础字符单元分析器的基础上,采用优先分级的方式高效率地在一行文字之间分配空白,保证文字行的两端与左右边界对齐、空白在文字之间合理分配。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术属于文字排版处理领域,具体涉及。显然,采用以上的方法存在以下的不足(1)行尾不能对齐,不符合人们的阅读习惯和审美观点,当文中存在数字和西文字符时,这个问题显得尤其严重;(2)不符合中文排版的规范,违反文字的许多禁排规则,比如某些标点不能放在行尾,某些标点不能放在行首,数字和英文单词与中文之间应保持一定的空白,数字组合不可拆等。手持设备上文字排版的上述不足影响了手持设备的发展,制约了基于手持设备的电子书(eBook)产业的发展。为达到以上目的,本专利技术采用的技术方案是,包括以下步骤首先,由手持设备的读入装置读入文字流,然后再由字符分析器对文字流进行分析处理,最后通过显示模块将文字显示在手持设备的显示装置上供人们阅读;本专利技术所述方法中的对文字流进行分析处理的字符分析器包括一个用于分析文字流中的字符单元的基础字符单元分析器,以及两个核心模块——断行模块和空白分配模块,断行模块利用基础字符单元分析器,决定在文字流的什么部位可以断行,从而保证文字排版能够遵守中文排版规则(如标点禁排规则、不可拆单元规则),而空白分配模块则在基础字符单元分析器的基础上,采用优先分级的方式高效率地在一行文字之间分配空白,保证文字行的两端与左右边界对齐、空白在文字之间合理分配。本专利技术所述的空白分配模块在基础字符单元分析器的基础上,按以下的步骤采用优先分级的方式高效率地在一行文字之间分配空白1).假设一行的空白宽度为x,四分之一空白宽度为sp4;2).计算一行文字中,中文字符单元与西文字符单元、中文字符单元与数字字符单元的相邻点数量n1;3).若n1*sp4<x,则在每个相邻点分配空白p1=sp4,剩余空白x1=x-p1*n1;否则将空白x在各相邻点平均分配,即p1=x/n1,剩余空白为0,分配完成,退出空白分配流程;4).计算一行文字中标点符号“、,。?!”的数量n2;5).若n2*sp4<x1,则在上述每个标点后分配空白p2=sp4,剩余空白x2=x1-p2*n2;否则将剩余空白x1在上述各标点后平均分配,即p2=x1/n2,剩余空白为0,分配完成,退出空白分配流程;6).计算一行文字中,所有的空格的数量n3;7).若n3*sp4<x2,则在上述每个空格后分配空白p3=sp4,剩余空白x3=x2-p3*n3;否则将剩余空白x2在上述各空格后平均分配,即p3=x2/n3,剩余空白为0,分配完成,退出空白分配流程;8).计算一行文字中,所有的字符单元的数量n4;9).将剩余空白x3在上述各字符单元后平均分配,即p4=x3/n4,分配完成。本专利技术可用于手持设备的中英文排版软件,也可用于桌面系统的相关软件中,适用于文字的横向排版,也适用于文字的纵向排版。本专利技术的效果在于手持设备采用本专利技术所述的方法对文字进行排版处理后,可以极大地改善文字排版效果,可以有效地解决目前手持设备上所出现的文字行尾不能对齐及违反禁排规则的问题。而且,本专利技术可用于手持设备的文档编辑和阅读软件,也可用于桌面系统的同类软件中,本专利技术既适用于文字的横向排版,也适用于文字的纵向排版。附图说明图1是本专利技术的原理示意图;图2是本专利技术的空白分配流程图。如图1所示,,包括以下步骤首先,由手持设备的读入装置读入任意一段文字流;如读入这样一段文字流“日经BP社报道微软应该高兴了。据Aberdeen Group所发表的报告称,安全性最差的OS不是Windows,而是......。”然后再由字符分析器对文字流进行分析处理。本专利技术所述方法中的对文字流进行分析处理的字符分析器包括一个用于分析文字流中的字符单元的基础字符单元分析器,以及两个核心模块——断行模块和空白分配模块,断行模块利用基础字符单元分析器,决定在文字流的什么部位可以断行,从而保证文字排版能够遵守中文排版规则(如标点禁排规则、不可拆单元规则),而空白分配模块则在基础字符单元分析器的基础上,采用优先分级的方式高效率地在一行文字之间分配空白,保证文字行的两端与左右边界对齐、空白在文字之间合理分配。基础字符单元分析器将一段文字流分为多个字符单元,并将这些字符单元分类。一个字符单元包含一到多个字符。字符单元也被称为不可拆分单元,因为它只能在一行中显示。常见的字符单元类型有中文字符单元(包含一个中文字符)、西文字符单元(即西文单词)、数字字符单元、标点字符单元(如、,。?!等)、破折号字符单元、省略号字符单元等。断行模块利用基础字符单元分析器分析文字流,将文字流分为一个个字符单元(一个字符单元内可能有一到多个字符),只有在字符单元之间才能断行,而且某些字符单元不能放在行首或行尾。据此,断行模块将文字流分为若干小组(由一个或多个字符单元组成),每个小组的文字属于一行。对于本例,假设排版的行宽为338单位,(汉字)字号宽度为14单位。断行模块利用基础字符单元分析器,开始分析文字流。第一行从文字流的第一个字符开始排起,一个个字符顺序放在这一行,该行的剩余的空白也越来越少。当分析到“Group”时,发现第一行的剩余空白小于下一个字符“G”的宽度,并且在这儿断行符合拆行规则的要求,能保证不可拆分单元(英文单词)的完整,就决定在“Group”之前断行。所以,第一行的排版结果是“日经BP社报道微软应该高兴了。据Aberdeen”。第二行从“Group所发表的”排起,断行模块继续分析,排到“Windows”后,行宽达到332个单位,后面的逗号的宽度为14个单位,332+14大于338,所以逗号只能排到下一行。但是,按照禁排规则,逗号不能放在行首,所以必须从上一行尾拆下一个字。英文单词只能按音节拆开或者整个单词均放在下一行。这儿,由于“Windows”是一个比较短的单词,就不按音节拆了,整个单词都放在下一行。因此第二行最后的排版结果是“Group所发表的报告称,安全性最差的OS不是”。这一行的排版字符为23个,占用的宽度为278个单位,本行剩余的空白为338-278=60个单位。空白分配模块分析后得到的每个文字行,计算出每行文字的字符单元数,根据每行文字剩余的空白和每行文字的具体特征,决定字符单元之间的空白。这样得到的字符位置,算法快捷,效果显著。为了减少空白分配的计算时间,如果一行的最后一个字符的边缘,与右边的对齐点相差很少的象素时,实际上不进行空白分配的运算,而保持这一行的字符位置。这时候,虽然最后一个字符没有与其他行对齐,但是因为相差的象素很少,在视觉上察觉不到,因此在视觉上的对齐的。实施过程中,对于“很少的象素”可以根据手持设备的显示屏分辩率确定,当分辨率很高时,象素值可以稍大,当分辩率很低时,只能有一个象素的误差。如图2所示,空白分配的流程采用优先级方式1).首先,我们知道本例排版的行宽为338单位,(汉字)字号宽度为14单位,四分之一空为14/4=3.5单位,并且认为,当空白小于等于1个单位时,可以不再分配;2).我们还知道,第二行最后的排版结果是“Group所发表的报告称,安全性最差的OS不是”。这一行的字符为23个,占用的宽度为278个单位,本行剩余的空白为338-278=60个单位。让我们重点分析第二行的空白分配机制;3).这一行的空白宽度为x=60,四分之一空白宽度为sp4=3.5,忽略半个单位,那么,sp4=3本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:汤帜贾爱霞倪爱军王长桥张力
申请(专利权)人:北京北大方正电子有限公司北京大学计算机科学技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利