一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于SVG字库的字幕渲染方法及系统与流程

2021-10-29 22:24:00 来源:中国专利 TAG:渲染 字幕 字库 方法 系统

一种基于svg字库的字幕渲染方法及系统
技术领域
1.本发明涉及字幕渲染技术领域,具体涉及一种基于svg字库的字幕渲染方法及系统。


背景技术:

2.随着电视的分辨率逐渐提升,传统的基于图文的字幕,如pgs、dvd字幕,已经越来越无法满足4k,乃至8k字幕的需求。由于图文字幕数据传输量大,这将大大增加媒体文件容量,不便于压缩传输,且越高清越占用存储空间。
3.因此,当下基于文本的字幕标准成为主流,如ttml字幕只需要几百kb的容量即可表达多个小时的字幕内容。然而,虽然基于文本的字幕具有容量小,使用灵活等多个优势,但是随着电视分辨率的不断提升,这对文字的清晰度及字幕快速渲染提出了新的需求。
4.现有技术中往往需要加载整个字体库文件,使得加载速度延长,并且由于现有技术中基于字库的文本型字幕严重依赖于字库,不便于移植,使得字库来源受到限制,尤其是新增外来字需求,导致成本增加,无法满足用户更高需求。
5.因此,现有技术有待于改进和发展。


技术实现要素:

6.基于此,针对现有技术中加载字库速度慢,也无法兼容外来字字形库的技术问题,本发明提供了一种基于svg字库的字幕渲染方法及系统。
7.为了达到上述目的,本发明采取了以下技术方案:
8.一种基于svg字库的字幕渲染方法,所述基于svg字库的字幕渲染方法包括以下步骤:
9.获取待显示字幕,其中,所述待显示字幕包括多个待显示文字以及每个所述待显示文字对应的目标字体;
10.加载svg字库;
11.针对多个目标字体中每一个目标字体,获取所述svg字库中该目标字体对应的字体字形映射表;
12.根据字体字形映射表对所述待显示字幕进行渲染。
13.所述的基于svg字库的字幕渲染方法,其中,所述获取待显示字幕之前包括:
14.判断当前字库中是否存储了所述svg字库;
15.若当前字库中只存储了ttf字库,则通过转换工具将所述ttf字库转换为所述svg字库。
16.所述的基于svg字库的字幕渲染方法,其中,所述svg字库包括基础字体库和特殊字体库,所述基础字体库存储有基础字体集以及所述基础字体集中的每一个基础字体对应的字形库,所述加载svg字库具体包括:
17.获取所述svg字库中的基础字体库;
18.从所述基础字体库中获取基础字体集中所有基础字体的基础字形库;其中,每个基础字体的字形库均包括基础字形库以及特殊字形库;
19.所有基础字形库形成基础字体基础字形库集;
20.预加载所述基础字体基础字形库集。
21.所述的基于svg字库的字幕渲染方法,其中,所述针对多个目标字体中每一个目标字体,获取所述svg字库中该目标字体对应的字体字形映射表具体包括:
22.获取基础字体集以及基础字体基础字形库集;
23.针对多个目标字体中每个目标字体,判断该目标字体是否属于所述基础字体集;
24.若该目标字体属于所述基础字体集,则继续判定是否存储该目标字体对应的字体字形映射表;
25.若存储了该目标字体对应的字体字形映射表,则获取该目标字体对应的字体字形映射表。
26.所述的基于svg字库的字幕渲染方法,其中,所述若该目标字体属于所述基础字体集,则继续判定是否存储该目标字体对应的字体字形映射表之后还包括:
27.若未存储该目标字体对应的字体字形映射表,则建立该目标字体的空字体字形映射表;
28.从基础字体库的该目标字体的基础字形库中提取出该目标字体相关字形信息,并将所述相关字形信息映射到所述空字体字形映射表。
29.所述的基于svg字库的字幕渲染方法,其中,所述判断该目标字体是否属于所述基础字体集之后还包括:
30.若该目标字体不属于所述基础字体集,则获取所述svg字库中的特殊字体库,其中,所述特殊字体库存储有特殊字体集以及所述特殊字体集中每个特殊字体的字形库;
31.判断该目标字体是否属于所述特殊字体集;
32.若该目标字体属于所述特征字体集,则获取并加载该目标字体对应的基础字形库;其中,每个特殊字体的字形库均包括基础字形库以及特殊字形库。
33.所述的基于svg字库的字幕渲染方法,其中,所述根据字体字形映射表对所述待显示字幕进行渲染具体包括:
34.将属于同一目标字体的待显示文字归类;
35.针对相同目标字体的一个或多个待显示文字,获取待显示文字的待显字形信息,并将每一个待显字形信息根据预设的字形编码规则转换为待显示文字的字形编码;
36.获取目标字体对应的字体字形映射表;其中,所述字体字形映射表存储了字形编码、该字形编码对应的字形路径以及字形编码与字形路径的映射关系;
37.根据预设的映射关系以及待显示文字的字形编码,从目标字体的字体字形映射表中获取待显示文字的字形路径;
38.根据所获取的字形路径对所述待显示文字进行字形渲染。
39.所述的基于svg字库的字幕渲染方法,其中,所述根据预设的映射关系以及待显示文字的字形编码,从目标字体的字体字形映射表中获取待显示文字的字形路径具体包括:
40.获取待显示文字的字形编码,判断该目标字体的字体字形映射表是否存储了该待显示文字的字形编码;
41.若该目标字体的字体字形映射表存储了该待显示文字的字形编码,根据预设的映射关系,获取该待显示文字的字形路径。
42.所述的基于svg字库的字幕渲染方法,其中,还包括:
43.若目标字体的字体字形映射表未存储该待显示文字的字形编码,则获取系统默认设置的缺失字以及该缺失字对应的字形路径;
44.根据所述缺失字的字形路径对所述缺失字进行渲染。
45.本发明还提供一种基于svg字库的字幕渲染系统,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述所述的基于svg字库的字幕渲染方法的步骤。
46.有益效果:
47.相对于现有技术,本发明通过优化svg字体文件的加载速度,显著提高了字幕模块的初始化工作,同时并不严重影响字幕的渲染速度;其次,通过构建完全基于svg字体的字幕模块,不仅大大减少了字幕模块的控制逻辑,而且便于维护与移植;此外,完全适用于外字的动态增加,显著改善了字库的管理。
附图说明
48.图1为本发明提供的一种基于svg字库的字幕渲染方法的流程图。
49.图2为本发明提供的一种基于svg字库的字幕渲染系统的结构框图。
具体实施方式
50.为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
51.请参阅图1,图1是本发明提供的一种基于svg字库的字幕渲染方法的流程图,应该说明的是,本发明实施方式的基于svg字库的字幕渲染方法并不限于图1所示的流程图中的步骤及顺序,根据不同的需求,流程图中的步骤可以增加、移除或者改变顺序。
52.如图1所示,本发明提供的基于svg字库的字幕渲染方法包括以下步骤:
53.s10、获取待显示字幕,其中,所述待显示字幕包括多个待显示文字以及每个所述待显示文字对应的目标字体。
54.在本发明实施例中,svg(scalable vector graphics)是一种矢量图形描述格式,其包含字体的描述,svg字体文件中包含每个字对应的字形。所述字幕包括多个待显示文字(即文本内容)、每个所述待显示文字对应的目标字体以及目标样式。其中,所述目标样式包括字体对应的字形和字体效果等,所述字体效果可以为阴影、描边、下划线、字体大小、颜色等。该目标样式是将待显示文字根据所需求的字体、字形以及字体效果组合排版所形成的样式。其中,字体指某一字体名下的所有字形的集合;字形指计算机能识别的某一字的形状描述。
55.首先,由于现有技术中所采用的ttf字库需要依赖于第三方库,如freetype、ffi、fontconfig、pango、cario、pango-cairo、pangoft2、glib、pixman、harfbuzz等,使得其不便于移值,利用率低,同时其仍然需要额外新增外来字子模块来管理外来字,不仅增大字幕系
统所占空间,增加成本,还极大地降低了渲染速度。而本发明实施例中所采用的svg字库仅依赖一个完全符合c99标准的svg render工具库-nanosvg,其完全开源,仅用两个文件集成,极大扩大适用群体,方便移植,同时svg字库中存储的hashmap(哈希表的map接口)映射表能兼容新增的外来字的字形,极大地扩充字库源,并且本发明实施例中的svg字库为矢量字库,能够快速实现斜体、字体加粗以及字体描边等功能。
56.因此,为了兼容不同版本字体库,扩大应用群体范围,满足不同用户需求。如当前字库只有ttf字库,没有svg字库,则可使用第三方工具将ttf字库转换为svg字库以便于后续操作。
57.具体实施时,判断当前字库中是否存储了svg字库;若当前字库中只存储了ttf字库,则通过转换工具将所述ttf字库转换为所述svg字库。当然,若当前字库中存储了svg字库,则不需要进行转换。其中,所述将所述ttf字库转换为所述svg字库,即通过转换工具将ttf字库中的ttf字体转换为svg字体,所述svg字体的集合即构成所述ttf字库对应的所述svg字库。为了加快显示该字幕,分别从预处理阶段和字幕渲染这两个阶段区别于传统基于ttf字库的处理方式来提高字幕加载及渲染速度。
58.s20、加载svg字库。
59.在预处理阶段,预先要加载svg字库,为了提高加载速度,本发明实施例中是首次加载svg字库中的部分字体,并非是加载所有svg字体,一旦确定该目标字体以及其字形存储在该部分字体所在字库,则无需加载其余字体所对应的字库,从而大大地减少加载时间,继而快速获取到目标字体对应的字形并渲染。
60.正因svg字库是纯文本型文件且具有很高的可读性,因此,可以很方便的将svg字库拆分为多个子字体库,此时通过使用频率结合人工调整将字体拆分,从而使得拆分后的子字体库更符合人习惯,提高用户体验和粘合度,从而仅预先加载符合人使用习惯的字库,提高加载效率。
61.因此,所述svg字库包括基础字体库和特殊字体库,该基础字体库在本实施例中是存储了符合用户习惯以及使用率高的基础字体集以及所述基础字体集中每个基础字体对应的字形库。由于单一字体具有多个字形,例如字体名为“丸
ゴシック”
的字体文件包含了7700个字形,则每个基础字体的字形库均可划分为基础字形库、特殊字形库以及外来字字形库。该基础字形库存储了在最常用字体中符合用户习惯以及使用率高的最常用的字形。如下表1所示,表1用于表示单一基础字体的多个字形被划分为多个子字形库。
[0062][0063]
表1
[0064]
上表1中的子字体编号用于表示子字形库对应的编号。其中,子字体编号0和子字体编号1所代表的字形,属于基础字体库中的基础字形库,是预先加载的部分字体库;而子字体编号2-7所代表的字形,属于特殊字形库,子字体编号8所代表的字形属于外来字字形库。
[0065]
同样的,所述特殊字体库为特殊字体集中每个特殊字体的字形库。并且,每个特殊字体的字形库同样可划分为基础字形库以及特殊字形库,其具体存储实现如上表1中所示,故不在此赘述。
[0066]
因此,具体实施时,所述加载svg字库具体包括:
[0067]
s21,获取所述svg字库中的基础字体库;
[0068]
s22,从所述基础字体库中获取基础字体集中所有基础字体的基础字形库;其中,每个基础字体的字形库均包括基础字形库以及特殊字形库;
[0069]
s23,所有基础字形库形成基础字体基础字形库集;
[0070]
s24,预加载所述基础字体基础字形库集。
[0071]
由于预加载的基础字形库已经含有最基础,使用频率最高的字形,能够满足80%以上的基本字幕显示需求,并且该基础字形库约占原字体容积的1/7(或更小),提高加载速度,从而使得加载速度为原完整字体所有字形加载速度的1/10-1/7。因此,预先只加载基础字体库中常用的基础字形库,加载时长不超过20ms,从而使得字幕显示与渲染同步性高(如国外部分认证,需要字幕的同步精度在
±
40ms区间)。
[0072]
例如以型号为rt2851电视芯片为例,加载包含有7700个字形的字体文件的单个小字体文件仅需要20ms,而采用基于ttf字库的传统方式,只能加载完整的原始字库文件,单个字体文件即需要约300ms(3种字体则需要约1s),这严重影响了字幕初始化工作,延迟了字幕的显示时间,这可能导致字幕刚渲染完成尚未显示就需要消失,从而本实施例仅预先
加载基础字形库,不是加载整个svg字库,大大降低初始化时间,提高字幕显示效率。
[0073]
需要说明的是,所述特殊字体库指的是相对于用户习惯或使用率的除基础字体外的特殊字体,即不常用字体集合。该特殊字体库同样存储了多个特殊字体以及每个特殊字体对应的字形库,每个特殊字体也可同样被划分基础字形库、特殊字形库以及外来字字形库。
[0074]
一旦该目标字体对应的字形不属于子字体编号0-1,则需要在子字体编号2-7查找,再查找到后进行加载,进而再配合于字幕提前渲染的处理策略,使得渲染与显示同步。
[0075]
s30、针对多个目标字体中每一个目标字体,获取所述svg字库中该目标字体对应的字体字形映射表。
[0076]
本发明实施例中,以hashmap管理所有字体,以字体名为关键字查找字体,每个字体对应一个字体字形映射表,其字形存储格式如下表2所示:
[0077][0078]
表2
[0079]
具体实施时,所述针对多个目标字体中每一个目标字体,获取所述svg字库中该目标字体对应的字体字形映射表具体包括:
[0080]
s31,获取基础字体集以及基础字体基础字形库集;
[0081]
s32,针对多个目标字体中每个目标字体,判断该目标字体是否属于所述基础字体集;
[0082]
s33,若该目标字体属于所述基础字体集,则继续判定是否存储该目标字体对应的字体字形映射表;
[0083]
s34,若存储了该目标字体对应的字体字形映射表,则获取该目标字体对应的字体字形映射表;
[0084]
s35,若未存储该目标字体对应的字体字形映射表,则建立该目标字体的空字体字形映射表;
[0085]
s36,从基础字体库的该目标字体的基础字形库中提取出该目标字体相关字形信息,并将所述相关字形信息映射到所述空字体字形映射表。这样,形成该目标字体对应的新字体字形映射表,并存储。
[0086]
当然,若该基础字体库中没有该目标字体对应的字体字形映射表,则可通过两种方式进行获取:
[0087]
一是从网络中获取外部字体文件(码流文件),将该外部字体文件解析后得到该目
标字体的字形库以及字形的相关信息加入至该空字体字形映射表中,以形成该目标字体的新字体字形映射表。
[0088]
二是以导入方式导入外部字体文件,同样解析该外部字体文件得到该目标字体对应的字形库以及字形的相关信息,加入值该空字体字形映射表中,以形成该目标字体的新字体字形映射表。
[0089]
需要说明的是,新增外来字的途径同样采用上述两种相同的方式,但不同在于,svg字库中的外来字字形库预先从网络方式获取,解析该外部字体文件所得到的字体若已存储在该svg字库中,则根据用户的选择是替换原有字体字形映射表,还是依次加入到原有字体字形映射表,从而扩大字源。
[0090]
进一步地,若该目标字体不属于所述基础字体集,则获取所述svg字库中的特殊字体库,其中,所述特殊字体库存储有特殊字体集以及所述特殊字体集中每个特殊字体的字形库;判断该目标字体是否属于所述特殊字体集;若该目标字体属于所述特征字体集,则获取并加载该目标字体对应的基础字形库;其中,每个特殊字体的字形库均包括基础字形库以及特殊字形库。
[0091]
也就是说,当该目标字体不属于已加载的基础字体库中基础字体集(即不属于常用字体集),则获取svg字库中特殊字体库,判断该目标字体是否属于特殊字体库中特殊字体集任一一种字体。一旦该目标字体属于该特殊字体集,则需要注意的是,加载的是特殊字体库中该目标字体对应的基础字形库,并非是该目标字体对应的所有字形库,这样,更大概率降低非必要字形加载,进一步提高加载速度,进而继续从该特殊字体库中获取该目标字体对应的字体字形映射表。
[0092]
同样的,在该目标字体属于该特殊字体集后,与该目标字体属于基础字体集后相同的判断方法,即需要继续确定该特殊字体库中是否存储了该目标字体对应的字体字形映射表;一旦当该特殊字体库中存储该目标字体对应的字体字形映射表,则获取目标字体对应的字体字形映射表;而当该特殊字体库中没有存储该目标字体对应的字体字形映射表,则同样需要建立该目标字体的空字体字形映射表;通过外部方式如网络或导入方式获取该目标字体的字形库,并从该字形库中提取出属于常用字形的基础字形库,然后将基础字形库中相关字形信息存储到所述空字体字形映射表,从而形成该目标字体的新字体字形映射表中。
[0093]
进一步地,一旦该目标字体都不属于该svg字库,则返回缺失字,该缺失字可来源于系统默认设置的,也可由用户指定,从而满足不同用户需求,适应不同场景。
[0094]
s40、根据字体字形映射表对所述待显示字幕进行渲染。
[0095]
具体实施时,所述根据字体字形映射表对所述待显示字幕进行渲染具体包括:
[0096]
s41,将属于同一目标字体的待显示文字归类;
[0097]
s42,针对相同目标字体的一个或多个待显示文字,获取待显示文字的待显字形信息,并将每一个待显字形信息根据预设的字形编码规则转换为待显示文字的字形编码;
[0098]
其中,所述预设的字形编码规则可由用户根据需求设定,该预设的字形编码规则属于unicode编码。
[0099]
s43,获取目标字体对应的字体字形映射表;其中,所述字体字形映射表存储了字形编码、该字形编码对应的字形路径以及字形编码与字形路径的映射关系;
[0100]
s44,根据预设的映射关系以及待显示文字的字形编码,从目标字体的字体字形映射表中获取待显示文字的字形路径;
[0101]
s45,根据所获取的字形路径对所述待显示文字进行字形渲染。
[0102]
请参阅上表2,由于字体字形映射表存储了单一字体中每个字形对应的字形路径以及每个字形对应的unicode编码,其中,所述unicode编码是用于唯一标识该待显示文字字形的字符编码,而渲染字是渲染该字对应的字形路径形式,通过unicode编码与字形路径的一一映射关系,若已知unicode编码,即可获知字形路径,从而形成该字。
[0103]
由于待显示字幕中包含一种或多种目标字体,而属于相同的目标字体可能对应一个或多个待显示文字,因此,针对同一目标字体,获取同一目标字体的待显示文字的待显字形信息,并将每一个待显字形信息根据预设的字形编码规则转换为待显示文字的字形编码,即将字形信息从utf8编码转换为指定unicode编码,如utf16编码。该指定unicode编码也可根据需求设定,并非限制的。
[0104]
其中,所述根据预设的映射关系以及待显示文字的字形编码,从目标字体的字体字形映射表中获取待显示文字的字形路径具体包括:
[0105]
s441,获取待显示文字的字形编码,判断该目标字体的字体字形映射表是否存储了该待显示文字的字形编码;
[0106]
s442,若该目标字体的字体字形映射表存储了该待显示文字的字形编码,根据预设的映射关系,获取该待显示文字的字形路径。
[0107]
s443,若目标字体的字体字形映射表未存储该待显示文字的字形编码,则获取系统默认设置的缺失字以及该缺失字对应的字形路径;
[0108]
s444,根据所述缺失字的字形路径对所述缺失字进行渲染。
[0109]
也就是说,通过转换后的字形编码在该字体字形映射表中查找与该转换后的字形编码相同的预设的字形编码,一旦查找到,则根据预设映射关系,获取该转换后的字形编码对应的字形路径,进而根据该字形路径获取该目标字体对应的字形,并渲染。
[0110]
一旦该字体字形映射表中没有存储与该转换后的字形编码相同的预设的字形编码,则获取系统默认设置的缺失字,然后获取该缺失字的字形路径,从而根据该缺失字的字形路径得到该缺失字的字形。
[0111]
在进行渲染过程时,通过各目标字体的字形路径一一进行字形渲染,在渲染完成后进行样式调整和排版,从而显示目标样式的字幕。
[0112]
基于此,在渲染显示时,本发明采用了字幕提前绘制机制,包括:
[0113]
1.使用双指针控制前后两个字幕,在已绘制的字幕渲染后等待显示(结束)期间,即开始渲染下一个字幕,由于文本内容较少的字幕(占比90%以上)仅需要100ms内即可完成渲染,而字幕持续时间一般超过120ms(3帧),因此,除首个字幕外,将感受不到字幕渲染的延迟;
[0114]
2.字幕显示采用双缓冲机制,已渲染字幕的rgba数据拷入画布的缓冲中,但并不上屏,因此字幕显示的速度瓶颈仅仅取决于缓冲数据上屏的效率,而与字幕渲染无太大关系。
[0115]
这样,基于步骤s10-s40,本发明通过优化svg字库的字体文件的加载速度,显著提高了字幕模块的初始化工作,同时并不严重影响字幕的渲染速度;其次,通过构建完全基于
svg字库的字幕,不仅大大减少了字幕模块的控制逻辑,而且便于维护与移植;此外,完全适用于外字的动态增加,显著改善了字库的管理。
[0116]
在一个实施例中,本发明还提供一种基于svg字库的字幕渲染系统,如图2所示,所述系统100包括处理器11以及与所述处理器11连接的存储器22,图2仅示出了系统100的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
[0117]
所述存储器22在一些实施例中可以是所述系统100的内部存储单元,例如系统100的内存。所述存储器22在另一些实施例中也可以是所述系统100的外部存储设备,例如所述系统100上配备的插接式u盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器22还可以既包括所述系统100的内部存储单元也包括外部存储设备。所述存储器22用于存储安装于所述系统100的应用软件及各类数据,例如所述基于svg字库的字幕渲染程序代码等。所述存储器22还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器22上存储有基于svg字库的字幕渲染程序,该基于svg字库的字幕渲染程序可被处理器11所执行,从而实现本技术中基于svg字库的字幕渲染方法,具体如上述方法所述。
[0118]
所述处理器11在一些实施例中可以是一中央处理器(central processing unit,cpu),微处理器,手机基带处理器或其他数据处理芯片,用于运行所述存储器22中存储的程序代码或处理数据,例如执行所述基于svg字库的字幕渲染方法等,具体如上述方法所述。
[0119]
本领域技术人员可以理解,图2所示的仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的智能终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。所述处理器执行所述计算机程序时实现上述所述的基于svg字库的字幕渲染方法的步骤,具体如上所述。
[0120]
综上,本发明公开了一种基于svg字库的字幕渲染方法及系统,该方法包括获取待显示字幕,所述待显示字幕包括多个待显示文字以及每个所述待显示文字对应的目标字体;加载svg字库;针对多个目标字体中每一个目标字体,获取所述svg字库中该目标字体对应的字体字形映射表;根据字体字形映射表对所述待显示字幕进行渲染。本发明旨在通过优化svg字库的字体文件的加载速度,显著提高了字幕模块的初始化工作,同时并不严重影响字幕的渲染速度,并通过构建完全基于svg字库的字幕,大大便于维护与移植;此外,完全适用于外字的动态增加,显著改善了字库的管理。
[0121]
当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。
[0122]
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜