一种显示字符的方法及装置的制造方法
【技术领域】
[0001]本发明实施例涉及移动终端的技术领域,尤其涉及一种显示字符的方法及装置。
【背景技术】
[0002]随着嵌入式系统的发展和应用,在嵌入式系统中使用高质量的字体已成为行业的趋势,高效地显示美观大方的字体已成为当前市场的需求,尤其是与人们生活密切相关的通信设备中。
[0003]点阵字体是把每一个字符都分成16 X 16或24X24个点,然后用每个点的虚实来表示字符的轮廓。点阵字体也叫位图字体,其中每个字形都以一组二维像素信息表示。点阵字体优点是显示速度快,不像矢量字体需要复杂的计算。但由于点阵字体本身的限制,点阵字体很难进行缩放,特定的点阵字体只能清晰地显示在相应的字号下,否则文字只被强行放大而失真字形,产生成马赛克式的锯齿边缘。矢量字体(Vector font)中每一个字形是通过数学曲线来描述的,它包含了字形边界上的关键点,连线的导数信息等,字体的渲染引擎通过读取这些数学矢量,然后进行一定的数学运算来进行渲染。这类字体的优点是字体实际尺寸可以任意缩放而不变形、变色,并实现字体的旋转、倾斜等操作,方便的实现“所见所得”。矢量字体主要包括Typel、TrueType、OpenType等几类。但是由于矢量字体在生成字模的时候,需要提取字体描述信息通过数学模型大量计算得到字模,先对于点阵字体来说,显示速度很慢。
[0004]目前做法都是矢量字体的常规做法,先提取字符的轮廓信息,然后计算出该字符的字模,再输出到屏幕;这样做法都很影响显示的效率,没有把有用的字符信息提前准备好,比如说字符的宽高信息;如果要使用才去从字库读取的话,那是很耗时的;再比如说;每次绘制字符是,都是通过文件系统去字库读取相关信息;而通过文件系统读取字符信息是很慢的;大大降低了效率。
【发明内容】
[0005]本发明实施例的目的在于提出一种显示字符的方法及装置,旨在解决如何提高矢量字体的显示速度的问题。
[0006]为达此目的,本发明实施例采用以下技术方案:
[0007]—种显示字符的方法,所述方法包括:
[0008]获取待显示字符的编码信息,所述编码信息包括Unicode编码;
[0009]根据所述编码信息确定所述待显示字符是否在预先存储的编码信息中;
[0010]若是,则直接从预先存储的编码信息中获取所述待显示字符的轮廓信息,根据所述轮廓信息绘制字符图形并显示所述待显示字符。
[0011]优选地,所述根据所述编码信息确定所述待显示字符是否在预先存储的编码信息中,包括:
[0012]根据所述待显示字符的Unicode编码,确定所述待显示字符的Unicode编码是否在预先存储的Unicode编码中,且所述待显示字符的字号是否在预先存储的字号范围内。
[0013]优选地,所述直接从预先存储的编码信息中获取所述待显示字符的轮廓信息,根据所述轮廓信息绘制字符图形并显示所述待显示字符,包括:
[0014]若确定所述待显示字符的Unicode编码在预先存储的Unicode编码中,且所述待显示字符的字号也在预先存储的字号范围内,则通过GDI绘制字符图形,并显示所述待显示字符。
[0015]优选地,所述方法在获取待显示字符的编码信息之前或者之后,还包括:
[0016]预先存储常用字符的Unicode编码以及常用字符的轮廓信息。
[0017]优选地,所述方法还包括:
[0018]预先存储字库的宽度信息。
[0019]一种显示字符的装置,所述装置包括:
[0020]获取模块,用于获取待显示字符的编码信息,所述编码信息包括Unicode编码;
[0021]确定模块,用于根据所述编码信息确定所述待显示字符是否在预先存储的编码信息中;
[0022]显示模块,用于若是,则直接从预先存储的编码信息中获取所述待显示字符的轮廓信息,根据所述轮廓信息绘制字符图形并显示所述待显示字符。
[0023]优选地,所述确定模块,包括:
[0024]确定单元,用于根据所述待显示字符的Unicode编码,确定所述待显示字符的Unicode编码是否在预先存储的Unicode编码中,且所述待显不字符的字号是否在预先存储的字号范围内。
[0025]优选地,所述显示模块,包括:
[0026]显示单元,用于若确定所述待显示字符的Unicode编码在预先存储的Unicode编码中,且所述待显示字符的字号也在预先存储的字号范围内,则通过GDI绘制字符图形,并显示所述待显示字符。
[0027]优选地,所述装置还包括:
[0028]第一存储模块,用于预先存储常用字符的Unicode编码以及常用字符的轮廓信息。
[0029]优选地,所述装置还包括:
[0030]第二存储模块,用于预先存储字库的宽度信息。
[0031]本发明实施例通过获取待显示字符的编码信息,所述编码信息包括Unicode编码;根据所述编码信息确定所述待显示字符是否在预先存储的编码信息中;若是,则直接从预先存储的编码信息中获取所述待显示字符的轮廓信息,根据所述轮廓信息绘制字符图形并显示所述待显示字符,从而全面提高矢量字体的显示速度,有效提高系统运行速度,提高用户体验;并能节省系统资源,有效省电,提供更长的续航能力。
【附图说明】
[0032]图1是本发明实施例显示字符的方法第一实施例的流程示意图;
[0033]图2是本发明实施例显示字符的方法第二实施例的流程示意图;
[0034]图3是本发明实施例显示字符的方法第三实施例的流程示意图;
[0035]图4是本发明实施例显示字符的装置的功能模块示意图;
[0036]图5是本发明实施例确定模块的功能模块示意图;
[0037]图6是本发明实施例显示模块的功能模块示意图;
[0038]图7是本发明实施例显示字符的装置的功能模块示意图;
[0039]图8是本发明实施例显示字符的装置的功能模块示意图。
【具体实施方式】
[0040]下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。
[0041]实施例一
[0042]参考图,图1是本发明实施例显示字符的方法第一实施例的流程示意图。
[0043]在实施例一中,所述显示字符的方法包括:
[0044]步骤101,获取待显示字符的编码信息,所述编码信息包括Unicode编码;
[0045]步骤102,根据所述编码信息确定所述待显示字符是否在预先存储的编码信息中;
[0046]优选地,所述根据所述编码信息确定所述待显示字符是否在预先存储的编码信息中,包括:
[0047]根据所述待显示字符的Unicode编码,确定所述待显示字符的Unicode编码是否在预先存储的Unicode编码中,且所述待显示字符的字号是否在预先存储的字号范围内。
[0048]具体的,在很多嵌入式设备中,比如是学习机、词典机中,有很多的生僻字和字造字要显示,制作一个比较完整的字库大概有四五万个汉字或者字符,导致整个字库文件很大,一般在15M以上;由于系统的内存大小限制,字库文件不能一次性加载到内存中,传统做法是读取的方式来获取汉字或者字符轮廓信息再计算出字模来显示汉字。如果我们通过PC端的工具把常用汉字和常用符号的轮廓信息提取出来保存文件的形式,在系统加载的时候把本文件一次性加载到内存中,直接操作内存比读取字库文件要快很多倍。比如把常用汉字GBK2312编码和常用符号(一共7000个左右)的轮廓信息提取出来,保存文件大小大概是1.6M,在内存中,所述常用汉字GBK2312编码的存储形式是以Unicode编码的形式存储的,对于每一个汉字的GBK2312编码,均有一个Unicode编码与之对应。
[0049]具体的,如果是显示的内容大部分是英文字符的话,即使通过上面第二点进行了优化,但是感觉还是有点慢,比如在这种情况下(看英文电子书、或者英文词典):屏幕比较大,字号比较小,而且显示的字符大部分是英文字符或者全是,一屏显示的字符数达到上千个;即使计算出单个字模很快,但是显示字符多了,累加起来显示时间就变长了,这里主要是消耗根据字符轮廓信息计算出字模的时间。如果我们通过PC端的工具把英文字符的大小写和常用符号大概在128个左右(ASCII编码),主要把字号较小的英文字符或者符号通过轮廓信息计算出字模信息保存到一个文件,大概是2M,在系统加载的时候把本文件一次性加载到内存中,在这种情况下,就不用去读字库的轮廓信息,也不要去计算字模了,相等于是点阵字体了,显示速度较快。
[0050]步骤103,若是,则直接从预先存储的编码信息中获取所述待显示字符的轮廓信息,根据所述轮廓信息绘制字符图形并显示所述待显示字符。
[0051]优选地,所述直接从预先存储的编码信息中获取所述待显示字符的轮廓信息,根据所述轮廓信息绘制字符图形并显示所述待显示字符,包括:
[0052]若确定所述待显示字符的Unicode编码在预先存储的Unicode编码中,且所述待显示字符的字号也在预先存储的字号范围内,则通过GDI绘制字符图形,并显示所述待显示字符。
[0053]具体的,a、把字符宽高信息提取保存文件形式,在系统启动的时候一次性加载到内存,可以少获取一次字库信息。
[0054]b、把常用字符比如GBK2312字符集的轮廓信息提取保存文件形式,在系统启动的时候一次性加载到内存,避免读取字库信息了,在文件系统读取文件是很慢的,所以对提高速度有非常大帮助。
[0055]C、把英文字符和常用符号转换成点阵字体,保存文件形式,在系统启动的时候一次性加载到内存,不同通过大量的数学计算就可以显示字体了,显示速度与点阵字体相当。
[0056]本发明实施例通过获取待显示字符的编码信息,所述编码信息包括Unicode编码;根据所述编码信息确定所述待显示字符是否在预先存储的编码信息中;若是,则直接从预先存储的编码信息中获取所述待显示字符的轮廓信息,根据所述轮廓信息绘制字符图形并显示所述待显示字符,从而全面提高矢量字体的显示速度,有效提高系统运行速度,提高用户体验;并能节省系统资源,有效省电,提供更长的续航能力。
[0057]实施例二
[0058]参考图2,图2是本发明实施例显示字符的方法第二实施例的流程示