电子书阅读器的文本显示方法及装置与流程

文档序号:11780089阅读:284来源:国知局
电子书阅读器的文本显示方法及装置与流程
本发明涉及电子书阅读设备的文本处理领域,具体地,是一种电子书阅读器的文本显示方法与使用该方法的装置。

背景技术:
现有很多电子设备,如手机、平板电脑等均具有电子书阅读功能,这些电子设备均设有显示屏以显示电子书的文本,因此可以被称为电子书阅读器。电子书阅读器的存储器存储有电子书的文本,这些文本通常是经过编码后的文本,不能直接被人们所阅读,电子书阅读器通常需要将文本转换成特定的字符并显示在显示屏上,人们通过显示屏看到的都是经过编码转换后的字符。通常,电子书的文本数据量较大,难以在显示屏的一屏中全部显示,因此需要分成多页显示,每一次显示一页数据。为了适应不同电子书阅读器的显示屏大小,现有的电子书文本中并不会带有分页符,而是由电子书阅读器读取电子书文本的数据后,根据显示屏的大小对文本的数据进行分页并显示。但是,由于不同电子设备的显示屏大小不同,且人们阅读电子书时往往会改变显示的设置,如调整显示的字符的字号大小,改变字符的倾斜度,或者改变文本在显示屏上显示时的页边距、页宽等,这都会导致显示屏所显示的每一页的字符数量改变。因此,现有的电子书阅读器都会根据人们阅读时所设定的显示设定格式对电子书的文本进行重新计算分页,并计算出总页码,以便人们翻页。现有的电子书阅读器通常是预先计算电子书文本所显示的总页码,并计算某一数据段在整个电子书文本中的百分比位置来估算该数据段所在的页码。在人们跳页至某一页码时,所显示的数据是通过百分比估算出来的数据段对应的显示文本。然而,估算出来的页码与真实的排版页码往往不一致,导致人们翻页后显示的内容不正确,还会导致人们在不断往前翻页时最终出现电子书内容不连续或是有重复部分或是有大段空白的问题,且在阅读不同语言的各种编码的文本时,容易出现乱码,影响人们的阅读。

技术实现要素:
本发明的主要目的是提供一种翻页时页码显示精确的电子书阅读器的文本显示方法。本发明的另一目的是提供一种方便人们精确翻页并方便阅读电子书的电子书阅读器的文本显示装置。为了实现上述的主要目的,本发明提供的电子书阅读器文本显示方法包括记录矢量字库中每一个字符在不同字号下的字符宽度的数据,并记录文本的显示设定信息,将文本的数据划分为一段以上的数据段,根据显示设定信息对每一数据段进行预排版,确定在显示屏上显示的每一页显示文本对应在文本中的起止位置,根据接收的所需显示的页码查找该页码的显示文本对应的数据在文本中的起止位置,将起止位置之间的数据读出并转换成编码数据,根据编码数据从矢量字库中查找相应的字符图像,根据显示设定信息将字符图像显示在显示屏上。由上述方案可见,电子书阅读器先对文本的数据分段,并对每一段数据段进行预排版,从而获得在显示屏上显示的每一页显示文本在电子书文本的起止位置。显示某一页显示文本时,可以根据需要显示的页码快速精确地查找到对应的文本中的数据,并将文本中的数据转换成编码数据,并查找字符图像显示。由于文本中的所有数据都经过精确的分页排版,人们翻页时不会出现乱码或者内容不连续的现象。一个优选的方案是,对每一段数据段进行预排版的步骤是:根据显示设定信息确定显示屏所显示的一页显示文本的行数,并计算每一行显示文本的长度,将当前数据段的数据转换成编码数据,获取每一编码数据对应字符的字符宽度数据,依次累加字符的字符宽度,在累加的字符宽度大于一行显示文本长度或读取的字符为换行符时设定完整一行,在行数到达一页显示文本行数时设定完整一页,并记录每一页的起止位置。由此可见,通过对每一页的行数进行计算,且对每一行所显示的字符进行计算,能够精确地计算出每一页所显示的字符的数量,并能够精确地计算出在显示屏上所显示的每一页显示文本对应在电子书文本中的起止位置。进一步的方案是,预排版步骤中,在当前数据段剩余数据不足一页显示文本的数据量时,将当前数据段剩余的数据合并至下一数据段。这样,确保每一段不足一页的剩余数据不会被忽略或者独立被编排成一页,确保对页码计算的精确性。更进一步的方案是,在显示设定信息更改后,根据更改后的显示设定信息对每一数据段重新进行预排版,并记录重新预排版后的每一页显示文本对应在文本中的起止位置。可见,对于每一次显示设定信息的更改,都对电子书文本进行重新的预排版处理,确保显示设定信息更改后在显示屏上所显示的显示文本与页码正确,避免出现乱码或者内容不连续的问题。为实现上述的另一目的,本发明提供的电子书阅读器的文本显示装置包括字符宽度记录模块、预排版模块、预排版信息保存模块以及显示模块,字符宽度记录模块用于记录矢量字库中每一个字符在不同字号下的字符宽度的数据,预排版模块用于记录文本的显示设定信息,并将文本的数据划分为一段以上的数据段,根据显示设定信息对每一数据段进行预排版,确定在显示屏上显示的每一页显示文本对应在文本中的起止位置,预排版信息保存模块用于保存预排版信息至电子书阅读器的本地存储器中,显示模块用于根据接收的所需显示的页码查找该页码的显示文本对应的数据在文本中的起止位置,将起止位置之间的数据读出并转换成编码数据,根据编码数据从矢量字库中查找相应的字符图像,根据显示设定信息将字符图像显示在显示屏上。由上述方案可见,电子书阅读器首先对文本进行预排版,确定显示屏所显示的每一页显示文本对应在电子书文本中的起止位置,人们翻页时,电子书阅读器只需要根据需要显示的页码查找出对应的文本数据并转换成相应的字符,显示相应的字符图像即可。附图说明图1是本发明电子书阅读器的文本显示装置实施例的结构框图。图2是本发明电子书阅读器的文本显示方法实施例的流程图。图3是本发明电子书阅读器的文本显示方法实施例中记录字符宽度的流程图。图4是本发明电子书阅读器的文本显示方法实施例中对文本预排版的流程图。图5是本发明电子书阅读器的文本显示方法实施例中计算一行显示文本所显示的字符数的流程图。图6是本发明电子书阅读器的文本显示方法实施例中文本显示的流程图。以下结合附图及实施例对本发明作进一步说明。具体实施方式本发明的电子书阅读器文本显示方法应用在诸如手机、平板电脑、电子书阅读设备等具有电子书阅读功能的电子设备上,这些电子设备上设置有电子书阅读器文本显示装置以将电子书的文本转换成人们可阅读的格式并显示在电子书阅读器的显示屏上。参见图1,本发明的电子书阅读器文本显示装置具有字符宽度记录模块11、预排版模块12、预排版信息保存模块15以及显示模块16,其中预排版模块12内设有显示文本计算模块13以及显示文本预排版模块14。字符宽度记录模块11用于从矢量字库中获取特定字号下的每一个字符的字符宽度数据。矢量字库是电子设备中存储字符的字库,其存储有每一个字符的图像、在不同字号下的字符宽度等数据,并对每一个字符进行编码,电子设备可以从矢量字库中查找每一个字符的图像、字符宽度等数据。预排版模块12用于对电子书的文本进行预排版处理,也就是将电子书所有文本的数据进行模拟的排版,确定在一定的显示设定信息下,电子书将以怎样的排版格式显示在电子书阅读器的显示屏上,由此确定显示在电子书阅读器的显示屏上的显示文本每一页的起止位置,并且每一页显示文本对应在电子书的文本中的起止位置。本文所指的显示文本是指在显示屏上显示的文本,是人们直接可阅读的文字、符号等,而电子书的文本是指电子书阅读器能够识别的数据文本,通常是各种程序代码,不能由人们直接阅读。预排版模块12的显示文本计算模块13用于根据人们设定的显示设定信息,如页宽、页边距、字号大小、行距等,计算显示文本每一页所显示的总行数,显示文本预排版模块14用于计算每一行所显示的字符个数,并确定显示文本每一页对应的文本的数据在电子书的文本中的起止位置,从而形成预排版信息。预排版信息保存模块15用于将预排版模块12形成的预排版信息保存至电子书阅读器的本地存储器中。通常,每一个预排版信息都是基于一定的显示设定信息生成的,例如基于特定的字号、特定的页面大小等,如果人们改变字符的字号大小或者改变页面大小等显示设定信息,都可能引起每一页所显示的字符改变,从而需要重新排版。因此,预排版模块12需要针对不同的显示设定信息生成不同的预排版信息,预排版信息保存模块15将每一个显示设定信息与其对应的预排版信息关联地保存至存储器中。显示模块16接收外部的信息,如显示某一页码的显示文本的指令,并根据所接收的信息从电子书阅读器的本地存储器中查找出在特定的显示设定信息下是否有对应的预排版信息,如有相应的预排版信息,查找出该页码所对应的文本的数据,并将文本的数据进行编码,然后从矢量字库中获取相应字符的字符图像,将获得的字符图像依次地显示在显示屏上。当然,根据显示设定信息,可以将诸如当前页码、总页码数等信息显示在显示屏相应的位置上。下面结合图2至图6说明电子书阅读器文本的显示方法工作的流程。参见图2,电子书阅读器首先执行步骤S1,读取电子书的文本的数据,即读取机器可读的数据,然后执行步骤S2,获取电子书阅读器使用者所设定的显示设定信息,如显示屏所显示的页面大小、页边距、行距、每一个字符的字体大小等。同时,电子书阅读器的字符宽度记录模块11需要从矢量字库中读取在设定的字号下每一字符的字符宽度。参见图3,记录字符宽度时,首先载入矢量字库的数据,即执行步骤S11。本实施例中,使用万国码(UNICODE)对字符进行编码,矢量字库中存储有每一个万国码字符在不同字号下的字符宽度的数据。载入矢量字库的数据后,根据使用者的设定设置所需要查询的字号,例如14号字体,并读取第一个字符,即执行步骤S12。然后,执行步骤S13,读取当前字符的字符宽度的数据,并将字符宽度的数据写入到字符宽度文件中,即执行步骤S14。接着,执行步骤S15,判断是否矢量字库中所有的字符的字符宽度都读取完毕,如没有,则执行步骤S16,读取下一个字符,并返回执行步骤S13。如矢量字库中所有字符的字符宽度的数据均已读取完毕,则执行步骤S17,保存当前字号下所有字符的字符宽度数据。图2中步骤S2执行完毕后,执行步骤S3,判断电子书阅读器的存储器是否存储有在该显示设定信息下的预排版信息,如有,则执行步骤S4,否则,执行步骤S5,对电子书的文本进行预排版,预排版由预排版模块12执行。参见图4,对电子书的文本进行预排版时,首先执行步骤S21,读取显示设定信息,包括将当前设定的字号下的字符宽度的数据读取,并将电子书的文本划分为多段数据段。例如,以每一段为4Kb的长度将文本划分,对于剩余不足4Kb的部分,也作为独立的一段。当然,若文本的长度小于4Kb,则将整个文本作为一段数据段处理。然后,对每一段数据段进行预排版,即将一段数据段的数据编码并转换成万国码,即执行步骤S22。接着,执行步骤S23,计算在设定的显示设定信息下,显示屏所显示的显示文本中一页能够显示的行数,这可以根据显示设置的页面宽度、页面高度、页面上下左右的边距以及每一行数据的行距、字符的高度计算得到,例如计算获得每一页能够显示的显示文本为N行。然后,执行步骤S24,计算每一行能够显示的字符个数,具体流程如图5所示。首先,执行步骤S41,读取一段数据段转换成万国码后的数据,然后执行步骤S42,计算显示文本中每一行能够显示的字符长度W。例如,显示设定信息中每一页的页面宽度为600像素,而每一页的左右边距分别是20像素,则显示文本中每一行能够显示的字符长度W为560像素。然后,执行步骤S43,读取当前的字符,并执行步骤S44,判断当前字符是否为换行符,如果是则执行步骤S46,否则执行步骤S48,从字符宽度文件中查找当前字符的字符宽度数据,并与该行中其他的字符的字符宽度数据进行累加。步骤S48中,针对每一行显示文本,可以设置一个长度数值X,在每一行开始时长度数值X设置为0,在每读取一个字符的字符宽度数据后,将读取的字符宽度数据与该行的长度数值X相加,得到读取当前字符后的该行的字符长度数值X。将当前字符的字符宽度数据累加后,判断当前行的长度数值X是否大于显示文本一行的字符长度W,如是,则执行步骤S45,否则,表示该行还能排版下更多的字符,则执行步骤S50,指向下一个字符,并执行步骤S51,判断是否到达万国码数据的末尾,若没有到达,则返回执行步骤S43,如果到达,则执行步骤S52,判断当前的数据不能够排版成完整的一行,表示该段数据段最后剩余的少量数据没能够排版完整一行。步骤S49中,若计算将当前的字符的字符宽度累加后该行的长度数值X大于一行的字符长度W,则表示该行已经排版成完整的一行,执行步骤S45,指针指向前一个字符,并计算该行的字符个数,然后执行步骤S46,指针指向当前字符的位置,最后执行步骤S47,判断当前数据能够排列成完整的一行。步骤S44中,若判断当前的字符是换行符,则直接执行步骤S46、S47,判断当前的数据能够排版成完整的一行。执行图4的步骤S24后,电子书阅读器执行步骤S25,根据图5的流程判断字符是否能够排版成完整的一行,如能够排版成完整的一行,则执行步骤S26,行数增加一行,并执行步骤S27,判断当前页码所累加的行数是否到达一页显示文本所能够显示的总行数N,如是,则页数增加一页,并记录该页码所显示的显示文本对应在电子书文本中的起止位置,即执行步骤S28,同时开始计算下一页码的起始位置,对行数清零,即返回执行步骤S24。步骤S27中,若判断所累加的行数没有到达显示文本一页所显示的总行数N,则返回执行步骤S24。步骤S25中,若判断一段数据段中未排版成完整一行的数据,或者有未排版成完整一页的数据,则将未排版成完一页的数据合并到下一数据段中,即执行步骤S29,然后执行步骤S30,判断是否到达电子书文本的末尾,如是,执行步骤S31,记录并保存预排版信息,否则返回执行步骤S22,读取下一段数据段,直至所有数据段均预排版完毕。预排版完毕后,电子书文本所有数据段均经过预排版,即在设定的显示设定信息下,显示屏所显示的每一页显示文本对应在电子书文本的起止位置均已经被记录,并且通过预排版信息保存模块15存储在电子书阅读器本地的存储器中。此时,执行完毕图2中的步骤S6。对电子书文本预排版完毕后,执行步骤S5,根据预排版信息在显示屏上显示相应的显示文本,具体流程如图6所示。首先,接收使用者设定的所需要显示的页码,如显示第5页,即执行步骤S61,然后执行步骤S62,判断该页码是否有效,即判断页码是否为1以上的自然数,且是否小于总页码,如有效,执行步骤S63,获取该页码的显示文本在电子书的文本中对应的数据中的起止位置,并将起止位置之间的数据读取,对读取的数据进行编码,获取相应的万国码数据,即执行步骤S64。然后,从矢量字库中查找出相应万国码数据中每一个字符的字符图像,并根据万国码数据的顺序对字符图像进行顺序地渲染、排版,即执行步骤S65。最后,将渲染后的图像显示在显示屏上,即执行步骤S66。当然,根据显示设定信息,可以将当前页码、总页码等一并显示在显示屏上。如步骤S3中,判断电子书阅读器的存储器中有存储预排版信息,则直接调用该预排版信息,并执行步骤S5。执行步骤S5后,电子书阅读器判断显示设定信息更改,如字体大小更改、行距更改、页面大小更改等,如有,则返回步骤S3,判断存储器是否存储有对应显示设定信息下的预排版信息。由于电子书阅读器对电子书文本进行预排版处理,即针对不同显示设定信息下对电子书的文本进行预排版,能够精确地计算出在不同显示设定信息下每一页显示文本所显示的数据在电子书文本中的起止位置,并且精确地读取起止位置之间的数据,将这些数据转换成万国码并显示。可见,使用者在翻页时并不会改变预排版信息中每一页对应的起止位置,也就不会导致显示文本内容不连续或者出现乱码的现象,保证使用者的阅读流畅。上述实施例中均是以显示文本自左向右连续显示的情况描述,即安装横向排版的情况描述,如果显示文本是自上而下地连续显示,即竖向排版,则读取的矢量字库中字符的字符宽度是指每一个字符的高度,而计算显示屏每一页所显示的行数是指自左向右计算的列数。当然,上述的实施例仅是本发明较佳的实施方式,实际应用时,还可以有更多的改变,例如,对电子书文本的数据的编码不是使用万国码,而是其他编码;或者,读取电子书文本前,对电子书文本的编码方式进行检测等,这样的改变也能实现本发明的目的。最后需要强调的是,本发明不限于上述实施方式,如数据分段时每一数据段长度的改变、显示设定信息的改变等变化也应该包括在本发明权利要求的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1