拆分字体部件的方法及装置转让专利

申请号 : CN201810208851.3

文献号 : CN110276051A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郝龙杰

申请人 : 北大方正集团有限公司北京北大方正电子有限公司

摘要 :

本发明提供一种拆分字体部件的方法及装置。方法包括:根据待拆分字体,获取与待拆分字体对应的表意文字描述序列;根据表意文字描述序列包括的数据信息的顺序,获取表意文字描述序列包括的数据信息;根据数据信息生成与待拆分字体对应的参考字体;根据参考字体对待拆分字体进行拆分。本发明通过获取与待拆分字体对应的表意文字描述序列,再根据获取的表意文字描述序列生成参考字体,进而根据参考字体对待拆分字体进行拆分,能够在不需要模板字体的情况下,准确的对字体进行拆分,解决了现有技术的拆分字体的方案中,对模板字体依赖性太强的问题。

权利要求 :

1.一种拆分字体部件的方法,其特征在于,包括:根据待拆分字体,获取与所述待拆分字体对应的表意文字描述序列;

根据所述表意文字描述序列包括的数据信息的顺序,获取所述表意文字描述序列包括的所述数据信息;

根据所述数据信息生成与所述待拆分字体对应的参考字体;

根据所述参考字体对所述待拆分字体进行拆分。

2.根据权利要求1所述的方法,其特征在于,所述根据所述数据信息生成与所述待拆分字体对应的参考字体,包括:获取存储在部件边框栈栈顶中存储的部件边框;

根据获取的数据信息对所述部件边框进行处理;

检测是否获取完所述表意文字描述序列包括的所有数据信息,若否,则继续执行获取所述表意文字描述序列包括的数据信息的步骤。

3.根据权利要求2所述的方法,其特征在于,所述根据所述表意文字描述序列包括的所述数据信息的顺序,获取所述表意文字描述序列包括的数据信息,包括:按照所述表意文字描述序列中所述数据信息的逆序,将所述数据信息依次存储到数据栈中,以使所述表意文字描述序列中的第一个所述数据信息存储在所述数据栈的栈顶;

获取存储在所述数据栈中的所述数据信息。

4.根据权利要求2所述的方法,其特征在于,所述数据信息包括:部件编码、结构符;

所述根据获取的数据信息对所述部件边框进行处理,包括:若获取的所述数据信息为所述结构符,则根据所述结构符对获取的所述部件边框进行分割,并将分割后的部件边框按照预设顺序存储到所述部件边框栈中;

若获取的所述数据信息为所述部件编码,则将所述部件编码对应的轮廓数据缩放平移到获取的所述部件边框中。

5.根据权利要求3所述的方法,其特征在于,所述检测是否获取完所述表意文字描述序列包括的所有数据信息,包括:检测所述数据栈是否为空。

6.根据权利要求2~4任一项所述的方法,其特征在于,所述根据所述参考字体对所述待拆分字体进行拆分,包括:根据所述表意文字描述序列包括的结构符的顺序,依次获取所述结构符;

判断所述结构符属于包围结构还是非包围结构;

若属于非包围结构,则:

根据第一预设规则获取所述参考字体中包括的参考点集,根据所述第一预设规则获取所述待拆分字体中包括的待匹配点集;其中,所述参考点集包括各个参考点所在的结构位置;

确定所述参考点集中的参考点与所述待匹配点集中的待匹配点之间的对应关系,根据所述对应关系确定每个所述待匹配点所在的结构位置;

根据结构位置相同的所述待匹配点确定所述待拆分字体中包括的非包围部件;

若属于包围结构,则:

根据获取的所述结构符获取所述参考字体中,所述包围结构内框中的参考部件;

根据获取的所述结构符确定所述待拆分字体中的待选部件;

计算所述待选部件与所述参考部件之间的相似度,根据所述相似度确定所述待拆分字体中的包围部件。

7.根据权利要求6所述的方法,其特征在于,所述根据第一预设规则获取所述参考字体中包括的参考点集,根据所述第一预设规则获取所述待拆分字体中包括的待匹配点集,包括:确定所述参考字体中包括的参考部件轮廓框,确定所述待拆分字体中包括的待匹配部件轮廓框;

根据第二预设规则获取每个所述参考部件轮廓框中包括的参考点,根据所述第二预设规则获取每个所述待匹配部件轮廓框中包括的待匹配点;

根据所述参考点确定所述参考点集,根据所述待匹配点确定所述待匹配点集。

8.根据权利要求6所述的方法,其特征在于,所述根据获取的所述结构符确定所述待拆分字体中的待选部件,包括:确定所述参考部件中包括的轮廓数m;

根据所述结构符生成包围结构框;

使用所述包围结构框框选所述待拆分字体中的轮廓,调整内矩形框与外矩形框的面积比值,使所述内矩形框分别包围住第一待选部件、第二待选部件、第三待选部件,其中,所述第一待选部件、所述第二待选部件、所述第三待选部件包括的轮廓数分别为m-1、m、m+1。

9.一种拆分字体部件的装置,其特征在于,包括:第一获取模块,用于根据待拆分字体,获取与所述待拆分字体对应的表意文字描述序列;

第二获取模块,用于根据所述表意文字描述序列包括的数据信息的顺序,获取所述表意文字描述序列包括的所述数据信息;

生成模块,用于根据所述数据信息生成与所述待拆分字体对应的参考字体;

拆分模块,用于根据所述参考字体对所述待拆分字体进行拆分。

10.根据权利要求9所述的装置,其特征在于,所述生成模块,包括:第一获取单元,用于获取存储在部件边框栈栈顶中存储的部件边框;

处理单元,用于根据获取的数据信息对所述部件边框进行处理;

检测单元,用于检测是否获取完所述表意文字描述序列包括的所有数据信息,若否,则所述第二获取模块继续执行获取所述表意文字描述序列包括的数据信息的步骤。

11.根据权利要求10所述的装置,其特征在于,所述第二获取模块,包括:存储单元,用于按照所述表意文字描述序列中所述数据信息的逆序,将所述数据信息依次存储到数据栈中,以使所述表意文字描述序列中的第一个所述数据信息存储在所述数据栈的栈顶;

第二获取单元,用于获取存储在所述数据栈中的所述数据信息;

相应的,所述检测单元具体用于:检测所述数据栈是否为空。

12.根据权利要求10所述的装置,其特征在于,所述数据信息包括:部件编码和结构符;

所述处理单元具体用于:

若获取的所述数据信息为所述结构符,则根据所述结构符对获取的所述部件边框进行分割,并将分割后的部件边框按照预设顺序存储到所述部件边框栈中;

若获取的所述数据信息为所述部件编码,则将所述部件编码对应的轮廓数据缩放平移到获取的所述部件边框中。

13.根据权利要求10~12任一项所述的装置,其特征在于,所述拆分模块,包括:第三获取单元,用于根据所述表意文字描述序列包括的结构符的顺序,依次获取所述结构符;

判断单元,用于判断所述结构符属于包围结构还是非包围结构;

若属于非包围结构,则所述拆分模块还包括:

点集获取单元,用于根据第一预设规则获取所述参考字体中包括的参考点集,根据所述第一预设规则获取所述待拆分字体中包括的待匹配点集;其中,所述参考点集包括各个参考点所在的结构位置;

第一确定单元,用于确定所述参考点集中的参考点与所述待匹配点集中的待匹配点之间的对应关系,根据所述对应关系确定每个所述待匹配点所在的结构位置;

所述第一确定单元还用于根据结构位置相同的所述待匹配点确定所述待拆分字体中包括的非包围部件;

若属于包围结构,则所述拆分模块还包括:

部件获取单元,用于根据获取的所述结构符获取所述参考字体中所述包围结构内框中的参考部件;

第二确定单元,用于根据获取的所述结构符确定所述待拆分字体中的待选部件;

对比单元,用于对比所述待选部件与所述参考部件之间的相似度,根据所述相似度确定所述待拆分字体中的包围部件。

14.根据权利要求13所述的装置,其特征在于,所述点集获取单元具体用于:确定所述参考字体中包括的参考部件轮廓框,确定所述待拆分字体中包括的待匹配部件轮廓框;

根据第二预设规则获取每个所述参考部件轮廓框中包括的参考点,根据所述第二预设规则获取每个所述待匹配部件轮廓框中包括的待匹配点;

根据所述参考点确定所述参考点集,根据所述待匹配点确定所述待匹配点集。

15.根据权利要求13所述的装置,其特征在于,所述部件获取单元具体用于:确定所述参考部件中包括的轮廓数m;

根据所述结构符生成包围结构框;

使用所述包围结构框框选所述待拆分字体中的轮廓,调整内矩形框与外矩形框的面积比值,使所述内矩形框分别包围住第一待选部件、第二待选部件、第三待选部件,其中,所述第一待选部件、所述第二待选部件、所述第三待选部件包括的轮廓数分别为m-1、m、m+1。

说明书 :

拆分字体部件的方法及装置

技术领域

[0001] 本发明涉及拆分字体部件技术,尤其涉及一种拆分字体部件的方法及装置,属于字体处理领域。

背景技术

[0002] 目前,对于具有计算能力的系统来说,通常需要录入大量的汉字供用户使用。而汉字的字数非常多,GBK中收入的汉字就有2万多个,符合GBK规范的TrueType汉字字库达到10M左右。对于存储容量较小的系统来说,如此庞大的字数是很难存储的,因此,对汉字字库数据进行压缩具有重要的作用。
[0003] 现有的压缩字库是在字库中存储字体部件,再利用已有的字体部件进行拼字,从而减小字库存储容量。在存储字体部件之前,需要对字体进行拆分,从而得到字体部件的准确位置。目前使用的字体部件拆分方法是先制作模板字体,基于制作好的模板字体,在模板字体中记录了各个部件的具体位置,利用模板字体,对待拆分字体中的部件进行拆分,得到待拆分字体中各部件的准确位置以及各部件的相对位置,方便后续制作压缩字体或进行拼字。
[0004] 然而,现有技术中的拆分字体的方法通常需要利用一套制作好的模板字体,根据模板字体生成待拆分字体中各个部件的具体位置,进而对待拆分字体进行部件拆分。如果没有事先做好的模板字体,则部件拆分没有办法进行。因此,现有技术的拆分字体的方法对模板字体的依赖性较强。

发明内容

[0005] 本发明提供一种拆分字体部件的方法及装置,通过获取与待拆分字体对应的表意文字描述序列,再根据获取的表意文字描述序列生成参考字体,进而根据参考字体对待拆分字体进行拆分,能够在不需要模板字体的情况下,准确的对字体部件进行拆分,解决了现有技术方案中,对模板字体依赖性太强的问题。
[0006] 本发明的第一个方面是提供一种拆分字体部件的方法,包括:
[0007] 根据待拆分字体,获取与所述待拆分字体对应的表意文字描述序列;
[0008] 根据所述表意文字描述序列包括的数据信息的顺序,获取所述表意文字描述序列包括的所述数据信息;
[0009] 根据所述数据信息生成与所述待拆分字体对应的参考字体;
[0010] 根据所述参考字体对所述待拆分字体进行拆分。
[0011] 本发明的另一个方面是提供一种拆分字体部件的装置,包括:
[0012] 第一获取模块,用于根据待拆分字体,获取与所述待拆分字体对应的表意文字描述序列;
[0013] 第二获取模块,用于根据所述表意文字描述序列包括的数据信息的顺序,获取所述表意文字描述序列包括的所述数据信息;
[0014] 生成模块,用于根据所述数据信息生成与所述待拆分字体对应的参考字体;
[0015] 拆分模块,用于根据所述参考字体对所述待拆分字体进行拆分。
[0016] 本发明提供的拆分字体部件的方法及装置的技术效果是:
[0017] 本实施例提供的拆分字体部件的方法及装置,包括根据待拆分字体,获取与待拆分字体对应的表意文字描述序列;根据表意文字描述序列包括的数据信息的顺序,获取表意文字描述序列包括的数据信息;根据数据信息生成与待拆分字体对应的参考字体;根据参考字体对待拆分字体进行拆分。本实施例提供的方法及装置,能够根据表意文字描述序列生成与待拆分字体对应的参考字体,使得参考字体与待拆分字体具有相同的拓扑结构,再根据参考字体确定拆分字体中包括的字体部件,从而能够准确的拆分字体。并且,本实施例提供的方法及装置能够自动生成参考字体,不需要提前制作模板字体,从而解决现有技术中的拆分字体的方法对模板字体的依赖性强的问题。

附图说明

[0018] 图1为本发明一示例性实施例示出的拆分字体部件的方法的流程图;
[0019] 图1A为本发明一示例性实施例示出的生成“峰”的参考字体的流程示意图;
[0020] 图1B为本发明一示例性实施例示出的待拆分字体“峰”及其参考字体的示意图;
[0021] 图2为本发明另一示例性实施例示出的拆分字体部件的方法的流程图;
[0022] 图2A为本发明一示例性实施例示出的生成“锡”的参考字体的流程图;
[0023] 图2B为本发明一示例性实施例示出的部件边框栈的变化示意图;
[0024] 图2C为本发明一示例性实施例示出的生成参考字体的过程的示意图;
[0025] 图2D本发明一示例性实施例示出的获取参考点集、待匹配点集的流程图;
[0026] 图2E为本发明一示例性实施例示出的轮廓框示意图;
[0027] 图2F为本发明一示例性实施例示出的确定待选部件的流程图;
[0028] 图2G为本发明一示例性实施例示出的拆分字体的过程的示意图;
[0029] 图3为本为本发明又一示例性实施例示出的拆分字体的方法的流程图;
[0030] 图3A为本发明一示例性实施例示出的数据栈的变化过程示意图;
[0031] 图4为本发明一示例性实施例示出的拆分字体部件的装置的结构图;
[0032] 图5为本发明另一示例性实施例示出的拆分字体部件的装置的结构图。

具体实施方式

[0033] 图1为本发明一示例性实施例示出的拆分字体部件的方法的流程图。
[0034] 如图1所示,本实施例提供的拆分字体部件的方法包括:
[0035] 步骤101,根据待拆分字体,获取与待拆分字体对应的表意文字描述序列。
[0036] 其中,可以由用户输入至少一个待拆分字体,用于执行本实施例提供的方法的装置接收到待拆分字体后,可以获取与待拆分字体相应的表意文字描述序列。具体的,表意文字描述序列中可以包含该字符的组成结构符和相应的组成部件编码。
[0037] 其中,部件编码是指用于构成文字的部件,可以直接用部件作为部件编码,如“”、“囗”、“土”等。结构符是指文字的结构,例如“上下”、“上中下”、“左右”、“左中右”和包围结构等。有一些文字没有这些结构,如“一”,那么在这样的文字的表意文字描述序列中,可以不包括结构符。而对于能够拆分为多个部件的文字来说,他们的表意文字描述序列中包括结构符,例如“峰”为左右结构,则其结构符是
[0038] 可以在手机、计算机等电子设备的存储器中存储本实施例提供的方法,并使电子设备的处理器运行本实施例提供的方法,从而使电子设备能够执行本实施例提供的方法。
[0039] 步骤102,根据表意文字描述序列包括的数据信息的顺序,获取表意文字描述序列包括的数据信息。
[0040] 实际应用时,表意文字描述序列中包括的数据信息具有排列顺序。例如,“ 山夆”中, 为第一位,“山”为第二位,“夆”为第三位,该顺序为根据文字结构预先设定的顺序。由于中文汉字中,有一些文字的上下部件或左右部件能够交换并构成另外的文字,因此,表意文字描述序列中数据信息的排列顺序对于正确拆分字体是很关键的。例如“杏”的表意文字描述序列是“ 木口”,而“呆”的表意文字描述序列为“ 口木”。
[0041] 在本步骤中,可以按照表意文字描述序列包括的数据信息的顺序,逐一获取其中包括的数据信息。例如,在“ 山夆”中,先获取结构符 再获取部件编码“山”,最后获取部件编码“夆”。这里的数据信息包括部件编码,还包括结构符。
[0042] 步骤103,根据数据信息生成与待拆分字体对应的参考字体。
[0043] 具体的,若数据信息中包括部件编码和结构符,则可以根据第一个结构符对预设部件边框进行分割,再根据其他的数据信息对分割后的部件边框进行处理。当其他数据信息为部件编码时,将该部件编码的轮廓数据缩放平移到与其对应的部件边框中,当其他数据信息为结构符时,根据该结构符对与其相应的部件边框进行分割,进而得到参考字体。进一步的,根据结构符对预设部件边框进行分割以后,可以确定处理分割后部件边框的顺序,具体可以对分割后的结构符编码,例如,左右结构中,左部分的部件边框编码为1,右部分部件边框的编码为2。可以根据编码对分割后的部件边框进行处理,例如,先处理左部分的部件边框,再处理右部分的部件边框。实际应用时,再根据结构符对分割后的部件边框再进行分割时,也可以采用上述方式。
[0044] 在具体的分割过程中,可以将各部分按照1:1的比例进行划分。例如,上下结构时,可以平均分割预设部件边框的上下两部分。
[0045] 图1A为本发明一示例性实施例示出的生成“峰”的参考字体的流程示意图。
[0046] 如图1A所示,获取的数据信息为“ 山、夆”,则根据第一个数据信息 确定文字为左右结构,则获取预设部件边框,并对其进行分割,得到左右两部分部件边框,并确定先处理左边部件边框,再处理右边的部件边框;再获取第二个数据信息为“山”,并根据该数据信息对左边部件边框进行处理,即将“山”的轮廓数据缩放平移到左边的部件边框中;再获取第三个数据信息“夆”,并根据该数据信息对右边的部件边框进行处理,即将“夆”的轮廓数据缩放平移到右边的部件边框中。从而得到与“峰”对应的参考字体。
[0047] 步骤104,根据参考字体对待拆分字体进行拆分。
[0048] 其中,在生成参考字体后,可以建立参考字体与待拆分字体之间的对应关系,确定待拆分字体中各个部件的位置、大小等。
[0049] 根据与待拆分字体的表意文字描述序列生成的参考字体,与待拆分字体具有相同的字体部件和拓扑结构,因此,可以根据参考字体中包括的部件对待拆分字体进行拆分。
[0050] 图1B为本发明一示例性实施例示出的待拆分字体“峰”及其参考字体的示意图。
[0051] 如图1B所示,左边为待拆分字体“峰”,右边为参考字体“峰”,二者的部件和拓扑结构完全相同,仅是部件的相对大小以及位置不同。
[0052] 可以分别取参考字体和待拆分字体轮廓外包围矩形框的左上点,作为参考点集和待匹配点集,利用点模式匹配的方法确定参考点集和待匹配点集之间的对应关系,根据两者之间的对应关系,参考部件“山”所对应的待匹配点轮廓即为拆分出来的部件“山”,参考部件“夆”所对应的待匹配点轮廓即为拆分出来的部件“夆”。
[0053] 在图1B中,11为通过上述方法确定出的待拆分字体“峰”的第一部件,12为通过上述方法确定出的待拆分字体“峰”的第二部件。
[0054] 本实施例提供的拆分字体部件的方法,包括根据待拆分字体,获取与待拆分字体对应的表意文字描述序列;根据表意文字描述序列包括的数据信息的顺序,获取表意文字描述序列包括的数据信息;根据数据信息生成与待拆分字体对应的参考字体;根据参考字体对待拆分字体进行拆分。本实施例提供的方法,能够根据表意文字描述序列生成与待拆分字体对应的参考字体,使得参考字体与待拆分字体具有相同的拓扑结构,再根据参考字体确定拆分字体中包括的字体部件,从而能够准确的拆分字体。并且,本实施例提供的方法能够自动生成参考字体,不需要提前制作模板字体,从而解决现有技术中的拆分字体部件的方法对模板字体依赖性强的问题。
[0055] 图2为本发明另一示例性实施例示出的拆分字体部件的方法的流程图。
[0056] 如图2所示,本实施例提供的拆分字体部件的方法,包括:
[0057] 步骤201,根据待拆分字体,获取与待拆分字体对应的表意文字描述序列。
[0058] 步骤202,根据表意文字描述序列包括的数据信息的顺序,从表意文字描述序列获取包括的数据信息。
[0059] 步骤201、202与步骤101、102的实现方式及原理相似,在此不再赘述。
[0060] 另外,还可以逐一获取数据信息,即获取到一个数据信息后,就执行步骤203。
[0061] 进一步的,数据信息可以是部件编码,还可以是结构符。
[0062] 步骤203,获取存储在部件边框栈栈顶中存储的部件边框。
[0063] 可以预先设置用于存放部件边框的部件边框栈。向部件边框栈发送出栈的指令,以使栈顶的数据信息出栈。栈顶中数据信息被移出的同时,部件边框栈中存储的其他数据信息上移。
[0064] 初始化时在部件边框栈中预先存储一个初始部件边框,该边框为整个字符的外框,并将其存储在栈顶的位置,从而在第一次从部件边框栈中获取部件边框时,能够获取该初始部件边框。
[0065] 部件边框栈还用于存储分割后的部件边框,例如将初始部件边框分割为左右两部分,则左右两部分部件边框也要被存储到部件边框栈中。
[0066] 步骤204,根据获取的数据信息对部件边框进行处理。
[0067] 其中,可以先判断数据信息是部件编码还是结构符,再根据判断结果执行不同的操作。若数据信息为部件编码时,则将部件编码对应的轮廓数据缩放平移到获取的部件边框中,若数据信息为结构符,则根据该结构符对获取的部件边框进行分割。
[0068] 其中,可以预先存储部件编码与轮廓数据的对应关系。
[0069] 具体的,将分割后的部件边框存储到部件边框栈中。
[0070] 步骤205,检测是否获取完表意文字描述序列包括的所有数据信息,若否,则继续执行步骤202。
[0071] 检测表意文字描述序列中包括的数据信息是否被完全获取,若是,则认为已经完成了生成参考字体的步骤,并执行步骤206。否则,认为还有其他数据信息没有被使用,则继续执行步骤202,直到完全获取表意文字描述序列中的数据信息为止。
[0072] 通过上述步骤能够生成与待拆分字体对应的参考字体。
[0073] 以生成待拆分字体“锡”为例,详细说明本实施例提供的方法。
[0074] 图2A为本发明一示例性实施例示出的生成“锡”的参考字体的流程图;图2B为本发明一示例性实施例示出的部件边框栈的变化示意图;图2C为本发明一示例性实施例示出的生成参考字体的过程的示意图。
[0075] 如图2A、2B、2C所示,
[0076] 步骤2001,获取表意文字描述序列“ 钅 日勿”;
[0077] 步骤2002,获取数据信息
[0078] 步骤2003,获取部件边框栈栈顶中的部件边框21;
[0079] 部件边框栈顶中预先存储有初始部件边框21,将该部件边框21出栈。
[0080] 步骤2004,根据 将部件边框21分割为左右两部分,并分别存储到部件边框栈中;
[0081] 将初始部件边框21分割为左半部分的部件边框22以及右半部分的部件边框23,先将部件边框23存储在部件边框栈中,再将部件边框22存储到部件边框栈中,以使部件边框22能够位于栈顶的位置。
[0082] 步骤2005,检测是否获取完表意文字描述序列包括的所有数据信息;
[0083] 检测结果为否,则继续执行获取数据信息的步骤。
[0084] 步骤2006,获取数据信息“钅”;
[0085] 步骤2007,获取部件边框栈栈顶中的部件边框22;
[0086] 部件边框栈中栈顶中的元素出栈。–
[0087] 步骤2008,将“钅”对应的轮廓数据缩放平移至部件边框22中;
[0088] 此时参考字体如26所示。
[0089] 步骤2009,检测是否获取完表意文字描述序列包括的所有数据信息;
[0090] 检测结果为否,则继续执行获取数据信息的步骤。
[0091] 步骤2010,获取数据信息
[0092] 步骤2011,获取部件边框栈栈顶中的部件边框23;
[0093] 步骤2012,根据 将部件边框23分割为上下两部分,并分别存储到部件边框栈中;
[0094] 其中,将部件边框23分割为上半部分的部件边框24以及下半部分的部件边框25,先将部件边框25存储在部件边框栈中,再将部件边框24存储到部件边框栈中,以使部件边框24能够位于栈顶的位置。
[0095] 步骤2013,检测是否获取完表意文字描述序列包括的所有数据信息;
[0096] 检测结果为否,则继续执行获取数据信息的步骤。
[0097] 步骤2014,获取数据信息“日”;
[0098] 步骤2015,获取部件边框栈栈顶中的部件边框24;
[0099] 其中,可以使部件边框24出栈。
[0100] 步骤2016,将“日”对应的轮廓数据缩放平移至部件边框24中;
[0101] 此时参考字体如27所示。
[0102] 步骤2017,检测是否获取完表意文字描述序列包括的所有数据信息;
[0103] 检测结果为否,则继续执行获取数据信息的步骤。
[0104] 步骤2018,获取数据信息“勿”;
[0105] 步骤2019,获取部件边框栈栈顶中的部件边框25;
[0106] 其中,可以使部件边框25出栈
[0107] 步骤2020,将“勿”对应的轮廓数据缩放平移至部件边框25中;
[0108] 此时参考字体如28所示。
[0109] 步骤2021,检测是否获取完表意文字描述序列包括的所有数据信息;
[0110] 检测结果为是,则结束。
[0111] 其中,在生成参考字体时,参考字体中可以包含部件边框信息,如28中,具有三个部件边框。
[0112] 请参见图2,本实施例提供的方法,还包括:
[0113] 步骤206,根据表意文字描述序列包括的结构符的顺序,依次获取结构符。
[0114] 其中,在获取表意文字描述序列中的数据信息时,可以按照各个数据信息的顺序,依次获取其中包括的所有结构符。可以获取一个结构符,就执行步骤207一次,直到所有的结构符都被获取为止。
[0115] 步骤207,判断结构符属于包围结构还是非包围结构。
[0116] 具体的,在获取结构符以后,可以判断结构符属于包围结构还是非包围结构。根据汉字的结构特点,可以得到 这十四类结构符,其中为非包围结构,其他的为包围结构。
[0117] 若判断结构符属于非包围结构,则执行步骤208,否则执行步骤211。
[0118] 步骤208,根据第一预设规则获取参考字体中包括的参考点集,根据第一预设规则获取待拆分字体中包括的待匹配点集。
[0119] 进一步的,可以预先设置用于获取点集的第一预设规则,并使用相同的第一预设规则分别对参考字体以及待拆分字体进行处理,得到参考点集以及待匹配点集。
[0120] 实际应用时,第一预设规则可以是分别确定参考字体以及待拆分字体中包括的轮廓,再确定出每个轮廓的外包围矩形外框,取矩形外框的左上点,从而形成点集。参考点集是参考字符轮廓外包围矩形框的左上点,待匹配点集是待拆分字体轮廓外包围矩形框左上点。另外,还可以采集代表轮廓的其它关键点,形成点集。
[0121] 其中,参考点集包括各个参考点所在的位置。例如,待拆分字为“时”时,其为左、右的非包围结构。那么根据“时”的参考字体得到的点集中,包括左半部分点集以及右半部分点集,可以在参考点集中记录这些信息,例如,点a属于左半部分点,点b属于右半部分点。
[0122] 具体的,若先获取的结构符为包围结构符,则可以根据下述的步骤211-步骤213,在待拆分字体中确定与包围结构对应的包围部件,例如与外包围部分对应的外包围部件,与内包围部分对应的内包围部件。
[0123] 若后获取的结构符为非包围结构符,则可以根据生成参考字体的步骤,确定出该非包围结构是对哪个包围部分或包围部件进行处理的,再根据确定结果在包围部件中获取待匹配点集。例如,该非包围结构是对内包围部件进行处理的,则在内包围部件中获取待匹配点集。
[0124] 图2D本发明一示例性实施例示出的获取参考点集、待匹配点集的流程图。
[0125] 如图2D所示,步骤208具体包括:
[0126] 步骤2081,确定参考字体中包括的参考部件轮廓框,确定待拆分字体中包括的待匹配部件轮廓框。
[0127] 其中,可以根据设定的规则在参考字体以及待拆分字体中计算轮廓外包围矩形框。例如,可以根据封闭的轮廓确定轮廓框,即一个完全封闭的轮廓外包围矩形框即为一个轮廓框。
[0128] 具体的,可以根据相同的规则在参考字体中确定参考部件轮廓框,在待拆分字体中确定待匹配部件轮廓框。
[0129] 图2E为本发明一示例性实施例示出的轮廓框示意图。
[0130] 如图2E所示,其中2E1~2E2为根据笔画确定轮廓框的示意图。图中所示的轮廓框是以完全封闭为标准确定的。
[0131] 其中,为了减小计算量,可以通过矩形框框选轮廓。
[0132] 步骤2082,根据第二预设规则获取每个参考部件轮廓框中包括的参考点,根据第二预设规则获取每个待匹配部件轮廓框中包括的待匹配点。
[0133] 进一步的,还可以设置第二预设规则,第二预设规则用于在轮廓框上选取点。第二预设规则可以是选取轮廓的左上角的点、右上角的点、中心点等。将根据第二预设规则从参考部件轮廓框上选取的点确定为参考点,从待匹配部件轮廓上选取的点确定为待匹配点。
[0134] 步骤2083,根据参考点确定参考点集,根据待匹配点确定待匹配点集。
[0135] 实际应用时,将确定的参考点放到同一个集合中,得到参考点集。将确定的待匹配点放到同一个集合中,得到待匹配点集。
[0136] 其中,在参考点集中还包括各个参考点所在结构位置的信息,这里的结构位置信息表示属于上下、左右、上中下、或左中右等结构信息。
[0137] 步骤209,确定参考点集中的参考点与待匹配点集中的待匹配点之间的对应关系,根据对应关系确定每个待匹配点所在的结构位置。
[0138] 具体的,可以直接根据相同结构位置的参考点与待匹配点之间是否相同确定二者的对应关系。
[0139] 若相同结构位置的情况下,参考点与待匹配点相同,则可以认为待匹配点属于的字体结构位置与参考点所在的结构位置相同。例如,参考字体中的“a”与待匹配字体中的“A”一致,在参考字体中,“a”属于左半部分,那么可以认为“A”也属于左半部分。
[0140] 步骤210,根据结构位置相同的待匹配点确定待拆分字体中包括的非包围部件。
[0141] 其中,可以将结构位置相同的待匹配点放到同一个子集合中,例如,在待匹配点集中,点“A”、“B”均属于字体的左半部分,点“C”、“D”、“E”均属于字体的右半部分。那么可以设置两个属于待匹配点的子集,第一个子集中包括点“A、B”,第二个子集中包括“C、D、E”。并且,将点A、B所在的部分作为一个非包围部件,并记录其与参考字体中的左半部分相对应,将点C、D、E所在的部分作为一个非包围部件,并记录其与参考字体中的右半部分相对应。
[0142] 本实施例提供的方法,通过相同的第一预设规则确定参考点集以及待匹配点集,使得根据参考点集以及待匹配点集确定的非包围部件更加准确。通过上述方法,能够针对文字中的非包围结构进行处理,得到非包围部件。
[0143] 步骤211,根据获取的结构符获取参考字体中包围结构内框中的参考部件。
[0144] 其中,可以获取与包围结构内框对应的部件编码,再根据该部件编码,获取被包围的参考部件。
[0145] 步骤212,根据获取的结构符确定待拆分字体中的待选部件。
[0146] 具体的,可以根据结构符生成包围结构框,例如,可以根据 生成一个“回”字框。再使用生成的包围结构框框选待拆分字体。将包围结构框框中的部件作为待选部件。
[0147] 具体的,若先获取的结构符为非包围结构符,则可以根据步骤208-步骤210,在待拆分字体中确定与非包围结构对应的非包围部件,例如与非包围结构的第一部分对应的第一个非包围部件,与非包围结构第二部分对应的第二个非包围部件。其中,非包围结构的第一部分是指字体的上部分或下部分或中间部分,非包围结构的第二部分与非包围结构的第一部分的意义相同。
[0148] 若后获取的结构符为包围结构符,则可以根据生成参考字体的步骤,确定出该包围结构是对哪个非包围部件进行处理的,再根据确定结果在非包围部件中确定出待选部件。例如,该包围结构是对第一个非包围部件进行处理的,则使用生成的包围结构框框选第一个非包围部件。
[0149] 图2F为本发明一示例性实施例示出的确定待选部件的流程图。
[0150] 如图2F所示,步骤212具体包括:
[0151] 步骤2121,确定参考部件中包括的轮廓数m。
[0152] 其中,可以采用步骤2081中所述的方法确定参考部件中的轮廓,再计算轮廓数目m。
[0153] 步骤2122,根据结构符生成包围结构框。
[0154] 具体的,根据结构符的形状,生成与结构符形状相同的包围结构框。例如,结构符为 则生成与 形状相同的结构框。
[0155] 进一步的,可以先生成一个内矩形框与外矩形框面积比值为60%的包围结构框。
[0156] 步骤2123,使用包围结构框框选待拆分字体中的轮廓,调整内矩形框与外矩形框的面积比值,使内矩形框分别包围住第一待选部件、第二待选部件、第三待选部件,其中,第一待选部件、第二待选部件、第三待选部件包括的轮廓数分别为m-1、m、m+1。
[0157] 实际应用时,框选的范围是具有包围结构的部分,例如,待拆分字体为上下结构,在下半部分又具有包围结构,则对字体的下半部分结构进行框选。在框选时,可以使包围结构框仅覆盖具有包围结构的部分。
[0158] 其中,在框选待选部件时,确定待选部件中包括的轮廓数,具体的确定方法同步骤2121。
[0159] 具体的,当轮廓数目为m-1时,则将当前内部矩形框框选的部分作为第一待选部件。当轮廓数目为m时,则将当前内部矩形框框选的部分作为第二待选部件。当轮廓数目为m+1时,则将内部矩形框当前框选的部分作为第三待选部件。
[0160] 步骤213,计算待选部件与参考部件之间的相似度,根据相似度确定待拆分字体中的包围部件。
[0161] 计算待选部件与参考部件之间的相似度,若相似度较低,则调整包围结构框内框的大小,重新确定待选部件,直到待选部件与参考部件之间的相似度满足需求位置。将满足需求的待选部件确定为内包围部件,其他部分即为外包围部件。
[0162] 具体的,还可以分别将第一待选部件、第二待选部件、第三待选部件与参考部件进行比对,将相似度高的待选部件确定为内包围部件,并将外矩形框与内矩形框中间的部分确定为外包围部件。
[0163] 虽然参考字体与待拆分字体具有相同的部件,但是其结构不完全一致。例如,有可能参考字体中的轮廓没有相连,而待拆分字体中的轮廓连接在一起。那么可能存在着由于轮廓定义不同而导致与参考部件相应的包围部件的轮廓数不同,因此,根据参考部件的轮廓数选取多个待选包围部件,再将其与参考部件进行比对,能够更准确的在待拆分字体中拆解出包围部件。
[0164] 图2G为本发明一示例性实施例示出的拆分字体的过程的示意图。
[0165] 本实施例以拆分字体“茴”为例,以说明上述实施例。
[0166] 如图2G所示,在获取“茴”字的结构符时,第一个获取的结构符是 即非包围结构。根据步骤208-210,能够得到非包围部件29,非包围部件30。再获取第二个结构符
即包围结构,那么根据步骤211-步骤212记载的方法进行处理。根据生成参考字体的步骤能够确定该包围结构符是对下半部分的部件边框进行处理,也就是该第二结构符与非包围部件30对应,因此,根据结构符 在非包围部件30中进行框选,得到内包围部件31和外包
围部件32。
[0167] 图3为本发明又一示例性实施例示出的拆分字体部件的方法的流程图。
[0168] 如图3所示,本实施例提供的拆分字体部件的方法,包括:
[0169] 步骤301,根据待拆分字体,获取与所述待拆分字体对应的表意文字描述序列。
[0170] 步骤301与步骤201的实现方式及原理相似,在此不再赘述。
[0171] 步骤302,按照表意文字描述序列中数据信息的逆序,将数据信息依次存储到数据栈中,以使表意文字描述序列中的第一个数据信息存储在数据栈的栈顶。
[0172] 其中,从表意文字描述序列中获取的数据信息具有一定的顺序,可以按照该顺序的逆序,将数据信息存储在数据栈中。数据栈可以是预先设置的栈,用于存储数据信息。由于栈的特点,先存储到栈中的数据会被放到栈底的位置,而最后放进的数据会被放置到栈顶的位置。因此,表意文字描述序列中的第一个数据信息会被存储在数据栈的栈顶。
[0173] 步骤303,获取存储在数据栈中的数据信息。
[0174] 具体的,由于栈先进后出的特点,在从数据栈中获取数据时,最后存储在其中的数据会先被读取,也就是栈顶的数据会被先读取。
[0175] 进一步的,可以将数据栈栈顶的元素出栈。
[0176] 下面以获取“锡”的数据信息为例,说明本实施例提供的方法中数据栈的变化过程。
[0177] 图3A为本发明一示例性实施例示出的数据栈的变化过程示意图。
[0178] 如图3A所示,按照“锡”的表意文字描述序列中数据信息顺序,能够获取到其中的数据信息为“ 钅 日勿”,按照该顺序的逆序,依次将数据信息存储到数据栈中,如31所示。
[0179] 再获取数据栈中的信息,每获取一次,栈顶的数据就出栈一次,直到数据栈为空为止。如32-36。
[0180] 步骤304,获取存储在部件边框栈栈顶中存储的部件边框。
[0181] 步骤304与步骤203的实现方式及原理相似,在此不再赘述。
[0182] 在步骤303以及步骤304执行完毕之后,还可以包括步骤305:判断获取的数据信息是结构符还是部件编码。
[0183] 具体的判断方法可以是读取数据信息的格式、内容等,通过读取结果进行判断。
[0184] 步骤306,若获取的数据信息为结构符,则根据结构符对获取的部件边框进行分割,并将分割后的部件边框按照预设顺序存储到部件边框栈中。
[0185] 其中,可以根据结构符按照1:1的比例对获取的部件边框进行分割。例如,获取的结构符为 则将获取的部件边框按照左右结构分割为相同大小的左部分和右部分。再将分割后的部件边框按照预设顺序存储到部件边框栈中。
[0186] 具体的,预设顺序是根据结构符设定的,具体原则是先存储右部分的部件边框,再存储左部分的部件边框;先存储下部分的部件边框,再存储上部分的部件边框。例如:构符为 时,能够分割得到左部分和右部分的部件边框,则先将右部分部件边框存储到部件边框栈中,再将左部分部件边框存储到部件边框栈中。
[0187] 步骤307,若获取的数据信息为部件编码,则将部件编码对应的轮廓数据缩放平移到获取的部件边框中。
[0188] 步骤308,检测数据栈是否为空。
[0189] 从数据栈中获取数据时,数据栈栈顶的数据出栈,因此,当数据栈为空时,可以认为已经获取了全部的数据信息,并且根据这些数据信息生成了参考字体。
[0190] 若是,则执行步骤309,否则,执行步骤303以及步骤304。从而生成参考字体。
[0191] 步骤309,根据参考字体对待拆分字体进行拆分。
[0192] 步骤309与步骤104或步骤206-213的实现方式及原理相似,在此不再赘述。
[0193] 图4为本发明一示例性实施例示出的拆分字体部件的装置的结构图。
[0194] 如图4所示,本实施例提供的拆分字体部件的装置,包括:
[0195] 第一获取模块41,用于根据待拆分字体,获取与所述待拆分字体对应的表意文字描述序列;
[0196] 第二获取模块42,用于根据所述表意文字描述序列包括的数据信息的顺序,获取所述表意文字描述序列包括的所述数据信息;
[0197] 生成模块43,用于根据所述数据信息生成与所述待拆分字体对应的参考字体;
[0198] 拆分模块44,用于根据所述参考字体对所述待拆分字体进行拆分。
[0199] 其中,第一获取模块41、第二获取模块42、生成模块43以及拆分模块44依次连接。
[0200] 本实施例提供的拆分字体部件的装置,第一获取模块,用于根据待拆分字体,获取与待拆分字体对应的表意文字描述序列;第二获取模块,用于根据表意文字描述序列包括的数据信息的顺序,获取表意文字描述序列包括的数据信息;生成模块,用于根据数据信息生成与待拆分字体对应的参考字体;拆分模块,用于根据参考字体对待拆分字体进行拆分。本实施例提供的装置,能够根据表意文字描述序列生成出与待拆分字体对应的参考字体,使得参考字体与待拆分字体具有相同的字体结构,再根据参考字体确定拆分字体中包括的字体部件,从而能够准确的拆分字体。并且,本实施例提供的装置能够自动生成参考字体,不需要提前制作模板字体,从而解决现有技术中的拆分字体的方法对模板字体的依赖性强的问题。
[0201] 本实施例提供的拆分字体部件的装置的具体原理和实现方式均与图1-1B所示的实施例类似,此处不再赘述。
[0202] 图5为本发明另一示例性实施例示出的拆分字体部件的装置的结构图。
[0203] 如图5所示,在上述实施例的基础上,本实施例提供的拆分字体部件的装置中,所述生成模块43,包括:
[0204] 第一获取单元431,用于获取存储在部件边框栈栈顶中存储的部件边框;
[0205] 处理单元432,用于根据获取的数据信息对所述部件边框进行处理;
[0206] 检测单元433,用于检测是否获取完所述表意文字描述序列包括的所有数据信息,若否,则所述第二获取模块42继续执行获取所述表意文字描述序列包括的数据信息的步骤。
[0207] 其中,第一获取单元431、处理单元432以及检测单元433依次连接。
[0208] 可选的,所述第二获取模块42,包括:
[0209] 存储单元421,用于按照所述表意文字描述序列中所述数据信息的逆序,将所述数据信息依次存储到数据栈中,以使所述表意文字描述序列中的第一个所述数据信息存储在所述数据栈的栈顶;
[0210] 第二获取单元422,用于获取存储在所述数据栈中的所述数据信息;
[0211] 相应的,所述检测单元433具体用于:检测所述数据栈是否为空。
[0212] 其中,存储单元421、第二获取单元422连接。
[0213] 可选的,所述数据信息包括:部件编码、结构符;
[0214] 所述处理单元432具体用于:
[0215] 若获取的所述数据信息为所述结构符,则根据所述结构符对获取的所述部件边框进行分割,并将分割后的部件边框按照预设顺序存储到所述部件边框栈中;
[0216] 若获取的所述数据信息为所述部件编码,则将所述部件编码对应的轮廓数据缩放平移到所述部件边框中。
[0217] 可选的,所述拆分模块44,包括:
[0218] 第三获取单元441,用于根据所述表意文字描述序列包括的结构符的顺序,依次获取所述结构符;
[0219] 判断单元442,用于判断所述结构符属于包围结构还是非包围结构;
[0220] 其中,第三获取单元441与判断单元442连接。
[0221] 若属于非包围结构,则所述拆分模块44还包括:
[0222] 点集获取单元443,用于根据第一预设规则获取所述参考字体中包括的参考点集,根据所述第一预设规则获取所述待拆分字体中包括的待匹配点集;其中,所述参考点集表示各个参考点所在的结构位置;
[0223] 第一确定单元444,用于确定所述参考点集中的参考点与所述待匹配点集中的待匹配点之间的对应关系,根据所述对应关系确定每个所述待匹配点所在的结构位置;
[0224] 所述第一确定单元444还用于根据所述结构位置相同的所述待匹配点确定所述待拆分字体中包括的非包围部件;
[0225] 其中,判断单元442与点集获取单元443连接,点集获取单元443还与第一确定单元444连接;
[0226] 若属于包围结构,则所述拆分模块44还包括:
[0227] 部件获取单元445,用于根据获取的所述结构符获取所述参考字体中所述包围结构内框中的参考部件;
[0228] 第二确定单元446,用于根据获取的所述结构符确定所述待拆分字体中的待选部件;
[0229] 对比单元447,用于计算所述待选部件与所述参考部件之间的相似度,根据所述相似度确定所述待拆分字体中的包围部件。
[0230] 其中,判断单元442还与部件获取单元445连接,部件获取单元445、第二确定单元446、对比单元447依次连接。
[0231] 可选的,所述点集获取单元443具体用于:
[0232] 确定所述参考字体中包括的参考部件轮廓框,确定所述待拆分字体中包括的待匹配部件轮廓框;
[0233] 根据第二预设规则获取每个所述参考部件轮廓框中包括的参考点,根据所述第二预设规则获取每个所述待匹配部件轮廓框中包括的待匹配点;根据所述参考点确定所述参考点集,根据所述待匹配点确定所述待匹配点集。
[0234] 可选的,所述部件获取单元445具体用于:
[0235] 确定所述参考部件中包括的轮廓数m;
[0236] 根据所述结构符生成包围结构框;
[0237] 使用所述包围结构框框选所述待拆分字体中的轮廓,调整内矩形框与外矩形框的面积比值,使所述内矩形框分别包围住第一待选部件、第二待选部件、第三待选部件,其中,所述第一待选部件、所述第二待选部件、所述第三待选部件包括的轮廓数分别为m-1、m、m+1。
[0238] 本实施例提供的装置的具体原理和实现方式均与图2-3A所示的实施例类似,此处不再赘述。
[0239] 本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0240] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。