文本的排版方法和装置、电子设备及存储介质

文档序号:1831764 发布日期:2021-11-12 浏览:20次 >En<

阅读说明:本技术 文本的排版方法和装置、电子设备及存储介质 (Text typesetting method and device, electronic equipment and storage medium ) 是由 曹宗华 刘欢 王文锋 于 2021-08-26 设计创作,主要内容包括:本公开涉及文本的排版方法和装置、电子设备及存储介质,涉及计算机技术领域。该方法包括:确定协作文档中目标文本使用的原始字体;确定第一终端是否支持原始字体,第一终端是协作文档的多个协作终端中的一个;第一终端在第一终端不支持原始字体的情况下,获取原始字体的字符尺寸数据;第一终端在获取原始字体的字符尺寸数据成功的情况下,以第一终端支持的第一字体显示目标文本且根据原始字体的字符尺寸数据对目标文本进行排版。(The disclosure relates to a text typesetting method and device, electronic equipment and a storage medium, and relates to the technical field of computers. The method comprises the following steps: determining an original font used by a target text in a collaborative document; determining whether a first terminal supports an original font, the first terminal being one of a plurality of cooperating terminals of a collaborative document; the method comprises the steps that a first terminal obtains character size data of an original font under the condition that the first terminal does not support the original font; and under the condition that the first terminal successfully obtains the character size data of the original font, displaying the target text in the first font supported by the first terminal and typesetting the target text according to the character size data of the original font.)

文本的排版方法和装置、电子设备及存储介质

技术领域

本公开涉及计算机技术领域,更具体地,涉及文本的排版方法和装置、电子设备及存储介质。

背景技术

现在越来越多的应用推出了在线协作文档功能,例如在线文档多人编辑、查看功能。在这种情况下,当一个或多个用户在不同设备中查看同一份在线文档时,如果其缺失某种字体可能会导致该文档呈现出的排版方式存在较大的差异,影响文档的美观和阅读体验一致性。目前一般采用的做法是在当前环境下安装对应的字体,来达到解决排版问题的目的。但这种方法成本和门槛较高,需要搜索、下载、安装字体,并且字体可能还需要单独付费,比较难进行大面积推广和应用。因此,有必要提出一种新的文本的排版方法。

发明内容

本公开实施例的一个目的是提供一种文本排版的新的技术方案,以在缺失字体的情况下保持在线协作文档的排版一致性。

根据本公开的第一方面,提供了一种文本的排版方法。所述方法包括:确定协作文档中目标文本使用的原始字体;

确定第一终端是否支持所述原始字体,所述第一终端是所述协作文档的多个协作终端中的一个;

所述第一终端在所述第一终端不支持所述原始字体的情况下,获取所述原始字体的字符尺寸数据;

所述第一终端在获取所述原始字体的字符尺寸数据成功的情况下,以所述第一终端支持的第一字体显示所述目标文本且根据所述原始字体的字符尺寸数据对所述目标文本进行排版。

可选地,所述第一终端获取所述原始字体的字符尺寸数据,包括:

获取另一个协作终端在多个协作终端之间分享的所述原始字体的字符尺寸数据。

可选地,所述第一终端获取所述原始字体的字符尺寸数据,包括:

在第一终端的本地缓存中查询所述原始字体的字符尺寸数据;或者,

从第二终端处获取所述原始字体的字符尺寸数据,所述第二终端是支持所述原始字体的协作终端。

可选地,所述第一终端获取所述原始字体的字符尺寸数据,包括:

在第一终端的本地缓存中查询所述原始字体的字符尺寸数据;

在查询不到所述原始字体的字符尺寸数据的情况下,从第二终端处获取所述原始字体的字符尺寸数据,所述第二终端是支持所述原始字体的协作终端。

可选地,所述从第二终端处获取所述原始字体的字符尺寸数据,包括:

在多个协作终端之间广播字体查询请求以确定第二终端;

向所述第二终端发送字体协助请求,以从所述第二终端处获取所述原始字体的字符尺寸数据。

可选地,所述在多个协作终端之间广播字体查询请求以确定第二终端,包括:

在多个协作终端之间广播字体查询请求以确定支持所述原始字体的协作终端,将支持所述原始字体的协作终端作为候选终端;

在候选终端的数量等于1的情况下,将所述候选终端确定为第二终端;

在候选终端的数量大于1的情况下,将满足预设条件的候选终端确定为第二终端。

可选地,所述第一终端在获取所述原始字体的字符尺寸数据失败的情况下,所述方法还包括:

确定第一终端是否支持目标字体,所述目标字体是多个协作终端在多个协作终端均不支持所述原始字体的情况下,基于预设协商机制在候选字体中确定出的一种字体,所述候选字体为任一个协作终端支持的字体;

所述第一终端在支持所述目标字体的情况下,以所述目标字体显示所述目标文本;

所述第一终端在不支持所述目标字体的情况下,从第三终端处获取所述目标字体的字符尺寸数据,以所述目标字体显示所述目标文本并且根据所述目标字体的字符尺寸数据对所述目标文本进行排版,所述第三终端是支持所述目标字体的协作终端。

可选地,所述多个协作终端在多个协作终端均不支持所述原始字体的情况下,基于预设协商机制在候选字体中确定出目标字体,包括:

将第一个发出字体查询请求的协作终端所支持的字体确定为目标字体;或者,

确定每一种候选字体的分数,将分数最高的候选字体确定为目标字体,所述候选字体的分数为支持所述候选字体的协作终端的数量。

可选地,所述方法还包括:

所述第一终端在支持所述原始字体的情况下,以所述原始字体显示所述目标文本并且向第四终端发送所述原始字体的字符尺寸数据,所述第四终端是不支持所述原始字体的协作终端。

可选地,所述原始字体的字符尺寸数据包括所述原始字体的字符宽度和所述原始字体的字符高度;

所述第一终端根据所述原始字体的字符尺寸数据对所述目标文本进行排版,包括:

确定所述目标文本的排版方向;

在所述目标文本的排版方向为横向排版的情况下,确定第一差值,所述第一差值为所述原始字体的字符宽度和所述第一字体的字符宽度的差值;在所述第一差值为正值的情况下,调整所述目标文本的字符的横坐标值;在所述第一差值为负值的情况下,对所述目标文本的字符进行缩小处理;

在所述目标文本的排版方向为竖向排版的情况下,确定第二差值,所述第二差值为所述原始字体的字符高度和所述第一字体的字符高度的差值;在所述第二差值为正值的情况下,调整所述目标文本的字符的纵坐标值;在所述第二差值为负值的情况下,对所述目标文本的字符进行缩小处理。

可选地,所述原始字体的字符尺寸数据包括所述原始字体的字符宽度和所述原始字体的字符高度;

所述第一终端根据所述原始字体的字符尺寸数据对所述目标文本进行排版,包括:

确定所述目标文本的排版方向;

在所述目标文本的排版方向为横向排版的情况下,对所述目标文本的字符进行第一缩放处理以使得所述目标文本的字符宽度和所述原始字体的字符宽度一致;

在所述目标文本的排版方向为竖向排版的情况下,对所述目标文本的字符进行第二缩放处理以使得所述目标文本的字符高度和所述原始字体的字符高度一致。

可选地,所述原始字体的字符尺寸数据包括所述原始字体的字符宽度和所述原始字体的字符高度;

所述第一终端根据所述原始字体的字符尺寸数据对所述目标文本进行排版,包括:

确定所述目标文本的排版方向;

在所述目标文本的排版方向为横向排版的情况下,将所述目标文本的字号调整为第一字号,所述第一字号是字符宽度与所述原始字体的字符宽度最接近的字号;在将所述目标文本的字号调整为第一字号后,确定第一差值,所述第一差值为所述原始字体的字符宽度和所述第一字体的字符宽度的差值;在所述第一差值为正值的情况下,调整所述目标文本的字符的横坐标值;在所述第一差值为负值的情况下,对所述目标文本的字符进行缩小处理;

在所述目标文本的排版方向为竖向排版的情况下,将所述目标文本的字号调整为第二字号,所述第二字号是字符高度与所述原始字体的字符高度最接近的字号;在将所述目标文本的字号调整为第二字号后,确定第二差值,所述第二差值为所述原始字体的字符高度和所述第一字体的字符高度的差值;在所述第二差值为正值的情况下,调整所述目标文本的字符的纵坐标值;在所述第二差值为负值的情况下,对所述目标文本的字符进行缩小处理。

根据本公开的第二方面,提供了一种文本的排版装置。所述装置包括:

第一确定模块,用于确定协作文档中目标文本使用的原始字体;

第二确定光模块,用于确定第一终端是否支持所述原始字体,所述第一终端是所述协作文档的多个协作终端中的一个;

获取模块,用于在所述第一终端不支持所述原始字体的情况下,获取所述原始字体的字符尺寸数据;

排版模块,用于在获取所述原始字体的字符尺寸数据成功的情况下,以所述第一终端支持的第一字体显示所述目标文本并且根据所述原始字体的字符尺寸数据对所述目标文本进行排版。

根据本公开的第三方面,还提供了一种电子设备。所述电子设备包括存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序,以实现本公开第一方面的方法。

根据本公开的第四方面,还提供了一种计算机可读存储介质。所述计算机可读存储介质上存储计算机程序,所述计算机程序在被处理器执行时实现本公开的第一方面的方法。

本公开实施例的一个有益效果在于,对于在线多人协作的协作文档,如果某个协作终端不支持协作文档中目标文本的原始字体,则可以使用其支持的第一字体来显示目标文本并且根据原始字体对应的字符尺寸数据对目标文本进行排版,使得该协作终端在缺失原始字体的情况下仍可以和其它协作终端保持排版一致性。本公开实施例提供的文本的排版方法,适用于在线文档多人编辑。

通过以下参照附图对本公开的示例性实施例的详细描述,本公开实施例的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开实施例的原理。

图1为本公开实施例提供的在线文档协作系统的示意图;

图2为本公开实施例提供的文本的排版方法的方法流程图;

图3(a)和图3(b)为本公开实施例提供的字符尺寸数据的示意图;

图4是本公开实施例提供的文本的排版方法的示例图;

图5是根据本公开实施例的电子设备的示意图。

具体实施方式

现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

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

<文本的排版方法>

图1是本公开实施例提供的在线文档协作系统的框图。如图1所示,该在线文档协作系统包括多个终端设备,多个终端设备之间可以通过网络进行通信。

终端设备例如可以是安装有智能操作系统(例如安卓、IOS、Windows、Linux等系统)的电子设备,包括但不限于便携式电脑、台式计算机、手机、平板电脑等。终端设备的配置包括但不限于处理器1031、存储器1032、接口装置1033、通信装置1034、GPU(GraphicsProcessing Unit,图像处理器)1035、显示装置1036、输入装置1037、扬声器1038、麦克风1039、以及相机1030。处理器1031包括但不限于中央处理器CPU、微处理器MCU等。存储器1032包括但不限于ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1033包括但不限于USB接口、串行接口、并行接口等。通信装置1034例如能够进行有线通信或无线通信,具体地可以包括WiFi通信、蓝牙通信、2G/3G/4G/5G通信等。GPU1035用于对图像进行处理。显示装置1036包括但不限于液晶屏、触摸屏等。输入装置1037包括但不限于键盘、鼠标、触摸屏等。终端设备的配置也可以仅包括上述装置中的部分装置。

应用于本公开的一个实施例中,用户A可以通过一台终端设备提交协作文档,选取协作人员以启动在线多人协作功能。在此之后,所有被选取的协作人员和用户A可以使用各自的终端设备对该协作文档进行查看和协作编辑,这些终端设备即为该协作文档的协作终端。

应用于本公开的一个实施例中,在线多人协作功能基于目标应用实现,用户在目标应用提上交协作文档并且在目标应用上进行查看和协作编辑。在一个例子中,用户预先在目标应用上注册账户,用户使用终端设备打开目标应用并登录账户后就可以使用在线多人协作功能,在终端设备上运行的目标应用即为该协作文档的协作终端。

在一个例子中,该目标应用例如为文档编辑软件、即时通信软件、办公软件、浏览器等。

在一个例子中,该目标应用例如可以是原生应用、Web应用、混合应用、轻应用等。原生应用指的是能直接运行于当前操作系统的应用程序。Web应用指需要在浏览器中运行的网页应用。混合应用则是两者的结合,通常是一个原生应用内嵌了浏览器。轻应用是一种不需要下载安装即可使用的应用程序,用户可以即搜即用或者直接扫码使用。

在允许同一账户登录在多台终端设备的目标应用上的情况下,每一台终端设备可以被视为一个协作终端。也就是说,同一个账户的用户可以使用两台甚至更多的协作终端来完成对目标文本的查看、协作编辑。

图1所示的在线文档协作系统仅仅是说明性的并且绝不意味着对本公开实施例、其应用或使用的任何限制。本领域技术人员应当理解,尽管前面描述了终端设备的多个装置,但是,本公开实施例可以仅涉及其中的部分装置。例如,终端设备可以只涉及处理器、存储器、通信装置、输入装置、显示屏。本领域技术人员可以根据本公开实施例公开的方案设计指令。指令如何控制处理器进行操作,是本领域公知技术,故在此不再详细描述。

参见图2所示,本公开实施例提供了一种文本的排版方法,包括步骤S102-S108。该步骤S102-S108可以由第一终端实施,第一终端是协作文档的多个协作终端中的一个协作终端。

步骤S102、确定协作文档中目标文本使用的原始字体。

在本公开实施例中,目标文本可以是协作文档中的任一部分文本。在一个例子中,第一终端从协作文档中获取目标文本的原始字体信息,从而确定目标文本使用的原始字体。一般情况,该原始字体信息可以存储在协作文档的文档数据中。

步骤S104、确定第一终端是否支持原始字体。

在本公开实施例中,第一终端在确定目标文本使用的原始字体后,检查自身支持的全部字体中是否包括该原始字体,如果不包括,则确定第一终端不支持该原始字体。

第一终端支持的字体可以根据其安装的字体包确定。在一个例子中,如果第一终端安装了某种字体的字体包,说明第一终端支持该种字体。通常来说,终端设备或者应用的基础数据包中会预先安装有多种大众广为使用的字体包并且可以将其中一种字体设置为默认字体,如果用户想要使用一些小众特别的字体,则需要单独下载对应的字体包。

步骤S106、第一终端在第一终端不支持原始字体的情况下,获取原始字体的字符尺寸数据。

本公开实施例中所指的字符包括文字和符号,符号不限于标点符号、数字符号、数学符号、特殊符号、表情符号等等。

本公开实施例中,字体的字符尺寸数据指出包括字符的高度和宽度。原始字体的字符尺寸数据包括原始字体的字符宽度和原始字体的字符高度,是目标文本中在原始字体状态下的字符的宽度和高度。对于同一种字体,在同一字号下,不同的字符的尺寸可能被设计为相同的或者不同的。如果对于同一种字体,在同一字号下,其所有字符并不采用同一种尺寸,则建立字符和字符的宽度、高度的映射关系,将该映射关系作为字符尺寸数据,根据映射关系可以查找出每个字符的字符尺寸。

参见图3(a)和图3(b)所示,对于同一个汉字“早”,两种不同的字体在同一字号下,宽度和高度都是不同的,图3(b)所示的字体的宽度和高度都小于图3(a)的字体。

在一个例子中,字体的字符尺寸数据通过对字符进行尺寸测量获得。例如,在多个协作终端中,某个协作终端支持原始字体,则该协作终端可以原始字体显示目标文本,测量目标文本在原始字体下的字符的尺寸,从而得到原始字体的字符尺寸数据。

在又一实施例中,原始字体的原始字体信息中包括原始字体的字符尺寸数据。进一步的,可以从原始字体的原始字体信息中读取出原始字体的字符尺寸数据。

在一个例子中,第一终端获取另一个协作终端在多个协作终端之间分享的原始字体的字符尺寸数据。也就是说,基于在线多人协作关系,在第一终端不支持原始字体的情况下,如果第一终端之外的某个协作终端支持原始字体,该支持原始字体的协作终端可以在多个协作终端之间分享原始字体的字符尺寸数据,从而使得第一终端获得原始字体的尺寸数据。

在一个例子中,该分享原始字体的字符尺寸数据的协作终端为第二终端,第二终端支持原始字体。在多个协作终端中确定第二终端的过程可以参见后续步骤S202。

在一个例子中,第一终端获取原始字体的字符尺寸数据,可以是在第一终端的本地缓存中查询原始字体对应的字符尺寸数据。

在一个例子中,第一终端获取原始字体的字符尺寸数据,可以是从第二终端处获取原始字体的字符尺寸数据。在该例子中,第一终端获取到原始字体的字符尺寸数据后,可以将其存在本地缓存中,以便于下次再需要使用该种字体的字符尺寸数据时,可以从本地缓存中直接读取。

在一个例子中,第一终端获取原始字体的字符尺寸数据,可以是:先在第一终端的本地缓存中查询原始字体的字符尺寸数据。在查询不到原始字体的字符尺寸数据的情况下,从第二终端处获取原始字体的字符尺寸数据。在该例子中,第一终端获取到原始字体的字符尺寸数据后,可以将其存在本地缓存中,以便于下次再需要使用该种字体的字符尺寸数据时,可以从本地缓存中直接读取。

第一终端从第二终端处获取原始字体的字符尺寸数据,可以包括步骤S202-S204。

步骤S202、在多个协作终端之间广播字体查询请求以确定第二终端。

在一个例子中,当一个终端成为协作文档的协作终端时,会广播“加入协作”的通知信息,在退出协作不再作为该协作文档的协作终端时,会广播“退出协作”的通知信息,协作文档的协作终端可以根据接收到的通知信息确定协作终端的数量。在第一终端不支持原始字体的情况下,如果协作终端的数量达到2个或者更多个,则第一终端在多个协作终端之间广播字体查询请求以确定第二终端。

第一终端在多个协作终端之间广播字体查询请求以确定第二终端的过程可以包括步骤S2022-S2024。

步骤S2022、在多个协作终端之间广播字体查询请求以确定支持原始字体的协作终端,将支持原始字体的协作终端作为候选终端。

步骤S2024、在候选终端的数量等于1的情况下,将候选终端确定为第二终端。在候选终端的数量大于1的情况下,将满足预设条件的候选终端确定为第二终端。

该预设条件可以至少包括如下a-c中的一项:

a、与第一终端之间通信质量最佳的候选终端。例如,可以将与第一终端之间的网络延迟最低的候选终端确定为通信质量最佳的候选终端。

b、接收字体协助请求数量最少的候选终端。接收字体协助请求数量最少的候选终端相对比较空闲的可能性较高,将其作为第二终端有利于提升整体效率。

c、提交字体查询请求最少的候选终端。

在一个例子中,第一终端发现其不支持原始字体,也就是缺失原始字体时,创建信息队列将字体查询请求加入信息队列,从而在协作文档的协作终端中广播字体查询请求。协作文档的协作终端在接收到该字体查询请求时,确定自己是否支持原始字体,在确定自己支持原始字体的情况下向第一终端发送第一响应信息,第一响应信息表征其支持原始字体。第一终端在接收到另一个协作终端发送的对字体查询请求的第一响应信息时,可以将该协作终端确定为第二终端。

步骤S204、向二终端发送字体协助请求,以从第二终端处获取原始字体的字符尺寸数据。

第一终端向第二终端发送字体协助请求,第二终端在接收到字体协助请求时,向第一终端发送原始字体对应的字符尺寸数据。在一个例子中,第二终端在接收到字体协助请求时,对原始字体进行字符测量操作以得到原始字体对应的字符尺寸数据。

步骤S108、第一终端在获取原始字体的字符尺寸数据成功的情况下,以第一终端支持的第一字体显示目标文本且根据原始字体的字符尺寸数据对目标文本进行排版。

第一终端根据原始字体的字符尺寸数据对第一终端以第一字体显示的目标文本进行排版,可以有多种方式,下面进行举例说明。

例子一:

首先确定目标文本的排版方向,根据目标文本的排版方向对第一终端以第一字体显示的目标文本进行排版。

在目标文本的排版方向为横向排版的情况下,对目标文本的字符进行第一缩放处理以使得目标文本的字符宽度和原始字体的字符宽度一致。在目标文本的排版方向为竖向排版的情况下,对目标文本的字符进行第二缩放处理以使得目标文本的字符高度和原始字体的字符高度一致。

在例子一中,对字符的缩放可以通过调整字号实现。

在一种实施方式中,在步骤S108中,根据原始字体对应的字符尺寸数据对第一终端显示的目标文本进行排版,可以是:获取第一字体对应的字符尺寸数据,根据原始字体对应的字符尺寸数据和第一字体对应的字符尺寸数据,对第一终端显示的目标文本进行排版。

例子二:

首先确定目标文本的排版方向,根据目标文本的排版方向对第一终端以第一字体显示的目标文本进行排版。

在目标文本的排版方向为横向排版的情况下,确定第一差值,第一差值为原始字体的字符宽度和第一字体的字符宽度的差值。在第一差值为正值的情况下,调整目标文本的字符的横坐标值。在第一差值为负值的情况下,对目标文本的字符进行缩小处理。

在目标文本的排版方向为竖向排版的情况下,确定第二差值,第二差值为原始字体的字符高度和第一字体的字符高度的差值。在第二差值为正值的情况下,调整目标文本的字符的纵坐标值。在第二差值为负值的情况下,对目标文本的字符进行缩小处理。

在例子二中,对字符的缩小处理可以通过调整字号实现。

下面以目标文本的排版方向为横向排版为例进行说明:

参见图3(a)所示,在原始字体下每个字符的字符宽度均为W1。参见图3(b)所示,在第一字体下每个字符的字符宽度均为W2。计算W1与W2的差值DW作为第一差值。

如果该DW为正值,说明第一字体的字符宽度小于原始字体的字符宽度,则需要调整第一字体下目标文本的每个字符的横坐标的坐标值。

参见图4所示,目标文本是一行内容,包括“早上好今天的天气真好”这10个字符。在原始字体下,10个字符的横坐标的坐标值为X1,X2,…,X10,排版后,10个字符的横坐标的坐标值为X1’,X2’,…,X10’,则:

X1’=X1+0.5*DW

X2’=X2+(2-1)*DW+0.5*DW,

Xn’=Xn+(n-1)*DW+0.5*DW,

X10’=X10+(10-1)*DW+0.5*DW,

其中,n为整数,1≤n≤10。

可以看出,调整第一字体下这一行内容中的每个字符的横坐标的坐标值相当于调整这一行内容中的相邻字符之间的间距。

如果该DW为负值,说明第一字体的字符的宽度大于原始字体的字符的宽度,如果通过调整坐标值,则会造成字符之间的重叠,因此,需要缩小第一终端显示的目标文本的字号,并保持原来的目标文本的位置(坐标值)不变。在一个例子中,根据W1/W2的比值缩小第一终端显示的目标文本的字号。例如,W1/W2=R1,假设这段内容的原始字号为U1,则将这段内容的字号调整为U2,U2=R1*U1。

下面以目标文本的排版方向为横向排版为例进行说明:

参见图3(a)所示,在原始字体下每个字符的字符高度均为H1。参见图3(b)所示,在第一字体下每个字符的字符高度均为H2。计算H1与H2的差值DH作为第二差值。

如果该DH为正值,说明第一字体的字符高度小于原始字体的字符高度,则调整第一字体下每个字符的纵坐标的坐标值。

假设原始字体下的目标文本一共有M行内容,每一行内的字符的纵坐标值是一样的,第1行到第M行的字符的纵坐标值分别为Y1,Y2,…,YM,在排版后,第1行到第M行的字符的纵坐标值分别为Y1’,Y2’,…,YM’,则:

Y1’=Y1+0.5*DH

Y2’=Y2+(2-1)*DH+0.5*DH,

Ym’=Ym+(m-1)*DH+0.5*DH,

YM’=YM+(M-1)*DH+0.5*DH,

其中,m为整数,1≤m≤M。

可以看出,调整第一字体下目标文本的每个字符的纵坐标的坐标值相当于调整目标文本的相邻行之间的行间距。

如果该DH为负值,说明第一字体的字符的高度大于原始字体的字符的高度,如果通过调整坐标值,则会造成字符之间的重叠,因此,需要缩小第一终端显示的目标文本的字号。在一个例子中,根据H1/H2的比值缩小第一终端显示的目标文本的字号,并保持原来的目标文本的位置(坐标值)不变。例如,H1/H2=R2,假设目标文本的原始字号为U1,则将字号调整为U2,U2=R2*U1。

例子三:

首先确定目标文本的排版方向,根据目标文本的排版方向对第一终端以第一字体显示的目标文本进行排版。

在目标文本的排版方向为横向排版的情况下,将目标文本的字号调整为第一字号,第一字号是字符宽度与原始字体的字符宽度最接近的字号。在将目标文本的字号调整为第一字号后,确定第一差值,第一差值为原始字体的字符宽度和第一字体的字符宽度的差值。在第一差值为正值的情况下,调整目标文本的字符的横坐标值。在第一差值为负值的情况下,对目标文本的字符进行缩小处理。

也就是说,在目标文本的排版方向为横向排版的情况下,第一终端在将第一字体下的目标文本的字号调整为第一字号后,如果字符宽度仍然大于原始字体下的字符宽度,则下调一个字号以使得字符缩小,避免出现字符之间互相覆盖的情况。

在目标文本的排版方向为竖向排版的情况下,将目标文本的字号调整为第二字号,第二字号是字符高度与原始字体的字符高度最接近的字号。在将目标文本的字号调整为第二字号后,确定第二差值,第二差值为原始字体的字符高度和第一字体的字符高度的差值。在第二差值为正值的情况下,调整目标文本的字符的纵坐标值。在第二差值为负值的情况下,对目标文本的字符进行缩小处理。

也就是说,在目标文本的排版方向为竖向排版的情况下,第一终端在将第一字体下的目标文本的字号调整为第二字号后,如果字符高度仍然大于原始字体下的字符高度,则下调一个字号以使得字符缩小,避免出现字符之间互相覆盖的情况。

在例子三中,对字符的缩小处理可以通过字号实现。

第一终端对显示的目标文本进行排版后,其显示的目标文本的排版情况和以原始字体显示的目标文本的排版情况更为接近。参见图4所示,对于目标文本“早上好今天的天气真好”,原始字体下和第一字体下进行对比,原始字体下的这段内容的总宽度更宽。经过步骤S108的排版,第一终端使用第一字体显示的这段内容的总宽度和原始字体下的这段内容的总宽度更为接近。通过这种方式,可以保证原始字体下的同一行内容,不会因为改为使用第一字体进行显示而导致分行,进而避免了出现由于排版差异而导致的协作终端无法同步协作的问题。

本公开实施例的一个有益效果在于,对于在线多人协作的协作文档,如果某个协作终端不支持协作文档中目标文本的原始字体,则可以使用其支持的第一字体来显示目标文本并且根据原始字体对应的字符尺寸数据对目标文本进行排版,使得该协作终端在缺失原始字体的情况下仍可以和其它协作终端保持排版一致性。

第一终端在获取原始字体的字符尺寸数据失败的情况下,所述方法还可以包括步骤S902-S904。

步骤S902、确定第一终端是否支持目标字体。目标字体是多个协作终端在多个协作终端均不支持原始字体的情况下,基于预设协商机制在候选字体中确定出的一种字体,候选字体为任一个协作终端支持的字体。

例如,将第一个发出字体查询请求的协作终端所支持的字体确定为目标字体。例如,确定每一种候选字体的分数,将分数最高的候选字体确定为目标字体,候选字体的分数为支持候选字体的协作终端的数量。

步骤S904、第一终端在支持目标字体的情况下,以目标字体显示目标文本。第一终端在不支持目标字体的情况下,从第三终端处获取目标字体的字符尺寸数据,以目标字体显示目标文本并且根据目标字体的字符尺寸数据对目标文本进行排版,第三终端是支持目标字体的协作终端。

第一终端从第三终端处获取目标字体的字符尺寸数据的过程,类似于前述的第一终端从第二终端处获取原始字体的字符尺寸数据的过程。

本公开实施例的一个有益效果在于,对于在线多人协作的协作文档,如果全部协作终端均不支持协作文档中目标文本的原始字体,可以基于预设协商机制确定出一种字体作为目标字体,各协作终端统一使用目标字体显示目标文本,从而使得协作终端在缺失原始字体的情况下仍可以和其它协作终端保持排版一致性。

第一终端在支持原始字体的情况下,所述方法还可以包括:第一终端以原始字体显示目标文本并且向第四终端发送原始字体的字符尺寸数据,第四终端是不支持原始字体的协作终端。

在一个例子中,在第一终端支持原始字体的情况下,如果第一终端接收到第四终端的字体协助请求,向第四终端发送原始字体对应的字符尺寸数据。在一个例子中,在第一终端支持原始字体的情况下,第一终端可以在多个协作终端之间分享原始字体的字符尺寸数据。

<设备实施例>

本公开实施例提供了一种文本的排版装置,包括以下模块。

第一确定模块,用于确定协作文档中目标文本使用的原始字体。

第二确定模块,用于确定第一终端是否支持原始字体,第一终端是协作文档的多个协作终端中的一个。

第一获取模块,用于在第一终端不支持原始字体的情况下,获取原始字体的字符尺寸数据。

第一排版模块,用于在获取原始字体的字符尺寸数据成功的情况下,以第一终端支持的第一字体显示目标文本并且根据原始字体的字符尺寸数据对目标文本进行排版。

在一个例子中,第一终端获取原始字体的字符尺寸数据,包括:获取另一个协作终端在多个协作终端之间分享的原始字体的字符尺寸数据。

在一个例子中,第一终端获取原始字体的字符尺寸数据,包括:在第一终端的本地缓存中查询原始字体的字符尺寸数据;或者,从第二终端处获取原始字体的字符尺寸数据,第二终端是支持原始字体的协作终端。

在一个例子中,第一终端获取原始字体的字符尺寸数据,包括:在第一终端的本地缓存中查询原始字体的字符尺寸数据;在查询不到原始字体的字符尺寸数据的情况下,从第二终端处获取原始字体的字符尺寸数据,第二终端是支持原始字体的协作终端。

在一个例子中,第一获取模块包括第一请求模块和第二请求模块。

第一请求模块用于在多个协作终端之间广播字体查询请求以确定第二终端。

第二请求模块用于向第二终端发送字体协助请求,以从第二终端处获取原始字体的字符尺寸数据。

第一请求模块在多个协作终端之间广播字体查询请求以确定第二终端,包括:在多个协作终端之间广播字体查询请求以确定支持原始字体的协作终端,将支持原始字体的协作终端作为候选终端;在候选终端的数量等于1的情况下,将候选终端确定为第二终端;在候选终端的数量大于1的情况下,将满足预设条件的候选终端确定为第二终端。

在一个例子中,第一终端还包括第三确定模块、第二获取模块和第二排版模块。

第三确定模块用于在第一终端在获取原始字体的字符尺寸数据失败的情况下,确定第一终端是否支持目标字体。目标字体是多个协作终端在多个协作终端均不支持原始字体的情况下,基于预设协商机制在候选字体中确定出的一种字体,候选字体为任一个协作终端支持的字体;

第二获取模块用于在第三确定模块确定第一终端不支持目标字体的情况下,从第三终端处获取目标字体的字符尺寸数据。

第二排版模块用于在第三确定模块确定第一终端支持目标字体的情况下,以目标字体显示目标文本。以及,在第三确定模块确定第一终端不支持目标字体的情况下,以目标字体显示目标文本并且根据目标字体的字符尺寸数据对目标文本进行排版。第三终端是支持目标字体的协作终端。

在一个例子中,第一终端还包括发送模块。

发送模块用于在第一终端支持原始字体的情况下,以原始字体显示目标文本并且向第四终端发送原始字体的字符尺寸数据。第四终端是不支持原始字体的协作终端。

在一个例子中,第一排版模块根据原始字体的字符尺寸数据对目标文本进行排版,包括:确定目标文本的排版方向;在目标文本的排版方向为横向排版的情况下,确定第一差值,第一差值为原始字体的字符宽度和第一字体的字符宽度的差值;在第一差值为正值的情况下,调整目标文本的字符的横坐标值;在第一差值为负值的情况下,对目标文本的字符进行缩小处理。在目标文本的排版方向为竖向排版的情况下,确定第二差值,第二差值为原始字体的字符高度和第一字体的字符高度的差值;在第二差值为正值的情况下,调整目标文本的字符的纵坐标值;在第二差值为负值的情况下,对目标文本的字符进行缩小处理。

在一个例子中,第一排版模块根据原始字体的字符尺寸数据对目标文本进行排版,包括:确定目标文本的排版方向;在目标文本的排版方向为横向排版的情况下,对目标文本的字符进行第一缩放处理以使得目标文本的字符宽度和原始字体的字符宽度一致;在目标文本的排版方向为竖向排版的情况下,对目标文本的字符进行第二缩放处理以使得目标文本的字符高度和原始字体的字符高度一致。

在一个例子中,第一排版模块根据原始字体的字符尺寸数据对目标文本进行排版,包括:确定目标文本的排版方向;在目标文本的排版方向为横向排版的情况下,将目标文本的字号调整为第一字号,第一字号是字符宽度与原始字体的字符宽度最接近的字号;在将目标文本的字号调整为第一字号后,确定第一差值,第一差值为原始字体的字符宽度和第一字体的字符宽度的差值;在第一差值为正值的情况下,调整目标文本的字符的横坐标值;在第一差值为负值的情况下,对目标文本的字符进行缩小处理;在目标文本的排版方向为竖向排版的情况下,将目标文本的字号调整为第二字号,第二字号是字符高度与原始字体的字符高度最接近的字号;在将目标文本的字号调整为第二字号后,确定第二差值,第二差值为原始字体的字符高度和第一字体的字符高度的差值;在第二差值为正值的情况下,调整目标文本的字符的纵坐标值;在第二差值为负值的情况下,对目标文本的字符进行缩小处理。

图5是根据一个实施例的电子设备的硬件结构示意图。

如图5所示,该电子设备800包括处理器801和存储器802,该存储器802用于存储可执行的计算机程序,该处理器801用于执行所述计算机程序,以实现以上任意方法实施例的文本的排版方法。

该电子设备800可以是计算机、手机、平板电脑等设备。

<计算机可读存储介质>

本公开实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序在被处理器执行时实现根据以上任意方法实施例的文本的排版方法。

本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。

这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本公开的范围由所附权利要求来限定。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:上市公司报告的逻辑结构树构建方法、系统、存储介质及终端

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!