一种在版式文档中嵌入字体数据的方法技术

技术编号:39045380 阅读:12 留言:0更新日期:2023-10-10 11:58
本发明专利技术涉及计算机技术领域,具体地说是一种在版式文档中嵌入字体数据的方法,按照可调整的预加载字符列表,分析版式文档中的页面文本对象的内容,确定需嵌入字体的文本对象及字符范围,分别按照“文字变曲线”方式和“字体子集化嵌入”方式嵌入字体数据,对比两种方式对文件大小的影响,保留字节数较少的处理结果。本发明专利技术同现有技术相比,充分利用版式文档中多种版面描述能力的组合,最大程度减少嵌入字体数据对文档体积增大带来的影响,在文档环境独立性和体积最小化之间取得平衡。立性和体积最小化之间取得平衡。立性和体积最小化之间取得平衡。

【技术实现步骤摘要】
一种在版式文档中嵌入字体数据的方法


[0001]本专利技术涉及计算机
,具体地说是一种在版式文档中嵌入字体数据的方法。

技术介绍

[0002]版式文档是内容图元具有独立定位和显现控制机制、版面呈现效果独立于软硬件平台的一种文档形态,主要用于文件的发布、传播和存档。
[0003]在计算机等电子设备中呈现文字依赖于操作系统中所携带的字库,为了保证版式文档在字库不同的操作系统环境中均呈现一致,常规的处理方式是将文档中的文字所使用的字体子集化后嵌入文档中,此时文档在终端中显现时不再依赖环境中的字库,从而维持较强的环境独立性,但这会导致文件的体积增大,有时嵌入字体子集数据的体积会大大超过文档本身的内容。
[0004]其中,由于opentype字体文件提供“字符

索引

曲线”的连续映射,存在cmap、glyf等多个表,这些表的数据量随文件中的字符数量几乎线性增加,占据完整字体文件体积的绝大部分,同时字体文件也提供命名name、统计hmax、操作系统配置os/2和排版提示gpos/gsub等辅助信息,这些信息在完整字体中体积占比不大,但在子集化的字体中这些不提供任何可见绘制数据的部分是造成文件体积难以进一步压缩的主要原因。
[0005]因此,为了解决上述问题,本申请提出了一种在版式文档中嵌入字体数据的方法,充分利用版式文档中多种版面描述能力的组合,最大程度减少嵌入字体数据对文档体积增大带来的影响,在文档环境独立性和体积最小化之间取得平衡。

技术实现思路
<br/>[0006]本专利技术的目的是填补现有技术的空白,提供了一种在版式文档中嵌入字体数据的方法,充分利用版式文档中多种版面描述能力的组合,最大程度减少嵌入字体数据对文档体积增大带来的影响,在文档环境独立性和体积最小化之间取得平衡。
[0007]为了达到上述目的,本专利技术提供一种在版式文档中嵌入字体数据的方法,包括以下步骤:
[0008]S1,预先加载一个常用字符列表,该列表中列举了使用频度高,且在操作系统中被预装字库所支持,根据环境调整;
[0009]S2,按常规方法进行格式转换或表单合成处理,形成版式文档;
[0010]S3,顺序处理S2步骤形成的版式文档的页面,遍历页面中的文本对象,抽取其表达的字符,逐个与S1步骤中的字符列表作包含判断;
[0011]S4,按照判断结果对页面中的文本对象作处理,如果文本对象表达的字符都在S1步骤中的字符列表中,则不作拆分,也不做标记;如果文本对象表达的字符都不在S1步骤中的字符列表中,则不作拆分,但做标记;如果只有部分字符不在S1步骤中的字符列表中,则将其从原有的文本对象中析出形成新的文本对象,对析出形成的文本对象作标记,处理后
确保字符列表内外的字符不处于同一个文本对象内;
[0012]S5,对于标记后的文本对象TextObject,按照其表达的字符从其对应环境字库中提取轮廓数据,将轮廓数据和文本对象的字号、定位信息融合变换后转换为版式文档的图形对象PathObject并插入到页面中;在页面中保留该文本对象,同时将该文本对象设置为不填充且不勾边,或者将该文本对象设置为不可见;
[0013]S6,所有页面处理完成后,将文档写出或模拟写出为文件,记录文件体积大小;
[0014]S7,再次遍历处理页面,将S5中插入的图形对象移除,并将标记后的文本对象恢复原有设置;
[0015]S8,对标记后的文本对象所引用的字体资源进行处理,在其字体名称后加“*”,按照新的字体名称在版式文档内检索字体资源,如果检索不到,则以新名称创建字体资源,并将文本对象表达的字符注册到检索到或新创建的字体资源中;
[0016]S9,所有页面处理完成后,对文档内的带有“*”的字体资源进行处理,先对其注册的字符进行去重,然后根据去重后的字符从其对应环境字库中提取子集数据,并将提取后的字体子集数据设置到该字体资源;
[0017]S10,所有字体资源处理完成后,将文档写出或模拟写出为文件,记录文件体积大小;
[0018]S11,对比所述S6步骤和S10步骤形成的文件大小,保留文件体积较小的文件作为最终结果,删除文件体积较大的文件或释放其占用的内存空间;
[0019]上述S5中,由于存在文本对象TextObject向图形对象PathObject的变换,因此这种方式也称为“文字变曲线”方式。
[0020]上述S9中,由于设置到字体资源并将最终输出到版式文件中的数据仅包含文档中表达的部分字符的“字符

索引

曲线”映射,不包含字体文件的全部字符,仅是一种“子集”,因此这种方式称为“字体子集化嵌入”方式。
[0021]本专利技术同现有技术相比,通过分析文件的文本内容,根据预加载常用字符列表确定需嵌入字体的字符范围,计算列表外字符在字体中的轮廓数据转换为版式文档的图形描述时的文件大小;模拟字体子集化嵌入,计算按此方式提取子集化字体后的文件大小;对比两种方式对文件体积增大的影响,选择体积较少的处理方式,按选定的方式执行字体子集化或将字体轮廓数据转换为页面图形内容。
附图说明
[0022]图1为本专利技术“文档处理流程”图;
[0023]图2为本专利技术“文本对象拆分”方式的示意图;
[0024]图3为本专利技术“字体子集化嵌入”方式的文件体积要素示意图;
[0025]图4为本专利技术“文字变曲线”方式的文件体积要素示意图;
具体实施方式
[0026]现结合附图对本专利技术做进一步描述。
[0027]本申请的主要特征为:
[0028]一、预加载常用字符列表可根据应用环境调整。
[0029]二、分析版式文档中的页面文本对象的内容,根据常用字符列表确定需嵌入字体的文本对象及字符范围。
[0030]三、按照“文字变曲线”方式处理文本对象,计算按此方式处理后的文件大小。
[0031]四、按照“字体子集化嵌入”方式处理字体资源,计算按此方式处理后的文件大小。
[0032]五、对比两种方式对文件大小的影响,保留字节数较少的处理结果。
[0033]因为预置常用字符列表在内容选择时充分考虑了字符在总体环境中的使用频度,因此在绝大多数情况下,预置常用字符列表内的字符已经覆盖普通文档中所用字符的99%以上。
[0034]对于大多数文档,需要嵌入子集化的字体或者转变为曲线处理的文字只占整个文档内容的极小部分,对于10页以内的常规文档,其文本对象所表达的字符内容中不在预置常用字符列表中的仅仅是个位数,大多数情况在3个以下。
[0035]参见图1~4,本专利技术公开了一种在版式文档中嵌入字体数据的方法,包括以下步骤:
[0036]S1,预先加载一个常用字符列表,该列表中列举了使用频度高,且在操作系统中被预装字库所支持,根据环境调整;
[0037]S2,按常规方法进行格式转换或表单合成处理,形成版式文档;...

【技术保护点】

【技术特征摘要】
1.一种在版式文档中嵌入字体数据的方法,其特征在于,包括以下步骤:S1,预先加载一个常用字符列表,该列表中列举了使用频度高,且在操作系统中被预装字库所支持,根据环境调整;S2,按常规方法进行格式转换或表单合成处理,形成版式文档;S3,顺序处理S2步骤形成的版式文档的页面,遍历页面中的文本对象,抽取其表达的字符,逐个与S1步骤中的字符列表作包含判断;S4,按照判断结果对页面中的文本对象作处理,如果文本对象表达的字符都在S1步骤中的字符列表中,则不作拆分,也不做标记;如果文本对象表达的字符都不在S1步骤中的字符列表中,则不作拆分,但做标记;如果只有部分字符不在S1步骤中的字符列表中,则将其从原有的文本对象中析出形成新的文本对象,对析出形成的文本对象作标记,处理后确保字符列表内外的字符不处于同一个文本对象内;S5,对于标记后的文本对象TextObject,按照其表达的字符从其对应环境字库中提取轮廓数据,将轮廓数据和文本对象的字号、定位信息融合变换后转换为版式文档的图形对象PathObject并插入到页面中;在页面中保留该文本对象,同时将该文本对象设置为不填充且不勾边,或者将该文本对象设置为不可见;S6,所有页面处理完成后,将文档写出或模拟写出为文件,记录文件体积大小;S7...

【专利技术属性】
技术研发人员:陈亚军刘丹董建王雷秦聪
申请(专利权)人:北京数科网维技术有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1