CN101483035A - 在图形界面上显示文字的方法和系统 - Google Patents
在图形界面上显示文字的方法和系统 Download PDFInfo
- Publication number
- CN101483035A CN101483035A CNA2009100365705A CN200910036570A CN101483035A CN 101483035 A CN101483035 A CN 101483035A CN A2009100365705 A CNA2009100365705 A CN A2009100365705A CN 200910036570 A CN200910036570 A CN 200910036570A CN 101483035 A CN101483035 A CN 101483035A
- Authority
- CN
- China
- Prior art keywords
- texture
- font information
- display text
- graphical interfaces
- font
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
一种在图形界面上显示文字的方法,包括以下步骤:接收需要显示的字符编码及字体信息;查找该字符编码对应的元素;创建与该元素对应的对象;依据所述字体信息写字获得纹理,将所述纹理赋给所述对象;将所述纹理绘制到屏幕上。上述在图形界面上显示文字的方法中,根据字体信息写字获得纹理,通常,操作系统自带有一些字体,根据这些字体再写字获得纹理,将纹理绘制到屏幕上进行显示,不需要加载字库,可以提高启动速度。此外,还提供了一种在图形界面上显示文字的系统。
Description
【技术领域】
本发明涉及计算机技术领域,尤其是计算机技术中在图形界面上显示文字的方法和系统。
【背景技术】
计算机中图形界面的使用大大提高了人们在操作计算机时的交互性。在图形界面中,除了图形本身外,通常也需要在图形上显示文字,以表达无法或很难用图形表示的意思。例如在游戏平台的界面中显示各个用户的用户名就需要在图形界面中显示文字。
传统的图形界面中显示文字需要依赖字库,图形界面启动时,会加载对应的字库,把字库纹理保存在内存中。通常,一个字库就是一个位图文件,位图中保存着字库中文字的纹理。当需要绘制某个字时(假设是字“腾”),就会根据“腾”字的字符编码,转换为对应一个坐标,该坐标就是“腾”字在位图里面的坐标,然后引擎会根据该坐标从字库的纹理取出“腾”字的纹理,然后将该纹理绘制在屏幕上,这样就在屏幕上写了一个“腾”字,实现了在图形界面上显示文字。
由于在图形界面中显示文字需要依赖字库,一个字库文件通常都会好几兆,而且字体越大,相应的位图也越大,字库文件也就越大,导致采用图形界面的软件占用存储空间较大。又因为是从字库文件里面取纹理进行写字,所以字库文件里面的字体和字号决定了能绘制的字体和字号,需要绘制几种字体和字号,就需带上对应的几个字库文件,导致可使用的字体和字号数量有限。并且,在启动时需要加载字库,字库文件多而且较大的话,会对启动速度造成影响,而通常在一次使用中不会写很多不同字,所以字库文件里面的大部分纹理都没用到,造成了内存的浪费。
【发明内容】
有鉴于此,有必要提供一种提高启动速度的在图形界面上显示文字的方法。
此外,还提供了一种提高启动速度的在图形界面上显示文字的系统。
一种在图形界面上显示文字的方法,包括以下步骤:接收需要显示的字符编码及字体信息;查找该字符编码对应的元素;创建与该元素对应的对象;依据所述字体信息写字获得纹理,将所述的纹理赋给所述对象;将所述纹理绘制到屏幕上。
一种在图形界面上显示文字的系统,包括:
输入模块,用于接收需要显示的字符编码及字体信息;
存储模块,用于存储与所述字符编码对应的元素;
处理模块,与所述输入模块及存储模块相连,用于根据所述字符编码及字体信息在图形界面上显示文字,所述处理模块包括:
对象创建单元,用于创建与所述元素对应的对象;
图形设备接口单元,用于依据所述字体信息写字获得纹理并将所述的纹理赋给所述对象;
绘制单元,用于将所述纹理绘制到屏幕上。
上述在图形界面上显示文字的方法和系统中,根据字体信息写字获得纹理,通常,操作系统自带有一些字体,根据这些字体再写字获得纹理,将纹理绘制到屏幕上进行显示,不需要加载字库,可以提高启动速度。
【附图说明】
图1为第一实施方式的在图形界面上显示文字的方法的流程图;
图2为第二实施方式的在图形界面上显示文字的方法的流程图;
图3为在图形界面上显示文字的系统的模块图。
【具体实施方式】
在以下实施方式中,根据字体信息写字获得纹理,通常,操作系统自带有一些字体,根据这些字体再写字获得纹理,将纹理绘制到屏幕上进行显示,不需要加载字库,可以提高启动速度。
一种在图形界面上显示文字的方法,如图1所示:
步骤S102,接收需要显示的字符编码及字体信息。需要在图形界面上显示的文字在计算机内是以字符编码的形式进行传输和存储的,在将其显示到图形界面上之前需要根据该文字的字体信息生成纹理,即与字体大小对应的位图,便于在图形界面上显示。字体信息可以是默认的字体信息,也可以用户自定义的字体信息。
步骤S104,查找该字符编码对应的元素。本实施方式中,字符编码采用统一码(UNICODE)。因为每个UNICODE字符编码占用的是16位,所以可以将一个UNICODE字符编码的高8位区域的值对应到数组的0~255行,低8位区域的值可以对应到数组的0~255列,这样,每个UNICODE字符都可以唯一对应到数组的某个元素。当接收到一个需要显示的UNICODE字符时(假设为“腾”),“腾”字对应的UNICODE编码为0X817E,其高8位转为十进制是129,低8位转为十进制是126,所以“腾”字就对应上面数组的第129行第126列元素(下面称为A元素)。
步骤S106,创建与该元素对应的对象。所述对象包含字体信息部分、纹理信息部分和指向其他对象的指针。对象刚创建时,字体信息部分、纹理信息部分和指向其他对象的指针都是空的。对象创建后,所述字体信息赋给字体信息部分,例如,需要显示的字体为宋体的“腾”字,则对象的字体信息部分即保存宋体的代码。
步骤S108,依据所述字体信息写字获得纹理将所述纹理赋给所述对象。通常,操作系统自带有一些字体,根据这些字体再写字获得纹理,将纹理绘制到屏幕上进行显示,不需要加载字库,可以提高启动速度。具体地,步骤S108分为如下步骤:
在内存设备内容(Device Content)选用所述字体信息用图形设备接口(Graphics Device Interface)的格式化文本函数(DrawText)写字,获得文字的纹理。例如在内存设备内容选用宋体用图形设备接口的格式化文本函数写“腾”字,获得“腾”字的纹理。
然后,根据所述字体信息中的字体大小创建该字体大小的纹理,例如四号字,则创建四号字大小对应的纹理,此时纹理是空白的。
将内存设备内容上已经写好的字的纹理拷贝到所述创建的纹理上。因为该内存设备内容是只创建一个的,需要反复用到,下次用到时会先清空该内存设备内容的内容,所以写了之后需要拷贝到另外新创建的纹理上。
将拷贝到创建的纹理上的字的纹理赋给对象的纹理信息部分。
步骤S110,将所述纹理绘制到屏幕上。可以用DirectDraw的方法将该纹理绘制到屏幕上,而DirectDraw绘制纹理是很高效的,也就是说,实现了在图形界面上显示文字。
进一步地,为了提高写字的速度,可以保存已经写好的文字的纹理。在字符编码对应的元素中设置多个对象,每个对象对应该字符编码,即该文字的一种字体信息。如图2所示:
在步骤S104之后,还包括判断所述元素的指向是否为空的步骤(步骤S202)。如果所述元素的指向为空,则执行步骤S106,创建与该元素对应的对象。元素的指向为空表明该元素对应的文字还未被使用过,即还未获得任何该文字的纹理。在步骤S106中创建与该元素对应的对象后,需要将该元素指向该创建的对象,表示该元素对应的文字已经使用过。如果所述元素的指向不为空,则进入步骤S204。
步骤S204,判断与该元素对应的对象中是否存在与所述字体信息相同的对象,如果不存在,则执行步骤S106,创建与该元素对应的对象的。如果存在,则直接执行步骤S110,将所述纹理绘制到屏幕上。判断的方式为,将需要显示的文字的字体信息与对象中的字体信息部分的字体信息进行比较,以判断是否相同。由于同一文字通常可以有多种字体,因此,同一文字也可能创建多个对象。对象中的指向其他对象的指针即可以用于形成链表。举例来说,元素可以指向第一个创建的对象,第一个创建的对象中的指向其他对象的指针可以指向第二个创建的对象,依此类推。在判断的过程中,可以依次判断需要显示的文字的字体信息与元素已有对象中的字体信息部分的字体信息是否相同,如果相同,则停止判断,直接执行步骤S110,如果与所有已有对象中的字体信息部分的字体信息都不相同,则执行步骤S106,创建与该元素对应的对象的。
上述方法可以进一步提高速度,因为步骤S108通常需要较多的计算时间。
此外,还提供了一种在图形界面上显示文字的系统。如图3所示,在图形界面上显示文字的系统300包括输入模块310、存储模块320及处理模块330。
输入模块310用于接收需要显示的字符编码及字体信息。
存储模块320用于存储与所述字符编码对应的元素。
处理模块330与输入模块310及存储模块320相连,用于根据所述字符编码及字体信息在图形界面上显示文字。处理模块330包括对象创建单元332、图形设备接口单元334、绘制单元336及判断单元338。
对象创建单元332用于创建与所述元素对应的对象。对象创建单元332创建的对象包含字体信息部分、纹理信息部分和指向其他对象的指针。
图形设备接口单元334用于依据所述字体信息写字获得纹理并将所述的纹理赋给所述对象。图形设备接口单元334依据所述字体信息写字获得纹理具体为:在内存设备内容选用所述字体信息用格式化文本函数写字;创建该字体大小的纹理;将内存设备内容上已经写好的字的纹理拷贝到所述创建的纹理上;将拷贝到创建的纹理上的字的纹理赋给对象的纹理信息部分。对象创建单元332还用于将包含所述纹理的所述对象存储到所述存储模块320中与所述元素对应。
绘制单元336用于将所述纹理绘制到屏幕上。
判断单元338用于判断所述元素的指向是否为空,如果所述元素的指向为空,则命令所述对象创建单元332创建与该元素对应的对象;如果所述元素的指向不为空,则判断与该元素对应的对象中是否存在与所述字体信息相同的对象,如果不存在,则命令所述对象创建单元332创建与该元素对应的对象;如果存在,则命令所述绘制单元336直接将所述纹理绘制到屏幕上。
上述在图形界面上显示文字的方法和系统中,由于在图形界面中显示文字不需要依赖字库,可以减少占用的存储空间。可使用的字体和字号数量与系统相关,而不依赖于自身所带的字库数量,通常操作系统的字体数量较多,因而可以显示的字体数量也较多。需要显示什么字才获得相应文字的纹理,不会造成内存的浪费。根据字体再写字获得纹理,将纹理绘制到屏幕上进行显示,不需要加载字库,可以提高启动速度。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1、一种在图形界面上显示文字的方法,其特征在于,包括以下步骤:
接收需要显示的字符编码及字体信息;
查找该字符编码对应的元素;
创建与该元素对应的对象;
依据所述字体信息写字获得纹理,将所述纹理赋给所述对象;
将所述纹理绘制到屏幕上。
2、根据权利要求1所述的在图形界面上显示文字的方法,其特征在于,还包括判断所述元素的指向是否为空的步骤,如果所述元素的指向为空,则执行所述创建与该元素对应的对象的步骤;如果所述元素的指向不为空,则判断与该元素对应的对象中是否存在与所述字体信息相同的对象,如果不存在,则执行所述创建与该元素对应的对象的步骤;如果存在,则直接执行所述将所述纹理绘制到屏幕上的步骤。
3、根据权利要求1所述的在图形界面上显示文字的方法,其特征在于,所述字符编码采用统一码。
4、根据权利要求1所述的在图形界面上显示文字的方法,其特征在于,所述对象包含字体信息部分,所述字体信息部分包含所述字体信息。
5、根据权利要求4所述的在图形界面上显示文字的方法,其特征在于,所述对象包含纹理信息部分,所述依据所述字体信息写字获得纹理的步骤包括:
在内存设备内容选用所述字体信息用格式化文本函数写字;
创建该字体大小的纹理;
将内存设备内容上已经写好的字的纹理拷贝到所述创建的纹理上;
将所述拷贝到创建的纹理上的字的纹理赋给所述对象的纹理信息部分。
6、根据权利要求1所述的在图形界面上显示文字的方法,其特征在于,所述对象包含指向其他对象的指针。
7、一种在图形界面上显示文字的系统,其特征在于,包括:
输入模块,用于接收需要显示的字符编码及字体信息;
存储模块,用于存储与所述字符编码对应的元素;
处理模块,与所述输入模块及存储模块相连,用于根据所述字符编码及字体信息在图形界面上显示文字,所述处理模块包括:
对象创建单元,用于创建与所述元素对应的对象;
图形设备接口单元,用于依据所述字体信息写字获得纹理并将所述纹理赋给所述对象;
绘制单元,用于将所述纹理绘制到屏幕上。
8、根据权利要求7所述的在图形界面上显示文字的系统,其特征在于,所述对象创建单元创建的对象包含字体信息部分和纹理信息部分,并将所述字体信息赋给所述字体信息部分,所述图形设备接口单元依据所述字体信息写字获得纹理具体为:
在内存设备内容选用所述字体信息用格式化文本函数写字;
创建该字体大小的纹理;
将内存设备内容上已经写好的字的纹理拷贝到所述创建的纹理上;
将所述拷贝到创建的纹理上的字的纹理赋给所述对象的纹理信息部分。
9、根据权利要求7所述的在图形界面上显示文字的系统,其特征在于,所述对象创建单元还用于将包含所述纹理的所述对象存储到所述存储模块中与所述元素对应。
10、根据权利要求9所述的在图形界面上显示文字的系统,其特征在于,还包括判断单元,所述判断单元用于判断所述元素的指向是否为空,如果所述元素的指向为空,则命令所述对象创建单元创建与该元素对应的对象;如果所述元素的指向不为空,则判断与该元素对应的对象中是否存在与所述字体信息相同的对象,如果不存在,则命令所述对象创建单元创建与该元素对应的对象;如果存在,则命令所述绘制单元直接将所述纹理绘制到屏幕上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100365705A CN101483035B (zh) | 2009-01-12 | 2009-01-12 | 在图形界面上显示文字的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100365705A CN101483035B (zh) | 2009-01-12 | 2009-01-12 | 在图形界面上显示文字的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101483035A true CN101483035A (zh) | 2009-07-15 |
CN101483035B CN101483035B (zh) | 2011-02-09 |
Family
ID=40880120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100365705A Active CN101483035B (zh) | 2009-01-12 | 2009-01-12 | 在图形界面上显示文字的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101483035B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902513A (zh) * | 2014-03-21 | 2014-07-02 | 北京百度网讯科技有限公司 | 在终端设备中显示字体的方法及装置 |
CN105718226A (zh) * | 2014-12-01 | 2016-06-29 | 中国航空工业集团公司第六三一研究所 | VXWorks操作系统高性能矢量字库显示方法 |
CN106294291A (zh) * | 2016-07-20 | 2017-01-04 | 中国航空无线电电子研究所 | 一种TrueType字体渲染方法 |
CN105148519B (zh) * | 2015-08-05 | 2018-09-11 | 北京乐动卓越科技有限公司 | 一种游戏程序中的文字渲染方法及系统 |
CN110930490A (zh) * | 2019-10-31 | 2020-03-27 | 北京庚图科技有限公司 | 一种大规模、高动态文字注记快速可视化方法 |
CN111078907A (zh) * | 2018-10-18 | 2020-04-28 | 中华图象字教育股份有限公司 | 汉字树处理方法及其装置 |
CN112258594A (zh) * | 2020-10-23 | 2021-01-22 | 北京字节跳动网络技术有限公司 | 文字显示方法、装置、电子设备及计算机可读存储介质 |
CN113326087A (zh) * | 2021-05-19 | 2021-08-31 | 翱捷科技股份有限公司 | 一种lvgl上的中文字库处理方法及装置 |
-
2009
- 2009-01-12 CN CN2009100365705A patent/CN101483035B/zh active Active
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902513A (zh) * | 2014-03-21 | 2014-07-02 | 北京百度网讯科技有限公司 | 在终端设备中显示字体的方法及装置 |
CN105718226A (zh) * | 2014-12-01 | 2016-06-29 | 中国航空工业集团公司第六三一研究所 | VXWorks操作系统高性能矢量字库显示方法 |
CN105148519B (zh) * | 2015-08-05 | 2018-09-11 | 北京乐动卓越科技有限公司 | 一种游戏程序中的文字渲染方法及系统 |
CN106294291A (zh) * | 2016-07-20 | 2017-01-04 | 中国航空无线电电子研究所 | 一种TrueType字体渲染方法 |
CN106294291B (zh) * | 2016-07-20 | 2019-01-15 | 中国航空无线电电子研究所 | 一种TrueType字体渲染方法 |
CN111078907A (zh) * | 2018-10-18 | 2020-04-28 | 中华图象字教育股份有限公司 | 汉字树处理方法及其装置 |
CN110930490A (zh) * | 2019-10-31 | 2020-03-27 | 北京庚图科技有限公司 | 一种大规模、高动态文字注记快速可视化方法 |
CN112258594A (zh) * | 2020-10-23 | 2021-01-22 | 北京字节跳动网络技术有限公司 | 文字显示方法、装置、电子设备及计算机可读存储介质 |
CN113326087A (zh) * | 2021-05-19 | 2021-08-31 | 翱捷科技股份有限公司 | 一种lvgl上的中文字库处理方法及装置 |
CN113326087B (zh) * | 2021-05-19 | 2023-01-24 | 翱捷科技股份有限公司 | 一种lvgl上的中文字库处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101483035B (zh) | 2011-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101483035B (zh) | 在图形界面上显示文字的方法和系统 | |
CN101833542B (zh) | 一种用户界面字体渲染方法及装置 | |
CN105183764B (zh) | 一种数据分页方法及装置 | |
CN100507921C (zh) | 一种嵌入式系统中的文字显示方法及系统 | |
CN110147330B (zh) | 一种字模数据的缓存方法、装置、设备和存储介质 | |
CN101561725B (zh) | 一种手写快速输入的方法和系统 | |
CN104111922A (zh) | 一种流式文档的处理方法及装置 | |
CN100511238C (zh) | 一种字体文件的嵌入方法及装置 | |
CN101692254B (zh) | 一种多Unicode语言字码显示方法和装置 | |
CN105528345A (zh) | 终端、服务器和补字方法 | |
CN104424192A (zh) | 形成多字型字库、通过该字库显示不同字型的方法及装置 | |
CN104462232A (zh) | 一种数据存储方法及装置 | |
CN101794566A (zh) | 移动终端中确定待显示字符的字模数据的方法及相关装置 | |
CN102467490B (zh) | 一种字体数据的处理方法及装置 | |
CN111858581A (zh) | 一种分页查询的方法、装置、存储介质和电子设备 | |
CN104794140B (zh) | 一种文本高亮显示的方法和装置 | |
CN1256689C (zh) | 一种包含手写体文本的电子文档的保存方法 | |
CN102023785B (zh) | 根据手写模式信息自动设置系统参数的方法及其装置 | |
CN106650716A (zh) | 一种计算机字体识别方法及装置 | |
CN101847050A (zh) | 一种嵌入式产品中简单中文的输入及显示方法 | |
WO2015100691A1 (zh) | 便于修改的手写输入设备快速输入法 | |
CN1172266C (zh) | 一种压缩汉字库芯片 | |
CN113326087B (zh) | 一种lvgl上的中文字库处理方法及装置 | |
CN111104403B (zh) | 一种lsm树数据处理方法、系统、设备及计算机介质 | |
CN102110082B (zh) | 一种小样文件的补字输出方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |