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

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

阅读说明:本技术 文本的排版方法和装置、电子设备、服务器及存储介质 (Text typesetting method and device, electronic equipment, server and storage medium ) 是由 曹宗华 刘欢 罗嘉锐 于 2021-08-26 设计创作,主要内容包括:本公开涉及文本的排版方法和装置、电子设备、服务器及计算可读存储介质,涉及计算机技术领域。该方法包括:确定目标文本使用的原始字体;确定本地应用是否支持原始字体;在本地应用不支持原始字体的情况下,获取原始字体的字符测量数据;以本地应用支持的第一字体显示目标文本并根据原始字体的字符测量数据对目标文本进行排版。(The disclosure relates to a text typesetting method and device, electronic equipment, a server and a computer readable storage medium, and relates to the technical field of computers. The method comprises the following steps: determining an original font used by the target text; determining whether the native application supports the original font; under the condition that the local application does not support the original font, acquiring character measurement data of the original font; and displaying the target text in a first font supported by the local application and typesetting the target text according to the character measurement data of the original font.)

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

技术领域

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

背景技术

在终端设备使用本地应用打开文档时,如果缺失文档的原始字体可能会导致该文档呈现出的排版方式存在较大的差异,影响文档的美观和阅读体验一致性。目前一般采用的做法是在当前环境下安装对应的字体,来达到解决排版问题的目的。但这种方法成本和门槛较高,需要搜索、下载、安装字体,并且字体可能还需要单独付费,比较难进行大面积推广和应用。因此,有必要提出一种新的文本的排版方法。

发明内容

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

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

确定目标文本使用的原始字体;

确定本地应用是否支持所述原始字体;

在所述本地应用不支持所述原始字体的情况下,获取所述原始字体的字符测量数据;

以所述本地应用支持的第一字体显示所述目标文本并根据所述原始字体的字符测量数据对所述目标文本进行排版。

可选地,所述获取所述原始字体的字符测量数据,包括:

在本地缓存中查询所述原始字体的字符测量数据;

在本地缓存中查询不到所述原始字体的字符测量数据的情况下,从服务器处获取所述原始字体的字符测量数据并存储在本地缓存中。

可选地,在以所述本地应用支持的第一字体显示所述目标文本之前,所述方法还包括:

从所述本地应用支持的所有字体中选择出与所述原始字体的字符测量数据相匹配的第一字体。

可选地,所述从所述本地应用支持的所有字体中选择出与所述原始字体的字符测量数据相匹配的第一字体,包括:

获取所述原始字体的替换字体列表;

从所述替换字体列表的替换字体中确定候选字体,所述候选字体是所述本地应用支持的字体;

将在所述替换字体列表中排序最前的候选字体确定为所述第一字体。

可选地,在以所述本地应用支持的第一字体显示所述目标文本之前,所述方法还包括:

确定所述目标文本的字符类型;

根据与所述类型相关联的预设规则,从所述本地应用支持的所有字体中选择出与所述原始字体的字符测量数据相匹配的第一字体。

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

所述从所述本地应用支持的所有字体中选择出与所述原始字体的字符测量数据相匹配的第一字体,包括:

获取候选字体的字符测量数据,所述候选字体是所述本地应用支持的字体;

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

在所述目标文本的排版方向为横向排版的情况下,将字符宽度与所述原始字体的字符宽度最接近的候选字体确定为所述第一字体;

在所述目标文本的排版方向为竖向排版的情况下,将字符高度与所述原始字体的字符高度最接近的候选字体确定为所述第一字体。

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

所述从所述本地应用支持的所有字体中选择出与所述原始字体的字符测量数据相匹配的第一字体,包括:

获取所述原始字体的字体属性和候选字体的字体属性,所述候选字体是所述本地应用支持的字体;

将字体属性与所述原始字体的字体属性相同的候选字体确定为目标字体,获取目标字体的字符测量数据;

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

在所述目标文本的排版方向为横向排版的情况下,将字符宽度与所述原始字体的字符宽度最接近的目标字体确定为所述第一字体;

在所述目标文本的排版方向为竖向排版的情况下,将字符高度与所述原始字体的字符高度最接近的目标字体确定为所述第一字体。

可选地,在所述目标文本的字符类型是字母类型或者多语言混合类型的情况下,所述根据与所述类型相关联的预设规则,从所述本地应用支持的所有字体中选择出与所述原始字体的字符测量数据相匹配的第一字体,包括:

将候选字体的字体标识发送给服务器,以供服务器根据所述原始字体的字体属性和所述原始字体下的预设字符串的宽度从所述候选字体中确定所述第一字体,从服务器接收所述第一字体的字体标识;或者,

从服务器处获取所述原始字体的字体属性和所述原始字体下的预设字符串的宽度,根据所述原始字体的字体属性和所述原始字体下的预设字符串的宽度从所述候选字体中确定所述第一字体;

其中,所述候选字体是所述本地应用支持的字体,所述预设字符串中包括多个不同的预设字符。

可选地,所述候选字体包括所述本地应用支持的默认字体和非默认字体;

所述根据所述原始字体的字体属性和所述原始字体下的预设字符串的宽度从所述候选字体中确定所述第一字体,包括:

如果所述默认字体和所述原始字体的字体属性相同并且所述默认字体下的预设字符串的宽度与所述原始字体下的预设字符串的宽度的近似程度符合预设标准,将所述默认字体确定为所述第一字体;否则,

将与所述原始字体的字体属性相同的候选字体作为目标字体,从所述目标字体中确定所述第一字体。

可选地,确定所述默认字体下的预设字符串的宽度与所述原始字体下的预设字符串的宽度的近似程度是否符合预设标准,包括:

确定所述默认字体下的预设字符串的宽度与所述原始字体下的预设字符串的宽度的差值;

确定所述差值的绝对值与所述原始字体下的预设字符串的宽度的比值;

在所述比值小于等于预设的第一阈值的情况下,确定所述默认字体下的预设字符串的宽度与所述原始字体下的预设字符串的宽度的近似程度符合预设标准。

可选地,所述从所述目标字体中确定所述第一字体,包括:

将与所述原始字体下的预设字符串的宽度最接近的所述目标字体确定为所述第一字体;或者,将预设字符串的宽度最小的目标字体确定为所述第一字体。

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

所述根据所述原始字体的字符测量数据对所述目标文本进行排版,包括:

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

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

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

可选地,所述原始字体的字符测量数据包括所述原始字体的字符宽度;

所述根据所述原始字体的字符测量数据对所述目标文本进行排版,包括:

将所述目标文本切分成词;

累加所述第一字体下所述词中的每个字符的宽度与原始字体下的对应字符的宽度的差值,得到调节量;

计算所述调节量与所述词中的字符间隙数量的比值,根据所述比值调节所述词中的字符的间隙以使得所述词中的字符的间隙相同。

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

接收终端设备发送的目标文本的原始字体的字体标识;

根据所述原始字体的字体标识查询出所述原始字体的字符测量数据;

将所述原始字体的字符测量数据发送给终端设备,以供终端设备以其本地应用支持的第一字体显示所述目标文本并根据所述原始字体的字符测量数据对所述目标文本进行排版。

可选地,在终端设备以其本地应用支持的第一字体显示所述目标文本之前,所述方法还包括:

根据所述原始字体的字体标识获取所述原始字体的替换字体列表;

从所述替换字体列表的替换字体中确定候选字体,所述候选字体是所述本地应用支持的字体;

将在所述替换字体列表中排序最前的候选字体确定为所述第一字体;

将所述第一字体的标识发送给终端设备。

可选地,在终端设备以其本地应用支持的第一字体显示所述目标文本之前,所述方法还包括:

将所述原始字体的字体属性和所述原始字体下的预设字符串的宽度发送给终端设备,以供终端设备根据所述原始字体的字体属性和所述原始字体下的预设字符串的宽度从候选字体中确定所述第一字体;或者,

根据所述原始字体的字体属性和所述原始字体下的预设字符串的宽度从候选字体中确定所述第一字体,将所述第一字体的字体标识发送给终端设备;

其中,所述候选字体是所述本地应用支持的字体,所述预设字符串中包括多个不同的预设字符。

可选地,所述候选字体包括所述本地应用支持的默认字体和非默认字体;

所述根据所述原始字体的字体属性和所述原始字体下的预设字符串的宽度从所述候选字体中确定所述第一字体,包括:

如果所述默认字体和所述原始字体的字体属性相同并且所述默认字体下的预设字符串的宽度与所述原始字体下的预设字符串的宽度的近似程度符合预设标准,将所述默认字体确定为所述第一字体;否则,

将与所述原始字体的字体属性相同的候选字体作为目标字体,从所述目标字体中确定所述第一字体。

可选地,确定所述默认字体下的预设字符串的宽度与所述原始字体下的预设字符串的宽度的近似程度是否符合预设标准,包括:

确定所述默认字体下的预设字符串的宽度与所述原始字体下的预设字符串的宽度的差值;

确定所述差值的绝对值与所述原始字体下的预设字符串的宽度的比值;

在所述比值小于等于预设的第一阈值的情况下,确定所述默认字体下的预设字符串的宽度与所述原始字体下的预设字符串的宽度的近似程度符合预设标准。

可选地,所述从所述目标字体中确定所述第一字体,包括:

将与所述原始字体下的预设字符串的宽度最接近的所述目标字体确定为所述第一字体;或者,将预设字符串的宽度最小的目标字体确定为所述第一字体。

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

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

第二确定模块,用于确定本地应用是否支持所述原始字体;

获取模块,用于在所述本地应用不支持所述原始字体的情况下,获取所述原始字体的字符测量数据;

排版模块,用于以所述本地应用支持的第一字体显示所述目标文本并根据所述原始字体的字符测量数据对所述目标文本进行排版。

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

接收模块,用于接收终端设备发送的目标文本的原始字体的字体标识;

查询模块,用于根据所述原始字体的字体标识查询出所述原始字体的字符测量数据;

发送模块,用于将所述原始字体的字符测量数据发送给终端设备,以供终端设备以其本地应用支持的第一字体显示所述目标文本并根据所述原始字体的字符测量数据对所述目标文本进行排版。

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

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

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

本公开实施例的一个有益效果在于,如果本地应用不支持目标文档的原始字体,本地应用使用其支持的第一字体来显示目标文本并且根据原始字体对应的字符测量数据对目标文本进行排版,使得本地应用在缺失原始字体的情况下仍然可以保持文档排版和原始排版一致性。

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

附图说明

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

图1为本公开实施例提供的文档处理系统的示意图;

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

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

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

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

图6是根据本公开实施例的电子设备的硬件结构示意图;

图7是根据本公开实施例的服务器的硬件结构示意图。

具体实施方式

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

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

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

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

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

<文本的排版方法>

图1是本说明书实施例提供的文档处理系统的框图。如图1所示,该文档处理系统包括服务器101和用户的终端设备103,服务器101和终端设备103之间可以通过网络102进行通信。

服务器101的配置可以包括但不限于:处理器1011、存储器1012、接口装置1013、通信装置1014、输入装置1015、输出装置1016。处理器1011可以包括但不限于中央处理器CPU、微处理器MCU等。存储器1012可以包括但不限于ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1013可以包括但不限于USB接口、串行接口、并行接口等。通信装置1014例如能够进行有线通信或无线通信,具体地可以包括WiFi通信、蓝牙通信、2G/3G/4G/5G通信等。输入装置1015包括但不限于键盘、鼠标、触摸屏、麦克风等。输出装置1016包括但不限于显示屏、扬声器等。服务器101的配置也可以仅包括上述装置中的部分装置。

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

应用于本公开的一个实施例中,用户可以通过终端设备103打开目标文本以及对目标文本进行排版、编辑。该本地应用例如为文档编辑软件、即时通信软件、办公软件、浏览器等。在一个例子中,用户在本地应用上预先注册账户,用户登录账户后就可以使用本公开实施例提供的排版方法。

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

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

参见图2所示,本公开实施例提供了一种文本的排版方法。该方法包括步骤S102-S108。步骤S102-S108可以由终端设备实施。

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

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

步骤S104、确定本地应用是否支持原始字体。

在确定目标文本使用的原始字体后,检查本地应用支持的全部字体中是否包括该原始字体,如果不包括,则确定本地应用不支持该原始字体。

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

步骤S106、在本地应用不支持原始字体的情况下,获取原始字体的字符测量数据。

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

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

在一个例子中,字符测量数据还包括字符的升降值。

参见图3(a)和图3(b)所示,对于同一个汉字“早”,两种不同的字体在同一字号下,宽度和高度都是不同的,升降值也是不同的。图3(b)所示的字体的宽度和高度都小于图3(a)的字体。图3(a)所示的字体的升降值为0,即字体相对于基线没有升降。图3(b)所示的字体的升降值为一正值,即该字体相对于基线有上升。如果字体的升降值为一负值,即该字体相对于基线有下降。

在一个例子中,字体的字符测量数据通过对字符进行测量获得。例如,预先以某种字体显示目标文本,测量目标文本在该字体下的字符测量数据,从而得到该字体的字符测量数据。

在一个例子中,服务器中预先存储有各种字体在各字号下的字符测量数据。

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

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

步骤S108、以本地应用支持的第一字体显示目标文本并根据原始字体的字符测量数据对目标文本进行排版。

在一个例子中,终端设备按照目标文本的原字号以第一字体显示目标文本,根据原始字体的字符测量数据对以第一字体显示的目标文本进行排版。

在以本地应用支持的第一字体显示目标文本之前,该方法还可以包括确认第一字体的步骤。在本公开实施例中,终端设备从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体。下面进行举例说明:

确定第一字体的例子一:

从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体,包括步骤S202-S206。

步骤S202、获取原始字体的替换字体列表。

在一个例子中,对于任一种字体,预先检测其余字体和该种字体的匹配度,选取匹配度达到匹配度阈值的字体作为该种字体的替换字体。在本公开实施例中,可以根据两种字体的字符测量数据确定两种字体之间的匹配度。对于任一种字体,根据其替换字体建立替换字体列表,替换字体列表中的替换字体按照匹配度从高到低进行排序。终端设备可以从服务器处获取到每种字体的替换字体列表。

下面以字体A为例,说明如何确定字体B与字体A的字符测量数据的匹配度:

计算字体A的字符的宽度和字体B的字符的宽度的差值作为第一差值。

计算字体A的字符的高度和字体B的字符的高度的差值作为第二差值。

在一个例子中,根据第一差值的绝对值确定字体B与字体A的字符测量数据的匹配度,其中,第一差值的绝对值越大,字体B与字体A的字符测量数据的匹配度越低,第一差值的绝对值越小,字体B与字体A的字符测量数据的匹配度越高。

在一个例子中,根据第二差值的绝对值确定字体B与字体A的字符测量数据的匹配度,其中,第二差值的绝对值越大,字体B与字体A的字符测量数据的匹配度越低,第二差值的绝对值越小,字体B与字体A的字符测量数据的匹配度越高。

在一个例子中,计算第一差值的绝对值和第二差值的绝对值的和值,根据该和值确定字体B与字体A的字符测量数据的匹配度,其中,该和值越大,字体B与字体A的字符测量数据的匹配度越低,该和值越小,字体B与字体A的字符测量数据的匹配度越高。

步骤S204、从替换字体列表的替换字体中确定候选字体,候选字体是本地应用支持的字体。

步骤S206、将在替换字体列表中排序最前的候选字体确定为第一字体。

在该例子中,从替换字体列表的替换字体中筛选出本地应用支持的替换字体,再进一步从本地应用支持的替换字体中选取和原始字体最为匹配的替换字体作为第一字体。

利用替换字体表来确定第一字体,不需要终端设备进行复杂计算,更为方便快速。

确定第一字体的例子二:

从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体,包括步骤S302-S304。

步骤S302、确定目标文本的字符类型。

字符类型包括第一类型、第二类型。第一类型是指目标文本的字符为汉字等方块字符,不同汉字的宽度、高度是一样的。第二类型是指目标文本的字符中包括字母、罗马字、蒙古文、或阿拉伯文等字符或者是多种语言混合,这些字符的宽度可能是不一致的,高度可能是不一致的。

步骤S304、根据与类型相关联的预设规则,从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体。

在该例子中,根据目标文本的字符类型,用对应的规则方式来确定第一字体,下面用例子三、例子四、例子五进行说明。

确定第一字体的例子三:

从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体,包括步骤S402-S406。

步骤S402、获取候选字体的字符测量数据,候选字体是本地应用支持的字体。

步骤S404、确定目标文本的排版方向。

步骤S406、在目标文本的排版方向为横向排版的情况下,将字符宽度与原始字体的字符宽度最接近的候选字体确定为第一字体。在目标文本的排版方向为竖向排版的情况下,将字符高度与原始字体的字符高度最接近的候选字体确定为第一字体。

在目标文本的排版方向为横向排版的情况下,计算目标文本中的字符在原始字体下的字符宽度和候选字体下的字符宽度的差值作为第一差值,第一差值的绝对值越小,表明候选字体的字符宽度与原始字体的字符宽度越接近,选取第一差值的绝对值最小的候选字体作为第一字体。

在目标文本的排版方向为竖向排版的情况下,计算目标文本中的字符在原始字体下的字符高度和候选字体下的字符高度的差值作为第二差值,第二差值的绝对值越小,表明候选字体的字符高度与原始字体的字符高度越接近,选取第二差值的绝对值最小的候选字体作为第一字体。

例子三适用于目标文本的字符类型为第一类型和目标文本的字符类型为第二类型。也就是说,在目标文本中仅含有汉字,或者在目标文本中含有字母、罗马字符的情况下,都可以适用例子三的方式确定第一字体。

确定第一字体的例子四:

从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体,包括步骤S502-S508。

步骤S502、获取原始字体的字体属性和候选字体的字体属性,候选字体是本地应用支持的字体。

字体的字体属性是指字体本身具有的固有属性,可以体现该字体的风格。字体的字体属性包括字体的粗细程度、加黑程度、倾斜程度的一种或者多种。

例如,对于字体的粗细程度,按照从粗到细包括“粗”、“常规”、“细”三种属性值。例如,对于字体的加黑程度,包括“有加黑”、“无加黑”两种属性值。例如,对于字体的倾斜程度,包括“有倾斜”、“无倾斜”两种属性值。

例如,对于“宋体”、“华文细黑”、“方正粗黑宋简体”这三种字体,“宋体”的字体属性是:粗细程度为“细”,加黑程度为“无加黑”,倾斜程度为“无倾斜”,“华文细黑”的字体属性是:粗细程度为“细”,加黑程度为“加黑”,倾斜程度为“无倾斜”,“方正粗黑宋简体”的字体属性是:粗细程度为“粗”,加黑程度为“加黑”,倾斜程度为“无倾斜”。

例如,对于“Times New Roman”和“Forte”这两种字体,“Times New Roman”的字体属性是:粗细程度为“细”,加黑程度为“无加黑”,倾斜程度为“无倾斜”,“Forte”的字体属性是:粗细程度为“粗”,加黑程度为“加黑”,倾斜程度为“有倾斜”。

步骤S504、将字体属性与原始字体的字体属性相同的候选字体确定为目标字体,获取目标字体的字符测量数据。

在一个例子中,字体的字体属性仅包括字体的粗细程度,如果候选字体和原始字体均为“粗”,或者均为“常规”,或者均为“细”,则该候选字体和原始字体的属性相同。

在一个例子中,字体的字体属性包括字体的粗细程度、加黑程度以及倾斜程度,如果候选字体和原始字体在字体的粗细程度、加黑程度、倾斜程度三个方面的属性值均一致,则该候选字体和原始字体的属性相同。

步骤S506、确定目标文本的排版方向。

步骤S508、在目标文本的排版方向为横向排版的情况下,将字符宽度与原始字体的字符宽度最接近的目标字体确定为第一字体。在目标文本的排版方向为竖向排版的情况下,将字符高度与原始字体的字符高度最接近的目标字体确定为第一字体。

步骤S508的实现方式可以类似于前述步骤S406,这里不再详细说明。

例子四适用于目标文本的字符类型为第一类型和目标文本的字符类型为第二类型。也就是说,在目标文本中仅含有汉字,或者在目标文本中含有字母、罗马字符的情况下,都可以适用例子四的方式确定第一字体。

在该例子中,在全部候选字体中,过滤掉字体属性与原始字体的字体属性不相同的候选字体,保留字体属性与原始字体的字体属性相同的候选字体作为目标字体,在目标字体中确认第一字体,使得选取出的第一字体的风格和原始字体的风格是一致的,本地应用第一字体显示的的目标文本和原始字体下的目标文本的呈现风格更为近似。

确定第一字体的例子五:

根据与类型相关联的预设规则,从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体,可以是:

终端数设备将候选字体的字体标识发送给服务器,以供服务器根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体。然后,服务器将第一字体的字体标识下发给终端设备,终端设备从服务器接收第一字体的字体标识。或者,

终端设备从服务器处获取原始字体的字体属性和原始字体下的预设字符串的宽度,根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体。

其中,候选字体是本地应用支持的字体,预设字符串中包括多个不同的预设字符。预设字符串中的预设字符应当是在字符宽度或字符高度方面中的任一个方面具有代表性的字符。例如,选取任一个汉字以及英文中宽度具有代表性的“w”、“z”、“i”组成预设字符串,该预设字符串可以为“明WwZzIi”。

例子五适用于目标文本的字符类型为第二类型。也就是说,在目标文本中包括字母、罗马字、蒙古文、或阿拉伯文等字符或者是多种语言混合的情况下,可以适用例子五的方式确定第一字体。例如,在目标文本的字符类型是字母类型或者多语言混合类型(例如,目标文本中同时含有中文内容和英文内容,例如,目标文本中同时含有中文内容和日文内容)的情况下,可以适用例子五的方式确定第一字体。基于预设字符串的宽度来确定第一字体,可以适合于字符宽度不一样的情况,运算量小,更为高效快速。

在一个例子中,候选字体包括本地应用支持的默认字体和非默认字体。本地应用预先设有默认字体,终端设备安装应用时会设置默认字体,用户可以个人喜好自行修改默认字体。

根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体,包括步骤S602-S604。

步骤S602、如果默认字体和原始字体的字体属性相同并且默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度符合预设标准,将默认字体确定为第一字体。否则,执行步骤S604。

在一个例子中,确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度是否符合预设标准,包括步骤S6022-S6026。

步骤S6022、确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的差值。

步骤S6024、确定该差值的绝对值与原始字体下的预设字符串的宽度的比值。

步骤S6026、在该比值小于等于预设的第一阈值的情况下,确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度符合预设标准。在该比值大于预设的第一阈值的情况下,确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度不符合预设标准。

在一个例子中,默认字体下的预设字符串的宽度和高度与原始字体下的预设字符串的宽度和高度的近似程度符合预设的标准,是指:默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的比值在0.95~1.05之间。

步骤S604、将与原始字体的字体属性相同的候选字体作为目标字体,从目标字体中确定第一字体。

在步骤S604中,在全部候选字体中(包括默认字体和非默认字体),选取与原始字体的字体属性相同的候选字体作为目标字体,

在一个例子中,步骤S604、从目标字体中确定第一字体,可以是:将与原始字体下的预设字符串的宽度最接近的目标字体确定为第一字体。

计算预设字符串在原始字体下的宽度和目标字体下的宽度的差值作为第三差值,第三差值的绝对值越小,表明目标字体与原始字体下的预设字符串的宽度越接近,选取第三差值的绝对值最小的目标字体作为第一字体。通过这种方式,可以使得在未排版之前,本地应用呈现给用户的目标文本的排版和目标文本的原始排版比较相似,排版时只需要进行微调即可。

在一个例子中,步骤S604、从目标字体中确定第一字体,可以是:将预设字符串的宽度最小的目标字体确定为第一字体。

选取预设字符串的宽度最小的目标字体作为第一字体,可以尽量避免本地应用以第一字体显示目标文本时出现字符之间出现重叠覆盖的情况,未排版之前也不容易出现重叠覆盖给用户造成阅读障碍。

在该例子中,考虑到用户的字体使用习惯,优先考虑将默认字体作为替换原始字体的第一字体。如果默认字体和原始字体的字体属性相同并且默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度符合预设标准,将与原始字体的字体属性相同的候选字体作为目标字体,从目标字体中确定第一字体。如果默认字体和原始字体的字体属性不相同,或者默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度不符合预设标准,则从与原始字体的字体属性相同的候选字体中确定第一字体。通过这种方式,兼顾了用户的喜好,并且降低了运算量,节省了处理时间。

上述确认第一字体中的例子二到例子五中,确定候选字体、目标字体与原始字体的近似程度、匹配程度的实现方式,也可以应用于确定替换列表中的替换字体。

步骤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的排版,终端设备使用第一字体显示的这段内容的总宽度和原始字体下的这段内容的总宽度更为接近。通过这种方式,可以保证原始字体下的同一行内容,不会因为改为使用第一字体进行显示而导致分行。

排版例子四:

根据原始字体的字符测量数据对目标文本进行排版,可以包括步骤S1085-S1087。

步骤S1085、将目标文本切分成词。

步骤S1086、累加第一字体下词中的每个字符的宽度与原始字体下的对应字符的宽度的差值,得到调节量。

步骤S1087、计算调节量与词中的字符间隙数量的比值,根据该比值调节词中的字符的间隙以使得词中的字符的间隙相同。

例如,目标文本的一个词中一共有T个字符,字符间隙数量为G个,G=T-1。其中,T个字符中每个字符的宽度与原始字体下的对应字符的宽度的差值依次为O1,O2,…,OT,累加O1,O2,…,OT得到调节量,计算调节量和字符间隙数量的比值。如果该比值为正值,说明应该缩小间隙,则将词中的字符的间隙减去该比值。如果该比值为负值,说明应该增大间隙,则将词中的字符的间隙减去该比值。

通过这种方式,可以使得同一个词中字符的间隙相同,显示更为均匀。可以适用于第二类型的目标文本,在不同字符的宽度不相同的情况下,仍可以使得同一个词中的字符显示的更加均匀。排版例子四可以在前述任一排版例子之后进行。

在一个例子中,本地应用先对目标文本的字符的宽高进行排版,然后按照原始字体对应的字符升降值调整目标文本的字符的升降值。

本公开实施例的一个有益效果在于,如果终端设备的本地应用不支持目标文档的原始字体,本地应用使用其支持的第一字体来显示目标文本并且根据原始字体对应的字符测量数据对目标文本进行排版,使得本地应用在缺失原始字体的情况下仍然可以保持文档排版和原排版一致性。

参见图5所示,本公开实施例提供了一种文本的排版方法。该方法包括步骤S702-S706。步骤S702-S706可以由服务器实施。

步骤S702、接收终端设备发送的目标文本的原始字体的字体标识。

步骤S704、根据原始字体的字体标识查询出原始字体的字符测量数据。

步骤S706、将原始字体的字符测量数据发送给终端设备,以供终端设备以其本地应用支持的第一字体显示目标文本并根据原始字体的字符测量数据对目标文本进行排版。

在一个例子中,服务器中预先存储有各种字体的字体属性、在各字号下的字符测量数据。字体的字符测量数据包括字符的高度和宽度。字体的字符测量数据还可以包括字符的升降值。字体的字体属性是指字体本身具有的固有属性,可以体现该字体的风格。字体的字体属性包括字体的粗细程度、加黑程度、倾斜程度的一种或者多种。

在一个例子中,在终端设备以其本地应用支持的第一字体显示目标文本之前,该方法还包括:根据原始字体的字体标识获取原始字体的替换字体列表。从替换字体列表的替换字体中确定候选字体,候选字体是本地应用支持的字体。将在替换字体列表中排序最前的候选字体确定为第一字体。将第一字体的标识发送给终端设备。

在一个例子中,在终端设备以其本地应用支持的第一字体显示目标文本之前,该方法还包括:将原始字体的字体属性和原始字体下的预设字符串的宽度发送给终端设备,以供终端设备根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体。其中,候选字体是本地应用支持的字体,预设字符串中包括多个不同的预设字符。

在一个例子中,在终端设备以其本地应用支持的第一字体显示目标文本之前,该方法还包括:根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体,将第一字体的字体标识发送给终端设备。其中,候选字体是本地应用支持的字体,预设字符串中包括多个不同的预设字符。

在一个例子中,候选字体包括本地应用支持的默认字体和非默认字体。

在一个例子中,根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体,包括:如果默认字体和原始字体的字体属性相同并且默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度符合预设标准,将默认字体确定为第一字体。否则,将与原始字体的字体属性相同的候选字体作为目标字体,从目标字体中确定第一字体。

在一个例子中,确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度是否符合预设标准,包括:确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的差值。确定差值的绝对值与原始字体下的预设字符串的宽度的比值。在比值小于等于预设的第一阈值的情况下,确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度符合预设标准。在比值大于预设的第一阈值的情况下,确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度不符合预设标准。

在一个例子中,从目标字体中确定第一字体,包括:将与原始字体下的预设字符串的宽度最接近的目标字体确定为第一字体;或者,将预设字符串的宽度最小的目标字体确定为第一字体。

本公开实施例的一个有益效果在于,如果终端设备的本地应用不支持目标文档的原始字体,服务器将原始字体的测量数据提供给终端设备,本地应用使用其支持的第一字体来显示目标文本并且根据原始字体对应的字符测量数据对目标文本进行排版,使得本地应用在缺失原始字体的情况下仍然可以保持文档排版和原排版一致性。

<设备实施例>

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

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

第二确定模块,用于确定本地应用是否支持原始字体。

获取模块,用于在本地应用不支持原始字体的情况下,获取原始字体的字符测量数据。

排版模块,用于以本地应用支持的第一字体显示目标文本并根据原始字体的字符测量数据对目标文本进行排版。

在一个例子中,获取原始字体的字符测量数据,包括:在本地缓存中查询原始字体的字符测量数据。在本地缓存中查询不到原始字体的字符测量数据的情况下,从服务器处获取原始字体的字符测量数据并存储在本地缓存中。

在一个例子中,在以本地应用支持的第一字体显示目标文本之前,所述方法还包括:从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体。

在一个例子中,从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体,包括:获取原始字体的替换字体列表。从替换字体列表的替换字体中确定候选字体,候选字体是本地应用支持的字体。将在替换字体列表中排序最前的候选字体确定为第一字体。

在一个例子中,在以本地应用支持的第一字体显示目标文本之前,所述方法还包括:确定目标文本的字符类型。根据与类型相关联的预设规则,从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体。

在一个例子中,原始字体的字符测量数据包括原始字体的字符宽度和原始字体的字符高度。从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体,包括:获取候选字体的字符测量数据,候选字体是本地应用支持的字体。确定目标文本的排版方向。在目标文本的排版方向为横向排版的情况下,将字符宽度与原始字体的字符宽度最接近的候选字体确定为第一字体。在目标文本的排版方向为竖向排版的情况下,将字符高度与原始字体的字符高度最接近的候选字体确定为第一字体。

在一个例子中,原始字体的字符测量数据包括原始字体的字符宽度和原始字体的字符高度。

从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体,包括:获取原始字体的字体属性和候选字体的字体属性,候选字体是本地应用支持的字体。将字体属性与原始字体的字体属性相同的候选字体确定为目标字体,获取目标字体的字符测量数据。确定目标文本的排版方向。在目标文本的排版方向为横向排版的情况下,将字符宽度与原始字体的字符宽度最接近的目标字体确定为第一字体。在目标文本的排版方向为竖向排版的情况下,将字符高度与原始字体的字符高度最接近的目标字体确定为第一字体。

在一个例子中,在目标文本的字符类型是字母类型或者多语言混合类型的情况下,根据与类型相关联的预设规则,从本地应用支持的所有字体中选择出与原始字体的字符测量数据相匹配的第一字体,包括:将候选字体的字体标识发送给服务器,以供服务器根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体,从服务器接收第一字体的字体标识。或者,从服务器处获取原始字体的字体属性和原始字体下的预设字符串的宽度,根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体。其中,候选字体是本地应用支持的字体,预设字符串中包括多个不同的预设字符。

在一个例子中,候选字体包括本地应用支持的默认字体和非默认字体。

根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体,包括:如果默认字体和原始字体的字体属性相同并且默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度符合预设标准,将默认字体确定为第一字体。否则,将与原始字体的字体属性相同的候选字体作为目标字体,从目标字体中确定第一字体。

在一个例子中,确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度是否符合预设标准,包括:确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的差值。确定差值的绝对值与原始字体下的预设字符串的宽度的比值。在比值小于等于预设的第一阈值的情况下,确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度符合预设标准。

在一个例子中,从目标字体中确定第一字体,包括:将与原始字体下的预设字符串的宽度最接近的目标字体确定为第一字体。或者,将预设字符串的宽度最小的目标字体确定为第一字体。

在一个例子中,原始字体的字符测量数据包括原始字体的字符宽度和原始字体的字符高度。

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

在一个例子中,原始字体的字符测量数据包括原始字体的字符宽度。

根据原始字体的字符测量数据对目标文本进行排版,包括:将目标文本切分成词。累加第一字体下词中的每个字符的宽度与原始字体下的对应字符的宽度的差值,得到调节量。计算调节量与词中的字符间隙数量的比值,根据比值调节词中的字符的间隙以使得词中的字符的间隙相同。

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

接收模块,用于接收终端设备发送的目标文本的原始字体的字体标识。

查询模块,用于根据原始字体的字体标识查询出原始字体的字符测量数据。

发送模块,用于将原始字体的字符测量数据发送给终端设备,以供终端设备以其本地应用支持的第一字体显示目标文本并根据原始字体的字符测量数据对目标文本进行排版。

在一个例子中,在终端设备以其本地应用支持的第一字体显示目标文本之前,所述方法还包括:根据原始字体的字体标识获取原始字体的替换字体列表。从替换字体列表的替换字体中确定候选字体,候选字体是本地应用支持的字体。将在替换字体列表中排序最前的候选字体确定为第一字体。将第一字体的标识发送给终端设备。

在一个例子中,在终端设备以其本地应用支持的第一字体显示目标文本之前,所述方法还包括:将原始字体的字体属性和原始字体下的预设字符串的宽度发送给终端设备,以供终端设备根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体。或者,根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体,将第一字体的字体标识发送给终端设备。其中,候选字体是本地应用支持的字体,预设字符串中包括多个不同的预设字符。

在一个例子中,候选字体包括本地应用支持的默认字体和非默认字体。

根据原始字体的字体属性和原始字体下的预设字符串的宽度从候选字体中确定第一字体,包括:如果默认字体和原始字体的字体属性相同并且默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度符合预设标准,将默认字体确定为第一字体。否则,将与原始字体的字体属性相同的候选字体作为目标字体,从目标字体中确定第一字体。

在一个例子中,确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度是否符合预设标准,包括:确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的差值。确定差值的绝对值与原始字体下的预设字符串的宽度的比值。在比值小于等于预设的第一阈值的情况下,确定默认字体下的预设字符串的宽度与原始字体下的预设字符串的宽度的近似程度符合预设标准。

在一个例子中,从目标字体中确定第一字体,包括:将与原始字体下的预设字符串的宽度最接近的目标字体确定为第一字体。或者,将预设字符串的宽度最小的目标字体确定为第一字体。

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

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

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

在一个例子中,该电子设备为前述的终端设备。

图7是根据一个实施例的服务器的硬件结构示意图。

如图7所示,该服务器900包括处理器901和存储器902,该存储器902用于存储可执行的计算机程序,该处理器901用于执行所述计算机程序,以实现以上任意方法实施例的文本的排版方法。

<计算机可读存储介质>

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

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

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

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

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

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

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

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

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

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

31页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:文本的排版方法和装置、电子设备及存储介质

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!