文字缓存方法及装置的制造方法

文档序号:9471401阅读:220来源:国知局
文字缓存方法及装置的制造方法
【技术领域】
[0001]本发明涉及网页绘制技术领域,特别是涉及一种文字缓存方法及装置。
【背景技术】
[0002]安卓系统的浏览器绘图引擎通过skia实现绘图处理,skia是个二维向量图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现。
[0003]由于浏览器字体渲染的速度比较慢,效率很低,所以skia带有一套字体位图缓存方案,从而提升浏览器文字渲染效率。字体位图缓存需要占用一定的内存空间,skia的字体位图缓存方案采用一刀切策略,即对于不同的语言字体,其分配的缓存空间的大小完全一样。
[0004]skia的字体位图缓存方案虽然提升浏览器文字渲染效率,但是,该字体位图缓存方案使得缓存空间无法得到最优使用,造成一定的缓存空间浪费。

【发明内容】

[0005]本发明主要解决的技术问题是提供一种文字缓存方法及装置,能够控制内存的占用,尽量使内存得到最优使用。
[0006]为解决上述技术问题,本发明采用的一个技术方案是:提供一种文字缓存方法,包括:确定所要缓存的文字的字体所属的字体语言类型;按照所述文字的字体所属的字体语言类型,给所述文字分配字体缓存空间,以使得不同的所述字体语言类型对应的字体所分配的字体缓存空间不固定;将所述文字的字体位图缓存在所述字体缓存空间中。
[0007]其中,所述方法还包括:确定所述文字当前所应用的网页的页面编写特点;从所述文字当前所应用的网页的页面编写特点确定所述网页的页面文字的大小所集中的区间范围;判断所述文字是否属于所述网页的页面文字的大小所集中的区间范围;若属于所述网页的页面文字的大小所集中的区间范围,则增加所述文字的字体缓存空间的大小,若不属于所述网页的页面文字的大小所集中的区间范围,则减少所述文字的字体缓存空间的大小。
[0008]其中,所述方法还包括:从所述用户设置的系统语言确定所述用户浏览网页的字体语言类型;判断所述文字是否属于所述用户浏览网页的字体语言类型;若属于所述用户浏览网页的字体语言类型,则增加所述文字的字体缓存空间的大小,若不属于所述用户浏览网页的字体语言类型,则减少所述文字的字体缓存空间的大小。
[0009]其中,所述字体缓存空间是哈希表空间。
[0010]其中,所述按照所述文字的字体所属的字体语言类型,给所述文字分配字体缓存空间的步骤之前,包括:根据字体的位图信息,对所述字体的字体位图进行分类,获得至少一个类别,所述字体的位图信息包括所述字体的来源文件、所述字体的大小、所述字体的形状、字体颜色以及所述字体的绘图参数;创建与所述至少一个类别相对应的所述哈希表空间,以使得每个相同类别的字体位图由各自的所述哈希表进行管理。
[0011]其中,所述方法还包括:若所述哈希表空间的数量为两个以上,且所述两个以上的哈希表空间的总大小达到缓存阈值,则将所述最久没有使用的哈希表空间删除。
[0012]其中,所述若所述哈希表空间的数量为两个以上,且所述两个以上的哈希表空间的总大小达到缓存阈值,则将所述最久没有使用的哈希表空间删除的步骤,包括:将所述两个以上的哈希表空间的哈希表关联在一个双向链表中;当查找字体位图时,将所述查找到的字体位图所对应的哈希表空间的哈希表放置在所述双向链表的前面;若所述两个以上的哈希表空间的总大小达到缓存阈值,则将所述双向链表后面的哈希表所对应的哈希表空间删除。
[0013]其中,所述方法还包括:根据当前可用内存,设定所述缓存阈值。
[0014]为解决上述技术问题,本发明采用的另一个技术方案是:提供一种文字缓存装置,所述装置包括:第一确定模块,用于确定所要缓存的文字的字体所属的字体语言类型;分配模块,用于按照所述文字的字体所属的字体语言类型,给所述文字分配字体缓存空间,以使得不同的所述字体语言类型对应的字体所分配的字体缓存空间不固定;缓存模块,用于将所述文字的字体位图缓存在所述字体缓存空间中。
[0015]其中,所述装置还包括:第二确定模块,用于确定所述文字当前所应用的网页的页面编写特点;第三确定模块,用于从所述文字当前所应用的网页的页面编写特点确定所述网页的页面文字的大小所集中的区间范围;第一判断模块,用于判断所述文字是否属于所述网页的页面文字的大小所集中的区间范围;第一调整模块,用于在属于所述网页的页面文字的大小所集中的区间范围时,增加所述文字的字体缓存空间的大小,在不属于所述网页的页面文字的大小所集中的区间范围时,减少所述文字的字体缓存空间的大小。
[0016]其中,所述装置还包括:第四确定模块,用于从所述用户设置的系统语言确定所述用户浏览网页的字体语言类型;第二判断模块,用于判断所述文字是否属于所述用户浏览网页的字体语言类型;第二调整模块,用于在属于所述用户浏览网页的字体语言类型时,增加所述文字的字体缓存空间的大小,在不属于所述用户浏览网页的字体语言类型时,减少所述文字的字体缓存空间的大小。
[0017]其中,所述字体缓存空间是哈希表空间。
[0018]其中,所述装置还包括:获得模块,用于根据字体的位图信息,对所述字体的字体位图进行分类,获得至少一个类别,所述字体的位图信息包括所述字体的来源文件、所述字体的大小、所述字体的形状、字体颜色以及所述字体的绘图参数;创建模块,用于创建与所述至少一个类别相对应的所述哈希表空间,以使得每个相同类别的字体位图由各自的所述哈希表进行管理。
[0019]其中,所述装置还包括删除模块,所述删除模块用于在所述哈希表空间的数量为两个以上,且所述两个以上的哈希表空间的总大小达到缓存阈值时,将所述最久没有使用的哈希表空间删除。
[0020]其中,所述删除模块包括:关联单元,用于将所述两个以上的哈希表空间的哈希表关联在一个双向链表中;放置单元,用于当查找字体位图时,将所述查找到的字体位图所对应的哈希表空间的哈希表放置在所述双向链表的前面;删除单元,用于在所述两个以上的哈希表空间的总大小达到缓存阈值时,将所述双向链表后面的哈希表所对应的哈希表空间删除。
[0021]其中,所述装置还包括设定模块,所述设定模块用于根据当前可用内存,设定所述缓存阈值。
[0022]本发明的有益效果是:区别于现有技术的情况,本发明确定所要缓存的文字的字体所属的字体语言类型;按照文字的字体所属的字体语言类型,给文字分配字体缓存空间,以使得不同的字体语言类型对应的字体所分配的字体缓存空间不固定;将文字的字体位图缓存在字体缓存空间中。由于在分配字体缓存空间时,是根据文字的字体所属的字体语言类型来分配的,这样可以使得不同的字体语言类型对应的字体所分配的字体缓存空间不固定,通过这种方式,可以控制内存的占用,能够尽量使内存得到最优使用。
【附图说明】
[0023]图1是本发明文字缓存方法一实施方式的流程图;
[0024]图2是本发明文字缓存方法另一实施方式的流程图;
[0025]图3是本发明文字缓存方法又一实施方式的流程图;
[0026]图4是本发明文字缓存方法又一实施方式的流程图;
[0027]图5是本发明文字缓存方法又一实施方式的流程图;
[0028]图6是本发明文字缓存装置一实施方式的结构示意图;
[0029]图7是本发明文字缓存装置另一实施方式的结构示意图;
[0030]图8是本发明文字缓存装置又一实施方式的结构示意图;
[0031]图9是本发明文字缓存装置又一实施方式的结构示意图;
[0032]图10是本发明文字缓存装置又一实施方式的结构示意图。
【具体实施方式】
[0033]下面结合附图和实施方式对本发明进行详细说明。
[0034]参阅图1,图1是本发明文字缓存方法一实施方式的流程图,本实施方式默认字体缓存空间已经创建完毕,该方法包括:
[0035]步骤SlOl:确定所要缓存的文字的字体所属的字体语言类型。
[0036]字体语言类型是指文字的字体为中文、英文、德文、日文、韩文、法文等等语言类型。不同语言类型的字体(例如中文类型字体、英文类型字体)包含的字形个数不一样,有的字形个数较少,比如,英文字体的字形个数比中文字体中的字形个数少很多。
[0037]确定所要缓存的文字的字体所属的字体语言类型,以便于为所要缓存的文字分配字体缓存空间。
[0038]步骤S102:按照文字的字体所属的字体语言类型,给文字分配字体缓存空间,以使得不同的字体语言类型对应的字体所分配的字体缓存空间不固定。
[0039]有的字体语言类型的字形个数少,可以分配小的字体缓存空间,有的字体语言类型的字形个数多,可以分配大的字体缓存空间。字体缓存空间是用来缓存字体位图的内存空间,可以是通过哈希算法实现的哈希表空间,也可以是普通的字体缓存空间。例如,故针对英文字体,可以分配比中文字体更小的哈希表空间;如:给中文字体分配的字体缓存空间的大小为2048
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1