字体绘制方法、装置、计算机设备及计算机可读存储介质与流程

文档序号:20621041发布日期:2020-05-06 20:49阅读:202来源:国知局
字体绘制方法、装置、计算机设备及计算机可读存储介质与流程

本申请实施例涉及图像处理领域,特别涉及一种字体绘制方法、装置、计算机设备及计算机可读存储介质。



背景技术:

随着图像处理技术的不断发展,人们越来越不满足于单一的字体样式,高效、快捷、美观的字体已经成为市场的一个需求。因此,字体绘制技术得到了广泛的应用。

相关技术中,在计算机设备上安装和运行有支持字体绘制的客户端,在该客户端中初始化字体引擎和字体文件,字体文件中包括多种样式和字号的字体。基于用户在计算机设备上输入的想要进行绘制的文字,从字体库中获取该文字的字形信息。字形信息包括文字的像素信息,基于文字的像素信息确定该文字的边框,用户在颜色面板上选择某个颜色,将该颜色填充在文字的内部,从而可以得到带有颜色的文字。

然而,上述字体绘制的方法,容易出现文字边缘显示不清楚的问题,导致字体模糊、看不清楚,从而降低文字的清晰度。



技术实现要素:

本申请实施例提供了一种字体绘制方法、装置、计算机设备及计算机可读存储介质,可用于解决相关技术中的问题。该技术方案如下:

一方面,本申请实施例提供了一种字体绘制方法,该方法包括:

获取待绘制的文字;

获取该文字的字形信息,该字形信息包括该文字的高度和宽度;

根据该文字的字形信息,获取该文字的前景纹理;

对该前景纹理进行渲染,得到第一背景纹理;

对该第一背景纹理中该文字的边缘进行处理,得到第二背景纹理;

将该第二背景纹理与显示文字的屏幕纹理进行融合,完成该文字的字体绘制。

在一种可能的实现方式中,该根据该文字的字形信息,获取该文字的前景纹理,包括:

创建该文字对应的空白纹理,该空白纹理的高度和宽度与该文字的高度和宽度相等;

计算该文字的高度和宽度的乘积,将该乘积作为该文字的像素信息;

将该文字的像素信息复制到该空白纹理上,得到该文字的前景纹理。

在一种可能的实现方式中,该对该前景纹理进行渲染,得到第一背景纹理,包括:

获取基于颜色面板选择的第一颜色;

基于该第一颜色,对该前景纹理中的文字进行渲染,得到第一背景纹理。

在一种可能的实现方式中,该对该第一背景纹理中该文字的边缘进行处理,得到第二背景纹理,包括:

确定该文字的边缘点;

基于该边缘点,确定该文字的边框;

获取基于颜色面板选择的第二颜色;

按照该第二颜色,对该文字的边框进行渲染,得到第二背景纹理。

在一种可能的实现方式中,根据文字的字形信息,获取文字的前景纹理之后,还包括:

对多个文字对应的前景纹理进行合并,得到合并之后的前景纹理;

对前景纹理进行渲染,得到第一背景纹理,包括:

对合并之后的前景纹理进行渲染,得到第一背景纹理。

在一种可能的实现方式中,该将该第二背景纹理与显示文字的屏幕纹理进行融合,完成该文字的字体绘制,包括:

确定该第二背景纹理中每个像素点的透明度分量;

若该透明度分量为第一数值,则该像素点的颜色与该显示文字的屏幕纹理的颜色一致,按照该显示文字的屏幕纹理的颜色进行显示;

若该透明度分量为第二数值,则该像素点的颜色与该第二背景纹理的颜色一致,按照该第二背景纹理的颜色进行显示。

另一方面,提供了一种字体绘制装置,该装置包括:

第一获取模块,用于获取待绘制的文字;

第二获取模块,用于获取该文字的字形信息,该字形信息包括该文字的高度和宽度;

第三获取模块,用于根据该文字的字形信息,获取该文字的前景纹理;

渲染模块,用于对该前景纹理进行渲染,得到第一背景纹理;

边缘处理模块,用于对该第一背景纹理中该文字的边缘进行处理,得到第二背景纹理;

融合模块,用于将该第二背景纹理与显示文字的屏幕纹理进行融合,完成该文字的字体绘制。

在一种可能的实现方式中,该第三获取模块,用于创建该文字对应的空白纹理,该空白纹理的高度和宽度与该文字的高度和宽度相等;计算该文字的高度和宽度的乘积,将该乘积作为该文字的像素信息;将该文字的像素信息复制到该空白纹理上,得到该文字的前景纹理。

在一种可能的实现方式中,该渲染模块,用于获取基于颜色面板选择的第一颜色;基于该第一颜色,对该前景纹理中的文字进行渲染,得到第一背景纹理。

在一种可能的实现方式中,该边缘处理模块,用于确定该文字的边缘点;基于该边缘点,确定该文字的边框;获取基于颜色面板选择的第二颜色;按照该第二颜色,对该文字的边框进行渲染,得到第二背景纹理。

在一种可能的实现方式中,该装置还包括:

合并模块,用于对该多个文字对应的前景纹理进行合并,得到合并之后的前景纹理;

该渲染模块,用于对该合并之后的前景纹理进行渲染,得到第一背景纹理。

在一种可能的实现方式中,该融合模块,用于确定该第二背景纹理中每个像素点的透明度分量;若该透明度分量为第一数值,则该像素点的颜色与该显示文字的屏幕纹理的颜色一致,按照该显示文字的屏幕纹理的颜色进行显示;若该透明度分量为第二数值,则该像素点的颜色与该第二背景纹理的颜色一致,按照该第二背景纹理的颜色进行显示。

另一方面,提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条程序代码,该至少一条程序代码由该处理器加载并执行,以实现上述任一字体绘制方法。

另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述任一字体绘制方法。

本申请实施例提供的技术方案至少带来如下有益效果:

上述方案通过获取待绘制文字的字形信息,根据该文字的字形信息,得到该文字对应的前景纹理,对文字的前景纹理进行渲染,得到第一背景纹理,使得第一背景纹理中文字的颜色可以是多样的。进一步的,计算机设备还可以对第一背景纹理中文字的边缘进行处理,从而得到第二背景纹理,第二背景纹理中文字的边框显示更加清楚,从而使文字的显示更加清楚,一定程度上,提高整个文字的清晰度。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种字体绘制的实施环境示意图;

图2是本申请实施例提供的一种字体绘制的流程图;

图3是本申请实施例提供的一个待绘制的文字;

图4是本申请实施例提供的文字边框显示图;

图5是本申请实施例提供的一种字体绘制的整体流程图;

图6是本申请实施例提供的一种字体绘制的具体流程图;

图7是本申请实施例提供的一种字体绘制装置的结构图;

图8是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

图1是本申请实施例提供的一种字体绘制方法的具体实施环境示意图,参见图1,该实施环境包括:计算机设备101。

计算机设备101可以是智能手机、台式计算机、平板电脑、电子书阅读器和膝上型便携计算机设备中的至少一种。计算机设备101可以安装并运行有字体绘制客户端,该字体绘制客户端中包含字体文件和字体引擎,字体文件中包含多种样式的字形信息。计算机设备101根据用户输入的文字在字体文件中获取该文字的字形信息,通过字体引擎对该文字进行渲染,得到多种颜色的文字。计算机设备101还可以对该文字的边缘进行处理,使文字的边缘显示更加清楚,从而提高该文字的清晰度。

计算机设备101可以泛指多个计算机设备中的一个,本实施例仅以计算机设备101来举例说明。本领域技术人员可以知晓,上述计算机设备的数量可以更多或更少。比如上述计算机设备可以仅为几个,或者上述计算机设备为几十个或几百个,或者更多数量,本申请实施例对计算机设备的数量和设备类型不加以限定。

图2所示为本申请实施例提供的一种字体绘制的流程图,如图2所示,包括下述步骤:

在步骤201中,获取待绘制的文字。

在本申请实施例中,用户对支持文字绘制的应用程序进行初始化操作,在该应用程序中输入想要进行字体绘制的文字,该文字可以只包含一个文字,也可以包含多个文字,本申请实施例对文字的数量不做限定。计算机设备基于用户在设备上输入的文字,得到待绘制的文字。

在步骤202中,获取该文字的字形信息,该字形信息包括该文字的高度和宽度。

在本申请实施例中,计算机设备基于获取到的待绘制的文字,从字体文件中获取该文字的字形信息,该字体文件可以是truetype字体文件。该字形信息包括文字的宽度和高度,其中,文字的宽度和高度都是以像素为单位的。该字形信息还可以包括该文字的像素信息。该文字的像素信息可以通过该文字的高度和宽度的乘积得到。

例如,如图3所示为本申请实施例提供的一个待绘制的文字。参见图3,该文字的高度h=100,宽度w=100,基于该文字的高度和宽度,计算该文字的像素信息,即为100*100=10000。即该文字中包括10000个像素点,每个像素点的像素信息的格式为r8g8b8a8。其中,8代表像素信息中各分量的位数,r代表每个像素点中红色分量信息,g代表每个像素点中绿色分量信息,b代表每个像素点中蓝色分量信息,a代表每个像素点中透明度分量信息,r、g、b、a的取值均为[0,255]。在该图3中,白色区域中每个像素点的像素信息为r=255、g=255、b=255、a=255,黑色区域中每个像素点的像素信息为r=0、g=0、b=0、a=0。

在步骤203中,根据该文字的字形信息,获取该文字的前景纹理。

在本申请实施例中,根据待绘制文字的高度和宽度,创建一张空白纹理,该空白纹理的高度和宽度与待绘制文字的高度和宽度相等。计算机设备获取待绘制文字中每个像素点的像素信息,也即是每个像素点的r、g、b、a值,将每个像素点的像素信息复制到创建的空白纹理上,即得到一张与待绘制文字的像素信息一致的纹理,该纹理即为待绘制文字的前景纹理。

在一种可能的实现方式中,计算机设备获取到的待绘制的文字为多个文字,若该多个文字为“一二三”,则为该多个文字“一二三”创建三张空白纹理。第一张空白纹理的高度和宽度与文字“一”的高度和宽度相等,第二张空白纹理的高度和宽度与文字“二”的高度和宽度相等,第三张空白纹理的高度和宽度与文字“三”的高度和宽度相等。将文字“一”的像素信息复制到第一张空白纹理上,将文字“二”的像素信息复制到第二张空白纹理上,将文字“三”的像素信息复制到第三张空白纹理上,即得到文字“一”、“二”、“三”对应的前景纹理。

在步骤204中,对该前景纹理进行渲染,得到第一背景纹理。

在本申请实施例中,在对该前景纹理进行渲染时,计算机设备需要获取第一颜色,例如第一颜色为color1_1。用户在该应用程序的颜色面板中选择颜色的红色分量的值为color1_r,绿色分量的值为color1_g,蓝色分量的值为color1_b和透明度分量的值为color1_a,当用户选择完成后,可以点击确认按钮,从而根据用户选择的第一颜色的颜色分量,将用户选择的颜色分量合成一种颜色,该颜色即为第一颜色。

在一种可能的实现方式中,计算机设备基于在颜色面板上选择的第一颜色对前景纹理中的文字进行颜色渲染,从而得到第一背景纹理。颜色渲染的过程如下:

计算机设备检测前景纹理中文字的每个像素点的像素信息,可以按照前景纹理中像素点从左到右、从下到上的顺序依次进行检测。将前景纹理中像素点的像素信息为r=0、g=0、b=0、a=0的像素点排除,也即是,像素信息为r=0、g=0、b=0、a=0的像素点不需要进行颜色渲染。将剩下的像素点的像素信息按照第一颜色的像素信息进行渲染。从而可以得到颜色渲染之后的第一背景纹理。

例如,第一背景纹理中某个像素点(x,y)处的颜色渲染的公式如下:

back_color1_r=color1_r(1)

back_color1_g=color1_g(2)

back_color1_b=color1_b(3)

back_color1_a=color1_a(4)

上述公式(1)至(4)中,back_color1_r=color1_r表示第一背景纹理中像素点(x,y)处颜色的红色分量back_color1_r的值为color1_r,back_color1_g=color1_g表示第一背景纹理中像素点(x,y)处颜色的绿色分量back_color1_g的值为color1_g,back_color1_b=color1_b表示第一背景纹理中像素点(x,y)处颜色的蓝色分量back_color1_b的值为color1_b,back_color1_a=color1_a表示第一背景纹理中像素点(x,y)处颜色的透明度分量back_color1_a的值为color1_a。

需要说明的是,在前景纹理中,所有需要进行颜色渲染的像素点的渲染过程都按照上述渲染公式(1)至(4)进行渲染。若该待绘制文字为多个文字,可以按照上述方式依次对每个文字进行处理,从而可以得到颜色渲染后的多个文字对应的多个第一背景纹理。还可以按照如下的可选方式:

在一种可能的实现方式中,若待绘制的文字为多个文字,则需要将多个文字的前景纹理进行合并,得到合并后的前景纹理,将该合并后的前景纹理作为新的前景纹理,该新的前景纹理中包括该多个文字的前景纹理。再基于第一颜色,同时对新的背景纹理中的多个文字进行渲染,具体方法如下:

计算机设备对该新的前景纹理中每个像素点的像素信息进行检测,将像素信息为r=0、g=0、b=0、a=0的像素点排除,剩下的像素点即为需要进行颜色渲染的像素点。再根据用户在颜色面板上选择的第一颜色的颜色分量,对新的前景纹理中需要进行绘制的像素点进行绘制,即将新的前景纹理中像素信息不为r=0、g=0、b=0、a=0的像素点的像素信息转变为第一颜色对应的像素信息,得到第一背景纹理,从而可以一次完成多个文字的绘制,节省大量时间。

在步骤205中,对该第一背景纹理中该文字的边缘进行处理,得到第二背景纹理。

在本申请实施例中,还可以对第一背景纹理中的文字的边缘进行加强,从而得到第二背景纹理,第二背景纹理中的文字更加清晰。得到第二背景纹理的步骤如下:

步骤2051、确定第一背景纹理中文字的边缘点。

在一种可能的实现方式中,确定文字的边缘点的方法如下:

在第一背景纹理中任选一个像素点(x,y),再提取该像素点(x,y)周围的像素点,检测这些像素点中红色分量的值,若像素点(x,y)处红色分量的值为255,且周围的像素点中至少有一个像素点的红色分量的值为0,则将该像素点(x,y)确定为边缘点。

例如,取第一背景纹理中像素点(x,y)处的像素信息,记为e(x,y),取该第一背景纹理中像素点(x-1,y-1)处的像素信息,记为a(x,y);取该第一背景纹理中像素点(x,y-1)处的像素信息,记为b(x,y);取该第一背景纹理中像素点(x+1,y-1)处的像素信息,记为c(x,y);取该第一背景纹理中像素点(x-1,y)处的像素信息,记为d(x,y);取该第一背景纹理中像素点(x,y+1)处的像素信息,记为f(x,y);取该第一背景纹理中像素点(x-1,y+1)处的像素信息,记为g(x,y);取该第一背景纹理中像素点(x+1,y)处的像素信息,记为h(x,y);取该第一背景纹理中像素点(x+1,y+1)处的像素信息,记为i(x,y)。若该点e(x,y)的红色分量为255,并且a(x,y),b(x,y),c(x,y),d(x,y),f(x,y),g(x,y),h(x,y)和i(x,y)中有任意一个点的红色分量为0,则将该点e(x,y)确定为边缘点。

步骤2052、基于该边缘点,确定文字的边框。

由步骤2051确定出多个边缘点,该多个边缘点连接起来的边框即为该文字的边框。如图4所示为本申请实施例提供的根据上述方法确定的图3中文字的文字边缘。也即是图4中白色区域的像素点组成的框为该文字的边框。

步骤2053、获取基于颜色面板选择的第二颜色。

在本步骤2053中,计算机设备获取第二颜色,例如第二颜色为color1_2,用户在应用程序的颜色面板上选择第二颜色红色分量的值为color2_r,绿色分量的值为color2_g,蓝色分量的值为color2_b,透明度分量的值为color2_a,当用户选择完成后,可以点击确认按钮,从而根据该第二颜色的颜色分量,将用户选择的颜色分量合成一种颜色,该颜色即为第二颜色。

步骤2054、按照第二颜色,对文字的边框进行渲染,得到第二背景纹理。

在本步骤2054中,根据该第二颜色的颜色分量对文字的边框进行渲染,从而得到第二背景纹理。该第二背景纹理中,文字颜色和文字边框颜色可以是完全不一样的颜色,也可以是rgb相同,但透明度不同的颜色,本申请实施例对文字边框颜色的选择不做限制。

在一种可能的实现方式中,该第二背景纹理中某一个边缘像素点(p,q)的颜色的渲染公式如下:

back_color2_r=color2_r(5)

back_color2_g=color2_g(6)

back_color2_b=color2_b(7)

back_color2_a=color2_a(8)

上述公式(5)至(8)中,back_color2_r=color2_r表示第二背景纹理中像素点(p,q)处颜色的红色分量back_color2_r的值为color2_r,back_color2_g=color2_g表示第二背景纹理中像素点(p,q)处颜色的绿色分量back_color2_g的值为color2_g,back_color2_b=color2_b表示第二背景纹理中像素点(p,q)处颜色的蓝色分量back_color2_b的值为color2_b,back_color2_a=color2_a表示第二背景纹理中像素点(p,q)处颜色的透明度分量back_color2_a的值为color2_a。

在步骤206中,将该第二背景纹理与显示文字的屏幕纹理进行融合,完成该文字的字体绘制。

在本申请实施例中,还需要将第二背景纹理绘制到显示文字的屏幕上,即采用direct3d的纹理混合方法,将第二背景纹理和显示文字的屏幕纹理进行融合。融合方法如下:

第二背景纹理中的像素点(x,y)处的像素信息为scr,屏幕纹理中像素点(x,y)处的像素信息为back,像素点(x,y)最终显示的像素信息为dst,则scr和back的混合算法如下:

dst.r=src.r*src.a+back.r*(1.0-src.a)(9)

dst.g=src.g*src.a+back.g*(1.0-src.a)(10)

dst.b=src.b*src.a+back.b*(1.0-src.a)(11)

上述公式(9)至(11)中,dst.r为最终显示的像素点(x,y)处的红色分量,dst.g为最终显示的像素点(x,y)处的绿色分量,dst.b为最终显示的像素点(x,y)处的蓝色分量。src.r第二背景纹理中像素点(x,y)处的红色分量,src.g为第二背景纹理中像素点(x,y)处的绿色分量,src.b为第二背景纹理中像素点(x,y)处的蓝色分量。back.r为屏幕纹理中像素点(x,y)处的红色分量,back.g为屏幕纹理中像素点(x,y)处的绿色分量,back.b为屏幕纹理中像素点(x,y)处的蓝色分量。src.a为第二背景纹理中像素点(x,y)处的透明度分量。

根据上述公式(9)至(11)可以得出,若第二背景纹理中像素点(x,y)处的透明度分量为1.0时,则最终显示的像素的红色分量、绿色分量和蓝色分量与第二背景纹理中各颜色分量一致。若第二背景纹理中像素点(x,y)处的透明度分量为0时,则最终显示的像素的红色分量、绿色分量和蓝色分量与显示文字的屏幕纹理中各颜色分量一致。在一种可能的实现方式中,还可以通过用户对透明度分量的控制,计算最终显示的文字各个颜色的分量信息,从而得到绘制完成的文字。

上述方案通过获取待绘制文字的字形信息,根据该文字的字形信息,得到该文字对应的前景纹理,对文字的前景纹理进行渲染,得到第一背景纹理,使得第一背景纹理中文字的颜色可以是多样的。进一步的,计算机设备还可以对第一背景纹理中文字的边缘进行处理,从而得到第二背景纹理,第二背景纹理中文字的边框显示更加清楚,从而使文字的显示更加清楚,一定程度上,提高整个文字的清晰度。

图5所示为本申请实施例示出的一种字体绘制的整体流程图,如图5所示,包括下述步骤:

在步骤501中,计算机设备初始化字体引擎和字体文件。

在本申请实施例中,计算机设备中安装和运行有支持字体绘制的应用程序,例如,freetype字体引擎。该freetype字体引擎提供一个接口,该接口用于与字体文件进行连接,从而获取字体文件中文字的字形信息,字体文件可以是truetype字体文件。在进行字体绘制之前,先对该字体引擎和字体文件进行初始化操作。

在步骤502中,计算机设备获取待绘制的文字。

在本申请实施例中,计算机设备获取待绘制文字的方法与上述步骤201中的方法一致,在此不再赘述。

在步骤503中,计算机设备获取待绘制文字的字形信息,该字形信息包括该文字的高度和宽度。

在本申请实施例中,计算机设备获取待绘制文字的字形信息的方法与上述步骤202中的方法一致,在此不再赘述。

在步骤504中,计算机设备对根据该字形信息,获取该文字的前景纹理。

在本申请实施例中,计算机设备获取文字的前景纹理的方法与上述步骤203中的方法一致,在此不再赘述。

在步骤505中,计算机设备获取基于颜色面板选择的第一颜色,按照该第一颜色,对该前景纹理进行渲染,得到第一背景纹理。

在本申请实施例中,计算机设备获取第一背景纹理的方法与上述步骤204中的方法一致,在此不再赘述。

在步骤506中,计算机设备获取基于颜色面板选择的第二颜色,按照该第二颜色,对该第一背景纹理中的文字的边缘进行处理,得到第二背景纹理。

在本申请实施例中,计算机设备获取第二背景纹理的方法与上述步骤205中的方法一致,在此不再赘述。

在步骤507中,计算机设备对该第二背景纹理中每一个像素点的像素信息进行归一化处理。

在本申请实施例中,计算机设备获取第二背景纹理中每一个像素点的像素信息,对该每一个点的像素信息进行归一化处理。将每一个像素点的像素信息归一化到[0,1]的范围。具体的归一化处理如下:

例如,针对第二背景纹理中的像素点(x,y),将该点的像素信息中的红色分量除以255,将像素信息中的绿色分量除以255,将像素信息中的蓝色分量除以255,将像素信息中的透明度分量除以255,从而可以得到该像素点的像素信息归一化结果。

对该第二背景纹理中的每一个像素点的像素信息都进行上述归一化处理,从而得到一张归一化之后的第二背景纹理。该归一化之后的第二背景纹理用于后续与显示文字的屏幕纹理进行融合,从而可以得到显示屏幕上的文字。

在步骤508中,计算机设备获取显示文字的屏幕纹理,将该归一化后的第二背景纹理和该屏幕纹理进行融合,完成该文字的字体绘制。

在本申请实施例中,计算机设备将第二背景纹理和显示文字的屏幕纹理进行融合的方法与上述步骤206中的方法一致,在此不再赘述。

在步骤509中,在显示屏幕上显示完成字体绘制的文字。

在本申请实施例中,在显示屏幕上显示绘制完成的文字,用户可以对该绘制完成的文字进行查看,若该文字的颜色和/或文字的边框颜色不满足用户的要求,用户还可以对该文字的颜色和/或文字的边框颜色进行改变,即重复步骤505和/或步骤506,直到用户对最终绘制完成的文字满意为止。

上述方案通过获取待绘制文字的字形信息,得到待绘制文字中需要进行绘制的像素点,根据用户在颜色面板上选择的第一颜色,对待绘制文字中需要进行绘制的像素点进行颜色渲染,从而得到第一背景纹理,由于颜色的多样性,使得渲染之后的第一背景纹理多姿多彩。计算机设备还可以对该第一背景纹理中文字的边缘进行提取,按照用户在颜色面板上选择的第二颜色,对文字的边缘进行渲染,以提高文字边缘的清晰度,使得文字的边框更加清楚,从而使文字的显示更加清楚,一定程度上,提高整个文字的清晰度。

图6是本申请实施例提供的一种字体绘制的具体流程图,参见图6,用户初始化freetype字体引擎,用户在包括该字体引擎的应用程序中输入文字,检测用户是否输入完毕,如果用户还未输入完毕,则继续输入文字。如果用户已输入完毕,则获取该文字中单个文字的字形信息,将字形信息的像素信息复制到direct3d纹理上,从而得到文字的前景纹理。将文字的前景纹理进行合并得到背景纹理,可以基于用户选择的文字颜色,对背景纹理中的文字进行渲染,还可以基于用户选择的文字边缘颜色,对背景纹理中的文字边缘进行渲染,从而得到颜色渲染的背景纹理,其中,文字像素信息中的透明度分量可以由用户进行控制。将该背景纹理的像素信息进行归一化,将归一化后的背景纹理和屏幕纹理进行融合,从而完成文字的字体绘制。

图7是本申请实施例提供的一种字体绘制装置的结构图,参见图7,该装置包括:

第一获取模块701,用于获取待绘制的文字;

第二获取模块702,用于获取该文字的字形信息,该字形信息包括该文字的高度和宽度;

第三获取模块703,用于根据该文字的字形信息,获取该文字的前景纹理;

渲染模块704,用于对该前景纹理进行渲染,得到第一背景纹理;

边缘处理模块705,用于对该第一背景纹理中该文字的边缘进行处理,得到第二背景纹理;

融合模块706,用于将该第二背景纹理与显示文字的屏幕纹理进行融合,完成该文字的字体绘制。

在一种可能的实现方式中,该第三获取模块703,用于创建该文字对应的空白纹理,该空白纹理的高度和宽度与该文字的高度和宽度相等;计算该文字的高度和宽度的乘积,将该乘积作为该文字的像素信息;将该文字的像素信息复制到该空白纹理上,得到该文字的前景纹理。

在一种可能的实现方式中,该渲染模块704,用于获取基于颜色面板选择的第一颜色;基于该第一颜色,对该前景纹理中的文字进行渲染,得到第一背景纹理。

在一种可能的实现方式中,该边缘处理模块705,用于确定该文字的边缘点;基于该边缘点,确定该文字的边框;获取基于颜色面板选择的第二颜色;按照该第二颜色,对该文字的边框进行渲染,得到第二背景纹理。

在一种可能的实现方式中,该装置还包括:

合并模块,用于对该多个文字对应的前景纹理进行合并,得到合并之后的前景纹理;

该渲染模块704,用于对该合并之后的前景纹理进行渲染,得到第一背景纹理。

在一种可能的实现方式中,该融合模块706,用于确定该第二背景纹理中每个像素点的透明度分量;若该透明度分量为第一数值,则该像素点的颜色与该显示文字的屏幕纹理的颜色一致,按照该显示文字的屏幕纹理的颜色进行显示;若该透明度分量为第二数值,则该像素点的颜色与该第二背景纹理的颜色一致,按照该第二背景纹理的颜色进行显示。

上述装置通过获取待绘制文字的字形信息,根据该文字的字形信息,得到该文字对应的前景纹理,对文字的前景纹理进行渲染,得到第一背景纹理,使得第一背景纹理中文字的颜色可以是多样的。进一步的,计算机设备还可以对第一背景纹理中文字的边缘进行处理,从而得到第二背景纹理,第二背景纹理中文字的边框显示更加清楚,从而使文字的显示更加清楚,一定程度上,提高整个文字的清晰度。

需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图8是本申请实施例提供的一种计算机设备的结构示意图。该计算机设备800可以是:智能手机、平板电脑、mp3(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)播放器、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。计算机设备800还可能被称为用户设备、便携式计算机设备、膝上型计算机设备、台式计算机设备等其他名称。

通常,计算机设备800包括有:一个或多个处理器801和一个或多个存储器802。

处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被处理器801所执行以实现本申请中方法实施例提供的字体绘制方法。

在一些实施例中,计算机设备800还可选包括有:外围设备接口803和至少一个外围设备。处理器801、存储器802和外围设备接口803之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备包括:射频电路804、显示屏805、摄像头806、音频电路807、定位组件808和电源809中的至少一种。

外围设备接口803可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器801和存储器802。在一些实施例中,处理器801、存储器802和外围设备接口803被集成在同一芯片或电路板上;在一些其他实施例中,处理器801、存储器802和外围设备接口803中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路804用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路804包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路804可以通过至少一种无线通信协议来与其它计算机设备进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路804还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏805用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏805是触摸显示屏时,显示屏805还具有采集在显示屏805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器801进行处理。此时,显示屏805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏805可以为一个,设置计算机设备800的前面板;在另一些实施例中,显示屏805可以为至少两个,分别设置在计算机设备800的不同表面或呈折叠设计;在再一些实施例中,显示屏805可以是柔性显示屏,设置在计算机设备800的弯曲表面上或折叠面上。甚至,显示屏805还可以设置成非矩形的不规则图形,也即异形屏。显示屏805可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件806用于采集图像或视频。可选地,摄像头组件806包括前置摄像头和后置摄像头。通常,前置摄像头设置在计算机设备的前面板,后置摄像头设置在计算机设备的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器801进行处理,或者输入至射频电路804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在计算机设备800的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器801或射频电路804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路807还可以包括耳机插孔。

定位组件808用于定位计算机设备800的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件808可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源809用于为计算机设备800中的各个组件进行供电。电源809可以是交流电、直流电、一次性电池或可充电电池。当电源809包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,计算机设备800还包括有一个或多个传感器810。该一个或多个传感器810包括但不限于:加速度传感器811、陀螺仪传感器812、压力传感器813、指纹传感器814、光学传感器815以及接近传感器816。

加速度传感器811可以检测以计算机设备800建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器811可以用于检测重力加速度在三个坐标轴上的分量。处理器801可以根据加速度传感器811采集的重力加速度信号,控制显示屏805以横向视图或纵向视图进行用户界面的显示。加速度传感器811还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器812可以检测计算机设备800的机体方向及转动角度,陀螺仪传感器812可以与加速度传感器811协同采集用户对计算机设备800的3d动作。处理器801根据陀螺仪传感器812采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器813可以设置在计算机设备800的侧边框和/或显示屏805的下层。当压力传感器813设置在计算机设备800的侧边框时,可以检测用户对计算机设备800的握持信号,由处理器801根据压力传感器813采集的握持信号进行左右手识别或快捷操作。当压力传感器813设置在显示屏805的下层时,由处理器801根据用户对显示屏805的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器814用于采集用户的指纹,由处理器801根据指纹传感器814采集到的指纹识别用户的身份,或者,由指纹传感器814根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器801授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器814可以被设置计算机设备800的正面、背面或侧面。当计算机设备800上设置有物理按键或厂商logo时,指纹传感器814可以与物理按键或厂商logo集成在一起。

光学传感器815用于采集环境光强度。在一个实施例中,处理器801可以根据光学传感器815采集的环境光强度,控制显示屏805的显示亮度。具体地,当环境光强度较高时,调高显示屏805的显示亮度;当环境光强度较低时,调低显示屏805的显示亮度。在另一个实施例中,处理器801还可以根据光学传感器815采集的环境光强度,动态调整摄像头组件806的拍摄参数。

接近传感器816,也称距离传感器,通常设置在计算机设备800的前面板。接近传感器816用于采集用户与计算机设备800的正面之间的距离。在一个实施例中,当接近传感器816检测到用户与计算机设备800的正面之间的距离逐渐变小时,由处理器801控制显示屏805从亮屏状态切换为息屏状态;当接近传感器816检测到用户与计算机设备800的正面之间的距离逐渐变大时,由处理器801控制显示屏805从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图8中示出的结构并不构成对计算机设备800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由处理器执行以完成上述实施例中的字体绘制方法。例如,该计算机可读存储介质可以是只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、只读光盘(compactdiscread-onlymemory,cd-rom)、磁带、软盘和光数据存储设备等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来程序代码相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

上述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、同等替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1