![基于渲染效果的字体校准方法与流程](https://img.xjishu.com/img/zl/2023/3/14/n2efhnq0d.jpg)
1.本发明涉及字体水印技术领域,特别涉及一种基于渲染效果的字体校准方法。
背景技术:2.字体水印技术指的是通过在字体中添加水印的技术。大多数情况下字体水印都会添加在字形信息中,通过对字形进行微调,在人眼的视觉效果变化很小的情况下,将信息添加到了文字之中。衡量字体水印性能的一个主要指标就是肉眼是否能看出文本信息中添加了水印。
3.理想的字体水印如果不进行像素级别仔细的对比,文字之中是否包含水印应当是难以分辨的。无论是单个字符的字形进行对比,还是大量字符组成的文本段落,在添加水印前后都应该保证渲染结果的一致性,这也正是本发明希望达到的效果,使得替换字形后,大量文本渲染时能保持和原字体的渲染效果相同。
4.字体水印技术应用时,如何高效的对字符的字形进行微调是研究人员较为关注的一个点。参阅图1,目前,大部分针对字符字形的步骤如下:首先从ttf格式的字体文件ttf_1中读取字符的矢量数据,得到svg格式的数据svg_1;然后直接对svg格式的数据svg_1进行微调;最后将微调后的svg格式数据svg_2再转换成ttf格式的字体文件ttf_2进行使用。此种变形过程中,由于对svg格式的数据进行微调时,基本都是对部分关键点的位置进行微调,因此,字符整体的位置不会出现偏移,再转换成ttf格式字体文件后,将其渲染并显示在屏幕上的时候,渲染前后的字符位置不会出现偏移,具有较好的视觉效果。
5.通过对svg数据进行微调实现字符的变形,很多学者都对其进行了研究,我司也申请过相关专利,现在已经可以做到批量化的自动变形。但这种变形方式,其本质上是对字符关键点进行微调实现的,其变形效果非常有限,且对于某些字体的变形效果不是很好。
6.为了进一步提高字符的变形效果,有学者借鉴神经网络对图片的处理思路,将字符数据转换成图片格式后,对字符图片进行处理从而得到变形后的字符图片,然后再将变形后的字符图片转换成字体文件来使用。从ttf格式的字体文件ttf_1中读取svg格式数据svg_1时,会丢失锚点信息,如果后续只是调整部分关键点的位置,所得到的svg格式数据svg_2再转换回ttf格式的字体文件ttf_2时,不会出现太大偏差。图2所示的是基于神经网络算法的字体变形过程图,在引入了神经网络对图片的处理后,svg格式数据和图片的相互转换过程以及神经网络对图片的处理过程,都会导致字符变形前、后的svg格式数据svg_1、svg_3出现了很大的变化,此时,根据svg格式数据svg_3转换回的ttf格式的字体文件记为ttf_3,将其渲染并显示在屏幕上的时候,渲染后的字符位置会出现偏移。
7.对于中文、日文这种方块字体而言,字体渲染的错误只会改变字体之间的间隔,但对于英文、拉丁文这些非方块字体,字体渲染的错误将会导致明显的字形错位。一旦字形的渲染存在错位,所有包含了字体水印的文字的视觉质量会存在明显的下降,容易引起怀疑,被发现其中包含了字体水印。图5中的第一行文本是times new roman字体在word等常见办公软件中呈现出的效果,图5中的第二行文本为同一个字体添加水印之后在办公软件中呈
现出的效果。如果观察单个字母,很难看出第二行字体中添加了水印,但由于之前所提到的,替换字形时新旧字形在不同的坐标空间中,导致添加水印之后出现了字形错位,尤其是y和g出现了明显的向上偏移,在尽可能想要隐藏信息的字体水印技术中,这种程度的偏移是无法接受的。因此,急需一种方法来对svg格式数据svg_3进行校准,从而消除这种偏移。
技术实现要素:8.本发明的首要目的在于提供一种基于渲染效果的字体校准方法,能够保证变形后字符能够被可靠的渲染显示。
9.为实现以上目的,本发明采用的技术方案为:一种基于渲染效果的字体校准方法,包括如下步骤:将变形后的字符图片转换成svg格式数据后,从该svg格式数据中求得第一位置信息;将上述svg格式数据转换成ttf格式的字体文件,并对其渲染得到第二位置信息;对标准字符进行渲染得到第三位置信息;根据第一位置信息和第二位置信息求解渲染变换关系f1,根据第二位置信息和第三位置信息求解渲染结果变换关系f2;根据求得的变换关系f1、f2以及公式f2(f1(x,y))=f1(f(x,y))求得校准变换关系f;利用校准变换关系f对上述svg格式数据进行校准得到校准后的svg格式数据。
10.与现有技术相比,本发明存在以下技术效果:通过获得的三个位置信息,来求解渲染变换关系f1和渲染结果变换关系f2,然后在根据这两个关系去求解校准变换关系f,这个过程都可以自动化完成,十分的高效;并且校准后字体的渲染效果与原始ttf字体视觉效果几乎完全一致,使得替换后的字符很难被用户所感知,进一步提高字符水印的隐形效果。
11.本发明的另一个目的在于提供一种字符变形方法,能够更加灵活的对字符进行变形且具有非常好的渲染效果。
12.为实现以上目的,本发明采用的技术方案为:一种字符变形方法,包括如下步骤:从ttf格式的字体文件ttf_1中读取字符的矢量数据,得到svg格式的数据svg_1;将svg格式的数据svg_1转换成第一图片;利用神经网络算法对第一图片进行变形得到第二图片;将第二图片转换成svg格式数据svg_3;利用前述校准方法对svg格式数据svg_3进行校准得到校准后的svg格式数据svg_4;将svg格式数据svg_4转换成ttf格式的字体文件ttf_4从而得到变形后的字体文件。
13.与现有技术相比,本发明存在以下技术效果:通过对svg格式数据svg_3进行校准得到校准后的svg格式数据svg_4,使得转换得到的ttf格式的字体文件ttf_4在渲染时与原始ttf字体视觉效果几乎完全一致,使得替换后的字符很难被用户所感知,进一步提高字符水印的隐形效果。
附图说明
14.图1是基于关键点位置微调的字体变形流程图;图2是基于神经网络算法的字体变形流程图;图3是本发明中字体校准原理示意图;图4是本发明中的字体变形流程图;图5是标准字体、未校准的变形字体、校准后的变形字体对比图。
具体实施方式
15.下面结合图3和图5,对本发明做进一步详细叙述。
16.背景技术中,我们已经详细介绍了现有技术中问题的产生,想要解决变形后的字体渲染所出现的偏移问题,首先需要了解字形的渲染机制。字形渲染过程是将字母符号以及其他文本信息组成的文本段落转换成像素图像的过程,主要包括以下几步:(1)字体适配:主要用于配置、定制管理系统里的字体,通过给出的字体名称,及额外的粗体,斜体等配置信息,找到现有系统中最匹配的这些特征的字体文件,从这些字体文件中提取出正确的字形;(2)文本排版:根据字号、输入的文本内容和对应字形,生成格式正确且位置正确的字形图像输出,目前几乎所有的主流平台均使用harfbuzz这一文本排版引擎,因此只需要使用该引擎时能正确渲染,就可以在全平台正确渲染。排版的过程是将svg格式的矢量字形生成对应大小的像素点阵,这一过程中主要包含字形定位和像素点阵插值,可以看作是将字形从svg定义的坐标系空间中映射到需要渲染的画布空间中,对单个字形而言,是一个线性变换;(3)布局渲染:将文本排版生成的像素点阵在屏幕对应位置绘制出来,布局渲染的过程主要是为了适配不同分辨率和色域的显示设备。
17.从字形渲染的过程可以看出,和最终渲染结果有关的主要是在文本排版这一步,其输入为字体、字号和输入文本的具体内容。在渲染引擎不变的情况下,只需要对字体的svg字形文件的坐标进行正确的改变,就能解决渲染错误的问题。
18.参阅图3,本发明中公开了一种基于渲染效果的字体校准方法,包括如下步骤:将变形后的字符图片转换成svg格式数据后,从该svg格式数据中求得第一位置信息;将上述svg格式数据转换成ttf格式的字体文件,并对其渲染得到第二位置信息;对标准字符进行渲染得到第三位置信息;根据第一位置信息和第二位置信息求解渲染变换关系f1,根据第二位置信息和第三位置信息求解渲染结果变换关系f2;根据求得的变换关系f1、f2以及公式f2(f1(x,y))=f1(f(x,y))求得校准变换关系f,这个公式的左边可以理解为图3中的新字形——新字形渲染效果——原字形渲染效果这样的流程,公式的右边可以理解为图3中的新字形——校准svg——原字形渲染效果这样的流程,可以看出,他们的起点和终点都是一样的,只是处理方式的不同,因此他们的结果是相等的。利用校准变换关系f对上述svg格式数据进行校准得到校准后的svg格式数据。通过获得的三个位置信息,来求解渲染变换关系f1和渲染结果变换关系f2,然后在根据这两个关系去求解校准变换关系f,这个过程都可以自动化完成,十分的高效;并且校准后字体的渲染效果与原始ttf字体视觉效果几乎完全一致,使得替换后的字符很难被用户所感知,进一步提高字符水印的隐形效果。
19.进一步地,所述的第一位置信息为(x
11
,x
12
,y
11
,y
12
),第二位置信息为(x
21
,x
22
,y
21
,y
22
),渲染变换关系f1为线性变换,根据如下公式计算得到:,式中,k
x1
、k
y1
、c
x1
以及c
y2
是通过第一位置信息和第二位置信息计算得到的变换系数。优选地,其可以通过如下公式计算:
,通过以上公式,我们可以方便的计算出渲染变换关系f1。
20.进一步地,所述的第二位置信息为(x
21
,x
22
,y
21
,y
22
),第三位置信息为(x
31
,x
32
,y
31
,y
32
),渲染结果变换关系f2为线性变换,根据如下公式计算得到:,式中,k
x2
、k
y2
、c
x2
以及c
y2
是通过第二位置信息和第三位置信息计算得到的变换系数。进一步优选地,其具体计算思路与前面的一致,具体公式如下:,通过以上公式,我们可以方便的计算出渲染结果变换关系f2。
21.进一步地,根据以上的计算思路和公式f2(f1(x,y))=f1(f(x,y)),校准变换关系f也是线性变换,校准变换关系f根据如下公式计算得到:,式中,k
x1
、k
y1
、c
x1
以及c
y2
是通过第一位置信息和第二位置信息计算得到的变换关系,k
x2
、k
y2
、c
x2
以及c
y2
是通过第二位置信息和第三位置信息计算得到的变换关系,具体的计算公式前面已经述及,这里就不再赘述。图5中的第三行文本就是经过校准之后的svg数据转换成的ttf格式文件的视觉效果,校准之后和第一行原始ttf字体视觉效果几乎完全一致,很难看出第三行文本是替换过字形包含水印信息的文本,图5中第4行的两个字母“e”是放大后的图像,可以看出两者是有差异的,左边是原始字符,右边是变形字符。
22.参阅图4,本发明还公开了一种字符变形方法,包括如下步骤:从ttf格式的字体文件ttf_1中读取字符的矢量数据,得到svg格式的数据svg_1;将svg格式的数据svg_1转换成第一图片;利用神经网络算法对第一图片进行变形得到第二图片;将第二图片转换成svg格式数据svg_3;利用前述的校准方法对svg格式数据svg_3进行校准得到校准后的svg格式数
据svg_4;将svg格式数据svg_4转换成ttf格式的字体文件ttf_4从而得到变形后的字体文件。通过对svg格式数据svg_3进行校准得到校准后的svg格式数据svg_4,使得转换得到的ttf格式的字体文件ttf_4在渲染时与原始ttf字体视觉效果几乎完全一致,使得替换后的字符很难被用户所感知,进一步提高字符水印的隐形效果。
23.本发明还公开了一种计算机可读存储介质和一种电子设备。其中,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如前所述的基于渲染效果的字体校准方法或实现如前所述的字符变形方法。一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序时,实现如前所述的基于渲染效果的字体校准方法或实现如前所述的字符变形方法。