The embodiment of the invention discloses a font loading method, device, terminal and storage medium. The method includes: decomposing the font file into at least two sub-font files; converting each sub-font file into each font bearing set Typeface in parallel through at least two sub-threads; merging each font bearing set Typeface to get the total font bearing set, and loading the total font bearing set into the font mapping table System FontMap. The technical scheme of the embodiment of the present invention solves the problem that the slow loading speed of the non-system font file causes the application program to be unresponsive, so that the application program can quickly load all the system font files and non-system font files, so as to take into account both the response speed and the display effect of various fonts.
【技术实现步骤摘要】
一种字体加载方法、装置、终端及存储介质
本专利技术实施例涉及计算机应用技术,尤其涉及一种字体加载方法、装置、终端及存储介质。
技术介绍
安卓应用程序(AndroidApplication)在首次启动的过程中会加载非系统字体,其需要将字体文件初始化以转化为字体承载集(Typeface)后,方可供应用程序的逻辑层读取使用。当字体文件过大时,加载过程较为耗时,使得应用程序的启动速度较慢,容易出现应用程序无响应(ApplicationNotResponding,ANR)的现象。现有技术中通常采用压缩字体的方式以减小字体的体积,例如剔除倾斜字体(Italic)和粗壮字体(Bold),只保留常规字体(Regular)等,进而加快字体的加载速度。但是,上述方案使得一些界面的显示效果较差,影响了用户的体验,无法同时兼顾应用程序的响应速度和显示效果。
技术实现思路
本专利技术实施例提供了一种字体加载方法、装置、终端及存储介质,解决了非系统字体加载速度较慢而导致ANR问题,使得应用程序可以同时兼顾响应速度和显示效果。第一方面,本专利技术实施例提供了一种字体加载方法,可以包括:将字体文件分解为至少两个子字体文件;通过至少两个子线程将各子字体文件并行转换为各字体承载集Typeface;将各字体承载集Typeface合并得到总字体承载集,并将总字体承载集加载至字体映射表SystemFontMap中。可选的,将字体文件分解为至少两个子字体文件,可以包括:以英文字母a-z作为类型标识,基于预设的聚类算法将字体文件分解为至少两个子字体文件。可选的,以英文字母a-z作为类型标识,基于预设的聚类 ...
【技术保护点】
1.一种字体加载方法,其特征在于,包括:将字体文件分解为至少两个子字体文件;通过至少两个子线程将各所述子字体文件并行转换为各字体承载集Typeface;将各所述字体承载集Typeface合并得到总字体承载集,并将所述总字体承载集加载至字体映射表SystemFontMap中。
【技术特征摘要】
1.一种字体加载方法,其特征在于,包括:将字体文件分解为至少两个子字体文件;通过至少两个子线程将各所述子字体文件并行转换为各字体承载集Typeface;将各所述字体承载集Typeface合并得到总字体承载集,并将所述总字体承载集加载至字体映射表SystemFontMap中。2.根据权利要求1所述的方法,其特征在于,所述将字体文件分解为至少两个子字体文件,包括:以英文字母a-z作为类型标识,基于预设的聚类算法将所述字体文件分解为至少两个所述子字体文件。3.根据权利要求2所述的方法,其特征在于,所述以英文字母a-z作为类型标识,基于预设的聚类算法将所述字体文件分解为至少两个所述子字体文件,包括:创建以英文字母a-z为类型标识的各空字符集,以及分别与各所述空字符集匹配的相似矩阵Ai,其中相似矩阵Ai是与以索引为i的英文字母为类型标识的空字符集匹配,i取0-25的正整数;建立对角线长度为所述字体文件的长度的单位矩阵AT;根据所述字体文件中各字符的类型标识,确定与各所述字符分别对应的所述相似矩阵Ai,并根据如下公式确定特征向量vi:vi=AiAT;基于所述特征向量vi将所述字体文件中各所述字符分解至各所述空字符集中,将得到的各空字符集作为各子字体文件。4.根据权利要求2所述的方法,其特征在于,所述将各所述字体承载集Typeface合并得到总字体承载集,包括:建立用于存储各所述字体承载集Typeface的第一数组,其中,所述第一数组的长度是所述字体承载集Typeface的个数;创建以两个相邻英文字母为对角线元素的对角矩阵L;基于所述第一数组和所述对角矩阵L将各所述字体承载集Typeface进行结构化合并,得到所述总字体承载集。5.根据权利要求4所述的方法,其特征在于,将各所述字体承载集Typeface进行结构化合并,得到所述总字体承载集,包括:建立用于存储所述总字体承载集的第二数组,其中,所述第二数组的长度是所述字体文件的长度;L[j]表示对角矩阵L中索引为j的元素,将j初始化为0;以所述第一数组的首...
【专利技术属性】
技术研发人员:尹成,
申请(专利权)人:武汉斗鱼网络科技有限公司,
类型:发明
国别省市:湖北,42
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。