渲染字体的方法及系统技术方案

技术编号:7447199 阅读:183 留言:0更新日期:2012-06-20 23:28
本发明专利技术涉及一种渲染字体的方法及系统,所述方法包括:As3脚本对Svg文档进行解析,找到字体的相关节点,并提取所述相关节点中的字体信息;根据所述字体信息按照swf文件格式规范构建DefineFont3节点、DefineFontName节点、及包含一字体定义类的DoAbc节点;通过SymbolClass节点建立所述字体定义类与DefineFont3及DefineFontName节点的关联,在所述关联的基础上构建swf字体库;As3脚本加载所述swf字体库交由flash虚拟机解析,所述flash虚拟机生成嵌入字体;As3脚本指定所述嵌入字体及其字体名称。本发明专利技术借由flash虚拟机实现了flash平台下对svg字体进行不失真的渲染,从而在虚拟机层面上实现字体的应用,As3脚本只需使用少量代码即可实现相应字体的应用,相对于传统的As3脚本绘制的方法性能更高。

【技术实现步骤摘要】

本专利技术涉及一种渲染字体的方法及系统
技术介绍
svg是一种矢量图形描述格式,其中包含字体的描述,字体中包含字体对应的字形。flash是Adobe公司开发的一种二进制文件格式,通常以“.swf”为扩展名,主要以节点 (tag)的方式来组织,可支持Actionscript (As)脚本编写,运行于flash虚拟机(avm)之上,广泛应用于互联网的视频、游戏、广告等领域。svg图形描述文档中包含完整的字体信息,以实现不同平台上的一致显示,要实现 SVg字体在flash文件中的显示就需要对SVg字体的渲染即进行As3脚本绘制,整个渲染过程需要使用者编写一套完整的文字渲染引擎,包括根据字形信息进行图形绘制、及对文字相关的复制、删除、剪切、粘贴、选取操作等进行大量的代码编写,整个渲染过程非常繁琐, 而且在flash下通过As3脚本实现大量字体的渲染,对于大量文本显示性能不高。
技术实现思路
本专利技术的目的在于提供一种渲染字体的方法及系统,该方法及系统实现了 flash 中对svg字体进行不失真的渲染。为解决上述问题,本专利技术提供一种渲染字体的方法,包括As3脚本对Svg文档进行解析,找到字体的相关节点,并提取所述相关节点中的字体信息;根据所述字体信息按照swf文件格式规范构建DefineF0nt3节点、 DefineFontName节点、及包含一字体定义类的DoAbc节点;通过SymbolClass节点建立所述字体定义类与DefineFont3及DefineFontName 节点的关联,在所述关联的基础上构建swf字体库;As3脚本加载所述swf字体库交由flash虚拟机解析,所述flash虚拟机生成嵌入字体;As3脚本指定所述嵌入字体及其字体名称。进一步的,在上述方法中,所述相关节点包括font节点的font-face子节点和 glyph节点。进一步的,在上述方法中,所述font-face子节点的字体信息中包括ascent和 descent字体度量信息及每em的单位划分。进一步的,在上述方法中,所述glyph节点的字体信息包括字体的Unicode编码、 水平方向的advance值以及字形信息。进一步的,在上述方法中,所述DefineRmt3节点包括字体的最后一个节点和首节点的差值。根据本专利技术的另一面,提供一种渲染字体的系统,包括字体信息提取模块,用于As3脚本对Svg文档进行解析,找到字体的相关节点,并提取所述相关节点中的字体信息;节点构建模块,用于根据所述字体信息按照swf文件格式规范构建DefineRmt3 节点、DefineFontName节点、及包含一字体定义类的DoAbc节点;关联模块,用于通过SymbolClass节点建立所述字体定义类与DefineF0nt3及 DefineFontName节点的关联;补充模块,用于在所述关联的基础上构建swf字体库;加载模块,用于As3脚本加载所述swf字体库交由flash虚拟机解析;flash虚拟机,用于解析所述swf字体库生成嵌入字体;指定模块,用于As3脚本指定所述嵌入字体及其字体名称。进一步的,在上述系统中,所述字体信息提取模块找到的所述相关节点包括font 节点的font-face子节点和glyph节点。进一步的,在上述系统中,所述字体信息提取模块提取的字体信息包括所述 font-face子节点中的ascent和descent字体度量信息及每em的单位划分。进一步的,在上述系统中,所述字体信息提取模块提取的字体信息包括所述glyph 节点中的字体的Unicode编码、水平方向的advance值以及字形信息。进一步的,在上述系统中,所述DefineRmt3节点包括字体的最后一个节点和首节点的差值。与现有技术相比,本专利技术通过As3脚本对Svg文档进行解析,找到所述字体的相关节点,并提取所述相关节点中的字体信息,根据所述字体信息按照swf文件格式规范构建DefineR)nt3节点、DefineFontName节点、及包含一字体定义类的DoAbc节点,通过 SymbolClass节点建立所述字体定义类与DefineR)nt3及DefineRmtName节点的关联,在所述关联的基础上构建完整的swf字体库,As3脚本加载所述swf字体库交由flash虚拟机解析,所述flash虚拟机生成嵌入字体,As3脚本指定所述嵌入字体及其字体名称,从而借由flash虚拟机实现了 flash平台下对svg字体进行不失真的渲染,在虚拟机层面上实现字体的应用,而且As3脚本只需使用少量代码即可实现相应字体的应用,相对于传统的As3 脚本绘制的方法性能更高。附图说明图1是本专利技术一实施例的渲染字体的方法的流程图;图2是本专利技术一实施例的svg字体处理的流程图;图3是现有技术的使用Firefox6渲染的效果图;图4是本专利技术一实施例的flash动态字体库渲染效果图;图5是本专利技术一实施例的渲染字体的系统的功能模块示意图。具体实施例方式以下结合附图和具体实施例对本专利技术提出的渲染字体的方法及系统进一步详细说明。如图1和图2所示,一种渲染字体的方法,包括4步骤Si,As3脚本对Svg文档进行解析,找到字体的相关节点,并提取所述相关节点中的字体信息;步骤S2,根据所述字体信息按照swf文件格式规范构建Def ineRmt3节点、 DefineFontName节点、及包含一字体定义类的DoAbc节点,具体的,用As3脚本构建flash 虚拟机可解析的Abc代码可提供导出的字体定义类,所述字体定义类可以由字体库给外部使用;步骤S3,通过SymbolClass节点建立所述字体定义类与DefineFont3及 DefineFontName节点的关联,在所述关联的基础上构建完整的swf字体库,具体的,可补充其他需要的节点,以构建完整的swf字体库;步骤S4,As3脚本加载所述swf字体库交由flash虚拟机解析,所述flash虚拟机生成嵌入字体,具体的,通过将SVg的字体转换为包含所述嵌入字体的SWf字体库,借由 flash虚拟机实现flash平台下的svg字体渲染,同时,由于As3脚本是在flash虚拟机 (avm)上运行的一个脚本,其本身的渲染性能比flash虚拟机(avm)的渲染性能要差很多, 本方法借用flash虚拟机的嵌入字体功能,能够用较少的代码实现外挂字体渲染,这种方法在文本量较大时候性能相对较高。步骤S5,As3脚本指定所述嵌入字体及其字体名称,具体的,通过从svg文件中读取字体信息,动态构建SWf字体库以后,flash虚拟机可以直接使用,从而在虚拟机层面上实现字体的应用,As3脚本只需使用少量代码即可实现相应字体的应用,且性能相对更高, 如图3和图4所示,flash动态字体库渲染效果图中的“U”字体与Firefox6渲染的效果图 “U”字体一致,没有失真。以下一个svg文件的详细内容< xml version=" 1.0" encoding="ISO-8859-l" ><svg id="svgRoot" version=" 1.0" baseProfile=MFuH" viewBox=M0 O 240 180" xmlns="http://www.w3.org/20本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:王成
申请(专利权)人:盛乐信息技术上海有限公司
类型:发明
国别省市:

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

1
相关领域技术