CN101187939A - 一种字体文件的嵌入方法及装置 - Google Patents

一种字体文件的嵌入方法及装置 Download PDF

Info

Publication number
CN101187939A
CN101187939A CNA2007101779319A CN200710177931A CN101187939A CN 101187939 A CN101187939 A CN 101187939A CN A2007101779319 A CNA2007101779319 A CN A2007101779319A CN 200710177931 A CN200710177931 A CN 200710177931A CN 101187939 A CN101187939 A CN 101187939A
Authority
CN
China
Prior art keywords
font
data
font data
index
file
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.)
Granted
Application number
CNA2007101779319A
Other languages
English (en)
Other versions
CN100511238C (zh
Inventor
刘源
何震生
王毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New Founder Holdings Development Co ltd
Peking University
Founder Apabi Technology Ltd
Original Assignee
Peking University
Peking University Founder Group Co Ltd
Beijing Founder Apabi Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Peking University, Peking University Founder Group Co Ltd, Beijing Founder Apabi Technology Co Ltd filed Critical Peking University
Priority to CNB2007101779319A priority Critical patent/CN100511238C/zh
Publication of CN101187939A publication Critical patent/CN101187939A/zh
Application granted granted Critical
Publication of CN100511238C publication Critical patent/CN100511238C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Controls And Circuits For Display Device (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明公开了一种字体文件的嵌入方法及装置,为了解决嵌入到电子文档内部的字体文件体积较大,嵌入后电子文档的体积通常会大幅增加的问题,本发明公开的方法包括:获取待嵌入字符的字形数据;重新分配字形数据的字形索引的索引号,重新分配的最大索引号小于重新分配前最大索引号;按照索引号顺序,将字形数据重新记录在glyf表中;获取字形数据对应的偏移量;索引号和偏移量的映射关系,重新记录在loca表中;修改字体文件maxp表的numGlyphes和hhea表的numberOfHMetrics数据域的值,使之等于字形数据的数量;将字体文件嵌入到电子文档中。由于重新分配索引号,因此glyf表和loca表不必携带非必要内容,字体文件的体积较小。

Description

一种字体文件的嵌入方法及装置
技术领域
本发明属于字体技术领域,特别涉及字体文件的嵌入方法及装置。
背景技术
文字是一份电子文档的主要内容,而任何文字都不能脱离字体而单独存在,目前大多数电子文档都使用了TrueType字体。由于中文字符较多,并且字形复杂,所以中文字体的字体文件都比较大。GB2312-80《信息交换用汉字编码字符集基本集》共收录了6763个简体汉字,GBK码收录了21003个汉字,而单、双、四字节混合编码的GB18030-2000标准更是收录了27000个汉字。与上述字符集对应的汉字字库文件一般都在10MB以上。为了保证电子文档的文字所采用的字体在不同的软、硬件环境下显示正确,可以考虑将字体文件嵌入到电子文档中,这样即使在没有该字体的计算机上也可以正常显示字体。
字体文件中包括glyf表、loca表和Hmtx表。
字形数据存储在glyf表中。众多字形(Glyph)数据的顺序排列。TrueType字体文件中的字形数据有两种形式,即:简单类型字形和复合类型字形。简单类型字形数据直接通过若干条Bezier曲线描述字形的轮廓;而复合类型字形则通过若干个简单类型字形和复合类型字形的放缩变换描述字形的轮廓,实际上是一种对现有字形数据的复用。当字体引擎解析复合字形时,必须找到所有该复合类型字形所引用的简单类型字形才能输出该字的位图,即对于复合类型字形在glyf表内的字形数据为其所引用的简单类型字形数据的索引。glyf表内部顺序存放了所有的字形数据。
loea表没有表头,其内部记录了字形索引(Glyph Index)到字形(Glyph)数据偏移量的一对一映射关系。根据TrueType文件格式规范可知,loca表存在两种格式,即:短格式和长格式。当loca使用短格式时,表内部为一个SHORT类型(2字节)的数组;当loca使用长格式时,表内部为一个ULONG类型(4字节)的数组。字体文件中的head表中的indexToLocFormat字段指明了该字体文件使用了上述两种格式中的哪一种。
由字形索引(Glyph Index)计算字形数据偏移量(Glyph Offset)的计算规则是:
若head表中的indexToLocFormat值为1,则使用公式A计算字形数据的偏移量;若indexToLocFormat值为0,则使用公式B计算字形数据的偏移量。(offsets为loca表内部的2字节或4字节数组)
公式A:GlyphOffset=offsets[GlyphIndex*4]
公式B:GlyphOffset=offsets[GlyphIndex*2]
Hmtx表记录了所有字形数据(Glyph)的Metrix信息。
就当前而言,嵌入到电子文档内部的字体文件体积较大,嵌入后电子文档的体积通常会大幅增加,这是与电子出版物要求的文件小巧,传输便捷的特点相冲突的。
发明内容
为了解决嵌入到电子文档内部的字体文件体积较大,嵌入后电子文档的体积通常会大幅增加的问题,本发明实施例提供了一种字体文件的嵌入方法,包括:
在字体文件中获取待嵌入字符的字形数据;
重新分配所获取的字形数据的字形索引的索引号,重新分配的最大索引号小于未重新分配前最大索引号;
按照重新分配的字形索引号顺序,将字形数据重新记录在glyf表中;
按照重新分配的字形数据的索引号,获取字形数据对应的偏移量;
将重新分配的字形索引的索引号和字形数据对应的偏移量的映射关系,记录在loca表中;
修改字体文件maxp表的numGlyphes和hhea表的numberOfHMetrics数据域的值,使之等于字形数据的数量;
将字体文件嵌入到电子文档中。
同时本发明实施例还提供一种字体文件的嵌入装置,包括:
字形数据获取模块:用于在字体文件中获取待嵌入字符的字形数据;分配模块:用于重新分配所获取的字形数据的字形索引的索引号,重新分配的最大索引号小于未重新分配前最大索引号;
glyf表修改模块:用于按照重新分配的字形索引号顺序,将字形数据重新记录在glyf表中;
偏移量获取模块:用于按照重新分配的字形数据的索引号,获取字形数据对应的偏移量;
loca表修改模块:用于将重新分配的字形索引的索引号和字形数据对应的偏移量的映射关系,记录在loca表中;
maxp表修改模块:用于修改字体文件maxp表的numGlyphes和hhea表的numberOfHMetrics数据域的值,使之等于字形数据的数量;
字体文件嵌入模块:用于将字体文件嵌入到电子文档中。
由本发明提供的具体实施方案可以看出,正是由于重新分配字形数据的字形索引的索引号,按照重新分配的字形索引号顺序,将字形数据重新记录在glyf表,同样修改loca表,使得新生成的glyf表和loca表不必再携带不必要的内容,字体文件体积较小。
附图说明
图1为本发明提供的第一实施例方法流程图;
图2为本发明提供的第一实施例解析复合类型字形数据的方法流程图;
图3为本发明提供的第二实施例装置结构图。
具体实施方式
本发明提供的第一实施例是一种字体文件的嵌入方法,以将楷体字体文件待嵌入字符为“中国人民”,嵌入到电子文档为例,方法流程如图1所示,包括:
步骤101:根据“中”对应的字体文件在cmap表中的数据,将“中”字的Unicode字符映射到字体文件中的GlyphIndex(字形索引)1000;
步骤102:根据字体文件现有loca表,得到“中”字对应的字形索引GlyphIndex的索引号“1000”对应的字形数据在现有glyf表中的字形数据的GlyphOffset(偏移量)为“10023”,同时得到字形索引的索引号为GlyphIndex“1001”对应的字形数据在现有glyf表中的字形数据GlyphOffset(偏移量)“10123”;
步骤103:根据字形数据偏移量GlyphOffset“10023”和“10123”,在现有glyf表查找并获取到“中”字的字形数据GlyphData。
步骤101-103仅是以Unicode编码为例,通过Unicode查找并获取字形(Glyph)数据的过程。
如果提前知道待提取字符的字形索引,还通过如下步骤获取字形(Glyph)数据:执行步骤102和步骤103,利用已知的字形索引获得相应的字形数据。由上述步骤可知,通过现有技术,有多种方式可获得相应的字形数据。
步骤104:解析字形数据,对欲添加到待嵌入的字体文件中的字形数据,重新分配字形索引的索引号(Glyph Index)。如在现有技术中“中国人民”中的“中”对应的字形索引的索引号为“1000”,“国”对应的字形索引的索引号为“2000”,“人”对应的字形索引的索引号为“3000”,“民”对应的字形索引的索引号为“4000”。为“中”“国”“人”“民”重新分配字形索引(Glyph Index),例如分别分配为“1”、“2”、“3”、“4”,或者“4”、“3”、“2”、“1”,或者“3”、“4”、“1”、“2”  。重新分配的原则为重新分配后的字形索引的最大索引号,小于未重新分配时字形索引的最大索引号,在本实施例中,从新分配的最大索引号小于“民”对应的字形索引的索引号“4000”。作为优选的方案,重新连续分配字形索引的索引号,作为进一步优选的方案,重新连续分配的字形索引的索引号从1开始。
步骤105:修改字体文件的glyf表,按照新字形索引的顺序“1”、“2”、“3”、“4”输出“中国人民”对应的字形数据到glyf表中。
步骤106:按照重新分配的字形数据的字形索引号“1”、“2”、“3”、“4”,获取“中国人民”对应的字形数据偏移量分别为“0”“100”“330”“450”。
步骤107:修改字体文件的loca表,将重新分配的字形索引和字形数据对应的偏移量的映射关系保存在loca表。重新分配后“中”字对应的字形索引的索引号为“1”,对应的偏移量为“0”,将它们的映射关系保存在loca表中。
步骤108:修改字体文件的maxp表和hhea表中的numGlyphes和numberOfHMetrics数据域的值,使之等于被嵌入的字形数据的数量4。
步骤109:生成表目录,记录每个表项的偏移量等信息。
步骤110:将字体文件嵌入到电子文档中。
由于重新分配字形数据的字形索引的索引号,按照重新分配的字形索引号顺序,将字形数据重新记录在glyf表,同样修改loca表。修改后的glyf表和loca表只记录了待嵌入字符的字形数据和与之对应的字形索引的相关数据,相对于现有技术,去除了非待嵌入字符的字形数据和与之对应的字形索引的相关数据。新生成的glyf表和loca表不必再携带不必要的内容,字体文件体积较小。
为了减少字体文件的体积,进一步还可以删除字体文件的cmap表。
字形数据包括简单字形数据如“中”对应的字形数据和复杂字形数据如“国”对应的字形数据,对于解析复合字形数据,重新连续分配字形索引的方法流程图如图2所示,具体过程如下:
步骤201:解析该复合类型字形数据,并为该复合类型字形数据(Glyph)重新分配一个新的字形索引(Glyph Index),同时为被其引用的字形数据重新分配一个新的字形索引。如“国”对应的字形数据为复合类型字形数据,其引用“口”和“玉”对应的字形数据,为“国”对应的字形数据重新分配一个字形索引为“2”,并为“口”和“玉”对应的字形数据重新分配字形索引分别为“5”  “6”。
步骤202:检查是否存在引用其他复合类型字形数据的情况。
若存在引用复合类型字形数据的情况,重复执行步骤201,解析新出现的复合类型字形;反之,若引用的字形数据全部是简单字形数据,就跳转至步骤203终止解析。
在步骤201和步骤202中可能存在多个复合字形同时引用相同字形的情况,这时只需保存一份被多次引用的字形数据,减少数据的重复。
在解析字形数据时需要区分简单类型和复合类型的字形数据。上面介绍了对复合类型的字形数据的解析过程,在此过程中解析的结果为被解析的字形数据本身和被其引用的字形数据分配的新的字形索引。
进一步优化的方案还包括修改字体文件的hmtx表,提取待嵌入字符的Metrix信息,并按照新分配的字形索引顺序,重新记录每个字形的Metrix信息。
本发明提供的第二实施例是一种字体文件的嵌入装置,其结构如图3所示,包括:
字形数据获取模块301:用于在字体文件中获取待嵌入字符的字形数据;
分配模块302:用于重新分配所获取的字形数据的字形索引的索引号,重新分配的最大索引号小于未重新分配前最大索引号;
glyf表修改模块303:用于按照重新分配的字形索引号顺序,将字形数据重新记录在glyf表中;
偏移量获取模块304:用于按照重新分配的字形数据的索引号,获取字形数据对应的偏移量;
loca表修改模块305:用于将重新分配的字形索引的索引号和字形数据对应的偏移量的映射关系,记录在loca表中;
maxp表修改模块306:用于修改字体文件maxp表的numGlyphes和hhea表的numberOfHMetrics数据域的值,使之等于字形数据的数量;
字体文件嵌入模块307:用于将字体文件嵌入到电子文档中。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种字体文件的嵌入方法,其特征在于,包括:
在字体文件中获取待嵌入字符的字形数据;
重新分配所获取的字形数据的字形索引的索引号,重新分配的最大索引号小于重新分配前最大索引号;
按照重新分配的字形索引号顺序,将字形数据重新记录在glyf表中;
按照重新分配的字形数据的索引号,获取字形数据对应的偏移量;
将重新分配的字形索引的索引号和字形数据对应的偏移量的映射关系,记录在loca表中;
修改字体文件maxp表的numGlyphes和hhea表的numberOfHMetrics数据域的值,使之等于字形数据的数量;
将字体文件嵌入到电子文档中。
2.如权利要求1所述的方法,其特征在于,重新分配所获取的字形数据的字形索引的索引号的步骤具体为:
重新连续分配待嵌入字符字形数据的字形索引的索引号。
3.如权利要求2所述的方法,其特征在于,重新连续分配待嵌入字符字形数据的字形索引的索引号从1开始递增编码。
4.如权利要求1所述的方法,其特征在于,所述将字体文件嵌入到电子文档中的步骤前还包括:
删除字体文件cmap表。
5.如权利要求1所述的方法,其特征在于,所述将字体文件嵌入到电子文档中的步骤前还包括:
修改字体文件hmtx表,提取待嵌入字符字形数据的Metrix信息,并按照新分配的字形索引顺序,重新记录提取的Metrix信息到hmtx表。
6.如权利要求1所述的方法,其特征在于,所述字形数据包括简单字形数据和/或复合字形数据。
7.如权利要求6所述的方法,其特征在于,若字形数据为简单字形数据,直接为该简单类型字形数据重新分配新的字形索引。
8.如权利要求6所述的方法,其特征在于,若字形数据为复合字形数据,首先为复合类型字形数据重新分配新的字形索引,再为被其引用的字形数据重新分配新的字形索引。
9.如权利要求8所述的方法,其特征在于,还包括:
检查是否存在引用其他复合类型字形数据的步骤;
若存在引用复合类型字形数据,重复复合类型字形数据字形索引重新分配的步骤,若引用的字形数据全部是简单字形数据,直接为该简单类型字形数据重新分配新的字形索引。
10.一种字体文件的嵌入装置,其特征在于,包括:
字形数据获取模块:用于在字体文件中获取待嵌入字符的字形数据;
分配模块:用于重新分配所获取的字形数据的字形索引的索引号,重新分配的最大索引号小于未重新分配前最大索引号;
glyf表修改模块:按照重新分配的字形索引号顺序,将字形数据重新记录在glyf表中;
偏移量获取模块:用于按照重新分配的字形数据的索引号,获取字形数据对应的偏移量;
loca表修改模块:用于将重新分配的字形索引的索引号和字形数据对应的偏移量的映射关系,记录在loca表中;
maxp表修改模块:用于修改字体文件maxp表的numGlyphes和hhea表的numberOfHMetrics数据域的值,使之等于字形数据的数量;
字体文件嵌入模块:用于将字体文件嵌入到电子文档中。
CNB2007101779319A 2007-11-22 2007-11-22 一种字体文件的嵌入方法及装置 Expired - Fee Related CN100511238C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101779319A CN100511238C (zh) 2007-11-22 2007-11-22 一种字体文件的嵌入方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101779319A CN100511238C (zh) 2007-11-22 2007-11-22 一种字体文件的嵌入方法及装置

Publications (2)

Publication Number Publication Date
CN101187939A true CN101187939A (zh) 2008-05-28
CN100511238C CN100511238C (zh) 2009-07-08

Family

ID=39480333

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101779319A Expired - Fee Related CN100511238C (zh) 2007-11-22 2007-11-22 一种字体文件的嵌入方法及装置

Country Status (1)

Country Link
CN (1) CN100511238C (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894098B (zh) * 2009-05-18 2012-01-11 北京大学 一种内嵌字体数据处理方法及装置
CN102467487A (zh) * 2010-11-16 2012-05-23 北京大学 用于控制字库使用范围的方法和装置
CN102063416B (zh) * 2009-11-16 2012-07-25 北大方正集团有限公司 向pdf文件内嵌双字节字体的方法及其系统
CN102063415B (zh) * 2009-11-16 2012-07-25 北大方正集团有限公司 向pdf文件内嵌单字节字体的方法及其系统
CN103631968A (zh) * 2013-12-17 2014-03-12 天津书生软件技术有限公司 一种实现文档字体嵌入的方法及装置
CN104424163A (zh) * 2013-08-29 2015-03-18 北大方正集团有限公司 文字处理方法和系统
CN105528345A (zh) * 2014-09-28 2016-04-27 北大方正集团有限公司 终端、服务器和补字方法
CN110765072A (zh) * 2018-07-27 2020-02-07 珠海金山办公软件有限公司 一种保存文件的方法及装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894098B (zh) * 2009-05-18 2012-01-11 北京大学 一种内嵌字体数据处理方法及装置
CN102063416B (zh) * 2009-11-16 2012-07-25 北大方正集团有限公司 向pdf文件内嵌双字节字体的方法及其系统
CN102063415B (zh) * 2009-11-16 2012-07-25 北大方正集团有限公司 向pdf文件内嵌单字节字体的方法及其系统
CN102467487A (zh) * 2010-11-16 2012-05-23 北京大学 用于控制字库使用范围的方法和装置
CN102467487B (zh) * 2010-11-16 2015-04-22 北京大学 用于控制字库使用范围的方法和装置
CN104424163A (zh) * 2013-08-29 2015-03-18 北大方正集团有限公司 文字处理方法和系统
CN104424163B (zh) * 2013-08-29 2017-09-22 北大方正集团有限公司 文字处理方法和系统
CN103631968A (zh) * 2013-12-17 2014-03-12 天津书生软件技术有限公司 一种实现文档字体嵌入的方法及装置
CN103631968B (zh) * 2013-12-17 2017-01-18 天津书生软件技术有限公司 一种实现文档字体嵌入的方法及装置
CN105528345A (zh) * 2014-09-28 2016-04-27 北大方正集团有限公司 终端、服务器和补字方法
CN105528345B (zh) * 2014-09-28 2020-08-07 北大方正集团有限公司 终端、服务器和补字方法
CN110765072A (zh) * 2018-07-27 2020-02-07 珠海金山办公软件有限公司 一种保存文件的方法及装置

Also Published As

Publication number Publication date
CN100511238C (zh) 2009-07-08

Similar Documents

Publication Publication Date Title
CN100511238C (zh) 一种字体文件的嵌入方法及装置
CN101122899B (zh) 报表的生成方法和设备
CN101996160B (zh) 一种字体数据的处理方法及系统
CN101271463B (zh) 版式文件的结构处理方法和系统
US8201088B2 (en) Method and apparatus for associating with an electronic document a font subset containing select character forms which are different depending on location
CN104881275B (zh) 一种电子报表生成方法及装置
CN102737012B (zh) 文本信息对比方法及系统
US20040025118A1 (en) Glyphlets
CN103853806A (zh) 一种表格转换方法及装置
US20080155519A1 (en) Code translator
CN104881469A (zh) 一种数据导出方法和装置
CN101483035B (zh) 在图形界面上显示文字的方法和系统
CN101008940A (zh) 自动处理字体缺失的方法与装置
Hussain et al. Urdu computing standards: Urdu zabta takhti (uzt) 1.01
CN103365894B (zh) 一种字体格式转换方法和装置
CN103136453A (zh) 文档操作题的自动组卷方法和自动阅卷方法
JP2003502735A (ja) 文字ベースのドキュメント及びファイルにおける属性データの不可視符号化
CN102063416B (zh) 向pdf文件内嵌双字节字体的方法及其系统
CN102063415B (zh) 向pdf文件内嵌单字节字体的方法及其系统
Raymond et al. Markup reconsidered
US20130024765A1 (en) Processing rich text data for storing as legacy data records in a data storage system
CN102169478B (zh) 用于呈现多语言文本的装置和方法
US20060248443A1 (en) System and method for exporting spreadsheet data
CN102467490B (zh) 一种字体数据的处理方法及装置
CN116719811A (zh) 一种基于元数据的动态表单配置方法

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
TR01 Transfer of patent right

Effective date of registration: 20220623

Address after: 3007, Hengqin international financial center building, No. 58, Huajin street, Hengqin new area, Zhuhai, Guangdong 519031

Patentee after: New founder holdings development Co.,Ltd.

Patentee after: FOUNDER APABI TECHNOLOGY Ltd.

Patentee after: Peking University

Address before: 100871, Haidian District Fangzheng Road, Beijing, Zhongguancun Fangzheng building, 298, 513

Patentee before: PEKING UNIVERSITY FOUNDER GROUP Co.,Ltd.

Patentee before: FOUNDER APABI TECHNOLOGY Ltd.

Patentee before: Peking University

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090708

CF01 Termination of patent right due to non-payment of annual fee