终端、服务器和补字方法
技术领域
本发明涉及字库技术领域,具体而言,涉及一种终端、一种服务器和一种补字方法。
背景技术
字库是移动终端(例如智能手机、平板电脑)操作***的重要组成部分,移动终端通过字库完成字体的呈现,包括:录入、显示、阅读等。现有的主流移动终端的字库基本是按照国家编码标准GBK或GB18030-2000进行组织的。
国家编码标准GBK编码标准兼容GB2312,共收录汉字21003个,提供1894个造字码位,简、繁体字融于一个字库;GB18030-2000是GBK的取代版本,在GBK基础上增加了6000多个CJK统一汉字扩充A的汉字,达27533个汉字,基本可以满足日常生活中的大部分需求;GB13000-2005/GB13000-2010(完全等同于国际字符编码标准UNICODE5.0)字数达70000多字,这些大字符集最主要的变化是增加了四万多字的CJK统一汉字扩充B,未来还会继续增加CJK统一汉字扩充C、CJK统一汉字扩充D等等。
此外,字符集为了满足自定义字的需求,设置了用户自定义字符区,UNICODE标准内的补字区范围:0XE000—0XF8FF;其他字符集参照转换编码等同执行。
当用户遇到一些冷僻字,例如公民个人信息中姓名、住址中的自造字以及一些特殊的自然地理实体地名中的冷僻字,比如:“
”,手机里可以识别姓名中的姓:“李”,但是无法识别里面的名字“
”。这些冷僻字在目前所有标准的字符集中均无法检索到,说明这些字是新字,在现有标准中不存在。对于这些现有标准中不存在的新字,按照现有的解决方案是:需要先在PC电脑中通过字符集的补字区进行人工补字后,然后在手机***中重新复制或下载新字库,再在手机里安装新的字库,此种方式一方面费时费力;另一方面有的用户会按照自己的需求随便地自行补入一个字形,由于针对手机字库的用户自定义区内的补字没有进行统一的分级和排序存放,造成手机字库的用户自定义区内不仅存储无序、杂乱无章,而且还存在字形重复、重复补字的问题,最后,这样产生的补字存储序列和补字字库,很难与其它***进行传输、交换。
因此,需要一种补字方法,既能方便快捷的补充新的字符,而且可以对补充的新的字符统一分级和排序存储,避免重复补字。
发明内容
考虑到相关技术中出现的技术问题,本发明提供了一种新的补字方案,通过服务器端进行统一有序的多种字体风格的新增补字存储和分发补字字形专属glyph数据到终端(移动设备),终端将其与***默认的主字库关联后,即可在终端中显示现有标准编中不存在的字符。
根据本发明的一个方面,提供了一种终端,包括:请求生成单元,用于在接收到不存在于已存储字符集中的未知字符时,生成补字请求序列;交互单元,将所述补字请求序列发送至服务器,并接收来自所述服务器的与所述未知字符对应的补字字形专属数据;显示单元,根据接收到的所述补字字形专属数据,正常显示所述未知字符。
在该技术方案中,通过发送补字请求序列和接收补字字形专属数据,可以实现未知字符的正常显示,简便的解决了终端在接收到不存在于已存储字符集中的未知字符时不能显示的问题,与现有技术中在PC电脑中进行补字,并在终端复制或下载、替换相比,方法简便,提高了响应速度,降低了终端新增补字符的使用难度。
其中,由于未知字符在终端中无法正常显示,因此可以通过手写或拍照的形式将当前终端无法显示的冷僻字制作成图片,结合其他请求信息,发出补字请求序列至服务器。
在上述技术方案中,优选地,所述请求生成单元包括:提取单元,用于提取所述未知字符的字型、序列号、字体类型、字符属性信息,以生成所述补字请求序列。
在该技术方案中,补字请求序列应包含未知字符的全部信息,以便于对未知字符的识别和辨认。具体来说,补字请求序列,包括未知字符的字型(图片形式)、序列号、字体类型信息(字体风格)、字符属性信息在内的请求序列。
由于未知字符在现有的字符集编码标准中均不存在,因此未知字符此时并没有字符编码,仅有升序或降序的序列号;字体类型是指字体的类型,如手写体(指未知字符图片的默认手写风格)、宋体、黑体、楷体等,指补字字型在补字后的字体类型是哪一种;字符属性信息是指待补字符的使用频率、部首信息、笔顺信息、拼音等字符自身的属性,字符属性信息可以是一个,也可以多个属性组合,但不允许空属性;补字请求序列可以包含单个未知字符的补字请求,也可以包含多个未知字符的补字请求;补字请求既可以包含单一字体类型的请求,也可以包含多种字体类型的请求。
在上述技术方案中,优选地,所述显示单元包括:解析单元,在接收到所述补字字形专属数据后,解析所述补字字形专属数据,得到与所述未知字符对应的唯一编码、字体类型风格和映射关系索引值,并存储为本地字符集;关联单元,将所述本地字符集与所述终端已存储字符集进行关联,以使所述本地字符集作为所述终端已存储字符集的辅助字符集;查找单元,查找所述已存储字符集以及所述已存储字符集的所有辅助字符集,以显示所述未知字符。
在该技术方案中,通过将接收到的补字字形专属数据解析存储为本地字符集,并将存储的本地字符集与终端中已存储的字符集相关联,使本地字符集作为终端已存储字符集的辅助字符集,无需更换终端已存储的字符集,仍然使用原有的已存储的字符集,不会破坏、增加、减少终端已存储字符集的文件,即不对终端已存储字符集做任何物理操作,保证了终端已存储字符集的完整性、稳定性。
其中,关联是将接收到的服务器补字字形数据存储为本地字符集后,同终端已存储字符集进行关联,形成主-辅助字符集的对应关系。当终端有多个已存储字符集时,一个服务器下载存储的本地字符集,可以允许作为辅助字符集关联到终端多个已存储字符集上;当从服务器上进行了多次补字后,形成了多个本地字符集,多个本地字符集可以同时关联到终端一个已存储字符集上,也可以同时关联到终端多个已存储字符集上。
当然,多次补字后形成的多个辅助本地字符集,在本地既可以合并处理,也可以以碎片文件的分布式形式存在,无论本地字符集是合并处理还是分布式形式存在,均不影响主-辅字符集关联机制的运行。
值得注意的是,当多次补字后形成的多个辅助本地字符集,在同一个字体类型风格的前提下,彼此之间应该没有重复的补字,也不会出现彼此之间编码混乱、字形重复的情况,即在同一个字体类型风格的前提下,每个本地字符集里的补字编码、补字字形均是唯一的,不重复的;每个本地字符集里的映射索引值对于每个本地字符集也是唯一的,因为索引值仅在此本地字符集里有效。
在上述技术方案中,优选地,所述解析单元还用于根据所述映射关系索引值得到字形glyf曲线轮廓数据,以及根据字形glyf曲线轮廓数据描绘出贝塞尔曲线轮廓和直线轮廓,以形成所述未知字符的曲线轮廓。
在该技术方案中,通过补字字形专属数据解析出的未知字符的唯一编码和映射关系索引值可得到未知字符字形glyf曲线轮廓数据,而字形二进制glyf轮廓数据主要是由坐标点和标志位组成二进制数据;通过这些坐标点和标志位,可以绘出贝塞尔曲线轮廓和直线轮廓,从而最终组成字形的曲线轮廓,这些轮廓填充后,即得到我们看到的汉字。
根据本发明的第二方面,提出了一种服务器,包括:交互单元,接收来自终端的补字请求序列,并将处理单元生成的补字字形专属数据发送至所述终端;所述处理单元,对所述补字请求序列中的每个未知字符进行数据整理和字形规范处理,以得到每个所述未知字符的属性信息,根据每个所述未知字符的属性信息生成相对应的补字字形专属数据。
在该技术方案中,根据接收到的补字请求序列中未知字符的属性信息,生成相对应的补字字形专属数据,并将补字字形专属数据发送至终端,与现有技术中用户可随意在用户自定义区补字相比,由服务器统一补字,可实现补字字形的统一存储和分发,避免了字形重复、重复补字的问题。
在上述技术方案中,优选地,还包括:判断单元,用于在对所述补字请求序列中的每个未知字符进行数据整理和字形规范处理之前,根据所述补字请求序列包含的信息判断所述未知字符的字形是否存在于现有字符集标准编,在判定所述未知字符的字形存在于现有字符集标准编时,将所述未知字符的字形专属数据发送至所述终端,在判定所述未知字符的字形不存在于现有字符集标准编时,将所述未知字符的字形确定为待补字字形,存储于补字区。
在该技术方案中,通过判断未知字符是否存在于现有字符集标准编,对存在于现有字符集标准编的未知字符不需要进行补字,而只有对不存在于现有字符集标准编的未知字符进行补字,可避免字形重复,重复补字的问题。
具体来说,服务器设有补字数据库,也即补字区,服务器的补字数据库用来存储每次新增补字的记录;包括补字来源、补字的字体风格、补字时间、补字编码、补字笔形轮廓数据等;该补字数据库里存储的全部是现有字符集标准编码里不存在的新字,一旦现有字符集标准编收录了该补字,就要将该补字从服务器补字数据库中记录为无效或删除,以保证服务器补字数据库的唯一性;服务器补字数据库不允许保存现有字符集标准编码里存在的字符。
判断未知字符是否存在于现有字符集标准编,有以下三种情况:
包括国内和国际字符集编码标准里不存在的,且服务器的补字数据库里也不存在的,这说明这个补字之前未被申请过,需要进行补字;包括国内和国际字符集编码标准里不存在的,但服务器的补字数据库里是存在的,这说明这个补字之前被其他终端申请过,无需进行补字,将该字的字形专属数据发送至终端;包括国内和国际字符集编码标准里存在的,但客户端已存储字符集不支持的,此时服务器补字数据库根本不需要补字,客户端更新字符集即可。
服务器已有补字的数据库,均是按照补字字符的属性因子进行排序的,属性因子中的字符自有的属性信息如部首、笔画数、笔顺信息是字符特有的信息,按照这种信息进行排序后,当有一个新字出现的时候,就非常方便的进行鉴别是否重复补字。如果不进行排序,不分任何顺序的杂乱无章的存储,则在鉴别一个新字是否重复字的时候,则需要在全部已有字中进行对比,非常耗时。
在上述技术方案中,优选地,所述处理单元包括:编码生成单元,用于在所述补字区中对所述待补字字形分配唯一编码;映射生成单元,用于根据所述待补字字形的属性信息和所述待补字字形在补字区的唯一编码,形成所述待补字字符相对应的排序存储序列和映射关系索引值,以得到所述补字字形专属数据,其中,所述映射关系索引值为所述待补字字形在补字区的唯一编码与字形glyf曲线轮廓数据存储位置之间的映射。
在该技术方案中,通过待补字字形的属性信息和待补字字形在补字区的唯一编码确定待补字字符的排序存储序列和映射关系索引值,由于待补字字形的属性信息和待补字字形在补字区的唯一编码均是唯一的,因此确定的排序存储序列和映射关系索引值也是唯一的,不重复的,进而根据其形成的补字字形专属数据唯一。
其中,排序存储序列决定了补字字形专属数据的存储位置,而映射关系索引值为所述待补字字形在补字区的唯一编码与字形glyf曲线轮廓数据存储位置之间的映射,通过补字区的唯一编码即可找出字形glyf曲线轮廓数据的存储位置。
在上述技术方案中,优选地,所述处理单元还包括:提取单元,提取所述待补字字形的单字图曲线;拟合处理单元,所述待补字字形的单字图曲线与贝塞尔曲线拟合处理,保持所述待补字字形的原有字型风格,将拟合的贝塞尔曲线轮廓存储为字符集中的glyf字形轮廓格式,形成字形glyf曲线轮廓数据;字体转换单元,对所述待补字字体的字体类型风格进行转换,以符合预设字体类型风格要求。
在该技术方案中,通过将形成的字形glyf曲线轮廓数据以二进制形式存储,形成补字区字形专属数据,每个补字的字形专属数据均根据每个待补充字符相对应的排序序列,确定存储的先后顺序和实际位置,补字编码与实际存储位置之间的桥梁是映射索引值(补字编码与实际存储位置的映射关系)。
每增加一个新补字,补字区编码依次在现有补字编码基础上追加一个,但是补字字形glyf曲线轮廓数据的实际存储位置则根据每个补字字符的属性信息进行排序后,***到对应的存储区,以便根据排序依据,来提高使用度频繁的补字的访问速度。此时,映射索引值(补字编码与实际存储位置的映射关系)随之进行调整,以便达到最合理的索引分配、访问速度提升,但补字区编码不会随之进行调整。采用此种方式可以合理分配存储空间,使排序因子靠前的字,以先简单后复杂的原则,简单的的补字字形存储在前面,且字形相近、笔顺相似的补字可以排在一起,方便从补字区中快速鉴别有无重复的补字,从补字区中快速提取用户所需要的相似的字形数据,从而大幅提高检索和提取的效率。
其中,为了满足其他字体类型风格的需要,还需要将提取的原始字型风格修改变换为其他多种字体风格,如宋体、黑体、楷体等,但是仍然为同一个补字,含义是相同的,只不过字体类型、风格不同;其他风格的补字,仍然存储为glyf字形轮廓格式,格式为二进制形式的三次或二次贝塞尔曲线数据,每个补字就同时形成了默认原始手写风格、宋体风格、黑体风格、楷体风格等不同风格的补字数据。
由于之前每个补字,均分配了唯一的补字区编码,结合每个补字拟合后的贝塞尔曲线二进制glyf字的笔形的轮廓数据(即字形专属数据),然后根据形成的各个唯一的补字区编码,分别在用户自定义区的相应位置处存储对应的待补充字符的贝塞尔曲线二进制glyf字形轮廓数据(即字形专属数据),这样就形成了补字区编码与字形专属数据相对应的补字字库文件;补字字库文件即可以仅含一个补字编码和补字字形专属数据,也可以包含多个补字编码和补字字形专属数据,但不允许空补字字库存在;每个补字编码与补字字形唯一的一一对应,不允许一对多或多对一的情况出现。
根据本发明的第三方面,提出了一种补字方法,包括:在接收到不存在于已存储字符集中的未知字符时,生成补字请求序列,并将所述补字请求序列发送至服务器;接收来自所述服务器的与所述未知字符对应的补字字形专属数据;根据接收到的所述补字字形专属数据,正常显示所述未知字符。
在该技术方案中,通过发送补字请求序列和接收补字字形专属数据,可以实现未知字符的正常显示,简便的解决了终端在接收到不存在于已存储字符集中的未知字符时不能显示的问题,与现有技术中在PC电脑中进行补字,并在终端复制或下载、替换相比,方法简便,提高了响应速度,降低了终端新增补字符的使用难度。
其中,由于未知字符在终端中无法正常显示,因此可以通过手写或拍照的形式将当前终端无法显示的冷僻字制作成图片,结合其他请求信息,发出补字请求序列至服务器。
在上述技术方案中,优选地,提取所述未知字符的字型、序列号、字体类型、字符属性信息,以生成所述补字请求序列。
在该技术方案中,补字请求序列应包含未知字符的全部信息,以便于对未知字符的识别和辨认。具体来说,补字请求序列,包括未知字符的字型(图片形式)、序列号、字体类型信息(字体风格)、字符属性信息在内的请求序列。
由于未知字符在现有的字符集编码标准中均不存在,因此未知字符此时并没有字符编码,仅有升序或降序的序列号;字体类型是指字体的类型,如手写体(指未知字符图片的默认手写风格)、宋体、黑体、楷体等,指补字字型在补字后的字体类型是哪一种;字符属性信息是指待补字符的使用频率、部首信息、笔顺信息、拼音等字符自身的属性,字符属性信息可以是一个,也可以多个属性组合,但不允许空属性;补字请求序列可以包含单个未知字符的补字请求,也可以包含多个未知字符的补字请求;补字请求既可以包含单一字体类型的请求,也可以包含多种字体类型的请求。
在上述技术方案中,优选地,在接收到所述补字字形专属数据后,解析所述补字字形专属数据,得到与所述未知字符对应的唯一编码、字体类型风格和映射关系索引值,并存储为本地字符集;将所述本地字符集与所述终端已存储字符集进行关联,以使所述本地字符集作为所述终端已存储字符集的辅助字符集;查找所述已存储字符集以及所述已存储字符集的所有辅助字符集,以显示所述未知字符。
在该技术方案中,通过将接收到的补字字形专属数据解析存储为本地字符集,并将存储的本地字符集与终端中已存储的字符集相关联,使本地字符集作为终端已存储字符集的辅助字符集,无需更换终端已存储的字符集,仍然使用原有的已存储的字符集,不会破坏、增加、减少终端已存储字符集的文件,即不对终端已存储字符集做任何物理操作,保证了终端已存储字符集的完整性、稳定性。
其中,关联是将接收到的服务器补字字形数据存储为本地字符集后,同终端已存储字符集进行关联,形成主-辅助字符集的对应关系。当终端有多个已存储字符集时,一个服务器下载存储的本地字符集,可以允许作为辅助字符集关联到终端多个已存储字符集上;当从服务器上进行了多次补字后,形成了多个本地字符集,多个本地字符集可以同时关联到终端一个已存储字符集上,也可以同时关联到终端多个已存储字符集上。
当然,多次补字后形成的多个辅助本地字符集,在本地既可以合并处理,也可以以碎片文件的分布式形式存在,无论本地字符集是合并处理还是分布式形式存在,均不影响主-辅字符集关联机制的运行。
值得注意的是,当多次补字后形成的多个辅助本地字符集,在同一个字体类型风格的前提下,彼此之间应该没有重复的补字,也不会出现彼此之间编码混乱、字形重复的情况,即在同一个字体类型风格的前提下,每个本地字符集里的补字编码、补字字形均是唯一的,不重复的;每个本地字符集里的映射索引值对于每个本地字符集也是唯一的,因为索引值仅在此本地字符集里有效。
在上述技术方案中,优选地,还包括:根据所述映射关系索引值得到字形glyf曲线轮廓数据,以及根据字形glyf曲线轮廓数据描绘出贝塞尔曲线轮廓和直线轮廓,以形成所述未知字符的曲线轮廓。
在该技术方案中,通过补字字形专属数据解析出的未知字符的唯一编码和映射关系索引值可得到未知字符字形glyf曲线轮廓数据,而字形二进制glyf轮廓数据主要是由坐标点和标志位组成二进制数据;通过这些坐标点和标志位,可以绘出贝塞尔曲线轮廓和直线轮廓,从而最终组成字形的曲线轮廓,这些轮廓填充后,即得到我们看到的汉字。
根据本发明的第四方面,提出了一种补字方法,包括:接收来自终端的补字请求序列;对所述补字请求序列中的每个未知字符进行数据整理和字形规范处理,以得到每个所述未知字符的属性信息;根据每个所述未知字符的属性信息生成相对应的补字字形专属数据,并将所述补字字形专属数据发送至所述终端。
在该技术方案中,根据接收到的补字请求序列中未知字符的属性信息,生成相对应的补字字形专属数据,并将补字字形专属数据发送至终端,与现有技术中用户可随意在用户自定义区补字相比,由服务器统一补字,可实现补字字形的统一存储和分发,避免了字形重复、重复补字的问题。
在上述技术方案中,优选地,在对所述补字请求序列中的每个未知字符进行数据整理和字形规范处理之前,根据所述补字请求序列包含的信息判断所述未知字符的字形是否存在于现有字符集标准编;在判定所述未知字符的字形存在于现有字符集标准编时,将所述未知字符的字形专属数据发送至所述终端,在判定所述未知字符的字形不存在于现有字符集标准编时,将所述未知字符的字形确定为待补字字形,存储于补字区。
在该技术方案中,通过判断未知字符是否存在于现有字符集标准编,对存在于现有字符集标准编的未知字符不需要进行补字,而只有对不存在于现有字符集标准编的未知字符进行补字,可避免字形重复,重复补字的问题。
具体来说,服务器设有补字数据库,也即补字区,服务器的补字数据库用来存储每次新增补字的记录;包括补字来源、补字的字体风格、补字时间、补字编码、补字笔形轮廓数据等;该补字数据库里存储的全部是现有字符集标准编码里不存在的新字,一旦现有字符集标准编收录了该补字,就要将该补字从服务器补字数据库中记录为无效或删除,以保证服务器补字数据库的唯一性;服务器补字数据库不允许保存现有字符集标准编码里存在的字符。
判断未知字符是否存在于现有字符集标准编,有以下三种情况:
包括国内和国际字符集编码标准里不存在的,且服务器的补字数据库里也不存在的,这说明这个补字之前未被申请过,需要进行补字;包括国内和国际字符集编码标准里不存在的,但服务器的补字数据库里是存在的,这说明这个补字之前被其他终端申请过,无需进行补字,将该字的字形专属数据发送至终端;包括国内和国际字符集编码标准里存在的,但客户端已存储字符集不支持的,此时服务器补字数据库根本不需要补字,客户端更新字符集即可。
服务器已有补字的数据库,均是按照补字字符的属性因子进行排序的,属性因子中的字符自有的属性信息如部首、笔画数、笔顺信息是字符特有的信息,按照这种信息进行排序后,当有一个新字出现的时候,就非常方便的进行鉴别是否重复补字。如果不进行排序,不分任何顺序的杂乱无章的存储,则在鉴别一个新字是否重复字的时候,则需要在全部已有字中进行对比,非常耗时。
在上述技术方案中,优选地,在所述补字区中对所述待补字字形分配唯一编码;根据所述待补字字形的属性信息和所述待补字字形在补字区的唯一编码,形成所述待补字字符相对应的排序存储序列和映射关系索引值,以得到所述补字字形专属数据,其中,所述映射关系索引值为所述待补字字形在补字区的唯一编码与字形glyf曲线轮廓数据存储位置之间的映射。
在该技术方案中,通过待补字字形的属性信息和待补字字形在补字区的唯一编码确定待补字字符的排序存储序列和映射关系索引值,由于待补字字形的属性信息和待补字字形在补字区的唯一编码均是唯一的,因此确定的排序存储序列和映射关系索引值也是唯一的,不重复的,进而根据其形成的补字字形专属数据唯一。
其中,排序存储序列决定了补字字形专属数据的存储位置,而映射关系索引值为所述待补字字形在补字区的唯一编码与字形glyf曲线轮廓数据存储位置之间的映射,通过补字区的唯一编码即可找出字形glyf曲线轮廓数据的存储位置。
在上述技术方案中,优选地,提取所述待补字字形的单字图曲线;所述待补字字形的单字图曲线与贝塞尔曲线拟合处理,保持所述待补字字形的原有字型风格,将拟合的贝塞尔曲线轮廓存储为字符集中的glyf字形轮廓格式,形成字形glyf曲线轮廓数据;对所述待补字字体的字体类型风格进行转换,以符合预设字体类型风格要求。
在该技术方案中,通过将形成的字形glyf曲线轮廓数据以二进制形式存储,形成补字区字形专属数据,每个补字的字形专属数据均根据每个待补充字符相对应的排序序列,确定存储的先后顺序和实际位置,补字编码与实际存储位置之间的桥梁是映射索引值(补字编码与实际存储位置的映射关系)。
每增加一个新补字,补字区编码依次在现有补字编码基础上追加一个,但是补字字形glyf曲线轮廓数据的实际存储位置则根据每个补字字符的属性信息进行排序后,***到对应的存储区,以便根据排序依据,来提高使用度频繁的补字的访问速度。此时,映射索引值(补字编码与实际存储位置的映射关系)随之进行调整,以便达到最合理的索引分配、访问速度提升,但补字区编码不会随之进行调整。采用此种方式可以合理分配存储空间,使排序因子靠前的字,以先简单后复杂的原则,简单的的补字字形存储在前面,且字形相近、笔顺相似的补字可以排在一起,方便从补字区中快速鉴别有无重复的补字,从补字区中快速提取用户所需要的相似的字形数据,从而大幅提高检索和提取的效率。
其中,为了满足其他字体类型风格的需要,还需要将提取的原始字型风格修改变换为其他多种字体风格,如宋体、黑体、楷体等,但是仍然为同一个补字,含义是相同的,只不过字体类型、风格不同;其他风格的补字,仍然存储为glyf字形轮廓格式,格式为二进制形式的三次或二次贝塞尔曲线数据,每个补字就同时形成了默认原始手写风格、宋体风格、黑体风格、楷体风格等不同风格的补字数据。
由于之前每个补字,均分配了唯一的补字区编码,结合每个补字拟合后的贝塞尔曲线二进制glyf字的笔形的轮廓数据(即字形专属数据),然后根据形成的各个唯一的补字区编码,分别在用户自定义区的相应位置处存储对应的待补充字符的贝塞尔曲线二进制glyf字形轮廓数据(即字形专属数据),这样就形成了补字区编码与字形专属数据相对应的补字字库文件;补字字库文件即可以仅含一个补字编码和补字字形专属数据,也可以包含多个补字编码和补字字形专属数据,但不允许空补字字库存在;每个补字编码与补字字形唯一的一一对应,不允许一对多或多对一的情况出现。
附图说明
图1示出了根据本发明的实施例的终端的结构示意图;
图2示出了根据本发明的实施例的服务器的结构示意图;
图3示出了根据本发明的一个实施例的补字方法的示意流程图;
图4示出了根据本发明的另一实施例的补字方法的示意流程图;
图5示出了根据本发明的又一实施例的补字方法的示意流程图;
图6示出了字体类型风格的示意图;
图7示出了根据本发明的实施例的二进制轮廓字形glyf曲线轮廓和填充的示意图;
图8示出了根据本发明的实施例的新字字形的示意图;
图9示出了根据本发明的实施例的新字字形原始风格贝塞尔曲线的示意图;
图10示出了根据本发明的实施例的新字字形宋体风格贝塞尔曲线的示意图;
图11示出了根据本发明的实施例的终端已存储字符集与补字原始字体风格关联的示意图;
图12示出了根据本发明的实施例的终端已存储字符集与补字原始字体风格和补字宋体字体风格关联的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的终端的结构示意图。
如图1所示,根据本发明的实施例的终端100,包括:请求生成单元102,用于在接收到不存在于已存储字符集中的未知字符时,生成补字请求序列;交互单元104,将所述补字请求序列发送至服务器,并接收来自所述服务器的与所述未知字符对应的补字字形专属数据;显示单元106,根据接收到的所述补字字形专属数据,正常显示所述未知字符。
在该技术方案中,通过发送补字请求序列和接收补字字形专属数据,可以实现未知字符的正常显示,简便的解决了终端100在接收到不存在于已存储字符集中的未知字符时不能显示的问题,与现有技术中在PC电脑中进行补字,并在终端100复制或下载、替换相比,方法简便,提高了响应速度,降低了终端100新增补字符的使用难度。
其中,由于未知字符在终端100中无法正常显示,因此可以通过手写或拍照的形式将当前终端100无法显示的冷僻字制作成图片,结合其他请求信息,发出补字请求序列至服务器。
在上述技术方案中,优选地,所述请求生成单元102包括:提取单元1022,用于提取所述未知字符的字型、序列号、字体类型、字符属性信息,以生成所述补字请求序列。
在该技术方案中,补字请求序列应包含未知字符的全部信息,以便于对未知字符的识别和辨认。具体来说,补字请求序列,包括未知字符的字型(图片形式)、序列号、字体类型信息(字体风格)、字符属性信息在内的请求序列。
由于未知字符在现有的字符集编码标准中均不存在,因此未知字符此时并没有字符编码,仅有升序或降序的序列号;字体类型是指字体的类型,如手写体(指未知字符图片的默认手写风格)、宋体、黑体、楷体等(如图6所示,图6示出了字体类型风格的示意图),指补字字型在补字后的字体类型是哪一种;字符属性信息是指待补字符的使用频率、部首信息、笔顺信息、拼音等字符自身的属性,字符属性信息可以是一个,也可以多个属性组合,但不允许空属性;补字请求序列可以包含单个未知字符的补字请求,也可以包含多个未知字符的补字请求;补字请求既可以包含单一字体类型的请求,也可以包含多种字体类型的请求。
在上述技术方案中,优选地,所述显示单元106包括:解析单元1062,在接收到所述补字字形专属数据后,解析所述补字字形专属数据,得到与所述未知字符对应的唯一编码、字体类型风格和映射关系索引值,并存储为本地字符集;关联单元1064,将所述本地字符集与所述终端100已存储字符集进行关联,以使所述本地字符集作为所述终端100已存储字符集的辅助字符集;查找单元1066,查找所述已存储字符集以及所述已存储字符集的所有辅助字符集,以显示所述未知字符。
在该技术方案中,通过将接收到的补字字形专属数据解析存储为本地字符集,并将存储的本地字符集与终端100中已存储的字符集相关联,使本地字符集作为终端100已存储字符集的辅助字符集,无需更换终端100已存储的字符集,仍然使用原有的已存储的字符集,不会破坏、增加、减少终端100已存储字符集的文件,即不对终端100已存储字符集做任何物理操作,保证了终端100已存储字符集的完整性、稳定性。
其中,关联是将接收到的服务器补字字形数据存储为本地字符集后,同终端100已存储字符集进行关联,形成主-辅助字符集的对应关系。当终端100有多个已存储字符集时,一个服务器下载存储的本地字符集,可以允许作为辅助字符集关联到终端100多个已存储字符集上;当从服务器上进行了多次补字后,形成了多个本地字符集,多个本地字符集可以同时关联到终端100一个已存储字符集上,也可以同时关联到终端100多个已存储字符集上。
当然,多次补字后形成的多个辅助本地字符集,在本地既可以合并处理,也可以以碎片文件的分布式形式存在,无论本地字符集是合并处理还是分布式形式存在,均不影响主-辅字符集关联机制的运行。
值得注意的是,当多次补字后形成的多个辅助本地字符集,在同一个字体类型风格的前提下,彼此之间应该没有重复的补字,也不会出现彼此之间编码混乱、字形重复的情况,即在同一个字体类型风格的前提下,每个本地字符集里的补字编码、补字字形均是唯一的,不重复的;每个本地字符集里的映射索引值对于每个本地字符集也是唯一的,因为索引值仅在此本地字符集里有效。
在上述技术方案中,优选地,所述解析单元1062还用于根据所述映射关系索引值得到字形glyf曲线轮廓数据,以及根据字形glyf曲线轮廓数据描绘出贝塞尔曲线轮廓和直线轮廓,以形成所述未知字符的曲线轮廓。
在该技术方案中,通过补字字形专属数据解析出的未知字符的唯一编码和映射关系索引值可得到未知字符字形glyf曲线轮廓数据,而字形二进制glyf轮廓数据主要是由坐标点和标志位组成二进制数据;通过这些坐标点和标志位,可以绘出贝塞尔曲线轮廓和直线轮廓,从而最终组成字形的曲线轮廓,这些轮廓填充后,即得到我们看到的汉字,具体以图7为例进行说明,图7示出了根据本发明的实施例的二进制轮廓字形glyf曲线轮廓和填充的示意图。
如图7所示,“永”字的二进制轮廓字形的glyf曲线通过坐标点和标志位可显示出“永”字的字形,对这些轮廓填充后,即可得到汉字“永”。
图2示出了根据本发明的实施例的服务器的结构示意图。
如图2所示,根据本发明的实施例的服务器200,包括:交互单元202,接收来自终端的补字请求序列,并将处理单元204生成的补字字形专属数据发送至所述终端;所述处理单元204,对所述补字请求序列中的每个未知字符进行数据整理和字形规范处理,以得到每个所述未知字符的属性信息,根据每个所述未知字符的属性信息生成相对应的补字字形专属数据。
在该技术方案中,根据接收到的补字请求序列中未知字符的属性信息,生成相对应的补字字形专属数据,并将补字字形专属数据发送至终端,与现有技术中用户可随意在用户自定义区补字相比,由服务器200统一补字,可实现补字字形的统一存储和分发,避免了字形重复、重复补字的问题。
在上述技术方案中,优选地,还包括:判断单元206,用于在对所述补字请求序列中的每个未知字符进行数据整理和字形规范处理之前,根据所述补字请求序列包含的信息判断所述未知字符的字形是否存在于现有字符集标准编,在判定所述未知字符的字形存在于现有字符集标准编时,将所述未知字符的字形专属数据发送至所述终端,在判定所述未知字符的字形不存在于现有字符集标准编时,将所述未知字符的字形确定为待补字字形,存储于补字区。
在该技术方案中,通过判断未知字符是否存在于现有字符集标准编,对存在于现有字符集标准编的未知字符不需要进行补字,而只有对不存在于现有字符集标准编的未知字符进行补字,可避免字形重复,重复补字的问题。
具体来说,服务器200设有补字数据库,也即补字区,服务器200的补字数据库用来存储每次新增补字的记录;包括补字来源、补字的字体风格、补字时间、补字编码、补字笔形轮廓数据等;该补字数据库里存储的全部是现有字符集标准编码里不存在的新字,一旦现有字符集标准编收录了该补字,就要将该补字从服务器200补字数据库中记录为无效或删除,以保证服务器200补字数据库的唯一性;服务器200补字数据库不允许保存现有字符集标准编码里存在的字符。
判断未知字符是否存在于现有字符集标准编,有以下三种情况:
包括国内和国际字符集编码标准里不存在的,且服务器200的补字数据库里也不存在的,这说明这个补字之前未被申请过,需要进行补字;包括国内和国际字符集编码标准里不存在的,但服务器200的补字数据库里是存在的,这说明这个补字之前被其他终端申请过,无需进行补字,将该字的字形专属数据发送至终端;包括国内和国际字符集编码标准里存在的,但客户端已存储字符集不支持的,此时服务器200补字数据库根本不需要补字,客户端更新字符集即可。
服务器200已有补字的数据库,均是按照补字字符的属性因子进行排序的,属性因子中的字符自有的属性信息如部首、笔画数、笔顺信息是字符特有的信息,按照这种信息进行排序后,当有一个新字出现的时候,就非常方便的进行鉴别是否重复补字。如果不进行排序,不分任何顺序的杂乱无章的存储,则在鉴别一个新字是否重复字的时候,则需要在全部已有字中进行对比,非常耗时。
在上述技术方案中,优选地,所述处理单元204包括:编码生成单元204A,用于在所述补字区中对所述待补字字形分配唯一编码;映射生成单元204B,用于根据所述待补字字形的属性信息和所述待补字字形在补字区的唯一编码,形成所述待补字字符相对应的排序存储序列和映射关系索引值,以得到所述补字字形专属数据,其中,所述映射关系索引值为所述待补字字形在补字区的唯一编码与字形glyf曲线轮廓数据存储位置之间的映射。
在该技术方案中,通过待补字字形的属性信息和待补字字形在补字区的唯一编码确定待补字字符的排序存储序列和映射关系索引值,由于待补字字形的属性信息和待补字字形在补字区的唯一编码均是唯一的,因此确定的排序存储序列和映射关系索引值也是唯一的,不重复的,进而根据其形成的补字字形专属数据唯一。
其中,排序存储序列决定了补字字形专属数据的存储位置,而映射关系索引值为所述待补字字形在补字区的唯一编码与字形glyf曲线轮廓数据存储位置之间的映射,通过补字区的唯一编码即可找出字形glyf曲线轮廓数据的存储位置。
在上述技术方案中,优选地,所述处理单元204还包括:提取单元204C,提取所述待补字字形的单字图曲线;拟合处理单元204D,所述待补字字形的单字图曲线与贝塞尔曲线拟合处理,保持所述待补字字形的原有字型风格,将拟合的贝塞尔曲线轮廓存储为字符集中的glyf字形轮廓格式,形成字形glyf曲线轮廓数据;字体转换单元204E,对所述待补字字体的字体类型风格进行转换,以符合预设字体类型风格要求。
在该技术方案中,通过将形成的字形glyf曲线轮廓数据以二进制形式存储,形成补字区字形专属数据,每个补字的字形专属数据均根据每个待补充字符相对应的排序序列,确定存储的先后顺序和实际位置,补字编码与实际存储位置之间的桥梁是映射索引值(补字编码与实际存储位置的映射关系)。
每增加一个新补字,补字区编码依次在现有补字编码基础上追加一个,但是补字字形glyf曲线轮廓数据的实际存储位置则根据每个补字字符的属性信息进行排序后,***到对应的存储区,以便根据排序依据,来提高使用度频繁的补字的访问速度。此时,映射索引值(补字编码与实际存储位置的映射关系)随之进行调整,以便达到最合理的索引分配、访问速度提升,但补字区编码不会随之进行调整。采用此种方式可以合理分配存储空间,使排序因子靠前的字,以先简单后复杂的原则,简单的的补字字形存储在前面,且字形相近、笔顺相似的补字可以排在一起,方便从补字区中快速鉴别有无重复的补字,从补字区中快速提取用户所需要的相似的字形数据,从而大幅提高检索和提取的效率。
其中,为了满足其他字体类型风格的需要,还需要将提取的原始字型风格修改变换为其他多种字体风格,如宋体、黑体、楷体等,但是仍然为同一个补字,含义是相同的,只不过字体类型、风格不同;其他风格的补字,仍然存储为glyf字形轮廓格式,格式为二进制形式的三次或二次贝塞尔曲线数据,每个补字就同时形成了默认原始手写风格、宋体风格、黑体风格、楷体风格等不同风格的补字数据。
由于之前每个补字,均分配了唯一的补字区编码,结合每个补字拟合后的贝塞尔曲线二进制glyf字的笔形的轮廓数据(即字形专属数据),然后根据形成的各个唯一的补字区编码,分别在用户自定义区的相应位置处存储对应的待补充字符的贝塞尔曲线二进制glyf字形轮廓数据(即字形专属数据),这样就形成了补字区编码与字形专属数据相对应的补字字库文件;补字字库文件即可以仅含一个补字编码和补字字形专属数据,也可以包含多个补字编码和补字字形专属数据,但不允许空补字字库存在;每个补字编码与补字字形唯一的一一对应,不允许一对多或多对一的情况出现。
图3示出了根据本发明的一个实施例的补字方法的示意流程图。
如图3所示,根据本发明的一个实施例的补字方法,包括:步骤302,在接收到不存在于已存储字符集中的未知字符时,生成补字请求序列,并将所述补字请求序列发送至服务器;步骤304,接收来自所述服务器的与所述未知字符对应的补字字形专属数据;步骤306,根据接收到的所述补字字形专属数据,正常显示所述未知字符。
在该技术方案中,通过发送补字请求序列和接收补字字形专属数据,可以实现未知字符的正常显示,简便的解决了终端在接收到不存在于已存储字符集中的未知字符时不能显示的问题,与现有技术中在PC电脑中进行补字,并在终端复制或下载、替换相比,方法简便,提高了响应速度,降低了终端新增补字符的使用难度。
其中,由于未知字符在终端中无法正常显示,因此可以通过手写或拍照的形式将当前终端无法显示的冷僻字制作成图片,结合其他请求信息,发出补字请求序列至服务器。
在上述技术方案中,优选地,提取所述未知字符的字型、序列号、字体类型、字符属性信息,以生成所述补字请求序列。
在该技术方案中,补字请求序列应包含未知字符的全部信息,以便于对未知字符的识别和辨认。具体来说,补字请求序列,包括未知字符的字型(图片形式)、序列号、字体类型信息(字体风格)、字符属性信息在内的请求序列。
由于未知字符在现有的字符集编码标准中均不存在,因此未知字符此时并没有字符编码,仅有升序或降序的序列号;字体类型是指字体的类型,如手写体(指未知字符图片的默认手写风格)、宋体、黑体、楷体等,指补字字型在补字后的字体类型是哪一种;字符属性信息是指待补字符的使用频率、部首信息、笔顺信息、拼音等字符自身的属性,字符属性信息可以是一个,也可以多个属性组合,但不允许空属性;补字请求序列可以包含单个未知字符的补字请求,也可以包含多个未知字符的补字请求;补字请求既可以包含单一字体类型的请求,也可以包含多种字体类型的请求。
在上述技术方案中,优选地,在接收到所述补字字形专属数据后,解析所述补字字形专属数据,得到与所述未知字符对应的唯一编码、字体类型风格和映射关系索引值,并存储为本地字符集;将所述本地字符集与所述终端已存储字符集进行关联,以使所述本地字符集作为所述终端已存储字符集的辅助字符集;查找所述已存储字符集以及所述已存储字符集的所有辅助字符集,以显示所述未知字符。
在该技术方案中,通过将接收到的补字字形专属数据解析存储为本地字符集,并将存储的本地字符集与终端中已存储的字符集相关联,使本地字符集作为终端已存储字符集的辅助字符集,无需更换终端已存储的字符集,仍然使用原有的已存储的字符集,不会破坏、增加、减少终端已存储字符集的文件,即不对终端已存储字符集做任何物理操作,保证了终端已存储字符集的完整性、稳定性。
其中,关联是将接收到的服务器补字字形数据存储为本地字符集后,同终端已存储字符集进行关联,形成主-辅助字符集的对应关系。当终端有多个已存储字符集时,一个服务器下载存储的本地字符集,可以允许作为辅助字符集关联到终端多个已存储字符集上;当从服务器上进行了多次补字后,形成了多个本地字符集,多个本地字符集可以同时关联到终端一个已存储字符集上,也可以同时关联到终端多个已存储字符集上。
当然,多次补字后形成的多个辅助本地字符集,在本地既可以合并处理,也可以以碎片文件的分布式形式存在,无论本地字符集是合并处理还是分布式形式存在,均不影响主-辅字符集关联机制的运行。
值得注意的是,当多次补字后形成的多个辅助本地字符集,在同一个字体类型风格的前提下,彼此之间应该没有重复的补字,也不会出现彼此之间编码混乱、字形重复的情况,即在同一个字体类型风格的前提下,每个本地字符集里的补字编码、补字字形均是唯一的,不重复的;每个本地字符集里的映射索引值对于每个本地字符集也是唯一的,因为索引值仅在此本地字符集里有效。
在上述技术方案中,优选地,还包括:根据所述映射关系索引值得到字形glyf曲线轮廓数据,以及根据字形glyf曲线轮廓数据描绘出贝塞尔曲线轮廓和直线轮廓,以形成所述未知字符的曲线轮廓。
在该技术方案中,通过补字字形专属数据解析出的未知字符的唯一编码和映射关系索引值可得到未知字符字形glyf曲线轮廓数据,而字形二进制glyf轮廓数据主要是由坐标点和标志位组成二进制数据;通过这些坐标点和标志位,可以绘出贝塞尔曲线轮廓和直线轮廓,从而最终组成字形的曲线轮廓,这些轮廓填充后,即得到我们看到的汉字。
图4示出了根据本发明的另一实施例的补字方法的示意流程图。
如图4所示,根据本发明的另一实施例的补字方法,包括:步骤402,接收来自终端的补字请求序列;步骤404,对所述补字请求序列中的每个未知字符进行数据整理和字形规范处理,以得到每个所述未知字符的属性信息;步骤406,根据每个所述未知字符的属性信息生成相对应的补字字形专属数据,并将所述补字字形专属数据发送至所述终端。
在该技术方案中,根据接收到的补字请求序列中未知字符的属性信息,生成相对应的补字字形专属数据,并将补字字形专属数据发送至终端,与现有技术中用户可随意在用户自定义区补字相比,由服务器统一补字,可实现补字字形的统一存储和分发,避免了字形重复、重复补字的问题。
在上述技术方案中,优选地,在对所述补字请求序列中的每个未知字符进行数据整理和字形规范处理之前,根据所述补字请求序列包含的信息判断所述未知字符的字形是否存在于现有字符集标准编;在判定所述未知字符的字形存在于现有字符集标准编时,将所述未知字符的字形专属数据发送至所述终端,在判定所述未知字符的字形不存在于现有字符集标准编时,将所述未知字符的字形确定为待补字字形,存储于补字区。
在该技术方案中,通过判断未知字符是否存在于现有字符集标准编,对存在于现有字符集标准编的未知字符不需要进行补字,而只有对不存在于现有字符集标准编的未知字符进行补字,可避免字形重复,重复补字的问题。
具体来说,服务器设有补字数据库,也即补字区,服务器的补字数据库用来存储每次新增补字的记录;包括补字来源、补字的字体风格、补字时间、补字编码、补字笔形轮廓数据等;该补字数据库里存储的全部是现有字符集标准编码里不存在的新字,一旦现有字符集标准编收录了该补字,就要将该补字从服务器补字数据库中记录为无效或删除,以保证服务器补字数据库的唯一性;服务器补字数据库不允许保存现有字符集标准编码里存在的字符。
判断未知字符是否存在于现有字符集标准编,有以下三种情况:
包括国内和国际字符集编码标准里不存在的,且服务器的补字数据库里也不存在的,这说明这个补字之前未被申请过,需要进行补字;包括国内和国际字符集编码标准里不存在的,但服务器的补字数据库里是存在的,这说明这个补字之前被其他终端申请过,无需进行补字,将该字的字形专属数据发送至终端;包括国内和国际字符集编码标准里存在的,但客户端已存储字符集不支持的,此时服务器补字数据库根本不需要补字,客户端更新字符集即可。
服务器已有补字的数据库,均是按照补字字符的属性因子进行排序的,属性因子中的字符自有的属性信息如部首、笔画数、笔顺信息是字符特有的信息,按照这种信息进行排序后,当有一个新字出现的时候,就非常方便的进行鉴别是否重复补字。如果不进行排序,不分任何顺序的杂乱无章的存储,则在鉴别一个新字是否重复字的时候,则需要在全部已有字中进行对比,非常耗时。
在上述技术方案中,优选地,在所述补字区中对所述待补字字形分配唯一编码;根据所述待补字字形的属性信息和所述待补字字形在补字区的唯一编码,形成所述待补字字符相对应的排序存储序列和映射关系索引值,以得到所述补字字形专属数据,其中,所述映射关系索引值为所述待补字字形在补字区的唯一编码与字形glyf曲线轮廓数据存储位置之间的映射。
在该技术方案中,通过待补字字形的属性信息和待补字字形在补字区的唯一编码确定待补字字符的排序存储序列和映射关系索引值,由于待补字字形的属性信息和待补字字形在补字区的唯一编码均是唯一的,因此确定的排序存储序列和映射关系索引值也是唯一的,不重复的,进而根据其形成的补字字形专属数据唯一。
其中,排序存储序列决定了补字字形专属数据的存储位置,而映射关系索引值为所述待补字字形在补字区的唯一编码与字形glyf曲线轮廓数据存储位置之间的映射,通过补字区的唯一编码即可找出字形glyf曲线轮廓数据的存储位置。
在上述技术方案中,优选地,提取所述待补字字形的单字图曲线;所述待补字字形的单字图曲线与贝塞尔曲线拟合处理,保持所述待补字字形的原有字型风格,将拟合的贝塞尔曲线轮廓存储为字符集中的glyf字形轮廓格式,形成字形glyf曲线轮廓数据;对所述待补字字体的字体类型风格进行转换,以符合预设字体类型风格要求。
在该技术方案中,通过将形成的字形glyf曲线轮廓数据以二进制形式存储,形成补字区字形专属数据,每个补字的字形专属数据均根据每个待补充字符相对应的排序序列,确定存储的先后顺序和实际位置,补字编码与实际存储位置之间的桥梁是映射索引值(补字编码与实际存储位置的映射关系)。
每增加一个新补字,补字区编码依次在现有补字编码基础上追加一个,但是补字字形glyf曲线轮廓数据的实际存储位置则根据每个补字字符的属性信息进行排序后,***到对应的存储区,以便根据排序依据,来提高使用度频繁的补字的访问速度。此时,映射索引值(补字编码与实际存储位置的映射关系)随之进行调整,以便达到最合理的索引分配、访问速度提升,但补字区编码不会随之进行调整。采用此种方式可以合理分配存储空间,使排序因子靠前的字,以先简单后复杂的原则,简单的的补字字形存储在前面,且字形相近、笔顺相似的补字可以排在一起,方便从补字区中快速鉴别有无重复的补字,从补字区中快速提取用户所需要的相似的字形数据,从而大幅提高检索和提取的效率。
其中,为了满足其他字体类型风格的需要,还需要将提取的原始字型风格修改变换为其他多种字体风格,如宋体、黑体、楷体等,但是仍然为同一个补字,含义是相同的,只不过字体类型、风格不同;其他风格的补字,仍然存储为glyf字形轮廓格式,格式为二进制形式的三次或二次贝塞尔曲线数据,每个补字就同时形成了默认原始手写风格、宋体风格、黑体风格、楷体风格等不同风格的补字数据。
由于之前每个补字,均分配了唯一的补字区编码,结合每个补字拟合后的贝塞尔曲线二进制glyf字的笔形的轮廓数据(即字形专属数据),然后根据形成的各个唯一的补字区编码,分别在用户自定义区的相应位置处存储对应的待补充字符的贝塞尔曲线二进制glyf字形轮廓数据(即字形专属数据),这样就形成了补字区编码与字形专属数据相对应的补字字库文件;补字字库文件即可以仅含一个补字编码和补字字形专属数据,也可以包含多个补字编码和补字字形专属数据,但不允许空补字字库存在;每个补字编码与补字字形唯一的一一对应,不允许一对多或多对一的情况出现。
图5示出了根据本发明的又一实施例的补字方法的示意流程图。
如图5所示,根据本发明的又一实施例的补字方法,包括:
步骤502,接收到终端无法显示的未知字符时,判定已存储字符集中缺少该字符,则发送补字请求序列。
步骤504,服务器端接收补字申请序列,根据终端请求的字体类型,选择相应的已存储字符集(字库)。
步骤506,分析补字请求序列中新字的属性信息,确定新字的glyf轮廓曲线的存储位置。
步骤508,提取单字图曲线与贝塞尔曲线进行拟合处理,提取拟合后的贝塞尔曲线,结合新字在补字区的唯一编码、映射索引值、和拟合后的贝塞尔曲线,以二进制数据形式存储形成字形专属数据。
步骤510,将字形专属数据传入打包单元,进行打包。
步骤512,判断字形专属数据是否提取完成,提取完成则执行步骤514,否则执行步骤508。
步骤514,字形专属数据提取完成后,进行打包。
步骤516,将打包后的字形专属数据通过网络下发至终端。
步骤518,终端接收打包的字形专属数据,传入解包单元。
步骤520,终端解包接收到的字形专属数据。
步骤522,将解包生成的唯一编码、映射索引值和glyf轮廓曲线另存为本地字符集。
步骤524,将本地字符集与终端中已存储的字符集建立主-辅关联关系,可以按照对应的字型相应的建立关联,例如:宋体风格的本地字符集与终端中已存储的宋体字符集相关联。
步骤526,使用关联后的主-辅字符集显示未知字符。
下面结合图8至图12详细说明本发明。
图8示出了根据本发明的实施例的新字字形的示意图。
如图8所示,当手机用户遇到一些人名、地名的冷僻字后,比如:
,手机里可以识别人名里的姓:“李”,但是无法识别里面的名字
(如图8所示)。
步骤1,终端(如手机)通过手写或拍照,将当前手机内无法显示的冷僻字,形成图片
,结合其他请求信息,发出补字请求序列到服务器端;
是一个汉字,由两个“予”字组成,用于户口本、身份证的上冷僻名字,在现有国内国际字符编码标准中均不存在该字符;因此,在手机设备上将无法正常显示、录入和存储该汉字。
形成补字请求序列:01/手机imei+001.jpg/手写字+宋体/予+左右结构:予+予+8+54525452/;请求序列以“/”进行分割属性信息,第1个属性信息01表示使用频率属于一级使用频率,使用相对频繁;第2个属性信息“手机imei+001.jpg”形成唯一标示,标示来源于哪个手机的第几个请求序列;同时后缀为新字图片的文件名;第3个属性信息“手写字+宋体”表示需要返回手写字字体风格和宋体字体风格的补字字形;第4个属性信息:“予+左右结构:予+予+8+54525452”分别表示该冷僻字的属性信息,“予”表示部首,含义是由两个左右结构的“予”字组成,总笔画数为8,笔顺顺序为54525452,含义是折、点、折、竖、折、点、折、竖;这里横、竖、撇、点、折分别为用数字1、2、3、4、5表示;全部变为数字后为:01123456789001.jpg 00 11 04D5 11 08 54525452;方便当多个补字后,在服务器进行补字的时候,在数据库内进行排序,以便后续确定补字编码以及实际在补字文件中的储存位置。
步骤2,服务器端在接受到该补字请求序列(01 123456789001.jpg 00 11 04D511 08 54525452)后,分析终端发送的请求信息,进一步依次确定每个待补字图片是否均需要补字,以及补字的类型,经过图片比较以及属性信息比较,进一步确定这个字符在现有国内和国际字符集编码标准里均不存在,且在服务器的补字数据库里也没有查询到,确定这个属于新字,需要进行增补。
已补字的补字码位是确定的,且一经确定,一般不得随意更改,否则会造成一个补字占用多个补字区的编码码位,造成编码码位的浪费。例如,E000,E001,E002,已经补过字的编码码位,就不允许再调整这些码位上的已有补字字形了,以免造成已经引用过这些补字的手机客户端,与其他引用新码位的客户端造成同一个补字,不同的码位的情况发生。
服务器端通过每个补字申请的先后顺序,依次确定每个补字字形在补字区的唯一编码,假设现在E000,E001,E002已经补过字了,则在后面依次递增新的补字申请,即E003上增加新的补字“
”,依次类推,当再接收到补字申请需要补字时,即编码为E004。
确定了“
”的补字编码E003后,还需要确定补字编码与实际存储位置的对应映射关系、以及该字字形glyf轮廓数据的实际存储排序位置,这里通过每个待补充字符属性信息(01 123456789001.jpg 00 11 04D5 11 08 54525452),分别形成与每个待补充字符相对应的排序存储序列(01 04D5 11 08 54525452,表示使用频率、部首、结构、笔画数、笔顺信息组合的属性信息),即“
提取后的排序序列因子为:(01 04D5 11 0854525452),其他已有补字和未来补字的排序因子也大体类似,针对属性因子进行排序,得到具***置,将其***到已有的补字排序存储队列中;同时,记录住补字区编码与字形glyf曲线轮廓数据存储位置的映射关系,即映射关系索引值,映射关系索引值是可以根据字符的属性信息排序依据进行动态调整的,索引值是补字编码与字形glyf曲线轮廓数据存储位置的映射,通过补字的唯一编码与索引对照,找到字形glyf曲线轮廓数据存储位置,唯一编码确定后一般不再改变。
比如:已有的三个已补新字A、D、E,这三个在现有所有字典和字符编码标准中均不存在,已经在服务器数据库进行增补过,那么其编码与存储排序关系如下表1所示。
表1
而“
”提取后的排序序列因子为:(01 04D5 11 08 54525452),则“
”字的字形glyf曲线轮廓数据就可以存储到已补字D和已补字E的存储位置的中间,但是补字区编码是在已补字E的后面递增;同时记录映射关系表为,E003----01 04D5 11 0854525452----2B。
变更前的映射关系表有三个已补字如下:
E000----01 04D5 11 06 4525452—1A
E001----01 04D5 11 07 4525452—2A
E002----01 04D5 11 08 6525452—3A
“
”字新补字加入后,根据排序存储序列,重新变更后的编码与存储映射关系表为四个新补字的映射关系:
E000----01 04D5 11 06 4525452—1A
E001----01 04D5 11 07 4525452—2A
E002----01 04D5 11 08 6525452—3A
E003----01 04D5 11 08 4525452—2B
按照补字字形的存储位置,则排序为:1A、2A、2B、3A
E000----01 04D5 11 06 4525452—1A
E001----01 04D5 11 07 4525452—2A
E003----01 04D5 11 08 4525452—2B
E002----01 04D5 11 08 6525452—3A
这样做的好处是,合理分配存储空间,使排序因子靠前的字,本来先简单后复杂的原则,简单的的补字字形存储在前面,且字形相近、笔顺相似的补字可以排在一起,方便从大数据库中识别有无重复的补字,提取用户所需要的相似的字形数据,可以大幅提高检索和提取的效率。
如果在服务器端不进行有效的因子排序处理,则每次检索的时候,均要全部检索一遍,非常费时费力。
在确定“
”的补字编码E003、字形glyf曲线轮廓数据存储位置、以及映射关系后,则需要进一步提取对应的待补字中的单字图“
”内的轮廓曲线出来,在进行贝塞尔数学曲线拟合处理过程中,需要保持待补字字型图片中的原有字型风格,将提取的贝塞尔曲线存储为字库中的glyf字形轮廓格式,如图9所示,根据本发明的实施例的新字字形原始风格贝塞尔曲线的示意图,格式为二进制,形成补字区字形专属数据。
将补字“
”的字形glyf曲线轮廓数据,***存储到刚才确定的“2B”位置即可;同时记录新增glyf曲线轮廓数据长度,方便区分与其他补字字形数据的边缘。
此时,仅完成了补字的原始字体风格的补字字形提取,为了满足其他字体类型风格的需要,还需要将提取的原始字型风格修改变换为其他多种字体风格,如宋体、黑体、楷体等,但是仍然为同一个补字,含义是相同的,只不过字体类型、风格不同;其他风格的补字,仍然存储为glyf字形轮廓格式,格式为二进制形式的三次或二次贝塞尔曲线数据。
例如,补字“
”要求提供两种字体类型的风格,一种是00表示原始字体风格,一种是01表示是宋体字体风格;在提取了原始字体风格的glyf曲线轮廓数据后,还需要将其转换为宋体字体类型的风格,转化的方式可以利用字体风格转换器,提取补字“
”笔干、笔顺信息,组成成宋体风格的补字,即为宋体风格的“
”补字字形;也可以后台人工转换字体风格。
这样,补字“
”就同时有了默认原始手写风格“
”和宋体风格“
”,根据需要也可以提供其他风格的字形,如黑体、楷体等,不再一一叙述。
形成的新的字体风格的“
”使用相同的排序因子,即可以加入到原有字体风格存储序列2B后,变为2C;也可以单独新增一个宋体风格的轮廓字形数据的排序存储序列,存储位置仍为2B;如:
E000----01 04D5 11 06 4525452—1A
E001----01 04D5 11 07 4525452—2A
E003----01 04D5 11 08 4525452—2B
E003----01 04D5 11 08 4525452—2C
E002----01 04D5 11 08 6525452—3A
也可以:
原始风格E000----01 04D5 11 06 4525452—1A
原始风格E001----01 04D5 11 07 4525452—2A
原始风格E003----01 04D5 11 08 4525452—2B
原始风格E002----01 04D5 11 08 6525452—3A
宋体风格E000----01 04D5 11 06 4525452—1A
宋体风格E001----01 04D5 11 07 4525452—2A
宋体风格E003----01 04D5 11 08 4525452—2B
宋体风格E002----01 04D5 11 08 6525452—3A
上述排序存储仅为在服务器集中统一存储排序使用;客户端下载调用的时候,必须以某种字体风格为单位进行分别的分发和下载;所有标准外的已补字,均统一排序存储与服务器的数据库内。
步骤3,服务器端将补字完毕后的补字字形的专属glyf字形轮廓数据部分以及映射关系表,统一存储到服务器统一的补字字形数据库内后,根据用户的需求,进行分别提取所需要的若干个补字字型,生成数据包。
针对不同补字字体类型风格的需求,可以打包不同字体类型风格的专属glyf字形轮廓数据包,如方正补字原始字体风格E000-E003.ZIP,方正补字黑体字体风格E000-E003.ZIP。其中,数据包的前面是映射关系表,后面是对应的字形轮廓二进制数据。
这里根据客户端的申请,仅提取返回给该手机客户端单个补字“
”,即补字编码E003的映射关系和“
”字的字型轮廓数据;方正补字原始字体风格E003.ZIP,方正补字黑体字体风格E003.ZIP;其他的补字由于该终端没有发出申请,没有必要返回给终端,避免了流量的浪费。
步骤4,服务器端向接收端终端返回下发步骤3中生成的“
”补字字形专属数据包,接收端对收到的“
”字的数据包进行解包处理后,提取数据包中的字体风格、编码映射关系和字型轮廓数据。
原始风格E000----01 04D5 11 06 4525452—1A
原始风格E001----01 04D5 11 07 4525452—2A
原始风格E003----01 04D5 11 08 4525452—2B
原始风格E002----01 04D5 11 08 6525452—3A
宋体风格E000----01 04D5 11 06 4525452—1A
宋体风格E001----01 04D5 11 07 4525452—2A
宋体风格E003----01 04D5 11 08 4525452—2B
宋体风格E002----01 04D5 11 08 6525452—3A
步骤5,接收端提取解包“
”字数据包中的数据后,将解析获取的补字字符相关的字形专属数据,包含补字的字体类型风格、对应的唯一编码、索引值,在本地直接另存为本地字符集:方正补字原始字体风格E003.BZ和方正补字宋体字体风格E003.BZ,分别含有“
”和“
”。
其中,字形的专属数据包由字形专属数据映射关系索引表和字形二进制glyf轮廓数据构成。
所述字形二进制glyf轮廓数据主要是由坐标点和标志位组成二进制数据;通过这些坐标点和标志位,可以绘出贝塞尔曲线轮廓和直线轮廓,从而最终组成字形的曲线轮廓,这些轮廓填充后,即得到我们看到的汉字。
方正补字原始字体风格E003.BZ和方正补字宋体字体风格E003.BZ包含前面的映射关系和后面的字形了轮廓曲线数据“
”和“
”;此时,使用同本地手机***的主字库(如roboto.ttf等)进行关联,使新增的补字字库文件与***主字库进行关联后,作为主字库的补充字库,当某个新字在主字库里找不到的时候,通过关联的辅助的补字字库,找到补字的字形,从而显示出补字字形出来。
关联的方式有多种,如图11所示,将方正补字原始字体风格E003.BZ与终端中多个已存储字符集相关联(一个本地字符集对应终端多个已存储字符集的关联方式);如图12所示,将方正补字原始字体风格E003.BZ和方正补字宋体字体风格E003.BZ均与终端中已存储的黑体和roboto字符集相关联(多个本地字符集对应终端多个已存储字符集的关联方式)。
这个步骤里,用户无需更换字体,仍然使用原有字体,不会破坏、增加、减少原有主字体文件,即不对原字体文件做任何物理操作,保证了原有字体的完整性、稳定性。
关联的作用,是将服务器每次下载的补字字库,同***主字库进行关联,形成主-辅助补字的关联对应关系;当主字库有多个的时候,一个服务器下载的补字字库,可以允许作为辅助字库关联到多个主字库上(如图11所示);当从服务器上进行了多次补字后,形成了多个补字文件,多个补字文件可以同时关联到一个主字库,也可以同时关联到多个主字库上(如图12所示)。
当然,多次补字后形成的多个辅助补字字库,在本地既可以合并处理,也可以以碎片文件的分布式形式存在,无论补字文件是合并处理还是分布式形式,均不影响主-辅字库关联机制的运行。
注意,当多次补字后形成的多个辅助补字字库,在同一个字体类型风格的前提下,彼此之间应该没有重复的补字,也不会出现彼此之间编码混乱、字形重复的情况。即,在同一个字体类型风格的前提下,每个补字文件里的补字编码、补字字形均是唯一的,不重复的;每个补字文件里的索引对于每个补字文件也是唯一的,因为索引值仅在本补字文件里有效。
主-辅字库在关联的时候,可以是相同字体类型风格的主-辅字库关联,也可以是不同字体风格所述的本地字库文件格式,可以是TTE字库格式,也可以是自定义补字字库格式,自定义字库格式包括以下要素:补字的字体类型的风格、唯一的补字编码、补字编码与补字字形glyf轮廓数据之间的索引值、最后是不重复的补字字形glyf轮廓数据;不允许同一个补字文件里,同时存储重复的补字编码和补字字形glyf轮廓数据。
按照上述步骤,当遇到例如新字字符
,该字符的字型大图见图8,服务器返回的补字编码为UNICODE 0XE003,仅需从服务器端下载约150个字节,就可完成下载的新字字型数据到本机,且通过多次新字申请,可以累加在本机补字字库BZ内,当有多个字体风格的时候,需要分布处理,即一个字体风格的补字至少形成一个补字文件;如方正补字原始字体风格E003.BZ和方正补字宋体字体风格E003.BZ包含前面的映射关系和后面的字形了轮廓曲线数据“
”和“
”;假设手机本地字库ROBOTO支持当前所有字符编码标准内的字符的显示,当“
”和“
”出现的时候,由于该字并不在当前所有字符编码标准内,因此手机将无法显示。
而通过向服务器提出补字申请,服务器提取、排序、存储、拟合、返回字形数据和索引关系后,通过本地的主-辅字库的关联关系,使方正补字原始字体风格E003.BZ和方正补字宋体字体风格E003.BZ成为主字库ROBOTO的辅助字库,当***字体解释引擎在当前主字库里无法检索到“
”和“
”(补字编码为0XE003)的时候,则会查找有无相关联的辅助字库,通过两个辅助字库里的编码查找,找到两个0XE003,是两个不同的字型,原始字体类型风格“
”和宋体风格“
”,通过关联功能里的字体类型风格匹配,选择合适的字体类型,原始字体类型风格“
”或宋体风格“
”,从方正补字原始字体风格E003.BZ或方正补字宋体字体风格E003.BZ中读取E003,找到:
原始风格E000----01 04D5 11 06 4525452—1A
原始风格E001----01 04D5 11 07 4525452—2A
原始风格E003----01 04D5 11 08 4525452—2B
原始风格E002----01 04D5 11 08 6525452—3A
宋体风格E000----01 04D5 11 06 4525452—1A
宋体风格E001----01 04D5 11 07 4525452—2A
宋体风格E003----01 04D5 11 08 4525452—2B
宋体风格E002----01 04D5 11 08 6525452—3A
分别找到存放字形轮廓曲线数据的位置“2B”,将其轮廓数据读取出来,交给***字体引擎先进行内、外轮廓还原,最后对还原后的曲线轮廓进行区域和路径的填充和渲染。即得到图9和图10字形数据曲线轮廓填充后的字形出来,即为:“
”和“
”。
这种终端申请现有字典和字符标准编码内的不存在的新字的方法,可以分布式的、移动式申请,服务器统一受理、记录、有效因此排序处理,在服务器端通过属性因子进行有效排序,使字形相近、笔顺类似的补字,按照从前到后,从简单汉字到复杂汉字,按照使用频率、笔顺依次增多的存储排序规则,首先大大提高了鉴别已补字的效率问题,通过统一标准外的补字申请、补字码统一分配、字形在线拟合、实时的反馈流程,大大节约了流量,减轻了手机网络负载,提高了手机响应速度,同时节省了手机存储空间,降低了标准外缺字请求使用的难度,完全达到了标准外缺字时按需实时申请补字、并分布式分发的目的。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上结合附图详细说明了本发明的技术方案,考虑到在现有技术中,接收到现有标准中不存在的新字时,需要先在PC电脑中通过字符集的补字区进行人工补字后,然后在手机***中重新复制或下载新字库,再在手机里安装新的字库,此种方式一方面费时费力;另一方面针对用户自定义区内的补字没有进行统一的分级和排序存放,造成手机字库的用户自定义区内不仅存储无序、杂乱无章,而且还存在字形重复、重复补字的问题。因此,本发明提出了一种新的补字方法,通过本发明的技术方案,可以统一有序的在服务器中新增现有标准编中不存在的未知字符,并将生成的字形专属数据发送至终端使用,简便快捷,提高响应速度,同时避免重复补字,降低数据的冗余量。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。