CN102567431B - 文档处理方法及装置 - Google Patents
文档处理方法及装置 Download PDFInfo
- Publication number
- CN102567431B CN102567431B CN201010624174.7A CN201010624174A CN102567431B CN 102567431 B CN102567431 B CN 102567431B CN 201010624174 A CN201010624174 A CN 201010624174A CN 102567431 B CN102567431 B CN 102567431B
- Authority
- CN
- China
- Prior art keywords
- font
- unique identification
- pending document
- font unique
- document
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000012545 processing Methods 0.000 claims abstract description 47
- 238000000034 method Methods 0.000 claims description 109
- 230000008569 process Effects 0.000 claims description 55
- 230000015654 memory Effects 0.000 claims description 34
- 230000013011 mating Effects 0.000 claims description 24
- 238000013507 mapping Methods 0.000 claims description 21
- 238000004422 calculation algorithm Methods 0.000 claims description 16
- 238000004321 preservation Methods 0.000 claims description 4
- 230000000052 comparative effect Effects 0.000 claims description 3
- 238000004883 computer application Methods 0.000 abstract 1
- 238000001914 filtration Methods 0.000 description 24
- 238000005516 engineering process Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 5
- 241001269238 Data Species 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 241000931705 Cicada Species 0.000 description 1
- 241000233855 Orchidaceae Species 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Document Processing Apparatus (AREA)
Abstract
本发明实施例公开了一种文档处理方法及装置,涉及计算机应用技术领域,用于节省文档处理所需要的资源。本发明中,确定待处理文档中内嵌字体的字体唯一标识;在本地字体库中查找与确定的字体唯一标识匹配的字体实例;利用查找到的字体实例处理所述待处理文档。采用本发明,能够有效节省文档处理所需要的资源。
Description
技术领域
本发明涉及计算机信息处理领域,尤其涉及一种文档处理方法及装置。
背景技术
字体是指具有共同风格的一组字形,而字形是字符的可视表示形式。字体实例是指一个字体的数据实体,包括许多的字形数据和一些元数据,通常封装在一个字体文件中,如.ttf文件中。元数据包括字体实例的名称、开发者、版本号等。字体与字体实例是一对多的关系,同一字体可能表现为多种不同的字体实例。同一字体可以采用不同的字体技术(如True Type、Type1、Open Type等)制作成字体实例。或者同一字体经过裁剪,使得不同字体实例包括数量不等的字形数据,这称为字体子集技术,例如某中文字体的完整版有10000个汉字,但某手机版的该中文字体的字体实例中去掉了不常用的汉字,只有4000字,即只有4000个字形数据。还可以生成一个字体实例的多份拷贝,位于不同的计算机系统或存储位置,它们的内容完全相同,但把这些拷贝视为不同字体实例。同一字体的不同的字体实例被视为等价的。
在很多电子文档中,例如MS Word文档、HTML文档、Adobe PDF文档中,需要对不同的文字指定使用不同的字体进行显示。通常指定字体的方法是在文档中给出字体的名称,如“Times New Roman”或“宋体”,在对待显示文字指定了所使用字体的字体名称后,文档处理设备在本地的字体库中获取该字体名称所对应字体的字体实例,然后在该字体实例中查找待显示文字的字形数据,最后将查找到的字形数据进行显示。
然而,当同一文档在多个不同的文档处理设备上被处理的时候,通过字体名称指定字体的方法的缺点有很多,例如:第一,字体的名称到字体的映射并不唯一,因为许多实际不同的字体有相同的名称,这样在不同的文档处理设备上,被指定同一字体的文字的显示效果不一样。第二,文档处理设备上可能没有指定的字体,因而无法使用该字体显示相应的文字,从而可能使用不够相似的替代字体来显示该文字。以上两点都会造成文档无法以文档制作者期望的样子被显示或处理。
对于上述问题的一个现有的解决方案是使用内嵌字体技术。使用内嵌字体技术后,在文档文件中对文档使用的字体明确的指定了能够获得该字体的字体实例的地址,将该字体称为内嵌字体。内嵌字体技术有两种实现方式,其中一种是在文档文件内记录字体的字体实例在文档文件内的偏移地址,并根据该偏移地址将该字体实例嵌入到文档文件内部的相应位置。在显示文档文字时,根据该偏移地址找到对应的字体实例,进而在该字体实例中查找待显示文字的字形数据,最后将查找到的字形数据进行显示。使用该方式的文档有PDF文档等。
另一种是在文档文件内记录字体的字体实例的统一资源定位符(URL)地址,并将该字体实例保存在该URL地址对应的服务器上。在显示文档文字时,根据该URL地址找到对应的字体实例,进而在该字体实例中查找待显示文字的字形数据,最后将查找到的字形数据进行显示。使用该方式的文档有HTML和重叠样式表(CSS)文档等。
上述两种方式中,内嵌字体实例都可以仅仅是一个字体完整的字体实例的一个子集(即前述字体子集技术),因为很多情况下一篇文档只会使用一个字体的一小部分字形数据。
在实现本发明的过程中,发明人发现现有技术中存在以下技术问题:
在使用内嵌字体技术时,可能大大增加文档文件的数据量以及网络流量需求。同时,一台计算机上许多文档文件可能使用等价的内嵌字体实例,若每个文档文件都包含有一份等价的字体实例,则浪费了磁盘存储空间;而且同时显示多个文档时,这些等价的字体实例要重复地装入内存和解析,浪费了文档处理设备的资源。
发明内容
本发明实施例提供一种文档处理方法及装置,用于节省文档处理所需要的资源。
一种文档处理方法,该方法包括:
确定待处理文档中内嵌字体的字体唯一标识,其中所述字体唯一标识包含至少一个具有一个键和一个值的表项的映射表,所述键为设定字符的子集或所述子集的标识,所述值为所述子集中的字符对应的字形数据的摘要值;
在本地字体库中查找与确定的字体唯一标识匹配的字体实例;
利用查找到的字体实例处理所述待处理文档。
一种文档处理装置,该装置包括:
确定单元,用于确定待处理文档中内嵌字体的字体唯一标识,其中所述字体唯一标识包含至少一个具有一个键和一个值的表项的映射表,所述键为设定字符的子集或所述子集的标识,所述值为所述子集中的字符对应的字形数据的摘要值;
查找单元,用于在本地字体库中查找与确定的字体唯一标识匹配的字体实例;
处理单元,用于利用查找到的字体实例处理所述待处理文档。
本方案中,首先确定待处理文档中内嵌字体的字体唯一标识;然后在本地字体库中查找与确定的字体唯一标识匹配的字体实例;最后利用查找到的字体实例处理所述待处理文档。可见,采用本发明,对于内嵌字体,采用本地字体库中的字体实例处理该待处理文档,而不需要根据待处理文档中记录的内嵌字体的字体实例存储地址从待处理文档中获得字体实例或从其他服务器下载到字体实例,节省了待处理文档所需要的内存空间、磁盘存储空间或下载字体实例所需要的网络流量。
附图说明
图1为本发明实施例提供的方法流程示意图;
图2为本发明实施例提供的装置结构示意图;
图3为本发明实施例提供的另一方法流程示意图;
图4为本发明实施例提供的另一装置结构示意图。
具体实施方式
为了节省文档处理所需要的资源,本发明实施例提供一种文档处理方法,本方法中,对于文档中的内嵌字体,首先确定待处理文档中内嵌字体的字体唯一标识,然后在本地字体库中查找与确定的字体唯一标识匹配的字体实例,并利用查找到的字体实例处理该文档中的数据。
字体唯一标识是指可以在世界范围内唯一确定一个字体的标识符。但是,一个字体可以有多个字体唯一标识,该多个字体唯一标识被视为是等价的字体唯一标识。字体唯一标识可以采取字符串、数字或其它更复杂的形式。
参见图1,本发明实施例提供的文档处理方法,包括以下步骤:
步骤10:确定待处理文档中内嵌字体的字体唯一标识;
步骤11:在本地字体库中查找与确定的字体唯一标识匹配的字体实例;
步骤12:利用查找到的字体实例处理待处理文档。具体可以如下:首先,将待处理文档中记录的所述内嵌字体的字体实例存储地址重定向到查找到的字体实例,具体可以是将所述内嵌字体的字体实例存储地址更新为查找到的字体实例在字体库中的存储地址;然后,使用重定向后的字体实例处理待处理文档中使用所述内嵌字体的数据。例如,使用重定向后的字体实例显示或打印待处理文档中使用所述内嵌字体的数据。
步骤10中,确定待处理文档中内嵌字体的字体唯一标识,具体可以采用如下三种方法:
第一种:从待处理文档中或与待处理文档相关联的文件中获取字体唯一标识,将获取到的字体唯一标识确定为所述内嵌字体的字体唯一标识;采用本发方法,需要预先将内嵌字体的字体唯一标识存储在待处理文档或与待处理文档相关联的文件中;
第二种,根据待处理文档中记录的内嵌字体的字体实例存储地址,获取所述内嵌字体的字体实例;根据获取到的字体实例生成字体唯一标识,将生成的字体唯一标识确定为所述内嵌字体的字体唯一标识;
第三种,根据待处理文档中记录的所述内嵌字体的字体实例存储地址,获取所述内嵌字体的字体实例;根据获取到的字体实例生成字体唯一标识;查询与生成的字体唯一标识等价和/或相似的字体唯一标识;将生成的字体唯一标识与查询到的字体唯一标识确定为所述内嵌字体的字体唯一标识。
第四种,从待处理文档中或与待处理文档相关联的文件中获取字体唯一标识;查询与获取的字体唯一标识等价和/或相似的字体唯一标识;将获取的字体唯一标识与查询到的字体唯一标识确定为所述内嵌字体的字体唯一标识。
上述第三种和第四种方法中,查询与生成的字体唯一标识等价和/或相似的字体唯一标识的具体实现方法可以如下:
首先,向字体识别数据库单元输入生成的字体唯一标识;
然后,字体识别数据库单元接收到输入的字体唯一标识后,执行如下两个步骤或执行其中的一个步骤:
步骤一:从字体识别数据库单元的等价关系查询模块中查询与所述生成的字体唯一标识等价的字体唯一标识,返回查询到的字体唯一标识;
步骤二:从字体识别数据库单元的相似关系查询模块中查询与所述生成的字体唯一标识相似的字体唯一标识;返回查询到的字体唯一标识。
上述等价关系查询模块可以基于一个预先建立的等价字体唯一标识关系表,可以从该表中查询与所述生成的字体唯一标识等价的字体唯一标识,该表的建立方法可以采用如下两种方法中的一种或任意组合:
第一种,根据字体的一个或多个字体实例生成该字体的多个字体唯一标识;将生成的多个字体唯一标识作为等价的字体唯一标识保存在等价字体唯一标识关系表中;
第二种,接收用户输入的多个等价的字体唯一标识,将该多个等价的字体唯一标识作为等价的字体唯一标识保存在等价字体唯一标识关系表中。
上述相似关系查询模块可以基于一个预先建立的相似字体唯一标识关系表,可以从该表中查询与所述生成的字体唯一标识相似的字体唯一标识,该表的建立方法可以采用如下三种方法中的一种或任意组合:
第一种,利用字形的模式识别程序判断多个字体中的两个字体是否是相似字体,在判断为是时,将所述两个字体的字体唯一标识作为相似的字体唯一标识保存在相似字体唯一标识关系表中;这里,字体唯一标识可以是根据字体实例生成的,也可以完全是人为编写的,或者是随机生成的。
第二种,判断两个字体唯一标识中是否仅有次要版本号字段不同,在判断为是时,将所述两个字体唯一标识作为相似的字体唯一标识保存在相似字体唯一标识关系表中;这里,字体唯一标识可以是人为编写的;
例如,字体的制作者可以提供一个与字体关联的字体唯一标识,可以包括以下部分:制作者的域名、字体名、主要版本号、次要版本号等。例如字体唯一标识“fonts.founder.com/lan_ting_hei/2.1”表示方正公司(域名fonts.founder.com)的名为“兰亭黑”(拼音lan_ting_hei)字体的2.1版本,其中2为主要版本号,1为次要版本号。字体的制作者推出某个字体的新版本时,较大的修改应改变主要版本号,较小的修改应改变次要版本号,仅有次要版本号不同的字体被认为是相似的。因此字体的使用者就可以简单的根据次要版本号断两个字体唯一标识是否相似。现有的大量字体中虽然有版本号,但并没有与字体的修改程度约定某种联系,所以并不能用来判断相似关系。因此需要字体的制作者或者其它组织统一为各种字体赋予含版本号的字体唯一标识,并且版本号反映字体的相似程度,才能应用此方法。
第三种,接收用户输入的多个相似的字体唯一标识,将该多个相似的字体唯一标识保存在相似字体唯一标识关系表中。
上述相似关系查询模块还可以根据版本号直接找到与生成的字体唯一标识的相似的字体唯一标识,步骤如下:遍历字体识别数据库单元中保存的所有字体唯一标识,逐一与所述生成的字体唯一标识比较,判断两者是否仅有次要版本号字段不同,在判断为是时,返回遍历到的字体唯一标识。
较佳的,在向字体识别数据库单元输入字体唯一标识的同时,还可以向字体识别数据库单元输入过滤参数;字体识别数据库单元根据过滤参数确定查询到的字体唯一标识是否满足过滤条件,在确定满足过滤条件时,返回查询到的字体唯一标识;否则,不返回查询到的字体唯一标识。
为了确保字体识别数据库单元返回的字体唯一标识与输入的字体唯一标识之间的相似度,过滤参数可以包括相似度参数值,则字体识别数据库单元根据该过滤参数确定查询到的字体唯一标识是否满足过滤条件的具体方法为:字体识别数据库单元从相似字体唯一标识关系表中读取查询到的字体唯一标识与所述生成的字体唯一标识的相似度参数值;判断读取的相似度参数值与输入的相似度参数值是否满足设定关系;根据判断结果确定查询到的字体唯一标识是否满足过滤条件。例如,判断读取的相似度参数值是否大于输入的相似度参数值,若是,则确定查询到的字体唯一标识满足过滤条件,否则,确定查询到的字体唯一标识不满足过滤条件。再例如,判断读取的相似度参数值是否在输入的两个相似度参数值构成的相似度参数值范围内,若是,则确定查询到的字体唯一标识满足过滤条件,否则,确定查询到的字体唯一标识不满足过滤条件。这里,需要在相似字体唯一标识关系表中增加一个相似度字段,可以0-9的数字表示相似程度,0表示不太相似,9表示很相似。仅有次要版本号不同的字体唯一标识可以取一个固定值(如7),或者用其他方法确定。
过滤参数还可以包括标识类型信息,则字体识别数据库单元根据该过滤参数确定查询到的字体唯一标识是否满足过滤条件的具体方法为:字体识别数据库单元判断所述生成的字体唯一标识的标识类型与过滤参数中的标识类型是否满足设定关系;根据判断结果确定查询到的字体唯一标识是否满足过滤条件。例如,判断所述生成的字体唯一标识的类型是否为过滤参数中的的标识类型,若是,则确定查询到的字体唯一标识满足过滤条件,否则,确定查询到的字体唯一标识不满足过滤条件。这里,标识类型是指标识的生成机制或方法,例如,根据字体实例的元数据生成的两个字体唯一标识为同一类型的标识,根据字体实例中字形数据的摘要值生成的两个字体唯一标识为同一类型的标识。
由于查询者通常只能处理有限类型的字体唯一标识,因此采用本方法可以确保字体识别数据库单元返回的字体唯一标识的类型是查询者能够处理的类型;另一方面,查询者输入一种与输入的字体唯一标识的类型不同的标识类型,可以得到与输入的字体唯一标识的类型不同的字体唯一标识,即可以将输入的字体唯一标识转换为另一种类型。
字体识别数据库单元还可建立一张“标识-本地字体”关系表,用于维护字体唯一标识与该字体唯一标识所对应的本地字体实例的关系。
可见,本发明中字体识别数据库单元的主要作用是:给定一个字体唯一标识,查询与之等价或相似的其它字体唯一标识(本发明中,字体唯一标识相似就意味着它们代表的字体相似)。字体唯一标识可以在世界范围内唯一的确定一个字体,但是每个字体却可以有多个字体唯一标识,而且可能无法简单地互相比较。例如本发明提供的生成字体唯一标识的方法,选择不同的字符组作为键,会得到不同的字体唯一标识;如果两个唯一标识的键范围不交叠,就无法简单判断两者是否等价。此外,不同的计算机系统、字体发行者、文档显示处理程序、字体管理程序可能选择完全不同的字体唯一标识架构(例如,可能人工编写,可能基于GUID(Globally Unique Identifier,全球唯一标识符),也可能基于整个字体文件的摘要),因而互相无法识别对方生成的字体唯一标识。最后,一般的字体唯一标识本身无法反映两个字体的相似程度,只能判断等价关系,但有时候希望将一种无法获得的字体用另一种相似的字体替换,这就需要找出与一个字体唯一标识相似的其它字体唯一标识。因此,字体识别数据库单元能够很好解决上述问题。
本发明中,根据字体实例生成字体唯一标识的方法可以为:选取一个或多个设定字符,从字体实例中获取与设定字符对应的字形数据,利用摘要算法计算基于获取的各字形数据的摘要值;根据计算得到的摘要值生成字体唯一标识。这里,强调“基于”是因为:第一,计算摘要时,除了字形数据,还可能加入其它数据,如字体元数据;第二,不一定是分别计算各字形数据的摘要,也可以是先各字形数据为拼接为一体,再计算摘要。
这里,根据计算得到的摘要值生成字体唯一标识的方法为:生成包括一个或多个对应关系(即表项)的映射表,每个表项有一个键与一个值,键为所述设定字符的子集或该子集的标识,值为该子集中的字符对应的字形数据的摘要值;将映射表作为所述内嵌字体的字体唯一标识的一部分。当然,字体唯一标识中还可以包括其他信息,例如字体名、版本号、制造商名称等。
通常,选取的设定字符是字体的字符集中最常用的字符,如最常用的4个汉字。对于字体文件simsun.ttf(新宋体),示例的字体唯一标识如下:
<?xml version=”1.0”?>
<font-id font-name=”新宋体”version=”x.y.z”foundry=”ABC”>
<char-glyph-map digest-method=”MD5”>
<item chars=”的”glyph-digest=”53d1169058611886e5cf2b2b4dd0627f”/>
<item chars=”一”glyph-digest=”c8f77ee32399b7bbe05560f9da7aa5a3”/>
<item chars=”是”glyph-digest=”65c8c486368da89dedd430b09127f883”/>
<item chars=”了”glyph-digest=”5e770190e1fae6e6a37e7d77f06bb9e9”/>
</char-glyph-map>
</font-id>
这个示例是XML(Extensible Markup Language,可扩展标记语言)格式的,但是其它等效的格式也是可能的。font-id元素表示整个字体唯一标识。font-id有几个属性font-name(字体名),version(版本),foundry(制作者),但仅供参考,一般不作为比较字体唯一标识的依据。char-glyph-map元素是前面所说的映射表,有4个表项(item元素),每个表项有一个键和一个值。本示例中,4个表项的键(chars属性)分别是最常用的4个汉字字符(的、一、是、了),而值分别是这四个字符在字体simsun.ttf中的字形数据的MD5摘要值(glyph-digest属性,采用16进制字符串表示)。在这个例子中,映射表中的键都是单个字符。而在另外的实施例中,键可以是一组字符,例如:
在这个示例中,有一个表项(item),键(chars)是“的一是了”四个字符组成的字符串,而值(glyph-digest)是这几个字符对应的字形数据的MD5摘要值。摘要值的计算方法可以有多种,例如先将这几个字形数据做二进制连接,再求其MD5摘要值;或者先分别求这几个字形数据的MD5摘要值,再将这几个摘要值做二进制连接,最后求连接后的字符串的摘要值。由于摘要值一般比一个字形数据小,所以可以预先计算一个字体实例的各个字形数据的摘要值,并保存起来;当需要求其一个子集的摘要值时,则采用后一种算法,这样可以比前一种算法快一些。除此之外,两种算法没有本质区别。
在另一个示例中,还可以用一组字符的代号作为键,例如:
在这个示例中有一个表项(item),键是charset-name属性,表示字符集合的代号,“zh-top-4”的意思是中文的前4个最常用的字符,按使用频率降序排列,也就是“的一是了”四个字符。而值(glyph-digest)是这几个字符对应的字形数据的MD5摘要值。当然,对于字符集合的代号的解释,在不同的计算机系统上必须是完全一致的,包括其代表的字符的排序,这样才能保证互操作性。
由于摘要算法对输入数据的顺序是敏感的,因此当使用一组字符或者其代号作为键时,其中的字符的顺序也是重要的,一般应与计算摘要值时字形数据的输入顺序相同。
单个字符、一组字符、代号作为键的条目可以在一个字体唯一标识中同时出现,而且范围上可以有交叠,但是不能出现两个键完全相同的条目。
相应的,步骤11中在本地字体库中查找与确定的字体唯一标识匹配的字体实例,其具体实现方法如下:
对于本地字体库中的各字体实例,获取该字体实例的字体唯一标识;确定获取到的字体唯一标识与所述确定的字体唯一标识中等键等值的对应关系(表项)和等键不等值的对应关系(表项);根据确定的对应关系(表项)判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配;在判断为是时,将该字体实例确定为与所述确定的字体唯一标识匹配的字体实例。“等键等值”是指两个表项的键相等且值相等,“等键不等值”是指两个表项的键相等但是值不等。本发明中,本地字体库中的每个字体实例都需要有一个或多个字体唯一标识。
根据确定的对应关系(表项)判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配的具体方法举例如下:在等键等值的表项的权值之和超过预先设定的第一阈值时,将该字体实例确定为与所述确定的字体唯一标识匹配的字体实例;在等键不等值的对应关系的权值之和超过预先设定的第二阈值时,将该字体实例确定为与所述确定的字体唯一标识不匹配的字体实例;当前述两种条件都被满足时,按第二种条件被满足执行;在其他情况下给出无法判定的结果。表项的权值可以根据其键代表的字符的权值确定。例如可以规定每个字符有权值1,表项的权值为字符权值之和,如果键由4个字符组成,则该表项的权值为4;还可以规定每个字符的权值与其使用频率有关。所述第一阈值第二阈值可以由软件设计者或最终用户来设置。在具体实现中,所述第一阈值通常大于0,而所述第二阈值通常可以等于0,这样当出现任何“等键不等值”的现象时,都会判定为不匹配。
较佳的,在根据确定的对应关系(表项)判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配之前,还可以比较获取到的字体唯一标识与所述确定的字体唯一标识中除键与值的对应关系(表项)之外的其他信息;进而根据比较结果和所述确定的对应关系(表项),判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配。例如,比较获取到的字体唯一标识中的“制造商”字段与所述确定的字体唯一标识中的“制造商”字段是否相同,若不相同,并且上述判断等键不等值的对应关系的个数超过预先设定的第二阈值,则确定获取到的字体唯一标识不与所述确定的字体唯一标识匹配,若相同,并且上述判断等键等值的对应关系的个数超过预先设定的第一阈值,则确定获取到的字体唯一标识与所述确定的字体唯一标识匹配。当然,还可以按照其他判定规则进行判断。
下面对如何判断两个字体唯一标识是否匹配进行举例说明:
步骤S01:对于两个字体唯一标识中的映射表,逐一比较键相同的对应关系中的值,如果有足够多的值相等而没有不等的值,则给出肯定的结果;如果有足够多的值不等而没有相等的值,则给出否定的结果;其他情形则给出无法判定的结果;
步骤S02:比较两个字体唯一标识中的其他需要比较的信息,给出肯定、否定或无法判定的结果;
步骤S03:综合以上两步的结果,给出两个字体唯一标识是否匹配的结论。
两个字体唯一标识匹配,也就意味着它们代表的字体实例属于同一字体或者足够相似,因而两个字体实例可以互换使用。
生成字体唯一标识的方法前面已经论述,不再重复。步骤S01中,键可以是单个字符、一组字符、一组字符的代号等。键是否相同的判断方法一般是把键当作字符串来比较;当一个键是一组字符,另一个键是一组字符的代号时,应将代号实际代表的字符组参与比较。值的比较可以是二进制比较,但如果对摘要值进行了文本编码(如Base64编码或者16进制字符串编码),也可进行字符串比较。
步骤S02中是比较字体唯一标识中的其他需要比较的信息。其他需要比较的信息可能是字体名、版本、制造商等。例如可以规定,只有制造商(foundry字段)相同,两个字体唯一标识才可能匹配。但是一般情况下,无需再比较其它信息,这一步的结果可视为“肯定”。
步骤S03综合步骤S01和步骤S02的结果,给出两个字体唯一标识是否匹配的结论。通常,如果步骤S01和步骤S02都给出肯定的结果,则认为两个字体唯一标识匹配;有一个以上的步骤(包括一个步骤)给出否定结果,则认为两个字体唯一标识不匹配;否则,认为两个字体唯一标识不匹配或无法判定(由程序设计者或用户来决定怎样处理)。
例如下面两个字体唯一标识有三个条目是“等键等值”的,代表了三个字符“的是了”。如果规定3个以上(包括3个)字符的摘要值相等就算匹配,不需比较其它信息,那么这两个字体唯一标识匹配。
<?xml version=”1.0”?>
<font-id font-name=”新宋体”version=”x.y.z”foundry=”ABC”>
<char-glyph-map digest-method=”MD5”>
<item chars=”的”glyph-digest=”53d1169058611886e5cf2b2b4dd0627f”/>
<item chars=”是”glyph-digest=”65c8c486368da89dedd430b09127f883”/>
<item chars=”了”glyph-digest=”5e770190e1fae6e6a37e7d77f06bb9e9”/>
</char-glyph-map>
</font-id>
<?xml version=”1.0”?>
<font-id font-name=”新宋体2”version=”x.y.u”foundry=”ABC”>
<char-glyph-map digest-method=”MD5”>
<item chars=”的”glyph-digest=”53d1169058611886e5cf2b2b4dd0627f”/>
<item chars=”一”glyph-digest=”c8f77ee32399b7bbe05560f9da7aa5a3”/>
<item chars=”是”glyph-digest=”65c8c486368da89dedd430b09127f883”/>
<item chars=”了”glyph-digest=”5e770190e1fae6e6a37e7d77f06bb9e9”/>
</char-glyph-map>
</font-id>
而下面的字体唯一标识与上面两个都不匹配,因为“的”字“等键不等值”:
<?xml version=”1.0”?>
<font-id font-name=”新宋体3”version=”x.y.u”foundry=”ABC”>
<char-glyph-map digest-method=”MD5”>
<item chars=”的”glyph-digest=”9c7d921d527212b6547f79f0d5b249c1”/>
<item chars=”一”glyph-digest=”c8f77ee32399b7bbe05560f9da7aa5a3”/>
<item chars=”是”glyph-digest=”65c8c486368da89dedd430b09127f883”/>
<item chars=”了”glyph-digest=”5e770190e1fae6e6a37e7d77f06bb9e9”/>
</char-glyph-map>
</font-id>
较佳的,步骤11中在本地字体库中查找与确定的字体唯一标识匹配的字体实例之后,还可以进一步判断查找到的字体实例是否满足所述待处理文档的处理需求;在判断查找到的字体实例满足所述待处理文档的处理需求时,步骤12中才利用该字体实例处理所述待处理文档。
上述判断查找到的字体实例是否满足所述待处理文档的处理需求,具体方法可以如下:
判断查找到的字体实例中所包含的字符是否全部或大部分覆盖所述待处理文档中使用所述内嵌字体的字符,若是,则确定查找到的字体实例满足所述待处理文档的处理需求,否则,确定查找到的字体实例不满足所述待处理文档的处理需求。
较佳的,步骤11中在本地字体库中未查找到与确定的字体唯一标识匹配的字体实例时,可以根据待处理文档中记录的所述内嵌字体的字体实例存储地址,获取到所述内嵌字体的字体实例;将获取到的字体实例保存在本地字体库中;并利用保存在本地字体库中的所述字体实例处理待处理文档。
上述获取所述内嵌字体的字体实例时,可以只获取字体实例中满足文档的显示和处理需求的最少量的数据集,而不是获取整个字体实例。内嵌字体的字体实例可能是超出使用它的文档的需要的,例如,字体实例包括10000个字符的字形,但文档中使用该字体的不同字符可能只有1000个。如果内嵌字体实例需要从网上下载,那么完全下载将会耗费不必要的流量和时间。因此,可以仅下载那1000个字符的字形数据。
将获取到的字体实例保存在本地字体库中时,如果本地字体库中还没有等价或相似的字体实例,就直接将字体实例加入本地字体库,并登记其字体唯一标识;反之,可以将字体实例中的数据并入本地字体库中的等价或相似的字体实例,其中重复的数据最好加以消除,以节省空间。根据本地字体库的具体数据结构和字体实例的格式,“加入”和“并入”的操作可能是多样的,例如创建或修改字体文件,更新字体注册信息等。
这里,利用保存在本地字体库中的所述字体实例处理待处理文档,具体可以如下:将待处理文档中记录的所述内嵌字体的字体实例存储地址重定向到保存的字体实例,可以是将所述内嵌字体的字体实例存储地址更新为保存的字体实例在字体库中的存储地址;使用重定向后的字体实例处理所述待处理文档中使用所述内嵌字体的数据。
此外,当本地字体库需要减少占用的存储空间时,可以按照一定的算法清除部分字体实例,或者部分字体实例中的部分数据。计算机的存储容量是有限的,特别是嵌入式设备,因此不应让本地字体库无限制的膨胀。清除字体数据的算法可以是基于使用频率的,或者最近使用的,或者使用次数等等。
本发明中,字体唯一标识的生成方法还有很多,例如可以是根据字体的字体实例中的元数据(如名称、开发者、版本号)以及字宽表、字距调整(Kerning)表等生成字体唯一标识。也可以人为的设计一个字体唯一标识,与具体的字体数据无关。本发明中的摘要算法可以选择MD5算法SHA-1算法或CRC算法等。
本发明中,使用本地字体库中的字体实例处理文档中的数据,这样做有以下好处:
第一,对于内嵌字体的字体实例在其他服务器中的情形,如果字体实例尚未下载,则可以不再下载,从而节约网络流量和下载时间。第二,当同时打开多个文档,而且它们使用了类似的内嵌字体时,使用共享的本地字体库中的一个字体实例,而不是多个内嵌字体实例,能够节约很多内存和字体加载时间。可以看出,随着处理程序处理的文档增多,本地字体库中的字体实例会逐步增多,因此处理程序会有越来越多的可能性获得效率的提升。
参见图2,本发明实施例还提供一种文档处理装置,该装置包括:
确定单元20,用于确定待处理文档中内嵌字体的字体唯一标识;
查找单元21,用于在本地字体库中查找与确定的字体唯一标识匹配的字体实例;
处理单元22,用于利用查找到的字体实例处理所述待处理文档。
所述确定单元20包括第一单元、第二单元、第三单元、第四单元中的一个或任意组合,其中:
所述第一单元,用于从所述待处理文档中或与所述待处理文档相关联的文件中获取字体唯一标识,将获取到的字体唯一标识确定为所述内嵌字体的字体唯一标识;
所述第二单元,用于根据所述待处理文档中记录的所述内嵌字体的字体实例存储地址,获取所述内嵌字体的字体实例;根据获取到的字体实例生成字体唯一标识,将生成的字体唯一标识确定为所述内嵌字体的字体唯一标识;或者,
所述第三单元,用于根据所述待处理文档中记录的所述内嵌字体的字体实例存储地址,获取所述内嵌字体的字体实例;根据获取到的字体实例生成字体唯一标识;查询与生成的字体唯一标识等价和/或相似的字体唯一标识;将生成的字体唯一标识与查询到的字体唯一标识确定为所述内嵌字体的字体唯一标识;
所述第四单元,用于从待处理文档中或与待处理文档相关联的文件中获取字体唯一标识;查询与获取的字体唯一标识等价和/或相似的字体唯一标识;将获取的字体唯一标识与查询到的字体唯一标识确定为所述内嵌字体的字体唯一标识。
所述第三单元用于:
向字体识别数据库单元输入所述生成的字体唯一标识;
该装置还包括:
字体识别数据库单元23,用于接收所述生成的字体唯一标识,并执行如下两个步骤或执行其中的一个步骤:
步骤一:从字体识别数据库单元的等价关系查询模块中查询与所述生成的字体唯一标识等价的字体唯一标识,返回查询到的字体唯一标识;
步骤二:从字体识别数据库单元的相似关系查询模块中查询与所述生成的字体唯一标识相似的字体唯一标识,返回查询到的字体唯一标识。
所述字体识别数据库单元23用于:
从等价关系查询模块的等价字体唯一标识关系表查询与所述生成的字体唯一标识等价的字体唯一标识,并按照如下方法建立所述等价字体唯一标识关系表:
根据字体的一个或多个字体实例生成该字体的多个字体唯一标识;将生成的多个字体唯一标识作为等价的字体唯一标识保存在等价字体唯一标识关系表中;或者,
接收用户输入的多个等价的字体唯一标识,将该多个等价的字体唯一标识保存在等价字体唯一标识关系表中。
所述字体识别数据库单元23用于:
从相似关系查询模块的相似字体唯一标识关系表中查询与所述生成的字体唯一标识相似的字体唯一标识,并按照如下方法建立所述相似字体唯一标识关系表:
利用字形的模式识别程序判断多个字体中的两个字体是否是相似字体,在判断为是时,将所述两个字体的字体唯一标识作为相似的字体唯一标识保存在相似字体唯一标识关系表中;或者,
判断两个字体唯一标识中是否仅有次要版本号字段不同,在判断为是时,将所述两个字体唯一标识作为相似的字体唯一标识保存在相似字体唯一标识关系表中;或者,
接收用户输入的多个相似的字体唯一标识,将该多个相似的字体唯一标识保存在等价字体唯一标识关系表中。
所述第三单元还用于:
在向字体识别数据库单元输入生成的字体唯一标识的同时,向字体识别数据库单元输入过滤参数;
所述字体识别数据库单元23还用于:
根据所述过滤参数确定查询到的字体唯一标识是否满足过滤条件,在确定满足过滤条件时,返回查询到的字体唯一标识。
所述字体识别数据库单元23用于:
在过滤参数包括相似度参数值时,从相似字体唯一标识关系表中读取查询到的字体唯一标识与所述生成的字体唯一标识的相似度参数值;
判断读取的相似度参数值与输入的相似度参数值是否满足设定关系;
根据判断结果确定查询到的字体唯一标识是否满足过滤条件。
所述字体识别数据库单元23用于:
在所述过滤参数包括标识类型信息时,判断所述生成的字体唯一标识的类型与过滤参数中的标识类型是否满足设定关系;
根据判断结果确定查询到的字体唯一标识是否满足过滤条件。
所述第二单元或第三单元用于:
按照如下方法根据字体实例生成字体唯一标识:
选取一个或多个设定字符,从字体实例中获取与设定字符对应的字形数据,利用摘要算法计算基于获取的各字形数据的摘要值;根据计算得到的摘要值生成字体唯一标识。
所述第二单元或第三单元用于:
按照如下方法根据计算得到的摘要值生成字体唯一标识:
生成包括一个或多个表项的映射表,每个表项有一个键与一个值,所述键为所述设定字符的子集或该子集的标识,所述值为该子集中的字符对应的字形数据的摘要值;将所述映射表作为所述内嵌字体的字体唯一标识。
所述查找单元21用于:
对于本地字体库中的各字体实例,获取该字体实例的字体唯一标识;确定获取到的字体唯一标识与所述确定的字体唯一标识中等键等值的表项和等键不等值的表项;根据确定的表项判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配;在判断为是时,将该字体实例确定为与所述确定的字体唯一标识匹配的字体实例。
所述查找单元21还用于:
在根据确定的表项判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配之前,比较获取到的字体唯一标识与所述确定的字体唯一标识中除表项之外的其他信息;根据比较结果和所述确定的表项,判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配。
所述查找单元21还用于:
在本地字体库中查找与确定的字体唯一标识匹配的字体实例之后,并且利用查找到的字体实例处理所述待处理文档之前,判断查找到的字体实例是否满足所述待处理文档的处理需求;
所述处理单元22用于:
在判断查找到的字体实例满足所述待处理文档的处理需求时,利用该字体实例处理所述待处理文档。
所述查找单元21用于:
按照如下方法判断查找到的字体实例是否满足所述待处理文档的处理需求:
判断查找到的字体实例中所包含的字符是否全部或部分覆盖所述待处理文档中使用所述内嵌字体的字符,若是,则确定查找到的字体实例满足所述待处理文档的处理需求,否则,确定查找到的字体实例不满足所述待处理文档的处理需求。
所述查找单元21还用于:
在本地字体库中未查找到与确定的字体唯一标识匹配的字体实例时,根据所述待处理文档中记录的所述内嵌字体的字体实例存储地址,获取到所述内嵌字体的字体实例;
将获取到的字体实例保存在本地字体库中;
所述处理单元22用于:
利用保存在本地字体库中的所述字体实例处理所述待处理文档。
所述处理单元22用于:
将所述待处理文档中记录的所述内嵌字体的字体实例存储地址重定向到查找到的字体实例;
使用重定向后的字体实例处理所述待处理文档中使用所述内嵌字体的数据。
所述处理单元22用于:
将所述待处理文档中记录的所述内嵌字体的字体实例存储地址重定向到保存的字体实例;
使用重定向后的字体实例处理所述待处理文档中使用所述内嵌字体的数据。
参见图3,本发明实施例还提供一种字体标识查询方法,具体包括以下步骤:
步骤30:接收输入的字体唯一标识;
步骤31:从字体识别数据库单元的等价关系查询模块中查询与所述输入的字体唯一标识等价的字体唯一标识;和/或,从字体识别数据库单元的相似关系查询模块中查询与所述输入的字体唯一标识相似的字体唯一标识;
步骤32:返回查询到的字体唯一标识。
具体可以从等价关系查询模块的等价字体唯一标识关系表查询与输入的字体唯一标识等价的字体唯一标识,并可以采用如下两种方法中的一种或任意组合方法,建立所述等价字体唯一标识关系表:
第一种,根据字体的一个或多个字体实例生成该字体的多个字体唯一标识;将生成的多个字体唯一标识作为等价的字体唯一标识保存在等价字体唯一标识关系表中;
第二种,接收用户输入的多个等价的字体唯一标识,将该多个等价的字体唯一标识保存在等价字体唯一标识关系表中。
具体可以从相似关系查询模块的相似字体唯一标识关系表中查询与所述生成的字体唯一标识相似的字体唯一标识,并可以采用如下三种方法中的一种或任意组合方法,建立所述相似字体唯一标识关系表:
第一种,利用字形的模式识别程序判断多个字体中的两个字体是否是相似字体,在判断为是时,将所述两个字体的字体唯一标识作为相似的字体唯一标识保存在相似字体唯一标识关系表中;
第二种,判断两个字体唯一标识中是否仅有次要版本号字段不同,在判断为是时,将所述两个字体唯一标识作为相似的字体唯一标识保存在相似字体唯一标识关系表中;
第三种,接收用户输入的多个相似的字体唯一标识,将该多个相似的字体唯一标识保存在相似字体唯一标识关系表中。
较佳的,在步骤30中接收到输入的字体唯一标识的同时,还可以接收到输入的过滤参数;可以根据过滤参数确定查询到的字体唯一标识是否满足过滤条件,在确定满足过滤条件时,返回查询到的字体唯一标识;否则,不返回查询到的字体唯一标识。
过滤参数可以包括相似度参数值,则根据该过滤参数确定查询到的字体唯一标识是否满足过滤条件的具体方法为:从相似字体唯一标识关系表中读取查询到的字体唯一标识与所述输入的字体唯一标识的相似度参数值;判断读取的相似度参数值与输入的相似度参数值是否满足设定关系;根据判断结果确定查询到的字体唯一标识是否满足过滤条件。例如,判断读取的相似度参数值是否大于输入的相似度参数值,若是,则确定查询到的字体唯一标识满足过滤条件,否则,确定查询到的字体唯一标识不满足过滤条件。再例如,判断读取的相似度参数值是否在输入的两个相似度参数值构成的相似度参数值范围内,若是,则确定查询到的字体唯一标识满足过滤条件,否则,确定查询到的字体唯一标识不满足过滤条件。
过滤参数还可以包括标识类型信息,则根据该过滤参数确定查询到的字体唯一标识是否满足过滤条件的具体方法为:判断所述生成的字体唯一标识的标识类型与过滤参数中的标识类型是否满足设定关系;根据判断结果确定查询到的字体唯一标识是否满足过滤条件。例如,判断所述生成的字体唯一标识的类型是否为输入的标识类型,若是,则确定查询到的字体唯一标识满足过滤条件,否则,确定查询到的字体唯一标识不满足过滤条件。这里,标识类型是指标识的生成机制或方法,例如,根据字体实例的元数据生成的两个字体唯一标识为同一类型的标识,根据字体实例中字形数据的摘要值生成的两个字体唯一标识为同一类型的标识。
本发明中,根据字体实例生成字体唯一标识的方法可以为:选取一个或多个设定字符,从字体实例中获取与设定字符对应的字形数据,利用摘要算法计算基于获取的各字形数据的摘要值;根据计算得到的摘要值生成字体唯一标识。这里,根据计算得到的摘要值生成字体唯一标识的方法为:生成包括一个或多个键与值的对应关系(表项)的映射表,键为所述设定字符的子集或该子集的标识,值为该子集中的字符对应的字形数据的摘要值;将映射表作为所述内嵌字体的字体唯一标识的一部分。当然,映射表中还可以包括其他信息,例如字体名、版本号、制造商名称等。
参见图4,本发明实施例还提供一种字体标识查询装置,该装置包括:
接收单元40,用于接收输入的字体唯一标识;
等价关系查询单元41,用于从等价关系查询模块中查询与所述输入的字体唯一标识等价的字体唯一标识;
相似关系查询单元42,用于从相似关系查询模块中查询与所述输入的字体唯一标识相似的字体唯一标识;
返回单元43,用于返回等价关系查询单元和/或相似关系查询单元查询到的字体唯一标识。
该装置还包括:
等价关系生成单元44,用于根据字体的一个或多个字体实例生成该字体的多个字体唯一标识;将生成的多个字体唯一标识作为等价的字体唯一标识保存在等价关系查询模块的等价字体唯一标识关系表中;或者,
接收用户输入的多个等价的字体唯一标识,将该多个等价的字体唯一标识保存在等价字体唯一标识关系表中;
相应的,所述等价关系查询单元41用于:从等价字体唯一标识关系表中查询与输入的字体唯一标识等价的字体唯一标识。
该装置还包括:
相似关系生成单元45,用于利用字形的模式识别程序判断多个字体中的两个字体是否是相似字体,在判断为是时,将所述两个字体的字体唯一标识作为相似的字体唯一标识保存在相似关系查询模块的相似字体唯一标识关系表中;或者,
判断两个字体唯一标识中是否仅有次要版本号字段不同,在判断为是时,将所述两个字体唯一标识作为相似的字体唯一标识保存在相似字体唯一标识关系表中;或者,
接收用户输入的多个相似的字体唯一标识,将该多个相似的字体唯一标识保存在等价字体唯一标识关系表中;
相应的,所述相似关系查询单元42用于:从相似字体唯一标识关系表中查询与输入的字体唯一标识相似的字体唯一标识。
该装置还包括:
过滤单元46,用于根据输入的过滤参数确定等价关系查询单元或相似关系查询单元查询到的字体唯一标识是否满足过滤条件,在确定满足过滤条件时,指示返回单元返回查询到的字体唯一标识。
所述过滤单元46用于:
在所述过滤参数包括相似度参数值时,从相似字体唯一标识关系表中读取查询到的字体唯一标识与所述输入的字体唯一标识的相似度参数值;
判断读取的相似度参数值与输入的相似度参数值是否满足设定关系;
根据判断结果确定查询到的字体唯一标识是否满足过滤条件。
所述过滤单元46用于:
在所述过滤参数包括标识类型信息时,判断所述生成的字体唯一标识的类型与过滤参数中的标识类型是否满足设定关系;
根据判断结果确定查询到的字体唯一标识是否满足过滤条件。
所述等价关系生成单元44或相似关系生成单元45用于:
按照如下方法根据字体实例生成字体唯一标识:
选取一个或多个设定字符,从字体实例中获取与设定字符对应的字形数据,利用摘要算法计算基于获取的各字形数据的摘要值;根据计算得到的摘要值生成字体唯一标识。
所述等价关系生成单元44或相似关系生成单元45用于:
按照如下方法根据计算得到的摘要值生成字体唯一标识:
生成包括一个或多个键与值的对应关系(表项)的映射表,所述键为所述设定字符的子集或该子集的标识,所述值为该子集中的字符对应的字形数据的摘要值;将所述映射表作为所述内嵌字体的字体唯一标识。
综上,本发明的有益效果包括:
本发明实施例提供的方案中,首先确定待处理文档中内嵌字体的字体唯一标识;然后在本地字体库中查找与确定的字体唯一标识匹配的字体实例;最后利用查找到的字体实例处理所述待处理文档。可见,采用本发明,对于内嵌字体,采用本地字体库中的字体实例处理该待处理文档,而不需要根据待处理文档中记录的内嵌字体的字体实例存储地址从待处理文档中获得字体实例或从其他服务器下载到字体实例,节省了待处理文档所需要的内存空间、磁盘存储空间或下载字体实例所需要的网络流量。
本发明实施例提供的方案中,首先,接收输入的字体唯一标识;然后,从预先建立的等价字体唯一标识关系表中查询与所述生成的字体唯一标识等价的字体唯一标识;和/或,从预先建立的相似字体唯一标识关系表中查询与所述生成的字体唯一标识相似的字体唯一标识;最后,返回查询到的字体唯一标识。本方案中,能够从预先建立的等价字体唯一标识关系表中查询到与输入的字体唯一标识等价的字体唯一标识,从预先建立的相似字体唯一标识关系表中查询到与输入的字体唯一标识相似的字体唯一标识,从而解决了无法获得足够多的等价或相似字体唯一标识的问题。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (19)
1.一种文档处理方法,其特征在于,该方法包括:
确定待处理文档中内嵌字体的字体唯一标识,其中所述字体唯一标识包含至少一个具有一个键和一个值的表项的映射表,所述键为设定字符的子集或所述子集的标识,所述值为所述子集中的字符对应的字形数据的摘要值;
在本地字体库中查找与确定的字体唯一标识匹配的字体实例;
利用查找到的字体实例处理所述待处理文档。
2.如权利要求1所述的方法,其特征在于,所述确定待处理文档中内嵌字体的字体唯一标识包括:
从所述待处理文档中或与所述待处理文档相关联的文件中获取字体唯一标识,将获取到的字体唯一标识确定为所述内嵌字体的字体唯一标识;或者,
根据所述待处理文档中记录的所述内嵌字体的字体实例存储地址,获取所述内嵌字体的字体实例;根据获取到的字体实例生成字体唯一标识,将生成的字体唯一标识确定为所述内嵌字体的字体唯一标识;或者,
根据所述待处理文档中记录的所述内嵌字体的字体实例存储地址,获取所述内嵌字体的字体实例;根据获取到的字体实例生成字体唯一标识;查询与生成的字体唯一标识等价和/或相似的字体唯一标识;将生成的字体唯一标识与查询到的字体唯一标识确定为所述内嵌字体的字体唯一标识;或者,
从待处理文档中或与待处理文档相关联的文件中获取字体唯一标识;查询与获取的字体唯一标识等价和/或相似的字体唯一标识;将获取的字体唯一标识与查询到的字体唯一标识确定为所述内嵌字体的字体唯一标识。
3.如权利要求2所述的方法,其特征在于,根据字体实例生成字体唯一标识的方法包括:
选取一个或多个设定字符,从字体实例中获取与设定字符对应的字形数据,利用摘要算法计算基于获取的各字形数据的摘要值;根据计算得到的摘要值生成字体唯一标识。
4.如权利要求3所述的方法,其特征在于,所述根据计算得到的摘要值生成字体唯一标识包括:
生成包括一个或多个表项的映射表,每个表项有一个键与一个值,所述键为所述设定字符的子集或该子集的标识,所述值为该子集中的字符对应的字形数据的摘要值;将所述映射表作为所述内嵌字体的字体唯一标识。
5.如权利要求4所述的方法,其特征在于,所述在本地字体库中查找与确定的字体唯一标识匹配的字体实例包括:
对于本地字体库中的各字体实例,获取该字体实例的字体唯一标识;确定获取到的字体唯一标识与所述确定的字体唯一标识中等键等值的表项和等键不等值的表项;根据确定的表项判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配;在判断为是时,将该字体实例确定为与所述确定的字体唯一标识匹配的字体实例。
6.如权利要求5所述的方法,其特征在于,在根据确定的表项判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配之前,该方法进一步包括:
比较获取到的字体唯一标识中与所述确定的字体唯一标识中除表项之外的其他信息;
所述根据确定的表项判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配包括:
根据比较结果和所述确定的表项,判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配。
7.如权利要求1所述的方法,其特征在于,在本地字体库中查找与确定的字体唯一标识匹配的字体实例之后,并且利用查找到的字体实例处理所述待处理文档之前,该方法进一步包括:
判断查找到的字体实例是否满足所述待处理文档的处理需求;
所述利用查找到的字体实例处理所述待处理文档包括:
在判断查找到的字体实例满足所述待处理文档的处理需求时,利用该字体实例处理所述待处理文档。
8.如权利要求7所述的方法,其特征在于,所述判断查找到的字体实例是否满足所述待处理文档的处理需求包括:
判断查找到的字体实例中所包含的字符是否全部或部分覆盖所述待处理文档中使用所述内嵌字体的字符,若是,则确定查找到的字体实例满足所述待处理文档的处理需求,否则,确定查找到的字体实例不满足所述待处理文档的处理需求。
9.如权利要求1所述的方法,其特征在于,在本地字体库中未查找到与确定的字体唯一标识匹配的字体实例时,该方法进一步包括:
根据所述待处理文档中记录的所述内嵌字体的字体实例存储地址,获取到所述内嵌字体的字体实例;
将获取到的字体实例保存在本地字体库中;
利用保存在本地字体库中的所述字体实例处理所述待处理文档。
10.如权利要求1所述的方法,其特征在于,所述利用查找到的字体实例处理所述待处理文档包括:
将所述待处理文档中记录的所述内嵌字体的字体实例存储地址重定向到查找到的字体实例;
使用重定向后的字体实例处理所述待处理文档中使用所述内嵌字体的数据。
11.如权利要求9所述的方法,其特征在于,所述利用保存在本地字体库中的所述字体实例处理所述待处理文档包括:
将所述待处理文档中记录的所述内嵌字体的字体实例存储地址重定向到保存的字体实例;
使用重定向后的字体实例处理所述待处理文档中使用所述内嵌字体的数据。
12.一种文档处理装置,其特征在于,该装置包括:
确定单元,用于确定待处理文档中内嵌字体的字体唯一标识,其中所述字体唯一标识包含至少一个具有一个键和一个值的表项的映射表,所述键为设定字符的子集或所述子集的标识,所述值为所述子集中的字符对应的字形数据的摘要值;
查找单元,用于在本地字体库中查找与确定的字体唯一标识匹配的字体实例;
处理单元,用于利用查找到的字体实例处理所述待处理文档。
13.如权利要求12所述的装置,其特征在于,所述确定单元包括第一单元、第二单元、第三单元、第四单元中的一个或任意组合,其中:
所述第一单元,用于从所述待处理文档中或与所述待处理文档相关联的文件中获取字体唯一标识,将获取到的字体唯一标识确定为所述内嵌字体的字体唯一标识;
所述第二单元,用于根据所述待处理文档中记录的所述内嵌字体的字体实例存储地址,获取所述内嵌字体的字体实例;根据获取到的字体实例生成字体唯一标识,将生成的字体唯一标识确定为所述内嵌字体的字体唯一标识;或者,
所述第三单元,用于根据所述待处理文档中记录的所述内嵌字体的字体实例存储地址,获取所述内嵌字体的字体实例;根据获取到的字体实例生成字体唯一标识;查询与生成的字体唯一标识等价和/或相似的字体唯一标识;将生成的字体唯一标识与查询到的字体唯一标识确定为所述内嵌字体的字体唯一标识;
所述第四单元,用于从待处理文档中或与待处理文档相关联的文件中获取字体唯一标识;查询与获取的字体唯一标识等价和/或相似的字体唯一标识;将获取的字体唯一标识与查询到的字体唯一标识确定为所述内嵌字体的字体唯一标识。
14.如权利要求13所述的装置,其特征在于,所述第二单元或第三单元用于:
按照如下方法根据字体实例生成字体唯一标识:
选取一个或多个设定字符,从字体实例中获取与设定字符对应的字形数据,利用摘要算法计算基于获取的各字形数据的摘要值;根据计算得到的摘要值生成字体唯一标识。
15.如权利要求14所述的装置,其特征在于,所述第二单元或第三单元用于:
按照如下方法根据计算得到的摘要值生成字体唯一标识:
生成包括一个或多个表项的映射表,每个表项有一个键与一个值,所述键为所述设定字符的子集或该子集的标识,所述值为该子集中的字符对应的字形数据的摘要值;将所述映射表作为所述内嵌字体的字体唯一标识。
16.如权利要求15所述的装置,其特征在于,所述查找单元用于:
对于本地字体库中的各字体实例,获取该字体实例的字体唯一标识;确定获取到的字体唯一标识与所述确定的字体唯一标识中等键等值的表项和等键不等值的表项;根据确定的表项判断获取到的字体唯一标识是否与所述确定的字体唯一标识匹配;在判断为是时,将该字体实例确定为与所述确定的字体唯一标识匹配的字体实例。
17.如权利要求12所述的装置,其特征在于,所述查找单元还用于:
在本地字体库中查找与确定的字体唯一标识匹配的字体实例之后,并且利用查找到的字体实例处理所述待处理文档之前,判断查找到的字体实例是否满足所述待处理文档的处理需求;
所述处理单元用于:
在判断查找到的字体实例满足所述待处理文档的处理需求时,利用该字体实例处理所述待处理文档。
18.如权利要求12所述的装置,其特征在于,所述查找单元还用于:
在本地字体库中未查找到与确定的字体唯一标识匹配的字体实例时,根据所述待处理文档中记录的所述内嵌字体的字体实例存储地址,获取到所述内嵌字体的字体实例;将获取到的字体实例保存在本地字体库中;
所述处理单元用于:
利用保存在本地字体库中的所述字体实例处理所述待处理文档。
19.如权利要求12所述的装置,其特征在于,所述处理单元用于:
将所述待处理文档中记录的所述内嵌字体的字体实例存储地址重定向到查找到的字体实例;
使用重定向后的字体实例处理所述待处理文档中使用所述内嵌字体的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010624174.7A CN102567431B (zh) | 2010-12-31 | 2010-12-31 | 文档处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010624174.7A CN102567431B (zh) | 2010-12-31 | 2010-12-31 | 文档处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567431A CN102567431A (zh) | 2012-07-11 |
CN102567431B true CN102567431B (zh) | 2014-04-02 |
Family
ID=46412860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010624174.7A Expired - Fee Related CN102567431B (zh) | 2010-12-31 | 2010-12-31 | 文档处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102567431B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136166B (zh) * | 2011-12-01 | 2015-06-17 | 北大方正集团有限公司 | 字体确定方法和设备 |
CN109992749A (zh) * | 2017-12-29 | 2019-07-09 | 珠海金山办公软件有限公司 | 一种文字显示方法、装置、电子设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5528742A (en) * | 1993-04-09 | 1996-06-18 | Microsoft Corporation | Method and system for processing documents with embedded fonts |
US7197706B1 (en) * | 2000-08-30 | 2007-03-27 | Celartem Inc. | Method and system for ensuring accurate font matching in documents |
CN1952955A (zh) * | 2005-10-18 | 2007-04-25 | 三星电子株式会社 | 含有直接打印功能打印机及其打印方法 |
JP2008140169A (ja) * | 2006-12-01 | 2008-06-19 | Canon Inc | 電子データ圧縮装置、電子データ圧縮方法、プログラム、及び記憶媒体 |
CN101385011A (zh) * | 2005-04-22 | 2009-03-11 | 微软公司 | 用于提供以不可用字体格式化的文字元素的准确视觉再现的方法 |
CN101894098A (zh) * | 2009-05-18 | 2010-11-24 | 北京大学 | 一种内嵌字体数据处理方法及装置 |
-
2010
- 2010-12-31 CN CN201010624174.7A patent/CN102567431B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5528742A (en) * | 1993-04-09 | 1996-06-18 | Microsoft Corporation | Method and system for processing documents with embedded fonts |
US7197706B1 (en) * | 2000-08-30 | 2007-03-27 | Celartem Inc. | Method and system for ensuring accurate font matching in documents |
CN101385011A (zh) * | 2005-04-22 | 2009-03-11 | 微软公司 | 用于提供以不可用字体格式化的文字元素的准确视觉再现的方法 |
CN1952955A (zh) * | 2005-10-18 | 2007-04-25 | 三星电子株式会社 | 含有直接打印功能打印机及其打印方法 |
JP2008140169A (ja) * | 2006-12-01 | 2008-06-19 | Canon Inc | 電子データ圧縮装置、電子データ圧縮方法、プログラム、及び記憶媒体 |
CN101894098A (zh) * | 2009-05-18 | 2010-11-24 | 北京大学 | 一种内嵌字体数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102567431A (zh) | 2012-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7912826B2 (en) | Apparatus, computer program product, and method for supporting construction of ontologies | |
US7685106B2 (en) | Sharing of full text index entries across application boundaries | |
CN102541963B (zh) | 字体标识查询方法及装置 | |
JP4738885B2 (ja) | グラフ分析および同期の方法およびシステム | |
US9104740B2 (en) | Enhanced attribute synchronization in a content management system | |
EP1703417A2 (en) | Method and computer-readable medium for fitting text to shapes within a graphic | |
US20090265301A1 (en) | Database Object Update Order Determination | |
US7865481B2 (en) | Changing documents to include changes made to schemas | |
US20020002566A1 (en) | Transfromation of marked up documents using a base architecture | |
CN115358397A (zh) | 一种基于数据采样的并行图规则挖掘方法及装置 | |
CN102567431B (zh) | 文档处理方法及装置 | |
CN111553001B (zh) | 一种从ifc文件中提取或删除构件的方法 | |
JP2005316699A (ja) | コンテンツ公開システム、コンテンツ公開方法、及びコンテンツ公開プログラム | |
CN116797195A (zh) | 工单处理方法、装置、计算机设备和计算机可读存储介质 | |
CA2539962A1 (en) | Method and apparatus for processing electronic data | |
CN116185389A (zh) | 一种代码生成方法、装置、电子设备及介质 | |
KR102560521B1 (ko) | 지식 그래프 생성 방법 및 장치 | |
CN111610908B (zh) | 一种生成框架图的方法、计算机设备及可读存储介质 | |
CN117008890B (zh) | 扩展应用开发系统及方法 | |
CN117573199B (zh) | 一种模型差异对比分析方法、装置、设备及介质 | |
CN117421466A (zh) | 搜索方法、装置、电子设备及存储介质 | |
CN111324640A (zh) | 一种自动扩展数据库方法和装置 | |
CN112800284A (zh) | 一种基于环境模型数据库的快速查询方法 | |
CN114461855A (zh) | 基于xml模板的数据树动态构建方法及电子设备 | |
US20100145966A1 (en) | Abstracting request from a development environment to object model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140402 Termination date: 20181231 |