CN106294291A - 一种TrueType字体渲染方法 - Google Patents

一种TrueType字体渲染方法 Download PDF

Info

Publication number
CN106294291A
CN106294291A CN201610575213.6A CN201610575213A CN106294291A CN 106294291 A CN106294291 A CN 106294291A CN 201610575213 A CN201610575213 A CN 201610575213A CN 106294291 A CN106294291 A CN 106294291A
Authority
CN
China
Prior art keywords
font
texture
character
page
index value
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
Application number
CN201610575213.6A
Other languages
English (en)
Other versions
CN106294291B (zh
Inventor
时洋洋
李少光
童歆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Aeronautical Radio Electronics Research Institute
Original Assignee
China Aeronautical Radio Electronics Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Aeronautical Radio Electronics Research Institute filed Critical China Aeronautical Radio Electronics Research Institute
Priority to CN201610575213.6A priority Critical patent/CN106294291B/zh
Publication of CN106294291A publication Critical patent/CN106294291A/zh
Application granted granted Critical
Publication of CN106294291B publication Critical patent/CN106294291B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/109Font handling; Temporal or kinetic typography

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明公开了一种TrueType字体渲染方法,包含以下步骤:一,完成字体数据库的创建;二,把各.ttf或.ttc文件导入到字体数据库;三,根据各字体家族下的各字体风格创建纹理字体对象,所述纹理字体对象包含字符索引数组、字体句柄和纹理页表;四,从字符索引数组中取出待渲染的字符的字符索引值,若字符索引值不为‑1,则执行步骤六,否则执行步骤五;五,由TrueType开源字体驱动取出该字符的字体模型,再由纹理字体对象进一步转换为字体纹理数据缓存在纹理页表上并更新字符信息的字符索引值;六,根据字符索引值从纹理页表取出字体纹理进行渲染后输出。本发明可大大提高渲染效率,且对硬件的要求低。

Description

一种TrueType字体渲染方法
技术领域
本发明涉及一种TrueType字体显示技术领域,尤其是涉及一种基于热排序缓存机制的TrueType字体渲染方法。
背景技术
随着军民用飞机座舱显示系统的不断复杂、功能的不断增加、显示分辨率的不断增大,其显示的内容越来越丰富,种类越来越多,字符类更是不可或缺。比如地图中汉字的数量越来越多。此时,显示的性能和效率便是一个瓶颈。
目前现有的座舱显示系统中,点阵字的使用居多。虽然其使用灵活、占用空间不大、显示速度快,但显示质量太差,放大缩小很容易失真。TrueType字体由于其显示美观,而且可任意缩放,从而得到广泛应用。但其渲染复杂,效率相对较低。
发明内容
本发明的发明目的在于提供一种基于热排序缓存机制的TrueType字体渲染方法,可大大提高渲染效率。传统的PC环境、嵌入式系统下均可实现本发明,硬件包括:CPU、DDR、flash等存储设备、GPU。若达到相同的渲染性能,本发明对CPU、DDR、GPU等硬件的处理能力要求降低,从而降低整体成本。
本发明的发明目的通过以下技术方案实现:
一种TrueType字体渲染方法,包含以下步骤
步骤一,完成字体数据库的创建;
步骤二,把各.ttf文件或.ttc文件导入到字体数据库;
步骤三,根据各字体家族下的各字体风格创建纹理字体对象,所述纹理字体对象包含字符索引数组、字体句柄和纹理页表;
步骤四,从字符索引数组中取出待渲染的字符的字符索引值,若字符索引值不为-1,则执行步骤六,否则执行步骤五;
步骤五,由TrueType开源字体驱动取出该字符的字体模型,再由纹理字体对象进一步转换为字体纹理数据缓存在纹理页表上并更新该字符的字符索引值;
步骤六,根据字符索引值从纹理页表取出字体纹理进行渲染后输出。
优选地,所述纹理字体对象还包含统计数组,所述统计数组用于统计每张纹理页的使用次数,当字体纹理数据往纹理页表缓存时,发现没有空闲纹理页的时候,则根据每张纹理页的使用次数清空掉使用次数最少的那个纹理页缓存的字体纹理供新建的字体纹理数据使用,并将与此纹理页相关的字符索引值更新。
优选地,由字符索引值确认字体纹理在纹理页表上的位置的方法为:由字符索引值整除每页的纹理数为纹理页号,字符索引值对每页的纹理数取余为字符纹理所在纹理页的序号。
本发明的有益效果在于:在同等条件下可以大大提高TrueType字体的渲染性能。一方面,相同性能下,可以降低对硬件的要求,从而降低整体成本;另一方面,可以很好地解决包含大量字符场景的性能瓶颈问题,从而提高整体性能,比如地图。综上,此发明具有显著的市场前景和经济效益。
附图说明
图1纹理字体对象结构图
图2基于热排序缓存机制的TrueType字体渲染流程
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。
一种TrueType字体渲染方法,步骤如下:
第一,完成字体数据库的创建。此步骤主要是利用FreeType开源字体引擎完成FreeType字体数据库对象的创建。
第二,装载字体文件。此步骤把字体包(.ttf或.ttc)中包含的所有字体都导入到数据库。一个.ttf或.ttc文件,只是对应一个字体家族的字体集合,如:simhei.ttf字体文件中包括家族名为黑体的所有字体风格,其字体风格包含常规黑体、斜体黑体、粗体黑体、加粗倾斜黑体风格等字体。此步骤需要指定字体文件的名称和路径。
第三,字体枚举。根据各字体家族下的各字体风格创建纹理字体对象,每一种字体风格会有其相应的纹理字体对象。纹理字体对象包含字符索引数组、字体句柄和纹理页表。
第四,字符索引值判断。从字符索引数组中取出待渲染的字符的字符索引值,若字符索引值不为-1,则执行步骤六,否则执行步骤五。
第五,创建字体纹理。此步骤由FreeType开源字体驱动把待渲染的字符转换为字体模型,然后由纹理字体对象进一步转换为字体纹理数据。由于转换字体模型到纹理数据耗时较大,因此纹理字体对象必须对字体模型进行热排序缓存设计以避免影响实时性。本发明在此引入了热排序缓存机制,即把生成的字体纹理缓存到纹理页,并把该字符纹理在纹理页的位置(第m张页表上第n个字符纹理)记录下来处理后赋给字符索引值。假设每一张纹理页表指定可存total个字符纹理,则上述字符的索引值就为(m-1)*total+n。若该字符已被绘制过,在根据其unicode码转为下标,可从字符索引数组直接取出索引值index,从而可取出其纹理数据,其在第index/total张纹理页表上的第(index)mod(total)个纹理。一旦超过纹理页表的缓存容量,则后续的新字符在找不到空闲的纹理页时不再创建新纹理页,而是通过淘汰使用次数最少的字符纹理页来进一步实现渲染。纹理字体对象结构如图1所示。为实现字符纹理页使用次数的统计,纹理字体对象还包含统计数组,所述统计数组用于统计每张纹理页的使用次数,当字体纹理数据往纹理页表缓存时,发现没有空闲纹理页的时候,则根据每张纹理页的使用次数清空掉使用次数最少的那个纹理页缓存的字体纹理供新建的字体纹理数据使用,并将与此纹理页相关的字符索引值更新。
图1中,纹理字体对象主要包括一个字符索引数组和纹理页表以及一个TrueType字体句柄。字符索引数组一共包括65536个元素,与UTF-16字符编码一一对应,例如由字符“华”作为下标可直接取得对应的字符索引值,索引值整除每页的纹理数为纹理页号,索引值对每页的纹理数取余(即mod)为字符所在纹理页的序号。缺省情况下,如果一个字符从未被纹理字体对象绘制过,则该字符的索引值为-1。
第六,渲染字符。根据字符索引值从纹理页表取出字体纹理进行渲染后输出。
综上,基于热排序缓存机制的TrueType字体渲染流程如图2所示。
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。

Claims (3)

1.一种TrueType字体渲染方法,包含以下步骤
步骤一,完成字体数据库的创建;
步骤二,把各.ttf文件或.ttc文件导入到字体数据库;
步骤三,根据各字体家族下的各字体风格创建纹理字体对象,所述纹理字体对象包含字符索引数组、字体句柄和纹理页表;
步骤四,从字符索引数组中取出待渲染的字符的字符索引值,若字符索引值不为-1,则直接执行步骤六,否则执行步骤五;
步骤五,由TrueType开源字体驱动取出该字符的字体模型,再由纹理字体对象进一步转换为字体纹理数据缓存在纹理页表上并更新该字符的字符索引值;
步骤六,根据字符索引值从纹理页表取出字体纹理进行渲染后输出。
2.根据权利要求1所述的一种TrueType字体渲染方法,其特征在于所述纹理字体对象还包含统计数组,所述统计数组用于统计每张纹理页的使用次数,当字体纹理数据往纹理页表缓存时,发现没有空闲纹理页的时候,则根据每张纹理页的使用次数清空掉使用次数最少的那个纹理页缓存的字体纹理供新建的字体纹理数据使用,并将与此纹理页相关的字符索引值更新。
3.根据权利要求1所述的一种TrueType字体渲染方法,其特征在于由字符索引值确认字体纹理在纹理页表上的位置的方法为:由字符索引值整除每页的纹理数为纹理页号,字符索引值对每页的纹理数取余为字符纹理所在纹理页的序号。
CN201610575213.6A 2016-07-20 2016-07-20 一种TrueType字体渲染方法 Active CN106294291B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610575213.6A CN106294291B (zh) 2016-07-20 2016-07-20 一种TrueType字体渲染方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610575213.6A CN106294291B (zh) 2016-07-20 2016-07-20 一种TrueType字体渲染方法

Publications (2)

Publication Number Publication Date
CN106294291A true CN106294291A (zh) 2017-01-04
CN106294291B CN106294291B (zh) 2019-01-15

Family

ID=57651692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610575213.6A Active CN106294291B (zh) 2016-07-20 2016-07-20 一种TrueType字体渲染方法

Country Status (1)

Country Link
CN (1) CN106294291B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110147330A (zh) * 2019-05-23 2019-08-20 深圳市创维软件有限公司 一种字模数据的缓存方法、装置、设备和存储介质
WO2020103245A1 (zh) * 2018-11-23 2020-05-28 北京方正手迹数字技术有限公司 字体渲染方法、装置及计算机可读存储介质
CN112069770A (zh) * 2020-09-17 2020-12-11 中国航空无线电电子研究所 一种基于Vaps XT的改进型字体生成方法
CN114596389A (zh) * 2022-05-10 2022-06-07 中国人民解放军海军工程大学 基于OpenGL实例化技术的大批量文字标牌绘制方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060170684A1 (en) * 2005-01-28 2006-08-03 Microsoft Corporation Font cache and meta-fonts
US20090109460A1 (en) * 2007-10-30 2009-04-30 Xerox Corporation Using application side truetype or other outline fonts to create specialty imaging fonts on digital front-end
CN101483035A (zh) * 2009-01-12 2009-07-15 腾讯科技(深圳)有限公司 在图形界面上显示文字的方法和系统
CN102467490A (zh) * 2010-11-01 2012-05-23 北大方正集团有限公司 一种字体数据的处理方法及装置
CN102541828A (zh) * 2012-01-11 2012-07-04 深圳市同洲视讯传媒有限公司 一种字体实例创建方法及嵌入式系统设备
CN103186919A (zh) * 2011-12-28 2013-07-03 腾讯科技(深圳)有限公司 一种文字渲染方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060170684A1 (en) * 2005-01-28 2006-08-03 Microsoft Corporation Font cache and meta-fonts
US20090109460A1 (en) * 2007-10-30 2009-04-30 Xerox Corporation Using application side truetype or other outline fonts to create specialty imaging fonts on digital front-end
CN101483035A (zh) * 2009-01-12 2009-07-15 腾讯科技(深圳)有限公司 在图形界面上显示文字的方法和系统
CN102467490A (zh) * 2010-11-01 2012-05-23 北大方正集团有限公司 一种字体数据的处理方法及装置
CN103186919A (zh) * 2011-12-28 2013-07-03 腾讯科技(深圳)有限公司 一种文字渲染方法及装置
CN102541828A (zh) * 2012-01-11 2012-07-04 深圳市同洲视讯传媒有限公司 一种字体实例创建方法及嵌入式系统设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
彭四伟等: "基于OGRE的汉字渲染方案", 《计算机系统应用》 *
陈文文等: "嵌入式系统中的TrueType 字体驱动", 《计算机工程》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020103245A1 (zh) * 2018-11-23 2020-05-28 北京方正手迹数字技术有限公司 字体渲染方法、装置及计算机可读存储介质
US11507727B2 (en) 2018-11-23 2022-11-22 Beijing Founder Handwriting Digital Technology Co., Ltd Font rendering method and apparatus, and computer-readable storage medium
CN110147330A (zh) * 2019-05-23 2019-08-20 深圳市创维软件有限公司 一种字模数据的缓存方法、装置、设备和存储介质
CN110147330B (zh) * 2019-05-23 2023-09-01 深圳市创维软件有限公司 一种字模数据的缓存方法、装置、设备和存储介质
CN112069770A (zh) * 2020-09-17 2020-12-11 中国航空无线电电子研究所 一种基于Vaps XT的改进型字体生成方法
CN112069770B (zh) * 2020-09-17 2024-04-12 中国航空无线电电子研究所 一种基于Vaps XT的改进型字体生成方法
CN114596389A (zh) * 2022-05-10 2022-06-07 中国人民解放军海军工程大学 基于OpenGL实例化技术的大批量文字标牌绘制方法

Also Published As

Publication number Publication date
CN106294291B (zh) 2019-01-15

Similar Documents

Publication Publication Date Title
CN106294291A (zh) 一种TrueType字体渲染方法
CN105302580B (zh) 一种通过gpu纹理共享实现快速获取游戏图像的方法和系统
US20130021361A1 (en) Method and device for rendering user interface font
US6262748B1 (en) Frame buffer memory with on-chip AIU and pixel cache
US5544306A (en) Flexible dram access in a frame buffer memory and system
US6911984B2 (en) Desktop compositor using copy-on-write semantics
CN100481028C (zh) 一种利用缓存实现数据存储的方法和装置
CN105117415A (zh) 一种优化的ssd数据更新方法
CN103425725A (zh) 散列冲突降低系统
CN100561468C (zh) 一种显示维文的方法及装置
CN103380417A (zh) 用于从存储器请求所存储的数据的技术
CN108416000A (zh) 数据展示方法、装置、设备及存储介质
CN106528026B (zh) 文本显示方法及装置
CN105159616A (zh) 一种磁盘空间管理方法及装置
JP3306746B2 (ja) 異なるピクセル・サイズを処理するウインドウ・システムにおけるディスプレイ・グラフィック・アダプタ及びピクセル・データを記憶する方法
CN103488441B (zh) 一种阿拉伯语在pos机上打印的实现方法
CN105550979A (zh) 一种高数据通量纹理Cache层次结构
JPH01210990A (ja) 表示装置
US20200013137A1 (en) Fixed-stride draw tables for tiled rendering
US7627719B2 (en) Cache device and method for determining LRU identifier by pointer values
CN106777107A (zh) 一种数字标本瓦片数据存储的方法
CN103778069A (zh) 高速缓冲存储器的高速缓存块长度调整方法及装置
CN116166185A (zh) 缓存方法、图像传输方法、电子设备及存储介质
CN101667158B (zh) 串流上下文的高速缓存系统
CN105045752B (zh) 一种基于宽口sram存储的高速ad数据pxi总线传输解析方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant