专利名称:嵌入式矢量字体变色处理方法
技术领域:
本发明涉及一种面向嵌入式系统的嵌入式矢量字体变色处理方法。
技术背景短信作为一种使用方便、费用低廉的即时通讯方式,在众多通信手段中脱颖而出,得 到越来越多的应用。在嵌入式系统中,比如手机,用户通过手机的短信模块可以方便地收 发短信,类似的, 一些由单片机或者嵌入式MCU为核心构建的嵌入式系统中也设置了短信模 块,用户可以通过短信模块来收发短信。随着短信的广泛应用,用户不再满足于颜色单一 的点阵汉字,而是希望使用有渐变效果的矢量字体的彩色显示,并且短信的颜色允许发送 人来设置,即收信人的短信模块能够显示出发信人所设置的字体颜色、字体大小、字体形 状等格式的短信内容。但是,目前处理能力较低、存储较小的嵌入式系统受制于其低处理 能力以及低存储能力,无法实现有渐变效果的矢量字体的彩色显示。所述处理能力较低、 存储较小的嵌入式系统比较典型且常用的是功能手机(Feature phone)。所述功能手机(Feature phone)这个说法主要是针对"智能手机(Smart Phone)" 而来的,所谓的智能手机(Smart Phone)就是一台可以随意安装和卸载应用软件的手机(就 像电脑那样)。功能手机不具备开放的操作系统,只有私有的嵌入式系统。它仅仅可以通过 一个有限的接口如JAVA或BREW支持第三方软件。相对于智能机上的软件来说,功能机上的 JAVA或BREW软件通常能力更弱,不易于其它功能手机整合,也不易集成到手机的主要用户 接口。在这些功能手机中,特别是低端机,如MTK平台手机,没有实现短信中彩色矢量字体 的显示,这是因为功能手机的硬件和嵌入式系统的限制,它的运算速度和存储容量都很有 限,尤其是对字库的显示和支持能力有限。现有的功能手机能够在自己的手机上或同型号 的手机上显示相同的彩色的点阵汉字,即能够在自己的手机上或同型号的手机上支持并应 用彩色的点阵字库,只有少数智慧型功能手机运用定制的嵌入式系统字体引擎,加载了矢 量字库,但短信中显示的矢量字体也只有256灰度级的显示,不是彩色显示,而在不同型号 之间的功能手机上或者智慧型功能手机上收发和显示彩色矢量字体的短信这一功能更是没 有实现,即在一个型号手机上用户依据自己设置的字体格式所写的短信,将该短信发送至 另一不同型号手机上后,收到短信的手机无法显示原来发短信的手机上已经设定的字体格 式,只是依据收到短信的手机本身的字体格式来显示。除了上述比较典型的功能手机,对于其它嵌入式系统,有些只是简单的通讯模块终端, 只支持一般的字符显示,更是没有实现上述彩色矢量字体的收发和显示功能,比如以MicroChip公司的PIC单片机构建的嵌入式系统为例,其短信通信系统由以下几个模块构成: 主控模块、按键输入模块、显示输出模块和收发模块。系统主程序运用模块化结构,其中 有发送短信模块、接收短信模块和编辑短信模块。所述MicroChip公司的PIC单片机的突出 的特点是体积小、功耗低、精简指令集、抗干扰性好、可靠性高、有较强的模拟接口,代码 保密性好,大部分芯片有其兼容的FLASH程序存储器的芯片,适用于用量大、档次低、价格 敏感的产品。在办公自动化设备、消费电子产品、电讯通信、智能仪器仪表、汽车电子、 金融电子、工业控制不同领域都有广泛的应用。Microchip公司的PIC单片机加入无线模块 就可以实现任意两机之间互发短信,可以像普通手机一样编辑短信,机子可以由用户命名 以区别其他机子,实现一机对另一机的通信,也可以用万能名("WDX")实现一机对多机的 通信,整个系统人机交互界面友好,类似于功能手机系统,有操作提示,但是其短信模块 没有实现彩色矢量字体的收发和显示。 发明内容本发明要解决的技术问题是,克服以上现有技术的缺点,提供一种能够在低处理能力以及低存储能力的嵌入式系统中实现彩色短信的收发和显示的嵌入式矢量字体变色处理方法,换句话说,提供一种嵌入式矢量字体变色处理方法,该方法能够通过低处理能力以及低存储能力的嵌入式系统实现彩色短信的收发和显示。本发明的技术方案是,提供一种嵌入式矢量字体变色处理方法,具体过程如下,短信 收发双方使用相同的短信编码方式,在用户写短信时,该用户的嵌入式系统将短信的颜色 信息加入到短信的编码信息中,然后将所述编码信息发给对方的嵌入式系统,对方的嵌入 式系统接收到所述编码信息后,解析得到相应的颜色信息和短信内容,再执行以下步骤来 处理短信内容中的所有字符,步骤一、使用字体引擎对字符进行处理,得到该字符的256灰度级的位图信息; 步骤二、根据256灰度级的位图信息以及颜色信息将位图信息的每一点的数据转换为 彩色信息,即根据颜色信息以及位图信息的每一点的灰度信息,对每个字符中不同位置的 点的颜色进行不同的处理,把每个点的灰度信息当成点颜色的浓度信息,其中,首先取得 位图信息中表示字符的轮廓主干的点,然后把这些点的颜色信息设置为上述短信解析得到 的颜色;对于字符的轮廓边缘颜色,首先取得字符的所有边缘点,然后根据其浓度信息和 主干点颜色对这些点运用颜色减淡算法;最后,对字符边缘的点与其相邻的背景色使用颜 色渐变算法进行过渡;步骤三、根据得到的彩色信息,利用嵌入式系统的矢量字体解码器在嵌入式系统的屏 幕上显示出字符。采用上述技术方案后,本发明嵌入式矢量字体变色处理方法与现有技术相比,具有以下优点因为本发明嵌入式系统的矢量字体的变色处理方法的处理流程简单可靠,对系统 的硬件处理能力和存储能力的要求低,并且,在比较通用的MTK平台上模拟后,未见到字符 显示的延迟现象,所以本发明嵌入式矢量字体变色处理方法具有能够在低处理能力以及低 存储能力的嵌入式系统中实现彩色短信的收发和显示的优点。作为改进,所述编码信息的前三位用于存储颜色信息,这样,就简化了编码信息,更 适用于低处理能力和低存储能力的嵌入式系统,有利于嵌入式矢量字体变色处理方法的性 能的提高。 说明书附1为本发明嵌入式矢量字体变色处理方法的原理框图之一。 图2为本发明嵌入式矢量字体变色处理方法的原理框图之二。图3为根据本发明嵌入式矢量字体变色处理方法所处理的存储在CharData数组中的宋体汉字"新"的数据。图4为根据本发明嵌入式矢量字体变色处理方法所处理的宋体汉字"新"的灰度图。 图5为本发明嵌入式矢量字体变色处理方法的字体显示模块显示短信字符的流程图。
具体实施方式
下面结合附图和具体实施例对本发明嵌入式矢量字体变色处理方法作进一步说明。一种嵌入式矢量字体变色处理方法,具体过程如下,短信收发双方使用相同的短信编 码方式,在用户写短信时,该用户的嵌入式系统将短信的颜色信息加入到短信的编码信息 中,然后将所述编码信息发给对方的嵌入式系统,对方的嵌入式系统接收到所述编码信息 后,解析得到相应的颜色信息和短信内容,再执行以下步骤来处理短信内容中的所有字符, 步骤一、使用字体引擎对字符进行处理,得到该字符的256灰度级的位图信息; 步骤二、根据256灰度级的位图信息以及颜色信息将位图信息的每一点的数据转换为 彩色信息,即根据颜色信息以及位图信息的每一点的灰度信息,对每个字符中不同位置的 点的颜色进行不同的处理,把每个点的灰度信息当成点颜色的浓度信息,其中,首先取得 位图信息中表示字符的轮廓主干的点,然后把这些点的颜色信息设置为上述短信解析得到 的颜色;对于字符的轮廓边缘颜色,首先取得字符的所有边缘点,然后根据其浓度信息和 主干点颜色对这些点运用颜色减淡算法;最后,对字符边缘的点与其相邻的背景色使用颜 色渐变算法进行过渡;步骤三、根据得到的彩色信息,利用嵌入式系统的矢量字体解码器在嵌入式系统的屏 幕上显示出字符。所述短信编码方式为PDU编码。所述编码信息的前三位用于存储颜色信息。所述矢量字体引擎为各种嵌入式系统的矢量字体引擎,本例中,所述矢量字体引擎采 用现有技术。首先,参阅
图1,图1为本发明嵌入式矢量字体变色处理方法的原理框图之一,用于 表示本发明中具有颜色信息的短信的传递过程。在下述过程中,收发双方都使用了相同的短信编码方式。首先,短信发送方在编写短信时设置了短信的颜色,短信发送时发送方的嵌入式系统 会将短信内容和设置的颜色信息相组合,转化为待发送的编码,包括Text模式和PDU模式, 此编码过程在发送方的嵌入式系统中完成。短信编码信息的内容包括服务中心号码、收 信人手机号码和短信内容等。在发送方发送短信时,将发送的短信内容中的前几位对应一 个颜色编码,如红色、蓝色、白色等,本例中为三位。对于短信编码信息的其它部分不做 改动。短信经过短信服务中心传送,到达接收方后,接收方的嵌入式系统对发来的短信编码 信息进行解码,根据短信内容的前几位的数据,得到相应的颜色设置,如红色、蓝色、白 色等,余下的内容则为短信内容的文本信息。此时发送方的颜色信息已经传递给接收方, 接着,接收方对当前短信颜色进行处理。本发明嵌入式矢量字体变色处理方法的短信颜色信息传递过程,不改变短信编码信息 中的其它内容,也不改变短信的传输编码方式如Text模式或PDU模式,只是在短信内容的 前几位中加入了颜色的设置信息,不会影响短信在编码后在信息中心的传递。图2为本发明嵌入式矢量字体变色处理方法的原理框图之二,即本发明的矢量字体的 变色处理的主要流程。当用户要显示短信中的字符时,嵌入式系统先获得字符所对应的字 符编码,如果不是通用的Unicode码,那么我们先要做编码的转换,再调用字体引擎进行 处理,得到该字符每个点的相应的256级灰度信息,即浓度信息,把该字符的灰度信息存 入数组CharData中。如果嵌入式系统设置显示为20X20像素(像素数=点数*分辨率/72)大小的,则形成 一个20X20即400个点的数据存储在数组CharData中。如图3所示,为汉字"新"的各 点的数据值,其中每个点数据均用十进制数表示。第一个数据为第一行第一列的点的浓度 信息,第二个数据为第一行第二列的点的浓度信息,……以此类推,第n个数据表示第i 行j列的点的浓度。如果将数组CharData中所有数据以图像形式显示出来,每个点的浓度 当成灰度信息,形成一幅灰度图像,如图4所示,显示为汉字"新"的图像。根据用户的颜色设置,即短信字符的颜色信息,在嵌入式系统的图形设备接口GDI中 的字体显示模块对所得的256灰度级的位图信息进行进一步的处理。当用户需要改变字体 颜色时,可以在嵌入式系统中进行设置。比如用户设置字体颜色为红色,对应RGB分量值 为(255, 0, 0),设置为蓝色,对应RGB分量值分别为(0, 0, 255),如果设置为其它颜 色,可得到相应的颜色RGB分量的值。用户显示字符的颜色信息存储在变量TextColour 中。在对字符进行颜色处理时,首先根据用户设置的颜色数据(变量TextColour中的数据) 和已得到的灰度信息(CharData数组中的数据)将每一点的数据转换为彩色信息。在图像 显示中,灰度图像的红绿蓝三个颜色分量的值是相同的,而彩色图像的红绿蓝三个分量的 值是不相等的。 一般嵌入式系统默认的颜色是白色,比如手机,因此当用户不需要改变颜 色时,我们将得的每个点的灰度值直接设为其红绿蓝三个分量的值即可。此时,数值0表 示黑色,数值255表示白色,它们之间的数值则表示某一灰度。如果用户需要改变颜色, 就需要根据设置的字体颜色和所得的灰度信息对每个点转换为彩色信息,即经过运算得到 其RGB值。
对字符的轮廓的不同点的信息要进行不同的处理。轮廓主干上的点,浓度值最接近最 大值255,基本描述了整个轮廓的核心,这些点的颜色为用户设置的字体颜色TextColour, 即首先取得表示所有轮廓主干上的点,然后把这些点的颜色信息设置为用户设置的字体颜 色。
字符的轮廓边缘的点,其浓度值在主干点浓度值和零之间。在处理时,应该获得与主 干上的点颜色有一种过渡效果。先取得除了主轮廓以外的所有边缘点,然后运用TextColour 和这些点的浓度信息运用我们的颜色减淡算法,最终得到轮廓边缘上点的颜色信息。
设设置颜色为S,浓度信息为P,结果色为D。 S和D的红绿蓝三个分量分别为SR 、Sg 、 Sb , Dr、 Dg 、 Db。
颜色减淡算法公式为
(255-尸) (255-户) (255-尸)
在此,对于纯色来说,如红色,其R分量值为255,经过上述公式处理,其R值会超 出表示范围。因此要防止溢出。对每个分量值作防止溢出处理,即当其值超出范围时,我 们给它一个指定值。同时红色其G、 B分量值为0,运用上述公式时依然为0值,没有改变。 我们对分量值为0值的要作特殊处理。
字符的轮廓边缘与背景色的渐变效果。字符的轮廓边缘的颜色与背景色的过渡影响着 文字的整体显示效果,如果背景色与渐变的轮廓边缘对比度过于明显,会有边缘锯齿的效 果。为了消除这种效果,需要运用背景色与字体颜色的渐变算法。
在实际运用中,可以利用多种颜色渐变算法实现,如线性内插法、线性倒插法、余弦 插值法。线性内插法是最常见的颜色渐变方法,线性倒插法是一种颜色有鲜明对比的颜色渐变方法,余弦插值法得出的渐变效果具有非常好的平滑效果。
一般功能手机中使用的是点阵字体解码器,当我们需要显示矢量字体的信息时,需要 修改其内在解码机制,以适应矢量字体显示。若功能手机拥有矢量字体解码器,那么直接 显示进行颜色处理后的字符即可。
进行矢量字体显示,需要特别注意的是,最终利用显示驱动程序画出的点的颜色信息 是一个16位的整数,其中的RGB分量为565的模式,g卩从低位到高位分别用0~15来表 示红色分量,0、表示蓝色分量,6 11表示绿色分量,11 15表示蓝色分量。而在运算过 程中,RGB的三个分量分别用8位表示(888)模式,即从低位到高位分别用(T7来表示红 色分量,8 15来表示绿色分量,16~23位来表示蓝色分量,剩余高位可以存放其它信息。 因此,需要进行相应的模式转换,即RGB888换RGB565。设RGB888模式下每个分量为R, G,, B"则转换为RGB565的方法为((仏〉〉3)<<11) | (( G,》2)《5) | ( B,〉〉3)。
在屏幕上显示矢量字体的过程,如图5所示。首先要做一些初始化的工作,即初始化 输入输出流指针和各个寄存器中存储的相应数据,其中,各个寄存器中存储字符的相关信 息,输入流中存储了待处理的数据,即待显示的字符的每一个点的颜色数据,输出流指向 的是内存中显示屏幕字符串的位置。然后,定位到输入流中的起始位置,同时在寄存器中 获取输入流掩膜信息,其中,输入流掩膜信息是用来控制每次从输入流中取出的数据的位 数,接着获取当前数据指针所指向的数据,当前数据指针每次都指向在输入流中还要继续 读取的数据的起始位置,获得数据后,对获取数据进行处理。然后获取输出流正确的显示 位置,在屏幕上显示出图像。处理完一个数据后,移动数据指针,定拉到输入流中字符的 下一数据的起始位置。当输入流中数据处理完毕时, 一个字符显示完毕,否则继续处理输 入流中的下一数据。每个字符都依照上述步骤进行解码显示。当所有字体显示完成,字体 显示模块工作结束;否则字体显示模块继续处理下一个字符。
以上所介绍的,仅仅是本发明的技术思想与特点,其目的在使用本领域技术人员能够
了解本发明的内容并据以实施,当不能以此来限定本发明实施的范围,即大凡根据本发明 所揭示的精神和原则所作的任何修改、等同替换和改进等,仍应涵盖在本发明的专利范围 内。
权利要求
1、一种嵌入式矢量字体变色处理方法,具体过程如下,短信收发双方使用相同的短信编码方式,在用户写短信时,该用户的嵌入式系统将短信的颜色信息加入到短信的编码信息中,然后将所述编码信息发给对方的嵌入式系统,其特征在于,对方的嵌入式系统接收到所述编码信息后,解析得到相应的颜色信息和短信内容,再执行以下步骤来处理短信内容中的所有字符,步骤一、使用字体引擎对字符进行处理,得到该字符的256灰度级的位图信息;步骤二、根据256灰度级的位图信息以及颜色信息将位图信息的每一点的数据转换为彩色信息,即根据颜色信息以及位图信息的每一点的灰度信息,对每个字符中不同位置的点的颜色进行不同的处理,把每个点的灰度信息当成点颜色的浓度信息,其中,首先取得位图信息中表示字符的轮廓主干的点,然后把这些点的颜色信息设置为上述短信解析得到的颜色;对于字符的轮廓边缘颜色,首先取得字符的所有边缘点,然后根据其浓度信息和主干点颜色对这些点运用颜色减淡算法;最后,对字符边缘的点与其相邻的背景色使用颜色渐变算法进行过渡;步骤三、根据得到的彩色信息,利用嵌入式系统的矢量字体解码器在嵌入式系统的屏幕上显示出字符。
2、 根据权利要求1所述的嵌入式矢量字体变色处理方法,其特征在于所述短信编 码方式为PDU编码。
3、 根据权利要求1所述的嵌入式矢量字体变色处理方法,其特征在于所述编码信 息的前三位用于存储颜色信息。
全文摘要
本发明公开了一种能够在低处理能力以及低存储能力的嵌入式系统中实现彩色短信的收发和显示的嵌入式矢量字体变色处理方法,短信收发双方使用相同的短信编码方式,在用户写短信时,该用户将短信的颜色信息加入到短信的编码信息中,然后将所述编码信息发给对方,对方接收到所述编码信息后,解析得到相应的颜色信息和字符信息,再执行以下步骤来处理短信中的所有字符,使用字体引擎对字符进行处理,得到该字符的256灰度级的位图信息以及颜色信息;根据256灰度级的位图信息以及颜色信息将位图信息的每一点的数据转换为彩色信息;根据得到的彩色信息,利用矢量字体解码器在屏幕上显示字符。
文档编号H04M1/72GK101621575SQ200910101519
公开日2010年1月6日 申请日期2009年8月6日 优先权日2009年8月6日
发明者何加铭, 史智慧, 史爱军, 张青波, 樊玲慧, 马成臣, 高宇栋, 黄秀珍 申请人:宁波新然电子信息科技发展有限公司