freetype缓存

freetype缓存

ID:19836233

大小:41.00 KB

页数:8页

时间:2018-10-06

freetype缓存_第1页
freetype缓存_第2页
freetype缓存_第3页
freetype缓存_第4页
freetype缓存_第5页
资源描述:

《freetype缓存》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、FreeType的缓存.txt你妈生你的时候是不是把人给扔了把胎盘养大?别把虾米不当海鲜。别把虾米不当海鲜。FreeType的缓存子系统提供了一个高性能的管理face、size、glyphimage和charmap的途径。I.RequirementsandDesignGoals:Whendealingwithfonts,cachingrapidlybecomesanecessityforatleastthefollowingreasons:当处理字体时,高速缓存是必要的,原因如下:l打开字体文件是相当慢的,因为它需要加载数据到内存中。所以,尽可能地保持FT_Face对象处于打开状态是一

2、个好主意。l每一个FT_Face或FT_Size对象会占用几百KB,假设它总是很大,应该限制打开的face的个数到最小。l每个face包含成百上千的字形,由于通常只是使用一个face中的一小部分字形,一次性加载所有的字形是完全没有必要的。应该缓存我们经常使用的字形。l当属于给定face的所有字形已经载入内存时,对应的FT_Face对象可以被关闭已减少内存的占用。FreeType缓存子系统提供了自动完成上述任务的很好的途径。II.TheCacheManager:FTC_Manager用于处理缓存中的各种数据。应首先调用FTC_Manager_New来创建它。1.通过FTC_FaceID鉴

3、别face:FTC_Manager并不直接知晓哪些字体被安装了或者在运行期是否有效。应用程序有责任定位和鉴别face,并打开相应的字体文件。这意味着应用程序必须使用一个指针(FTC_FaceID)来唯一鉴别一个给定的有效的或已安装的face。虽然这个指针对于FTC_Manager来说并不重要,但是它们的值在程序运行期必须始终保持不变,用于关联缓存的数据和它们相应的face。应用程序也必须提供(在FTC_Manager_New期间)一个专门的回调函数FTC_Face_Requester。这个外观请求器管理从一个给定的FTC_FaceID转换到一个新FT_Face对象,这通常暗示着调用FT

4、_New_Face或FT_Open_Face。大多数情况下,FTC_FaceID指向一个包含着字体文件名和faceindex的结构。Inmostcases,aFTC_FaceIDisapointertoastructurethatcontainsafilepathnameandafaceindex,andwherethefacerequestersimplycallsFT_New_Face,asillustratedbythefollowingcode:/*definecustomfaceidentificationstructure*/typedefstructMyFaceRec_{

5、constchar*file_path;intface_index;}MyFaceRec,*MyFace;/*ourcustomfacerequesterisdeadsimple*/staticFT_Errormy_face_requester(FTC_FaceIDface_id,FT_Librarylibrary,FT_Pointerrequest_data,FT_Face*aface){MyFaceface=(MyFace)face_id;//simpletypecasereturnFT_New_Face(library,face->file_path,face->face_ind

6、ex,aface);}{FTC_Managermanager;.../*initializecachemanager*/error=FTC_Manager_New(library,0,/*usedefault*/0,/*usedefault*/0,/*usedefault*/&my_face_requester,/*useourrequester*/NULL,/*don'tneedthis.*/&manager);}Whatthiscodedoesn'tshowishowthelistofavailable/existingFTC_FaceID/MyFacehandleisgenera

7、ted,sincethisishighlyprogramorplatformspecific.Foramoreconcreteexample,havealookatthefileftcommon.iinthe"ft2demos"packagedistributedbyFreeType.2.缓存FT_Face和FT_Size对象:客户程序不应当直接用FT_New_Face或FT_Open_Face来打开一个新的FT_Face对象,而是应该通过调用

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。