发明内容
有鉴于此,本发明提供一种字体实例创建方法及一种嵌入式系统设备。可在嵌入式系统设备支持多个字体引擎的情况下,自动将创建的字体实例与字体引擎进行匹配,丰富了嵌入式系统设备所能输出的字符的字体格式。
具体的,本发明提供的字体实例创建方法,包括:
当需要创建字体实例时,从嵌入式系统设备字库文件中获取所述字体实例所需的字体描述信息;
根据所述字体描述信息中的字体数据标识符以及嵌入式系统设备中的多个字体引擎内置的字体数据标识符,将所述字体描述信息与嵌入式系统设备中的多个字体引擎进行一一匹配,直到查找到与所述字体描述信息匹配的目标字体引擎为止;或者直到遍历所述嵌入式系统设备中的多个字体引擎为止;所述目标字体引擎的字体数据标识符中至少包括所述字体描述信息中的字体数据标识符;
当查找到所述目标字体引擎时,基于所述目标字体引擎创建字体实例,并将所述字体实例与所述目标字体引擎关联。
较佳的,所述基于所述目标字体引擎创建字体实例,包括:
通过所述目标字体引擎获取所述字体描述信息,并基于所述字体描述信息生成字体初始轮廓;
通过所述目标字体引擎为所述字体初始轮廓设置字体属性,进而完成字体实例的创建,所述字体属性包括字体大小、字体灰度级别以及字体数据标识符中一种或多种。
较佳的,所述将所述字体实例与所述目标引擎关联之后,包括:
获取已创建的字体实例;
根据所述获取的字体实例找到与获取的字体实例相关联的目标字体引擎;
通过所述目标字体引擎获取所述字体实例的字体描述信息和字体属性,并根据所述字体描述信息和字体属性信息生成字符显示数据;
根据所述字符显示数据显示字符。
较佳的,所述通过所述目标字体引擎和所述字体描述信息创建字体实例之后,包括:
获取或修改所述创建的字体实例的字体属性。
较佳的,所述通过所述目标字体引擎和所述字体描述信息创建字体实例之后,包括:
删除已创建的字体实例,释放所述字体实例所占用系统资源。
较佳的,当需要创建字体实例之前,还包括:
导入嵌入式系统设备所支持的多个字体引擎,并设置所述嵌入式系统设备运行所述多个字体引擎时的系统参数。
相应的,本发明提供的一种嵌入式系统设备包括:
存储单元,用于存储字库文件,所述字库文件包括字体实例所需的字体描述信息;
匹配单元,用于当需要创建字体实例时,从嵌入式系统设备字库文件中获取所述字体实例所需的字体描述信息,并根据所述字体描述信息中的字体数据标识符以及嵌入式系统设备中的多个字体引擎内置的字体数据标识符,将所述字体描述信息与嵌入式系统设备中的多个字体引擎进行一一匹配,直到查找到与所述字体描述信息匹配的目标字体引擎为止;或者直到遍历所述嵌入式系统设备中的多个字体引擎为止;所述目标字体引擎的字体数据标识符中至少包括所述字体描述信息中的字体数据标识符;
创建单元,用于当所述匹配单元查找到所述目标字体引擎时,通过所述目标字体引擎创建字体实例;
关联单元,用于并将所述创建单元所创建的字体实例与所述目标字体引擎关联。
较佳的,所述创建单元进一步包括:
第一创建模块,用于通过所述目标字体引擎获取所述字体描述信息,并基于所述字体描述信息生成字体初始轮廓;
第二创建模块,用于通过所述目标字体引擎为所述字体初始轮廓设置字体属性,进而完成字体实例的创建,所述字体属性包括字体大小、字体灰度级别以及字体数据标识符中一种或多种。
较佳的,本发明的嵌入式系统设备还包括:
输出单元,用于获取已创建的字体实例,根据所述获取的字体实例找到与获取的字体实例相关联的目标字体引擎,并通过所述目标字体引擎获取所述字体实例的字体描述信息和字体属性,并根据所述字体描述信息和字体属性信息生成字符显示数据,并根据所述字符显示数据显示字符。
较佳的,本发明的嵌入式系统设备还包括:
获取单元,用于获取所述创建的字体实例的字体属性;
或,
修改单元,用于修改所述创建的字体实例的字体属性。
较佳的,本发明的嵌入式系统设备还包括:
删除单元,用于删除已创建的字体实例,释放所述字体实例所占用系统资源。
较佳的,本发明的嵌入式系统设备还包括:
初始化单元,用于导入嵌入式系统设备所支持的多个字体引擎,并设置所述嵌入式系统设备运行所述多个字体引擎时的系统参数。
本发明的嵌入式系统设备可支持多个字体引擎,当创建字体实例时,本发明通过将所述字体实例与嵌入式系统设备所支持的多个字体引擎一一匹配份方式来找到支持所述字体实例的字体引擎,由此,本发明可实现自动将创建的字体实例与字体引擎进行匹配,丰富了嵌入式系统设备所能输出的字符的字体格式的技术效果。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
所谓创建字体实例是指通过字体引擎创建供嵌入式系统设备显示的字符的各种性能参数,这些性能参数包括:字体描述信息(点阵字体包含的是字体的点阵信息,矢量字体包含的是绘制字体的点、线和多边形曲线信息)和字体属性,其中字体属性又可包括字体大小、字体灰度级别以及字体数据标识符中一种或多种。
图1是本发明的字体实例创建方法的一实施例流程示意图;如图1所示,本实施例的字体实例创建方法包括:
步骤S110,当需要创建字体实例时,从嵌入式系统设备字库文件中获取所述字体实例所需的字体描述信息。
具体实现中,步骤S110所述的字库文件可存储在系统的内存中,这样在步骤S110,可直接从内存中调用字库文件中的字体描述信息,这样就可加快字体描述信息的获取速度;当然所述字库文件也可存储在系统的其他位置(比如,可存在flash中、系统硬盘中等),这样在步骤S110时,由系统从其他位置调用所述字库文件到系统的内存中,然后再从内存中调用字库文件的字体描述信息。这样的好处在于,占用的系统的内存较少,可大大节省系统的内存空间。
步骤S111,根据所述字体描述信息中的字体数据标识符以及嵌入式系统设备中的多个字体引擎内置的字体数据标识符,将所述字体描述信息与嵌入式系统设备中的多个字体引擎进行一一匹配,当查找到与所述字体描述信息匹配的目标字体引擎时,然后执行步骤S112;或者当遍历所述嵌入式系统设备中的多个字体引擎时,结束。所述目标字体引擎的字体数据标识符中至少包括所述字体描述信息中的字体数据标识符。
具体实现中,本发明所述的字体数据标识符是用于标识字体的格式类型的。比如字体数据标识符可为ttf、ttc、otf等,它们分别标识了不同的矢量字体类型。
具体的,在步骤S111,可将步骤S110获取的字体描述信息首先传入嵌入式系统设备中的任一个字体引擎,然后由所述字体引擎根据所述字体引擎内置的字体数据标识符(一般情况下一个字体引擎可包括一个或者多个字体数据标识符,而嵌入式系统设备中的多个字体引擎包括的字体数据标识符不完全相同)与所述获取的字体描述信息中携带的字体数据标识符进行匹配,若所述字体引擎内置的字体数据标识符包括有所述获取的字体描述信息中的字体数据标识符,则认为查找到与所述获取的字体描述信息匹配的目标字体引擎,然后可执行步骤S112,若首次未查到到匹配的目标字体引擎,则将所述获取的字体描述信息传入嵌入式系统设备中的另一个字体引擎,以此类推,直到查找到匹配的目标字体引擎,或者遍历所述嵌入式系统设备中的多个字体引擎。
步骤S112,基于所述目标字体引擎创建字体实例,并将所述字体实例与所述目标字体引擎关联。
具体实现中,在步骤S112可通过如下方式创建字体实例:
A1、通过所述目标字体引擎获取所述字体描述信息,并基于所述字体描述信息生成字体初始轮廓。
A2、通过所述目标字体引擎为所述字体初始轮廓设置字体属性,进而完成字体实例的创建,所述字体属性包括字体大小、字体灰度级别以及字体数据标识符中一种或多种。
而当在步骤S112完成字体实例与目标字体引擎的关联之后,当后续需要输出所述字体实例所指示的字符时,则会使用该目标字体引擎来完成字符的解析和输出。具体的,当将所述字体实例与所述目标引擎关联之后,输出字符的过程包括:
B1、获取已创建的字体实例;
B2、根据所述获取的字体实例找到与获取的字体实例相关联的目标字体引擎;
B3、通过所述目标字体引擎获取所述字体实例的字体描述信息和字体属性,并根据所述字体描述信息和字体属性信息生成字符显示数据;
B4、根据所述字符显示数据显示字符。
图2是本发明的字体实例创建方法的另一实施例流程示意图。如图2所示,该实施例包括:
步骤S210,导入嵌入式系统设备所支持的多个字体引擎,并设置所述嵌入式系统设备运行所述多个字体引擎时的系统参数。
具体实现中,在步骤S210设置系统参数主要是根据系统导入的多个字体引擎对系统字库文件进行初始化、对系统内存初始化。
步骤S211,当需要创建字体实例时,从嵌入式系统设备字库文件中获取所述字体实例所需的字体描述信息。
步骤S212,根据所述字体描述信息中的字体数据标识符以及嵌入式系统设备中的多个字体引擎内置的字体数据标识符,将所述字体描述信息与嵌入式系统设备中的多个字体引擎进行一一匹配,当查找到与所述字体描述信息匹配的目标字体引擎时,然后执行步骤S213;或者当遍历所述嵌入式系统设备中的多个字体引擎时,结束。所述目标字体引擎的字体数据标识符中至少包括所述字体描述信息中的字体数据标识符。
具体实现中,步骤S211-S212与图1中所示步骤S110和S111相同,在此不进行赘述。
步骤S213,基于所述目标字体引擎创建字体实例。
具体实现中,步骤S213中创建字体实例的方式与图1所示实施例的步骤S112中创建字体实例的方式相同,在此不进行赘述。
步骤S214,获取或修改所述创建的字体实例的字体属性。具体实现中,当通过步骤S213创建字体实例之后, 可能会存在需要了解或者修改所述字体实例的情况,因此,本实施例可在步骤S214获取已经创建的字体实例的字体属性以及对所述字体属性进行修改。
步骤S215,将所述字体实例与所述目标字体引擎关联。
另外,具体实现中,本发明实施例的方法(包括本发明列举的上述两个实施例以及未列举的其他实施例)还可包括:删除已创建的字体实例,释放所述字体实例所占用系统资源的步骤。
相应的,本发明实施例还提供了一种用于实施本发明的字体实例创建方法的嵌入式系统设备。具体的:
图3是本发明的嵌入式系统设备的一实施例结构组成示意图。如图3所示,本发明实施例的嵌入式系统设备包括:存储单元31、匹配单元32、创建单元33、关联单元34以及输出单元35,其中:
所述存储单元31,用于存储字库文件,所述字库文件包括字体实例所需的字体描述信息。
所述匹配单元32,用于当需要创建字体实例时,从所述存储单元31的字库文件中获取所述字体实例所需的字体描述信息,并根据所述字体描述信息中的字体数据标识符以及嵌入式系统设备中的多个字体引擎内置的字体数据标识符,将所述字体描述信息与嵌入式系统设备中的多个字体引擎进行一一匹配,直到查找到与所述字体描述信息匹配的目标字体引擎为止;或者直到遍历所述嵌入式系统设备中的多个字体引擎为止;所述目标字体引擎的字体数据标识符中至少包括所述字体描述信息中的字体数据标识符。
具体实现中,本发明所述的字体数据标识符是用于标识字体的格式类型的。比如字体数据标识符可为ttf、ttc、otf等,它们分别标识了不同的矢量字体类型。
具体的,匹配单元32可将获取的字体描述信息首先传入嵌入式系统设备中的任一个字体引擎,然后由所述字体引擎根据所述字体引擎内置的字体数据标识符(一般情况下一个字体引擎可包括一个或者多个字体数据标识符,而嵌入式系统设备中的多个字体引擎包括的字体数据标识符不完全相同)与所述获取的字体描述信息中携带的字体数据标识符进行匹配,若所述字体引擎内置的字体数据标识符包括有所述获取的字体描述信息中的字体数据标识符,则认为查找到与所述获取的字体描述信息匹配的目标字体引擎,若首次未查到到匹配的目标字体引擎,则将所述获取的字体描述信息传入嵌入式系统设备中的另一个字体引擎,以此类推,直到查找到匹配的目标字体引擎,或者遍历所述嵌入式系统设备中的多个字体引擎。
所述创建单元33,用于当所述匹配单元查找到所述目标字体引擎时,通过所述目标字体引擎创建字体实例。仍参考图1所示,创建单元33具体可包括:第一创建模块331和第二创建模块332,其中:所述第一创建模块331,用于通过所述目标字体引擎获取所述字体描述信息,并基于所述字体描述信息生成字体初始轮廓。所述第二创建模块332,用于通过所述目标字体引擎为所述字体初始轮廓设置字体属性,进而完成字体实例的创建。
所述关联单元34,用于并将所述创建单元33所创建的字体实例与所述目标字体引擎关联。
所述输出单元35,用于获取已创建的字体实例,根据所述获取的字体实例找到与获取的字体实例相关联的目标字体引擎,并通过所述目标字体引擎获取所述字体实例的字体描述信息和字体属性,并根据所述字体描述信息和字体属性信息生成字符显示数据,并根据所述字符显示数据显示字符。
图4是本发明的嵌入式系统设备的另一实施例结构组成示意图。如图3所示,本发明实施例的嵌入式系统设备包括:初始化单元40、存储单元41、匹配单元42、创建单元43、关联单元44、输出单元45、获取单元46、修改单元47以及删除单元48,其中:存储单元41、匹配单元42、创建单元43、关联单元44、输出单元45分别与图3中所示的存储单元31、匹配单元32、创建单元33、关联单元34以及输出单元35相同,在此不进行赘述。
所述初始化单元40,用于导入嵌入式系统设备所支持的多个字体引擎,并设置所述嵌入式系统设备运行所述多个字体引擎时的系统参数。
具体实现中,初始化单元40设置系统参数主要是根据系统导入的多个字体引擎对系统字库文件进行初始化、对系统内存初始化。
所述获取单元46,用于获取所述创建的字体实例的字体属性。
所述修改单元47,用于修改所述创建的字体实例的字体属性。
所述删除单元48,用于删除已创建的字体实例,释放所述字体实例所占用系统资源。
具体实现中,本发明实施例的嵌入式系统设备可包括获取单元46、修改单元47以及删除单元48中的一个或者多个。
本发明实施例为嵌入式系统设备设置多个字体引擎,当创建字体实例时,通过将所述字体实例与嵌入式系统设备所支持的多个字体引擎一一匹配的方式来找到支持所述字体实例的字体引擎,由此,本发明可实现自动将创建的字体实例与字体引擎进行匹配,丰富了嵌入式系统设备所能输出的字符的字体格式的技术效果。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。