一种内容排版方法、装置、计算机设备及存储介质

文档序号:169320 发布日期:2021-10-29 浏览:14次 >En<

阅读说明:本技术 一种内容排版方法、装置、计算机设备及存储介质 (Content typesetting method and device, computer equipment and storage medium ) 是由 陶艺月 鲁聃 于 2021-08-13 设计创作,主要内容包括:本公开提供了一种内容排版方法、装置、计算机设备及存储介质,所述方法包括:获取待排版内容中的各文本元素和各所述文本元素的元素类型;基于各所述文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定各所述文本元素的渲染尺寸信息;基于各所述文本元素的渲染尺寸信息和排版样式设置信息,对所述待排版内容进行排版。本公开采用预设的活字模板和排版样式设置信息进行排版时,可以根据元素类型,确定各文本元素的渲染尺寸,避免了每次进行排版时,需要分别对每个文本元素的渲染尺寸进行测量的过程,从而提高了渲染尺寸的计算效率,进而提高了排版效率。(The present disclosure provides a content typesetting method, apparatus, computer device and storage medium, the method comprising: acquiring each text element in the content to be typeset and the element type of each text element; determining rendering size information of each text element based on the element type of each text element and the rendering size relationship between each element type indicated by a preset type template; and typesetting the content to be typeset based on the rendering size information and the typesetting style setting information of each text element. When the typesetting is carried out by adopting the preset type template and the typesetting style setting information, the rendering size of each text element can be determined according to the element type, and the process that the rendering size of each text element needs to be measured when the typesetting is carried out at every time is avoided, so that the computing efficiency of the rendering size is improved, and the typesetting efficiency is further improved.)

一种内容排版方法、装置、计算机设备及存储介质

技术领域

本公开涉及信息技术领域,具体而言,涉及一种内容排版方法、装置、计算机设备及存储介质。

背景技术

随着互联网技术的发展,人们的阅读习惯也渐渐发生了变化,越来越多的用户喜欢在终端设备上阅读书籍、新闻信息等内容。

阅读内容的排版速度直接关系到用户的阅读体验。目前的排版方式主要是在每次获取到待排版的阅读内容后,测量每个字符的大小,然后根据每个字符的大小进行排版。当阅读内容很多时,这种排版方式的排版效率较低,容易造成用户等待时间过长。

发明内容

本公开实施例至少提供一种内容排版方法、装置、计算机设备及存储介质。

第一方面,本公开实施例提供了一种内容排版方法,包括:

获取待排版内容中的各文本元素和各所述文本元素的元素类型;

基于各所述文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定各所述文本元素的渲染尺寸信息;

基于各所述文本元素的渲染尺寸信息和排版样式设置信息,对所述待排版内容进行排版。

一种可选的实施方式中,获取待排版内容中的各文本元素和各所述文本元素的元素类型,包括:

基于所述待排版内容中的内容单元指示字段,从所述待排版内容中,确定多个内容单元;所述多个内容单元包括至少一个标题单元和至少一个段落单元;

针对每个所述内容单元,在所述内容单元的内容形式为文本的情况下,确定所述内容单元中的各文本元素和各所述文本元素的元素类型。

一种可选的实施方式中,基于各所述文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定各所述文本元素的渲染尺寸信息,包括:

针对每个所述内容单元,基于所述排版样式设置信息中指示的所述内容单元中的预设元素类型对应的渲染尺寸信息、所述内容单元中各所述文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定所述内容单元中各所述文本元素的渲染尺寸信息;

其中,所述排版样式设置信息中包含标题单元中的预设元素类型对应的渲染尺寸信息,和段落单元中的预设元素类型对应的渲染尺寸信息。

一种可选的实施方式中,基于各所述文本元素的渲染尺寸信息和排版样式设置信息,对所述待排版内容进行排版,包括:

针对每个所述内容单元,基于确定的所述内容单元中各所述文本元素的渲染尺寸信息,确定所述内容单元中各所述文本元素的横向占位尺寸,以及基于所述排版样式设置信息中指示的行高,确定所述内容单元中各所述文本元素的竖向占位尺寸;

基于各所述文本元素的横向占位尺寸,以及排版页面中整行的横向占位尺寸,确定所述内容单元在每行排布的各所述文本元素;

根据确定的所述内容单元在每行排布的各所述文本元素、各所述文本元素的竖向占位尺寸,以及所述排版样式设置信息中指示的排版类型、段落间距和行间距,对所述内容单元在至少一个排版页面进行排版。

一种可选的实施方式中,所述方法还包括:

在所述内容单元的内容形式为非文本的情况下,获取所述非文本的内容单元的原始尺寸信息,所述原始尺寸信息包括高度信息和宽度信息;

将所述高度信息作为所述非文本的内容单元的竖向占位尺寸,并将所述非文本的内容单元的横向占位尺寸配置为整行的横向占位尺寸;

基于所述排版样式设置信息中指示的排版类型和段落间距,以及所述竖向占位尺寸和横向占位尺寸,对所述非文本的内容单元进行排版。

一种可选的实施方式中,所述方法还包括:

针对任一文本元素,若在所述预设的活字模板中不存在所述任一文本元素的元素类型,则将所述预设的活字模板中存在的各元素类型中,对应的渲染尺寸最大的元素类型的渲染尺寸信息作为所述任一文本元素的渲染尺寸信息。

一种可选的实施方式中,所述方法还包括:

针对任一文本元素,若在所述预设的活字模板中不存在所述任一文本元素的元素类型,基于获取的待排版的各文本元素的原始尺寸信息,确定所述任一文本元素与存在于所述预设的活字模板中的元素类型下的其它文本元素之间的尺寸关系;

基于所述尺寸关系,更新所述预设的活字模板中所述任一文本元素对应的特殊元素类型与其它元素类型之间的渲染尺寸关系。

一种可选的实施方式中,基于各所述文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定各所述文本元素的渲染尺寸信息之前,还包括:

展示处于可编辑状态的所述预设的活字模板;

获取对所述预设的活字模板进行补充后得到的更新后的活字模板;所述更新后的活字模板中包括不存在于所述预设的活字模板中的特殊元素类型与其它元素类型之间的渲染尺寸关系;

所述基于各所述文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定各所述文本元素的渲染尺寸信息,包括:

基于所述待排版的各文本元素的元素类型、以及更新后的所述活字模板指示的各元素类型之间的渲染尺寸关系,确定待排版的各文本元素的渲染尺寸信息。

第二方面,本公开实施例还提供一种内容排版装置,包括:

第一获取模块,用于获取待排版内容中的各文本元素和各所述文本元素的元素类型;

第一确定模块,用于基于各所述文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定各所述文本元素的渲染尺寸信息;

第一排版模块,用于基于各所述文本元素的渲染尺寸信息和排版样式设置信息,对所述待排版内容进行排版。

第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

本公开实施例提供的一种内容排版方法、装置、计算机设备及存储介质,预设的活字模板中存储有各文本元素的元素类型的渲染尺寸关系,采用预设的活字模板和排版样式设置信息进行排版时,可以根据文本元素的元素类型,确定各文本元素的渲染尺寸信息,避免了每次进行排版时,需要分别对每个待排版的文本元素的渲染尺寸进行测量的过程,从而提高了渲染尺寸的计算效率,进而提高了排版效率。

本公开实施例提供的一种内容排版方法,还可以在确定待排版的各文本元素的渲染尺寸信息之前,对预设的活字模板中元素类型之间的渲染尺寸关系进行补充和更新,可以在排版过程中,提高渲染尺寸的计算效率,进而提高排版效率。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本公开实施例所提供的一种内容排版方法的流程图;

图2示出了本公开实施例所提供的另一种内容排版方法的流程图;

图3示出了本公开实施例所提供的一种内容排版装置的示意图;

图4示出了本公开实施例所提供的一种计算机设备的示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

目前的排版方式主要是在每次获取到待排版的阅读内容后,测量每个字符的大小,然后根据每个字符的大小进行排版。当阅读内容很多时,这种排版方式的排版效率较低,容易造成用户等待时间过长。

基于此,本公开提供了一种内容排版方法、装置、计算机设备及存储介质,获取待排版内容中的各文本元素和各文本元素的元素类型;基于各文本容元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定各文本元素的渲染尺寸信息;基于各文本元素的渲染尺寸信息和排版样式设置信息,对待排版内容进行排版。本公开采用预设的活字模板和排版样式设置信息进行排版时,可以根据元素类型,确定各文本元素的渲染尺寸信息,避免了每次进行排版时,需要分别对每个待排版内容元素的渲染尺寸进行测量的过程,从而提高了渲染尺寸的计算效率,进而提高了排版效率。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

为便于对本实施例进行理解,首先对本公开实施例所公开的一种内容排版方法进行详细介绍,本公开实施例所提供的内容排版方法通过客户端装载的前端代码实现,具体地,客户端可以提供网页视图(webview)容器,装载前端代码,前端代码在运行时执行本公开实施例所提供的内容排版方法。

本公开实施例提供的内容排版方法适用于设备终端打开阅读界面时,对阅读内容进行排版的场景。

下面以执行主体为终端设备为例对本公开实施例提供的内容排版方法加以说明。

参见图1所示,为本公开实施例提供的内容排版方法的流程图,所述方法包括S101~S103:

S101:获取待排版内容中的各文本元素和各所述文本元素的元素类型。

这里,待排版内容是用于在客户端的阅读界面上进行排版的内容。打开阅读界面时,可以从服务器获取待排版内容;待排版内容可以包括文本形式的内容和非文本形式的内容(例如图片、视频等)。在该步骤中主要是获取文本形式的内容,然后确定文本形式的内容中的各文本元素。

文本元素指的是文本形式的内容中最小的内容,比如一个文字。文本元素可以包括文字元素、数字元素和符号元素。其中,文字元素可以是任意语言类型的文字元素,例如汉字元素、英文字母元素、希腊字母元素等,其中字母元素可以包括大写字母元素和小写字母元素。数字元素可以包括阿拉伯数字元素、罗马数字元素等任意数字元素。符号元素可以包括标点符号元素、数学符号元素、单位符号元素、箭头符号元素以及其他任意的特殊符号元素等。

在排版过程中,可以将横向尺寸相同的文本元素作为一个元素类型,例如,每个汉字渲染出来的尺寸是相同的,那么可以将汉字作为一个元素类型。

考虑到在排版过程中,不同的文本元素渲染出来的横向尺寸不一定都是相同的,例如英文字母“w”渲染出的横向尺寸要比英文字母“f”渲染出的横向尺寸大,并且同一个英文字母的大写字母渲染出的横向尺寸要比小写字母渲染出的横向尺寸大。进一步地考虑到现有文字元素中的字母元素、数字元素和符号元素的个数有限,将每个字母(区分大写和小写)、每个数字和每个符号分别看作一个元素类型并不会严重增加计算量,而且便于对元素类型进行划分,因此,在一种实施方式中,可以分别将每个字母、每个数字和每个符号看作一个元素类型,例如,0、1、2、3、4、5、6、7、8、9可以看作是10个元素类型的文本元素。

如前所述,待排版内容中还包括非文本形式的内容,针对非文本形式的内容,一张图片、一段视频、一个组件等都可以作为一个非文本元素。

在本公开实施例中,待排版内容可以是一篇完整的内容,例如一篇小说,因此待排版内容中可以包含标题和段落。而在通常情况下,标题和段落的渲染尺寸是不同的,例如标题中文本内容的渲染尺寸要大于段落中文本内容的渲染尺寸。因此在一种实施方式中,可以基于待排版内容中的内容单元指示字段,从待排版内容中,确定多个内容单元多个内容单元包括至少一个标题单元和至少一个段落单元,然后针对每个内容单元,在内容单元的内容形式为文本的情况下,确定内容单元中的各文本元素和各文本元素的元素类型。

其中,内容单元指示字段指的是用于指示待排版内容中的各个内容单元以及各个内容单元类型的字段信息。例如在待排版内容中的某些内容元素面前标注有字段“content”,那么字段“content”可以指示这些内容元素为一个内容单元。如果在某个内容单元的结尾处标注有字段“type‘paragraph’”,那么字段“type‘paragraph’”可以指示该内容单元为段落单元。

内容单元指示字段可以是在待排版内容中提前标注好的,从服务器获取到的待排版内容中可以包含内容单元指示字段,根据内容单元指示字段可以确定出待排版内容中包含的内容单元。

根据内容单元指示字段,可以确定出待排版内容中包含的多个文本形式和/或非文本形式的内容单元。并且通常情况下,内容单元中的标题单元是文本形式的内容单元,段落单元是文本形式和/或非文本形式的内容单元。

在获取到各文本元素以及各文本元素的元素类型之后,可以依次执行确定各文本元素的渲染尺寸信息的过程以及对文本形式的内容进行排版的过程,也就是S102和S103的步骤,而针对待排版内容中的非文本形式的内容的排版过程将在后文详述。

S102:基于各所述文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定各所述文本元素的渲染尺寸信息。

在本公开实施例中,预设的活字模板可以是在执行S102之前,预先集成的多个预设文本元素的元素类型(不一定包含有待排版内容中的各文本元素对应的元素类型)以及各元素类型的渲染尺寸信息的信息模板。活字模板中尽可能多地集成了各种元素类型的渲染尺寸信息,便于在实际排版时可以更全面地确定出待排版的各文本元素的渲染尺寸信息。这里,活字模板中各元素类型的渲染尺寸并不必然代表实际渲染尺寸信息,活字模板中各元素类型的渲染尺寸代表了各个元素类型之间的相对渲染尺寸,也就是渲染尺寸关系。在实际渲染过程中,可以根据活字模板中各元素类型的渲染尺寸信息进行渲染,也可以从活字模板中选择目标元素类型,以预设的渲染尺寸信息对目标元素类型的文本元素进行渲染,然后按照目标元素类型与其他元素类型的渲染尺寸关系,确定其他元素类型的文本元素的渲染尺寸信息。表一示出了一种活字模板。

表一

元素类型 a b f …… + @ ……
渲染尺寸 19 11 11 6 …… 12 20 17 ……

在该表中,示出了多种元素类型以及各元素类型的渲染尺寸信息,渲染尺寸的单位为像素(Pixel,简称px)。例如,元素类型为“字”的渲染尺寸为19px,元素类型为字母“a”的渲染尺寸为11px,元素类型为字母“f”的渲染尺寸为11px等。

通过上述各元素类型的渲染尺寸,可以得出元素类型“字”与元素类型“a”的渲染尺寸比例为19:11,元素类型“字”与元素类型“f”的渲染尺寸比例为19:6,元素类型“a”与元素类型“f”的渲染尺寸比例为11:6等。

这里需要说明的是,在实际排版中,并不必须按照活字模板中各元素类型的渲染尺寸信息进行渲染,可以给出其中任意一个元素类型的实际渲染尺寸信息,然后按照确定出的任意两个元素类型之间的渲染尺寸关系,确定出其他元素类型的实际渲染尺寸信息,最后按照各元素类型的实际渲染尺寸信息进行渲染。

比如,在实际渲染过程中,当以19px的渲染尺寸渲染元素类型“字”的文本元素时,可以确定出元素类型“a”的实际渲染尺寸为11px、元素类型“f”的实际渲染尺寸为6px;当以39px的渲染元素类型“字”的文本元素时,可以确定出元素类型“a”的实际渲染尺寸为22px、元素类型“f”的实际渲染尺寸为12px等。

如前所述,在排版过程中,标题单元的文本元素和段落单元的文本元素的渲染尺寸可能是不同的,因此这里可以针对每个内容单元,基于排版样式设置信息中指示的内容单元中的预设元素类型对应的渲染尺寸信息、内容单元中各文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定内容单元中各文本内容元素的渲染尺寸信息;其中,排版样式设置信息中包含标题单元中的预设元素类型对应的渲染尺寸信息,和段落单元中的预设元素类型对应的渲染尺寸信息。

在确定标题单元中各个文本元素的渲染尺寸信息时,比如,排版样式设置信息中指示的标题单元中的预设元素类型对应的渲染尺寸信息为元素类型“字”的渲染尺寸信息(可能与活字模板中元素类型“字”的渲染尺寸信息不同),此时,可以根据排版样式设置信息中指示的标题单元中的元素类型“字”的渲染尺寸信息,对标题单元中元素类型“字”的文本元素进行渲染,并且可以根据元素类型“字”的渲染尺寸信息、活字模板中元素类型“字”与其他元素类型的渲染尺寸关系,确定标题单元中的其他元素类型的渲染尺寸信息。

具体如,当排版样式设置信息中指示标题单元中的元素类型“字”的渲染尺寸信息为24px,表一中活字模板中元素类型“字”的渲染尺寸信息为19px,此时可以按照24px对元素类型“字”的文本元素进行渲染,并且根据表一中活字模板中元素类型“字”与其他元素类型的渲染尺寸关系,则可以确定元素类型为字母“a”的渲染尺寸信息为24*11/19px,元素类型为字母“f”的渲染尺寸信息为24*6/19px等。

确定段落单元中各个文本元素的渲染尺寸信息的过程与确定标题单元中各个文本元素的渲染尺寸信息的过程类似,这里不再赘述。

通过上述排版样式设置信息中包含标题单元中的预设元素类型对应的渲染尺寸信息,和段落单元中的预设元素类型对应的渲染尺寸信息,实现分别对标题单元中的和段落单元中的文本元素进行渲染,从而实现内容排版的多样性。

S103:基于各所述文本元素的渲染尺寸信息和排版样式设置信息,对所述待排版内容进行排版。

在对待排版内容进行排版时除了要考虑文本元素的横向占位尺寸,还要考虑文本元素的竖向占位尺寸。其中,横向占位尺寸指的是在排版页面的横向上所占的尺寸信息,竖向占位尺寸指的是在排版页面的竖向上所占的尺寸信息。

在一种实施方式中,可以针对每个内容单元,基于确定的内容单元中各文本元素的渲染尺寸信息,确定内容单元中各文本元素的横向占位尺寸,以及基于排版样式设置信息中指示的行高,确定内容单元中各文本元素的竖向占位尺寸;基于各文本元素的横向占位尺寸,以及排版页面中整行的横向占位尺寸,确定内容单元在每行排布的各文本元素;根据确定的内容单元在每行排布的各文本元素、各文本元素的竖向占位尺寸,以及排版样式设置信息中指示的排版类型、段落间距和行间距,对内容单元在至少一个排版页面进行排版。

这里,渲染尺寸信息包括文本元素的宽度信息,在本公开实施例中,可以默认两个文本元素的间距为零,因此针对每个内容单元,可以基于确定的内容单元中各文本元素的渲染尺寸信息,确定内容单元中各文本元素的横向占位尺寸。

针对每个文本元素,都可以有对应的原始宽高比,在确定出每个文本元素的渲染尺寸信息(也就是宽度信息)之后,可以根据原始宽高比确定出该文本元素的自身高度信息,但是为了更好地进行排版,在实际过程中,并不一定要采用该文本元素的自身高度信息进行排版,针对每个内容单元,可以根据排版样式设置信息中指示的行高,确定内容单元中各文本元素的竖向占位尺寸,然后按照竖向占位尺寸进行排版。在同一个内容单元中,不同的文本元素对应的竖向占位尺寸可以是相同的。

进一步地,为了使得排版效果更好,竖向占位尺寸可以是根据排版样式设置信息中指示的行高和预设填充间距确定的,其中,竖向占位尺寸等于行高与预设填充间距之和,预设填充间距可以包括上填充间距和下填充间距。例如,根据元素类型“字”的渲染尺寸信息(横向占位尺寸)和预设的原始宽高比,确定出元素类型“字”的自身高度是14px,排版样式设置信息中指示元素类型“字”的行高为16px,预设的上填充间距和下填充间距分别为2px,那么实际渲染出来的元素类型“字”的竖向占位尺寸就是20px。

接下来,基于各文本元素的横向占位尺寸,以及排版页面中整行的横向占位尺寸,可以确定内容单元在每行排布的各文本元素。在每行的末尾,如果横向占位尺寸不足以容纳待排版的文本元素时,可以将待排版的文本元素排在下一行或者是调整该行中各个已排版的文本元素的间距。

其中,排版类型指的是切换内容的方式,具体可以包括横向切换和竖向切换,排版类型可以是预先设置的,可以与内容单元无关。

针对横向切换的排版类型,涉及分页的过程,具体可以根据预先制定好的分页规则进行分页。

具体地,针对横向切换的排版类型,在进行排版时,可以进行行排版和页排版。在进行行排版和页排版时,可以对已经排版的行和页进行缓存。其中行缓存指的是存储该行中已排版的文本元素以及该行在该页的行数等。页缓存指的是存储在该页中已排版的文本元素、该页中已排版的行数、该页的页码数等。

在对文本元素进行行排版时,针对每个当前要排版的文本元素,可以判断当前要排版的文本元素是否为其所在的段落的第一个文本元素,如果是,则将当前要排版的文本元素排在新的一行。如果不是,则可以针对每一行,基于该行已经排版的文本元素(可以从行缓存中获取到)的横向占位尺寸、当前要排版的文本元素的横向占位尺寸以及整行的横向占位尺寸,可以判断当前要排版的文本元素是否会在该行溢出。若不会溢出,则可以将当前要排版的文本元素排在该行;若会溢出,则可以将当前要排版的文本元素排在新的一行,并对该文本元素进行行缓存。

在对文本元素进行页排版时,如果,当前要排版的文本元素需要排在新的一行,此时可以根据各行已经排版的文本元素的竖向占位信息以及排版页面的竖向占位信息,判断将当前要排版的文本元素排在新的一行后,该页是否会溢出。若不会溢出,则可以将当前要排版的文本元素排在该页中新的一行;若会溢出,则可以将当前要排版的文本元素排在下一页中的第一行,并对该文本元素进行页缓存和行缓存。

而竖向切换内容的排版类型,不涉及分页的过程,因此可以仅根据行排列的规则进行排版,这里不再赘述。

在使用活字模板对文本元素进行排版时,可能会遇到活字模板中该文本元素的元素类型的情况,在一种可能的实施方式中,可以针对待排版的任一文本元素,若在预设的活字模板中不存在任一文本元素的元素类型,则可以将预设的活字模板中存在的各元素类型中,对应的渲染尺寸最大的目标元素类型的渲染尺寸信息作为任一文本元素的渲染尺寸信息。

在该实施方式中,通常情况下,元素类型不存在于预设的活字模板中的任一文本元素的渲染尺寸信息不会超过渲染尺寸最大的目标元素类型的渲染尺寸信息,因此当使用对应的渲染尺寸最大的目标元素类型的渲染尺寸信息作为该文本元素的渲染尺寸信息时,该文本元素就不会在排版页面溢出,不会影响排版页面的观感。

在特殊情况下,当该文本元素的渲染尺寸信息超出渲染尺寸最大的目标元素类型的渲染尺寸信息时,还可以采用自定义的方式设置该文本元素的渲染尺寸信息。这里,可以向用户展示处于可编辑状态的预设的活字模板,然后获取用户对活字模板进行自定义设置得到的更新后的活字模板,更新后的活字模板中可以包括用户对元素类型不存在于预设的活字模板中的任一文本元素进行自定义设置的渲染尺寸信息,最后,根据更新后的活字模板对该任一文本元素进行排版。

在活字模板中不存在任一文本元素的元素类型时,在一种可能的实施方式中,还可以基于获取的待排版的各文本元素的原始尺寸信息,确定任一文本元素与其它存在于预设的活字模板中的元素类型下的内容元素之间的尺寸关系;基于尺寸关系,更新预设的活字模板中任一文本元素对应的特殊元素类型与其它元素类型之间的渲染尺寸关系。

在该实施方式中,可以采用画布的测量方式,测量出待排版的各文本元素的原始尺寸信息,然后基于该原始尺寸信息,确定待排版的各文本元素的原始尺寸信息之间的尺寸关系,进而确定任一文本元素与其它存在于预设的活字模板中的元素类型下的内容元素之间的尺寸关系。确定好尺寸关系之后,就可以将任一文本元素对应的特殊元素类型与其它元素类型之间的渲染尺寸关系添加到预设的活字模板中,从而更新预设的活字模板。

当活字模板更新之后,则可以利用更新后的活字模板确定待排版的各文本元素的渲染尺寸信息,因此在一种可能的实施方式中,执行步骤S102之前,可以展示处于可编辑状态的预设的活字模板;然后获取对预设的活字模板进行补充后得到的更新后的活字模板;更新后的活字模板中包括不存在于预设的活字模板中的特殊元素类型与其它元素类型之间的渲染尺寸关系。

更新后的活字模板可以是用户对活字模板进行自定义设置得到的更新后的活字模板,也可以是基于任一文本元素与其它存在于预设的活字模板中的元素类型下的文本元素之间的尺寸关系,对预设的活字模板进行补充后得到的更新后的活字模板。更新活字模板的过程如前所述。更新活字模板的过程可以在客户端或者网页端进行离屏计算并做本地存储,不影响本公开实施例的计算过程以及用户的实际体验。

最后基于待排版的各文本元素的元素类型、以及更新后的活字模板指示的各元素类型之间的渲染尺寸关系,就可以确定待排版的各文本元素的渲染尺寸信息。该过程与前述S102的过程相同,这里不再赘述。

前文已经介绍了针对文本形式的内容进行排版的过程,而针对非文本形式的内容,也就是在内容单元的内容形式为非文本的情况下,在一种可能的实施方式中,可以获取非文本的内容单元的原始尺寸信息,原始尺寸信息包括高度信息和宽度信息;将高度信息作为非文本的内容单元的竖向占位尺寸,并将非文本的内容单元的横向占位尺寸配置为整行的横向占位尺寸;基于排版样式设置信息中指示的排版类型和段落间距,以及竖向占位尺寸和横向占位尺寸,对非文本的内容单元进行排版。

其中非文本的内容单元的原始尺寸信息可以是从服务端获取待排版内容时获取到的。根据原始尺寸信息可以确定非文本形式的内容单元的竖向占位尺寸和横向占位尺寸,其中将非文本形式的内容单元的横向占位尺寸配置为整行的横向占位尺寸,也就是将一个非文本形式的内容单元排版在一行中。这里的排版类型与前述的排版类型相同,这里不再赘述。在具体实施中,非文本形式的内容单元可以作为一个段落进行排版,也可以与文本形式的内容单元结合作为一个段落进行排版。

由于本公开实施例提供的内容排版方法可以对已排版的文本元素进行行缓存和页缓存,在一种可能的实施方式中,当本次获取的待排版内容与上次排版时获取的排版内容完全相同时,可以使用上一次排版时的行缓存和页缓存对本次待排版内容进行排版;当本次获取的待排版内容与上次排版时获取的排版内容不完全相同时,可以按照本公开实施例提供的内容排版方法对本次待排版内容进行排版,并且对上次排版时的行缓存和页缓存进行删除,同时保留本次的行缓存和页缓存。

为了详细说明本公开实施例提供的内容排版方法,下面对小说进行排版的过程为例,对内容排版方法进行阐述,具体可以参见图2。

这里,进行排版的小说可以展示在客户端的视图界面中。在该方法执行之前,客户端可以从服务器获取待排版内容,也就是待排版的小说。

根据待排版内容中的内容单元指示字段,获取标题单元、段落单元等,例如待排版内容中包括[{congtent:“xxxxxx”,type:“paragraph”,},{content:“xxxxxx”,type:“paragraph”,}],根据内容单元指示字段“content”、“type:paragraph”,可以确定出待排版内容中包括两个段落单元。

然后针对每个内容单元,判断是否为文本形式的内容,在确定为文本形式的内容的情况下,获取内容单元的文本元素以及文本元素的元素类型。然后根据文本元素的元素类型、活字模板中指示的各元素类型之间的渲染尺寸关系,确定文本元素的渲染尺寸信息。在确定为非文本形式的内容单元(例如图片)的情况下,获取非文本内容的原始尺寸信息,根据原始尺寸信息中高度信息作为非文本的内容单元的竖向占位尺寸,并将非文本的内容单元的横向占位尺寸配置为整行的横向占位尺寸。

文本元素的渲染尺寸信息指的是文本元素的宽度信息,这里默认相邻文本元素之间的间距为零,因此根据文本元素的渲染尺寸信息,可以确定文本元素的横向占位尺寸。

在根据文本元素的横向占位尺寸进行渲染时,可以根据各文本元素的横向占位尺寸,以及排版页面中整行的横向占位尺寸,确定当前行是否溢出,如果溢出,则输出该行中已排版的文本元素以及该行的行数等信息,也就是输出行缓存,并将待排版的文本元素添加到下一行,以及判断当前内容单元是否结束;如果没有溢出,则将待排版的文本元素添加到该行,并更新该行中已排版的文本元素,也就是更新行缓存,以及判断当前内容单元是否结束。

在当前内容单元未结束的情况下,重复执行获取内容单元的文本元素以及文本元素的元素类型的步骤;在当前内容单元结束的情况下,根据行缓存、根据排版设置信息中指示的行高确定的文本元素的竖向占位尺寸,判断当前页是否溢出。当内容单元包括非文本形式的内容单元时,则可以根据行缓存、根据排版设置信息中指示的行高确定的文本元素的竖向占位尺寸以及非文本形式的内容单元的竖向占位信息,判断当前页是否溢出。

其中,根据排版设置信息中指示的行高确定的文本元素的竖向占位尺寸可以参照前述S103的过程,这里不再赘述。

如果当前页溢出时,可以输出当前页中已排版的文本元素、已排版的非文本形式的内容单元、当前页中已排版的行数、当前页的页码数,也就是输出页缓存,并将待排版的内容添加至下一页,以及判断排版内容是否结束;如果当前页未溢出时,可以将待排版的内容添加至当前页,并更新当前页中已排版的文本元素或非文本形式的内容单元,也就是更新页缓存,以及判断排版内容是否结束。

在排版内容未结束的情况下,重复执行获取单元内容的过程;在排版内容结束的情况下,说明排版结束,可以输出页缓存,以便于在下次获取到相同的排版内容时,直接根据页缓存进行排版。

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一发明构思,本公开实施例中还提供了与内容排版方法对应的内容排版装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述内容排版方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参照图3所示,为本公开实施例提供的一种内容排版装置的架构示意图,所述装置包括:第一获取模块301、第一确定模块302、第一排版模块303;其中,

第一获取模块301,用于获取待排版内容中的各文本元素和各所述文本元素的元素类型;

第一确定模块302,用于基于各所述文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定各所述文本元素的渲染尺寸信息;

第一排版模块303,用于基于各所述文本元素的渲染尺寸信息和排版样式设置信息,对所述待排版内容进行排版。

一种可选的实施方式中,第一获取模块301,具体用于:

基于所述待排版内容中的内容单元指示字段,从所述待排版内容中,确定多个内容单元;所述多个内容单元包括至少一个标题单元和至少一个段落单元;

针对每个所述内容单元,在所述内容单元的内容形式为文本的情况下,确定所述内容单元中的各文本元素和各所述文本元素的元素类型。

一种可选的实施方式中,第一确定模块302,具体用于:

针对每个所述内容单元,基于所述排版样式设置信息中指示的所述内容单元中的预设元素类型对应的渲染尺寸信息、所述内容单元中各所述文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定所述内容单元中各所述文本元素的渲染尺寸信息;

其中,所述排版样式设置信息中包含标题单元中的预设元素类型对应的渲染尺寸信息,和段落单元中的预设元素类型对应的渲染尺寸信息。

一种可选的实施方式中,第一排版模块303,具体用于:

针对每个所述内容单元,基于确定的所述内容单元中各所述文本元素的渲染尺寸信息,确定所述内容单元中各所述文本元素的横向占位尺寸,以及基于所述排版样式设置信息中指示的行高,确定所述内容单元中各所述文本元素的竖向占位尺寸;

基于各所述文本元素的横向占位尺寸,以及排版页面中整行的横向占位尺寸,确定所述内容单元在每行排布的各所述文本元素;

根据确定的所述内容单元在每行排布的各所述文本元素、各所述文本元素的竖向占位尺寸,以及所述排版样式设置信息中指示的排版类型、段落间距和行间距,对所述内容单元在至少一个排版页面进行排版。

一种可选的实施方式中,所述装置还包括:

第二获取模块,用于在所述内容单元的内容形式为非文本的情况下,获取所述非文本的内容单元的原始尺寸信息,所述原始尺寸信息包括高度信息和宽度信息;

配置模块,用于将所述高度信息作为所述非文本的内容单元的竖向占位尺寸,并将所述非文本的内容单元的横向占位尺寸配置为整行的横向占位尺寸;

第二排版模块,用于基于所述排版样式设置信息中指示的排版类型和段落间距,以及所述竖向占位尺寸和横向占位尺寸,对所述非文本的内容单元进行排版。

一种可选的实施方式中,所述装置还包括:

存储模块,用于针对任一文本元素,若在所述预设的活字模板中不存在所述任一文本元素的元素类型,则将所述预设的活字模板中存在的各元素类型中,对应的渲染尺寸最大的元素类型的渲染尺寸信息作为所述任一文本元素的渲染尺寸信息。

一种可选的实施方式中,所述装置还包括:

第二确定模块,用于针对任一文本元素,若在所述预设的活字模板中不存在所述任一文本元素的元素类型,基于获取的待排版的各文本元素的原始尺寸信息,确定所述任一文本元素与存在于所述预设的活字模板中的元素类型下的其它文本元素之间的尺寸关系;

更新模块,用于基于所述尺寸关系,更新所述预设的活字模板中所述任一文本元素对应的特殊元素类型与其它元素类型之间的渲染尺寸关系。

一种可选的实施方式中,所述装置还包括:

展示模块,用于展示处于可编辑状态的所述预设的活字模板;

第三获取模块,用于获取对所述预设的活字模板进行补充后得到的更新后的活字模板;所述更新后的活字模板中包括不存在于所述预设的活字模板中的特殊元素类型与其它元素类型之间的渲染尺寸关系;

第一确定模块302,具体用于基于所述待排版的各文本元素的元素类型、以及更新后的所述活字模板指示的各元素类型之间的渲染尺寸关系,确定待排版的各文本元素的渲染尺寸信息。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图4所示,为本公开实施例提供的计算机设备400的结构示意图,包括处理器401、存储器402、和总线403。其中,存储器402用于存储执行指令,包括内存4021和外部存储器4022;这里的内存4021也称内存储器,用于暂时存放处理器401中的运算数据,以及与硬盘等外部存储器4022交换的数据,处理器401通过内存4021与外部存储器4022进行数据交换,当计算机设备400运行时,处理器401与存储器402之间通过总线403通信,使得处理器401在执行以下指令:

获取待排版内容中的各文本元素和各所述文本元素的元素类型;

基于各所述文本元素的元素类型、以及预设的活字模板指示的各元素类型之间的渲染尺寸关系,确定各所述文本元素的渲染尺寸信息;

基于各所述文本元素的渲染尺寸信息和排版样式设置信息,对所述待排版内容进行排版。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的内容排版方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

本公开实施例还提供一种计算机程序产品,该计算机产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的内容排版方法的步骤,具体可参见上述方法实施例,在此不再赘述。

其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种HTML编辑方法、装置、电子设备及计算机可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!