(PDFWriter 是一個正在開發的 PHP PDF Library)
這兩週花了不少時間研究 OpenType 字型檔內嵌到 pdf 的方式,這兩天終於搞定了。下面就輕鬆聊一些過程吧。
OpenType 跟 TrueType 其實主架構都差不多,就是內部的 table 有些微差異。
TrueType 的字型資料主要放在 glyf 表,glyf 內含每個文字的向量描述,以二次貝茲曲線構成。
而 OpenType 則是放在 cff 表內,以三次貝茲曲線構成。
在數學上,一個二次函數要轉換成三次函數是容易的,但是反過來的話,其實很困難。
因此,網路上一些把 OpenType 轉換為 TrueType 的程式,其實並不能說 100% 無失真轉換,頂多是透過「補點」的方式讓其極接近原曲線。
這也是為什麼我很想實作能夠支援 OpenType 的原因之一,畢竟現在 OpenType 字型越來越多了。
相較於 glyf ,網路上對 cff 的資訊相對比較少。
舉例來說,當時要對 TrueType 做 subset 時,找得到一些前人所寫的文章。
但是 cff 我目前是沒找到,因此只能直接看 adobe 的規格文件,然後直接嘗試。
另一個點是 cff 全名是 Compact Font Format,也就是說他原本是獨立存在的字型格式,而且為了減少檔案大小,封裝的格式比較複雜。
之後的工作感覺就比較簡單了
最後,由於一個人的力量有限,如果發現程式有任何問題,或是有任何想法或是建議歡迎跟我說。