PDFWriter 随笔:终于能内嵌 OTF了

(PDFWriter 是一个正在开发的 PHP PDF Library)

这两週花了不少时间研究 OpenType 字型档内嵌到 pdf 的方式,这两天终于搞定了。下面就轻鬆聊一些过程吧。

OpenType 与 TrueType 的差异

OpenType 跟 TrueType 其实主架构都差不多,就是内部的 table 有些微差异。

TrueType 的字型资料主要放在 glyf 表,glyf 内含每个文字的向量描述,以二次贝兹曲线构成。
而 OpenType 则是放在 cff 表内,以三次贝兹曲线构成。

在数学上,一个二次函数要转换成三次函数是容易的,但是反过来的话,其实很困难。
因此,网路上一些把 OpenType 转换为 TrueType 的程式,其实并不能说 100% 无失真转换,顶多是透过「补点」的方式让其极接近原曲线。
这也是为什么我很想实作能够支援 OpenType 的原因之一,毕竟现在 OpenType 字型越来越多了。

处理 OpenType 的困难点

相较于 glyf ,网路上对 cff 的资讯相对比较少。
举例来说,当时要对 TrueType 做 subset 时,找得到一些前人所写的文章。
但是 cff 我目前是没找到,因此只能直接看 adobe 的规格文件,然后直接尝试。
另一个点是 cff 全名是 Compact Font Format,也就是说他原本是独立存在的字型格式,而且为了减少档案大小,封装的格式比较複杂。

后续

之后的工作感觉就比较简单了

字型的支援会再补完一些未完成的部分(这些可能是比较少见的格式,不见得会遇到)。加一下能够内嵌点阵图的功能、错误回报、把文件写好等。最后内容相关的模组预计会跟核心分开(这核心原本就是打算给不同的专案引用的)。

最后,由于一个人的力量有限,如果发现程式有任何问题,或是有任何想法或是建议欢迎跟我说。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章