面向嵌入式平台的矢量字库实现方法技术

技术编号:3864522 阅读:443 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种面向嵌入式平台的矢量字库实现方法,它包括一种Freetype字体引擎的精简方法,一种新型TrueType字体文件格式及其设计制作方法,一种颜色混合和像素点的过滤方法,本方法结合精简后的Freetype字体引擎和新型Truetype字体文件,将精简后的Freetype字体引擎移植入嵌入式平台中,并采用本发明专利技术提供的一种颜色混合和像素点的过滤方法,实现了矢量字库在嵌入式系统的应用。这种面向嵌入式平台的矢量字库实现方法,所占用的储存容量小,程序代码量小,能显著的提高矢量字体在嵌入式系统的显示速度和显示质量。

【技术实现步骤摘要】

本专利技术涉及嵌入式技术与应用领域,具体讲是一种。
技术介绍
随着嵌入式系统的应用越来越广泛,对嵌入式系统的界面的显示质量的要求也越来越高。 而界面显示质量中,字体的显示占了举足轻重的位置, 一个好的界面没有优秀的高显示质量 的字体配合就无法发挥其特点和优势。目前现有的嵌入式平台中所采用的字体一般为点阵字 库,虽然点阵字库使用比较灵活,占用空间不大,显示速度也较快,但是它的显示质量比较 差,无法实现放大和縮小。当需要有不同大小的字体需要显示的时候,嵌入式平台中将全部 修改其中的字体显示模块,这是一个相当大并且麻烦的工程。并且随着现在的嵌入式系统中 越来越高的显示要求,比如较大屏幕的手机嵌入式平台,如果仍然使用原来的点阵字库,将 会有非常糟糕的显示效果,在较大的显示设备上会有锯齿出现。这可以通过使用矢量字体来 解决问题,矢量字体中每一个字形是通过数学曲线来描述的,它包含了字形边界上的关键点,连线的导数信息等,只要通过Freetype字体引擎读取这些数学矢量并实时渲染所需要的字体 大小,便能得到很好的显示效果,不会出现点阵字体的那些锯齿。但是目前市场上还没有一 个通用方法来支持矢量字库移植到嵌入式平台中,故研究基于Freetype字体引擎的矢量字库 的移植具有相当的价值。公开号为CN 101008939A的专利技术专利——"一种嵌入式系统的点阵字库的实现方法", 该专利技术提供的方法是利用Freetype字体引擎,将目标字符的编码转化成Freetype设定编码, Freetype字体引擎再根据该设定编码加载矢量字库文件中字符轮廓信息,最后Freetype字体 引擎将轮廓信息转化成位图信息,转化得到的位图信息按照该专利技术的字库文件格式存储作为 专利技术字库的存储信息。该专利技术的实质是以Freetype字体引擎为转化工具,将矢量字库文件转 化成点阵字库文件,再用该专利技术提供的通用GUI接口函数将得到的点阵字库文件移植到嵌入 式系统。上述专利技术专利提供的方法,实际上是在嵌入式系统外添加了一个字库转换模块,将矢量 字库文件转换成新型的点阵字库文件,再将点阵字库文件移植到嵌入式平台中,而不能做到直接将矢量字库移植到嵌入式平台中。这种方法虽然能制作比传统点阵字库显示质量较好的 新型点阵字库文件,但是该方法实现的过程比较复杂,其程序代码量较多,占用储存容量也较大,影响字体在嵌入式平台中的显示速度。
技术实现思路
本专利技术要解决的技术问题是,克服现有的技术缺陷,提供一种储存容量小,程序代码量 小,能显著的提高矢量字体在嵌入式系统的显示速度的。 本专利技术的技术解决方案是,提供一种,它通过移植Freetype字体引擎取代嵌入式系统中点阵字体的资源获取模块,进而实现矢量字库在嵌入式 平台的移植,它具体包括以下步骤(1) 、用户将所需显示的目标字符集中所有字符的Unicode码,简称字符码,发送到应 用程序中;(2) 、获取所述需显示目标字符集的x, y坐标位置,长度len和显示方向direction;(3) 、将所述目标字符集中的第i个字符的字符码和用户设定的该字符的大小传递给移 植到嵌入式系统中的Freetype字体引擎,所述i为自1开始的自然数,且l^iSlen,该引 擎通过所接受到的字符码在新型的Tmetype矢量字库文件中找到该字符,并将找到的轮廓信 息转化成位图信息;(4) 、所述移植到嵌入式系统中的Freetype字体引擎将第i个字符的位图信息、该字符 的大小信息渲染成第i个字符的字形信息;(5) 、获取所述第i个字符的字形信息后,调用图形设备接口GDI层中字体模块绘制接 口函数,在屏幕上绘制并显示该字符;(6) 、调用嵌入式系统中自带的字体解码器接口函数,解码所述第i个字符的字形信息, 并通过采用本专利技术提供的一种颜色混合和像素点的过滤方法,将所述字形信息显示在屏幕上;(7) 、执行i++,若i^len,则转到步骤(3)运行,若i〉len,则结束执行,所述字 符在屏幕中显示完毕。所述移植到嵌入式系统中的Freetype字体引擎为精简过的Freetype字体引擎,其精简 方法包括以下步骤(1) 、在原来的Freetype字体引擎中只抽取所需要的函数,并将其定义为全局函数;(2) 、从字体文件中加载字体,从而确定字体的字样和风格,并把通过Freetype字体引 擎得到的字体信息储存在一维数组中;(3) 、装载字形图像,将字符码转换为字形索引,事先读取每个字符所对应的位置,并 将每个字符的位置记录保存下来,在字体初始化时,对字符索引进行赋值,在下次字符索引 时,直接用所得字符码去匹配,得到对应的位置。所述颜色混合和像素点的过滤方法包括以下步骤(1) 、重新定义解码器函数和颜色解码器函数;(2) 、得到所述字符的字形信息数据中需要显示的像素点个数,用y来表示;(3) 、判断y是否大于0,即是否还存在需要显示的像素点,若是,寄存器从数据流读取 8个bit给变量p,其中p就是指一个像素点,若否,结束执行该算法,至此屏幕完全显示字 形信息数据的像素信息;(4) 、判断变量p的大小,决定是否需过滤,若p〈50,不做此像素点的颜色解码任务, out_mem_ptr和src—mem_ptr指针往后移动两位,其中out—mem_ptr是当前层即读取的数据流 层的内存地址,src一memjtr是目标层即屏幕层的内存地址,若p〉50且p^10,将屏幕背景 像素值src_pixd和当前读取到的p像素值img_pixel做混合运算,混合度为100,若p 〉110, 调用所述重新定义的解码器函数,解码得到需要显示p的像素值outpixd;(5) 、执行屏幕显示接口函数,即把out_pkel赋值给out—mem_ptr, out—mem_ptr和 src—mem_ptr指针往后移动两位;(6) 、执行y--,并跳到步骤(3)。所述混合运算,其中背景像素值src_pixel用(A,",A )表示,p像素值img_pixel用(i 2,G2,52)表示,A,q,A,及2,<52,52的最大值都是255,对其做线性混合,公式如下D100 D n 100、Dr 100^ ,, 100、" d 100 D ,, 100、D 255 1255 2 255 1255 2 255 '255 2计算得到的新像素值(R, G, B)就是所需要显示p的像素值outjixel。所述新型的Truetype矢量字库文件,其制作方法包括以下步骤(1 )、在truetype造字程序中找到简体汉字的Unicode码;(2) 、在造字软件fontcreator中打开GPL协议仿宋ttf文件,并在该文件中找到所述Unicode 码对应的繁体汉字,(3) 、对所述繁体汉字进行人工调整修改成所述简体汉字;(4) 、重复执行步骤1至歩骤3,制作一个包含常用简体汉字的ttf文件;(5) 、人工修字调整所述简体汉字,提高字体的质量、结构;(6) 、质量检验,使所述简体汉字字形轮廓是否光滑、结构是否合理、轮廓曲线是否满足技 术规范;(7) 、测试,包括字形、质量、编码、使用、显示、输出等各个方面。本专利技术与现有技术相比,具有以下优点-第一采用将矢量字库直接移植到嵌入式本文档来自技高网
...

【技术保护点】
一种面向嵌入式平台的矢量字库实现方法,其特征在于:它包括以下步骤: (1)、用户将所需显示的目标字符集中所有字符的Unicode码,简称字符码,发送到应用程序中; (2)、获取所述需显示目标字符集的x,y坐标位置,长度len和显 示方向direction; (3)、将所述目标字符集中的第i个字符的字符码和用户设定的该字符的大小传递给移植到嵌入式系统中的Freetype字体引擎,所述i为自1开始的自然数,且1≤i≤len,该引擎通过所接受到的字符码在新型的Tru etype矢量字库文件中找到该字符,并将找到的轮廓信息转化成位图信息; (4)、所述移植到嵌入式系统中的Freetype字体引擎将第i个字符的位图信息、该字符的大小信息渲染成第i个字符的字形信息; (5)、获取所述第i个字符的字 形信息后,调用图形设备接口层即GDI层中字体模块绘制接口函数,在屏幕上绘制并显示该字符; (6)、调用嵌入式系统中自带的字体解码器接口函数,解码所述第i个字符的字形信息,并通过采用本专利技术提供的一种颜色混合和像素点的过滤方法,将所述字形 信息显示在屏幕上; (7)、执行i++,若i≤len,则转到步骤(3)运行,若i>len,则结束执行,所述字符在屏幕中显示完毕。...

【技术特征摘要】

【专利技术属性】
技术研发人员:何加铭黄秀珍马成臣史智慧史爱军樊玲慧张青波高宇栋
申请(专利权)人:宁波新然电子信息科技发展有限公司
类型:发明
国别省市:97[中国|宁波]

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

1