一种精简电子书字库的方法及电子书处理装置的制作方法

文档序号:6377167阅读:161来源:国知局

专利名称::一种精简电子书字库的方法及电子书处理装置的制作方法
技术领域
:本发明涉及数字出版领域,尤其是涉及一种精简电子书字库的方法及电子书处理>J-Uρα装直。
背景技术
:当涉及到数字出版的可阅读性和电子出版的美观性时,汉字字形的美观和丰富是电子书最重要的特征。电子书的大小很大程度上由电子书格式描述文件如EPUB(electronicpublication)、Mobi等,及字库文件的大小决定。电子书的阅读一般是通过网络下载到本地设备后阅读,也可以通过云端解析后传输到设备的阅读。当前的电子书可以使用系统字库,一般系统字库自带一到二种GB18030-2000的字库,如果不带自有字形字库的电子书,会自动索引系统字库,如此的电子书会导致电子书的千遍一律的感觉,美观性和独特性无法显现。因此,电子书一般会自带字库。但是,汉字字库字库量非常大,已有标准收集的汉字字形从GB2312-80的6763个字形到GB18030-2000的27533个汉字字形不等。由于汉字数量大,一套字形的汉字字库(以TrueType字库文件为例)的文件大小在3M到20M不等(具体字库文件大小和字数以及字形相关)。这样,在一本电子书中,带有一套18030-2000的字库,字库占有空间超过90%以上,大量占有字库应用资源,特别是占用了网络的传输资源,而大量字形附带而成为占用资源的数据包褓,所以当前迫切需要一种可以精简电子书字库大小的方法。
发明内容有鉴于此,本发明实施例的目的是提供一种精简电子书字库的方法及电子书处理装置,以解决目前电子书字库占用较大空间的问题。一方面,本发明实施例公开了一种精简电子书字库的方法,所述方法包括通过解析电子书的格式描述文件获取所述格式描述文件中的汉字内码,并按指定编码顺序排序,形成所述格式描述文件的码位顺序表;根据所述码位顺序表和所述电子书的原字库文件,通过只索引所述格式描述文件中出现的汉字内码的方式生成新字库文件;用所述新字库文件替换所述原字库文件,以完成电子书字库的精简。优选的,所述格式描述文件具体为EPUB文件。优选的,所述通过解析电子书的格式描述文件获取所述格式描述文件中的汉字内码,并按指定编码顺序排序,形成所述格式描述文件的码位顺序表,具体包括通过解析所述电子书的所述EPUB文件获取所述EPUB文件中链表登记部分;遍历所述链表登记部分,将各个页面文件的段落内容作UTF-8转向UNICODE转换和排序,形成所述码位顺序表。优选的,所述新字库文件和所述原字库文件具体为TTF字库文件或OTF字库文件。优选的,所述根据所述码位顺序表和所述电子书的原字库文件,通过只索引所述格式描述文件中出现的汉字内码的方式生成新字库文件,具体包括获取原字库文件中的所有数据表项,所述所有数据表项包括编码映射表和其他表项;将所述码位顺序表和所述编码映射表进行比对,通过只索引所述格式描述文件中出现的汉字内码的方式,生成新的编码映射表;根据所述新的编码映射表生成新的其他表项;根据所述新的编码映射表和所述新的其他表项,合成新字库文件。优选的,所述用所述新字库文件替换所述原字库文件,以完成电子书字库的精简,具体包括修改所述格式描述文件中的字库选择以定位到所述新字库文件;将修改后的所述格式描述文件和所述新字库文件替换原来的所述格式描述文件和所述原字库文件,以完成电子书字库的精简。另一方面,本发明实施例还公开一种电子书处理装置,用于精简电子书的字库文件,所述装置包括码位顺序表生成单元,用于通过解析所述电子书的格式描述文件获取所述格式描述文件中的汉字内码,并按指定编码顺序排序,形成所述格式描述文件的码位顺序表;新字库文件生成单元,用于根据所述码位顺序表和所述电子书的原字库文件,通过只索引所述格式描述文件中出现的汉字内码的方式生成新字库文件;字库替换单元,用于用所述新字库文件替换所述原字库文件,以完成电子书字库的精简。优选的,所述格式描述文件具体为EPUB文件,所述码位顺序表生成单元具体包括链表登记部分获取子单元,用于通过解析所述电子书的所述EPUB文件获取所述EPUB文件中链表登记部分;码位顺序表获取子单元,用于遍历所述链表登记部分,将各个页面文件的段落内容作UTF-8转向UNICODE转换和排序,形成所述码位顺序表。优选的,所述新字库文件和所述原字库文件具体为TTF字库文件或OTF字库文件,所述新字库文件生成单元具体包括数据表项获取子单元,用于获取原字库文件中的所有数据表项,所述所有数据表项包括编码映射表和其他表项;编码映射表生成子单元,用于将所述码位顺序表和所述编码映射表进行比对,通过只索引所述格式描述文件中出现的汉字内码的方式,生成新的编码映射表;其他表项生成子单元,用于根据所述新的编码映射表生成新的其他表项;字库文件合成子单元,用于根据所述新的编码映射表和所述新的其他表项,合成新字库文件。优选的,所述字库替换单元具体包括格式描述文件修改子单元,用于修改所述格式描述文件中的字库选择以定位到所述新子库文件;文件替换子单元,用于将修改后的所述格式描述文件和所述新字库文件替换原来的所述格式描述文件和所述原字库文件,以完成电子书字库的精简。本发明实施例通过获取一本电子书的汉字内码序列,并以此生成该电子书专用的字形字库的方法,将该电子书用不到的字形滤掉,解决了电子书汉字字库的数据冗余问题,使得电子书字库文件大幅降低,精简后的电子书平均为原来电子书(带有一套18030-2000字库)大小的20%以下。这样,便大幅降低了电子书存取和传输的资源占用,富丰了汉字字形的应用,为汉字字形在数字出版广泛应用提供了技术手段,增强了数字出版的美观和用汉字字形强化电子书的个性化特征,提升了电子书的阅读效果,推进字形技术和数字出版的共同发展。为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I是本发明实施例一方法的主流程图;图2是本发明实施例一步骤SlOl内部流程图;图3是本发明实施例一步骤S102内部流程图;图4是本发明实施例一步骤S103内部流程图;图5是本发明实施例二装置的示意图。具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一首先,在叙述本发明实施例之前,先简单介绍一下本文所涉及的一些概念及术语Windows系统指微软的视窗平台软件系统。iOS:是指苹果公司的平台系统,包括Mac、iPad、iPhone等。Android:是指Google公司推出的,当前很多产商支持移动设备的平台系统,如三星、联想等。EPUB:是本文非常重要的一个概念。EPUB为一本电子书的格式描述文件,包括该电子书的汉字编码、书版格式等信息。具体来讲,EPUB文件是开放的文件标准,EPUB文件主要描述书版的版面排版控制信息,使用汉字的编码标准、汉字内码、字形、大小、位置等,对于EPUB的解释,就是获取编码标准和内码,并根据编码标准对应到GB18030的顺序中,进行排序。Mobi:是亚马逊kindle推出后使用的电子书格式描述文件,原理同于EPUB格式。spine链表在EPUB文件中和汉字编码相关的部分,该表是链式记录结构,顺序包含EPUB所包含所有章节索引信息,以及编码标准和汉字内码信息。UTF-8编码方法以8位为单位来标识文字,可变字节的编码方法,根据这个符号的UNICODE编码来决定,最多4个字节。对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。TrueType字库=Windows和iOS系统的标准字库格式字库,系统已完成对于字库的还原和解释,简称TTF文件(字库)。OpenType字库兼容AdobepostscriptTypel和TrueType格式的标准字库格式,简称OTF文件(字库)。PostscriptTypel是Adobe定义的字库标准,和Adobe的页面描述语言Postscript完全兼容。GB2312-80:汉字编码标准,涵盖6763个汉字。GB12345-90:对应GB2312-80的繁体扩充,共有6866个汉字。GBK:汉字编码标准,基于GB2312-80扩充,共有20902个汉字。GB18030GB18030-2000汉字编码标准,在GBK基础上的扩充,共收集27533个汉字,当前通用系统都支持该标准编码。GB18030-2005基于该标准的扩充集字形已达75000左右的字形。日常实际使用的常用汉字基本在3000个汉字左右,一般一本电子书使用的汉字也是在此数量上。于是发明人在实现本发明的过程中发现,对于电子书来说,用到的字数其实一般仅是GB2312-80的40%左右,GB13080-2000的10%左右,而对于已经形成的电子书来说,其使用的字数更加是确定的,可见当前的电子书字库中存在很大冗余,本发明即基于此原理而产生。参见图1,为本发明实施例一方法的流程图。本实施例公开了一种精简电子书字库的方法,所述方法包括SlOl:通过解析电子书的格式描述文件获取所述格式描述文件中的汉字内码,并按指定编码顺序排序,形成所述格式描述文件的码位顺序表。简言之,这一步即对于电子书的格式描述文件进行解析,以获取格式描述文件所发生的汉字内码,并按如GB18030等指定的编码顺序排序,从而形成该格式描述文件的码位顺序表。下面具体以EPUB这种格式描述文件格式为例,对本步骤进行详细的说明。而Mobi等格式的处理方法与EPUB基本相同,不再赘述。参见图2所示,优选的,步骤SlOl具体可以包括SlOll:通过解析所述电子书的所述EPUB文件获取所述EPUB文件中链表登记部分;S1012:遍历所述链表登记部分,将各个页面文件的段落内容作UTF-8转向UNICODE转换和排序,形成所述码位顺序表。具体来讲,首先需要读取电子书EPUB文件并进行解析,包括压缩格式的解包,然后读取主要结构信息,包括完整的排版信息,以及汉字编码信息等。然后解析出所有汉字内码。汉字编码信息的获取是通过解析spine链式记录结构,并获取所有相关的编码信息,并收集到缓存中。再编排成序的UNICODE编码结果。对于UTF-8编码的进行UNICODE转换和排序,获取按顺序排放的编码信息。在EPUB文件中,统计的汉字信息部分时,只需要统计在EPUB文件中链表登记部分即可,即spine链表登记部分。spine是EPUB文件中和汉字编码相关的部分,该表是链式记录结构,顺序包含EPUB所包含所有章节索引信息,以及编码标准和汉字内码信息。对EPUB解析的做法是,对于UTF-8编码的进行解析,对各个页面文件的段落内容作UTF-8转向UNICODE转换。首先根据spine结构遍历链表,只要不到链表末尾,就取出数据,以二进制形式存入缓冲区,然后对此章节进行转码。对于汉字内码的转码是读取EPUB数据的目的,技术上根据UTF-8的编码规则逐个字节判断字母的首位值,如果小于127,必为英文或数字过半角符号,跳过不计。如果首位与OxEO做&运算结果为OxCO,且次字节与OxCO做&运算不等于0x80则为2字节UTF-8汉字,按顺序存储2个字节即可。如果首位与OxR)做&运算结果为OxCO,且次字节及再次字节与OxCO做&运算不等于0x80则为3字节UTF-8汉字,按顺序存储3个字节即可。然后利用Win32APIMultiByteToffideChar(系统资源调用函数)前2个参数CPUTF8可转为UNICODE的编码列表结果。S102:根据所述码位顺序表和所述电子书的原字库文件,通过只索引所述格式描述文件中出现的汉字内码的方式生成新字库文件。简言之,这一步即按照上一步获取的汉字内码GB18030的文件,重新生成码位映射表,把存在的字形索引出来,没被索引的字形就不用存放在字库中,封装成精简的TTF(或OpenType)字库,这样生成的字库和EPUB文件完全对应。对于新字表的字码映射排序是生成精简字库的关键,封装成的精简字库(TTF/0TF字库)要和原来字库完成一致,只是去除了无关字形的数据。下面具体以TTF字库文件为例,对本步骤进行详细的说明。而OTF字库文件与TTF字库文件基本相同。参见图3所示,优选的,步骤S102具体可以包括S1021:获取原字库文件中的所有数据表项,所述所有数据表项包括编码映射表和其他表项;S1022:将所述码位顺序表和所述编码映射表进行比对,通过只索引所述格式描述文件中出现的汉字内码的方式,生成新的编码映射表;S1023:根据所述新的编码映射表生成新的其他表项;S1024:根据所述新的编码映射表和所述新的其他表项,合成新字库文件。简言之,即分解原TTF字库的文件结构,然后修改所有数据表项,最后合并成新的TTF字库。包括读取电子书指定的TTF(OTF)字库文件中的所有表数据,然后根据UNICODE结果以及读取的cmap数据转化成新的精简cmap表,再重新生成字形描述部分的glyf表数据,保留需要的字形,然后根据cmap和glyf表,重新生成文件定位Ioca表,对其他相关表的修改和生成,最后完成各表的合成,得到电子书指定TTF(OTF)的精简字库文件。其中涉及根据EPUB解析后的UNICODE的编码列表,和原字库的编码映射表(cmaptable)进行比对和分析,并自动生成精简的编码映射表,并根据新的编码映射表修正其他表项,如位移表(locatable),字形表(glyftable),以及其他相关表的修改。TrueTypeFont(TTF)文件由若干表组成,分析TTF表,并根据需要重构TTF文件是生成精简字库的关键。字形描述表是表述TTF字形轮廓的主要数据项,TTF轮廓是由二次Bezier样条函数构成,轮廓由起点、曲线点和直线点构成,点的前后顺序构成轮廓的方向,逆时针方向为外轮廓,顺时针方向为内轮廓。一个汉字描述由若干个轮廓组成,该汉字的数据索引被locatable中定义。而汉字内码和locatable的映射是通过cmaptable来完成的,所有汉字的轮廓数据描述放在glyftable中。当我们读出电子书汉字内码后,把发生的汉字的轮廓数据保留在glyftable中,把没有发生的汉字轮廓数据不再存放,这样glyftable就变小了,同时locatable和cmaptable也变小了,都需要根据新的字表重组出来。这样的重新生成的字库就是针对特定电子书的精简字库。OTF的精简字库生成原理和TTF的完全一样,OTF字库和TTF字库完全兼容,主要差异是OTF是兼容AdobePostscriptTypel的字库格式。OTF也是由轮廓组成,和TTF轮廓的差异是用三次Bezier曲线和一次直线描述,在解释OTF字库文件时,处理方式和TTF一样。S103:用所述新字库文件替换所述原字库文件,以完成电子书字库的精简。参见图4所示,优选的步骤S103具体可以包括S1031:修改所述格式描述文件中的字库选择以定位到所述新字库文件。S1032:将修改后的所述格式描述文件和所述新字库文件替换原来的所述格式描述文件和所述原字库文件,以完成电子书字库的精简。简言之,本实施例方法的输入为EPUB文件、TTF字库,输出为EPUB文件、精简TTF字库。而以上精简TTF/0TF字库、修改EPUB以替换原电子书的技术方法,可以作为云端服务方案。实施例二参见图4,为本发明实施例二装置的示意图。本实施例公开了一种电子书处理装置,用于精简电子书的字库文件,所述装置包括码位顺序表生成单元501,用于通过解析所述电子书的格式描述文件获取所述格式描述文件中的汉字内码,并按指定编码顺序排序,形成所述格式描述文件的码位顺序表;新字库文件生成单元502,用于根据所述码位顺序表和所述电子书的原字库文件,通过只索引所述格式描述文件中出现的汉字内码的方式生成新字库文件;字库替换单元503,用于用所述新字库文件替换所述原字库文件,以完成电子书字库的精简。优选的,所述格式描述文件具体为EPUB文件,所述码位顺序表生成单元具体包括链表登记部分获取子单元5011,用于通过解析所述电子书的所述EPUB文件获取所述EPUB文件中链表登记部分;码位顺序表获取子单元5012,用于遍历所述链表登记部分,将各个页面文件的段落内容作UTF-8转向UNICODE转换和排序,形成所述码位顺序表。优选的,所述新字库文件和所述原字库文件具体为TTF字库文件或OTF字库文件,所述新字库文件生成单元具体包括数据表项获取子单元5021,用于获取原字库文件中的所有数据表项,所述所有数据表项包括编码映射表和其他表项;编码映射表生成子单元5022,用于将所述码位顺序表和所述编码映射表进行比对,通过只索引所述格式描述文件中出现的汉字内码的方式,生成新的编码映射表;其他表项生成子单元5023,用于根据所述新的编码映射表生成新的其他表项;字库文件合成子单元5024,用于根据所述新的编码映射表和所述新的其他表项,合成新字库文件。优选的,所述字库替换单元具体包括格式描述文件修改子单元5031,用于修改所述格式描述文件中的字库选择以定位到所述新字库文件;文件替换子单元5032,用于将修改后的所述格式描述文件和所述新字库文件替换原来的所述格式描述文件和所述原字库文件,以完成电子书字库的精简。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如R0M、RAM、磁碟、光盘等。还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。本文中应用了具体个例对本发明的原理及实施方式进行了闸述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。权利要求1.一种精简电子书字库的方法,其特征在于,所述方法包括通过解析电子书的格式描述文件获取所述格式描述文件中的汉字内码,并按指定编码顺序排序,形成所述格式描述文件的码位顺序表;根据所述码位顺序表和所述电子书的原字库文件,通过只索引所述格式描述文件中出现的汉字内码的方式生成新字库文件;用所述新字库文件替换所述原字库文件,以完成电子书字库的精简。2.根据权利要求I所述的方法,其特征在于,所述格式描述文件具体为EPUB文件。3.根据权利要求2所述的方法,其特征在于,所述通过解析电子书的格式描述文件获取所述格式描述文件中的汉字内码,并按指定编码顺序排序,形成所述格式描述文件的码位顺序表,具体包括·通过解析所述电子书的所述EPUB文件获取所述EPUB文件中链表登记部分;遍历所述链表登记部分,将各个页面文件的段落内容作UTF-8转向UNICODE转换和排序,形成所述码位顺序表。4.根据权利要求2所述的方法,其特征在于,所述新字库文件和所述原字库文件具体为TTF字库文件或OTF字库文件。5.根据权利要求4所述的方法,其特征在于,所述根据所述码位顺序表和所述电子书的原字库文件,通过只索引所述格式描述文件中出现的汉字内码的方式生成新字库文件,具体包括获取原字库文件中的所有数据表项,所述所有数据表项包括编码映射表和其他表项;将所述码位顺序表和所述编码映射表进行比对,通过只索引所述格式描述文件中出现的汉字内码的方式,生成新的编码映射表;根据所述新的编码映射表生成新的其他表项;根据所述新的编码映射表和所述新的其他表项,合成新字库文件。6.根据权利要求I所述的方法,其特征在于,所述用所述新字库文件替换所述原字库文件,以完成电子书字库的精简,具体包括修改所述格式描述文件中的字库选择以定位到所述新字库文件;将修改后的所述格式描述文件和所述新字库文件替换原来的所述格式描述文件和所述原字库文件,以完成电子书字库的精简。7.一种电子书处理装置,其特征在于,用于精简电子书的字库文件,所述装置包括码位顺序表生成单元,用于通过解析所述电子书的格式描述文件获取所述格式描述文件中的汉字内码,并按指定编码顺序排序,形成所述格式描述文件的码位顺序表;新字库文件生成单元,用于根据所述码位顺序表和所述电子书的原字库文件,通过只索引所述格式描述文件中出现的汉字内码的方式生成新字库文件;字库替换单元,用于用所述新字库文件替换所述原字库文件,以完成电子书字库的精简。8.根据权利要求7所述的装置,其特征在于,所述格式描述文件具体为EPUB文件,所述码位顺序表生成单元具体包括链表登记部分获取子单元,用于通过解析所述电子书的所述EPUB文件获取所述EPUB文件中链表登记部分;码位顺序表获取子单元,用于遍历所述链表登记部分,将各个页面文件的段落内容作UTF-8转向UNICODE转换和排序,形成所述码位顺序表。9.根据权利要求7所述的装置,其特征在于,所述新字库文件和所述原字库文件具体为TTF字库文件或OTF字库文件,所述新字库文件生成单元具体包括数据表项获取子单元,用于获取原字库文件中的所有数据表项,所述所有数据表项包括编码映射表和其他表项;编码映射表生成子单元,用于将所述码位顺序表和所述编码映射表进行比对,通过只索引所述格式描述文件中出现的汉字内码的方式,生成新的编码映射表;其他表项生成子单元,用于根据所述新的编码映射表生成新的其他表项;字库文件合成子单元,用于根据所述新的编码映射表和所述新的其他表项,合成新字库文件。10.根据权利要求7所述的装置,其特征在于,所述字库替换单元具体包括格式描述文件修改子单元,用于修改所述格式描述文件中的字库选择以定位到所述新字库文件;文件替换子单元,用于将修改后的所述格式描述文件和所述新字库文件替换原来的所述格式描述文件和所述原字库文件,以完成电子书字库的精简。全文摘要本发明实施例公开了一种精简电子书字库的方法及电子书处理装置,其中所述方法包括通过解析电子书的格式描述文件获取所述格式描述文件中的汉字内码,并按指定编码顺序排序,形成所述格式描述文件的码位顺序表;根据所述码位顺序表和所述电子书的原字库文件,通过只索引所述格式描述文件中出现的汉字内码的方式生成新字库文件;用所述新字库文件替换所述原字库文件,以完成电子书字库的精简。本发明实施例通过获取一本电子书的汉字内码序列,并以此生成该电子书专用的字形字库的方法,将该电子书用不到的字形滤掉,解决了电子书汉字字库的数据冗余问题,使得电子书字库文件大幅降低。文档编号G06F17/30GK102880690SQ20121034809公开日2013年1月16日申请日期2012年9月18日优先权日2012年9月18日发明者闻申生申请人:北京汉仪科印信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1