OFD 版式技术解析系列(三):仿射变换在 OFD 中的应用

发布于: 2020 年 07 月 20 日
OFD 版式技术解析系列(三):仿射变换在OFD中的应用

OFD元素定位方式介绍

组成一个OFD 的主要元素有文字、图像、图形。其他格式的文件也是由这几类元素组成的。

图片、文字很好理解,图形的话就比较抽象了。用最官方的解释就是在一个二维空间中可以用轮廓划分出若干的空间形状,图形是空间的一部分不具有空间的延展性,它是局限的可识别的形状。

说白了,图形就是由一些线条构成的矢量图,最常见的就是word中绘制的表格了。

OFD中这些元素的定位用的基本方法就是仿射变换,接下来分别介绍文字、图像和图形的定位方法。

坐标原点

坐标原点是个至关重要的元素,如果你需要把你的文字放到(x=30,y=30)的坐标,可是你不知道你的坐标原点在那里,如果你用的OFD的定位方式,那么是以左上角为原点进行定位的,如果是PDF 则是以左下角定位的,下图来描述一下OFD和pdf 对(30,30)的定位。

文字定位方法

OFD对文字的定位主要有Boundary(文字块的边界)、x、y(字型原定距离)、DeltaX、DeltaY(文字偏移量)CTM(变换矩阵)

定位步骤
  • boundary中的左上点为整个文字块的基准点

  • 以文字块的基准点偏移字型原点距离x,y

  • 偏移需要定位字的DeltaY、DeltaX

  • 以上一步骤获取到的点为原点对字型进行仿射变换

OFD 字型变换矩阵(CTM)里不包含偏移量,所以,我们需要按照上述的步骤得到每个字的基准点。

说了这1、2、3、4的定位步骤,可能还没有说明白,直接上图吧!

  • boundary 就是最外层这个红框,也就是第一步找到的点

  • 文字块的偏移距离x,y 就是第一个字的字型原点到第一步boundary 的距离,这是后你可能会问为什么蓝色的竖线没有到第一个字的红框的最下边?这个是字体的基线,这个下一篇重点介绍字体以及字型的提取

  • 这一步得到的第一个字的基准点,也就是棕色基线和第一个字左边框的焦点,然后以该点为基点给字型做仿射变换,就获得了第一个字的正确距离。

  • 后边字的计算依旧是首先获取到每个字的基准点,然后再做变换。这就是DeltaX,DeltaY的作用,DeltaX是一个数组,比如说图中这个5个字的偏移量,它是4个值,分别是第2个字的左边框减去第一个字的左边框......第5个字的左边框减去第4个字的左边框。第一个字是0,就省略了。

图像、图形定位方法

图像、图形的定位比文字的定位简单多了

直接通过该元素的Boundary 获取到基准点,然后对元素做对应的变换就行。

对于图片的OFD解析显示有一个小小的坑

显示的时候OFD默认是以(1*1)的大小进行仿射变换的,因此再变换之前,首先需要把图片的缩放参数确定下来,然后再进行变换

注意点:DeltaX不能用boundary 除以字个数吗?

当然不能,图中的大写英文和小写英文的字宽都不一样,汉字、数字英文的字款也不一样。

仿射变换

上面提了这么多次的仿射变换,究竟是什么?这一节就重点讲一下。

仿射变换就是对坐标进行线性变换和平移。

我们先以一个矢量来演示下什么是线性变换:

  • 缩放,比如你对这个矢量(1,2)放大2倍,放大后的结构是(2,4)可以表示成2*(1,2)

如果是x放大2倍,y放大3倍就只能用矩阵来表示了:

  • 缩放,如果把(1,0) 旋转45度,旋转后的顶点坐标是(根号2/2,根号2/2)(原谅我的md 不能渲染公式),用旋转矩阵来表示就是:

  • 切变,就是坐标做反转,这个很好理解,就是缩放过程中的值有正有负

这种线性变换可以把一个图像扭曲到你怀疑人生,但是不管它怎么扭曲,它的坐标原点还是它的原点,并没有发生改变。

这时候就需要引入平移操作,在一个二维坐标系里,只用2*2的矩阵是不能表示平移操作,只能在变换矩阵中引入一个表示平移的分量,矩阵就变成了这样:

这就是仿射变换。简单的说就是一个线性变换加上平移。

变换矩阵

这块直接引用ofd文档的内容

平移

缩放

旋转

切变

变换矩阵在其他场景的应用

仿射变换在OFD水印中的应用

同样,仿射变换的方法也在OFD的水印上得到了使用

具体的步骤是:

  • 获取水印的位置,角度,文字大小

  • 根据文字的大小设置矩阵的缩放参数

  • 根据旋转的角度对变换矩阵进行旋转

  • 生成对应的OFD元素,写入文件

总结

纸上得来终觉浅,绝知此事要躬行!

亲手转化一个OFD 看看定位的CTM矩阵究竟是什么样的!

拓展阅读:

OFD 版式技术解析系列(一):开篇

OFD 版式技术解析系列(二):OFD 的颜色显示

作者:北京华宇信息技术有限公司-研究院-信创实验室

发布于: 2020 年 07 月 20 日 阅读数: 4
用户头像

华宇法律科技

关注

还未添加个人签名 2020.05.21 加入

还未添加个人简介

评论

发布
暂无评论
OFD 版式技术解析系列(三):仿射变换在OFD中的应用