iT邦幫忙

3

紀錄:PDF 內文字是如何編碼的(使用OTF/CFF字型)

  • 分享至 

  • xImage
  •  

閱讀PDF 規格文件時,會發現對於不同的字型,可選擇的策略也很多
這篇主要是內嵌基於 CFF 的 OTF 字型
採取 9.9 節表格的 CIDFontType0C 方式內嵌

這邊只紀錄要點,細節請參考原始資料

寫入 PDF 流程

  1. 一般的文字編碼(unicode、Big5 等),根據 OTF 字型檔的 cmap table,找到對應的 GID(代表第幾張向量圖)
  2. 字型檔的 CFF table 的資料本身就是一個 CFF 字型,CFF 字型裡面有個 charset 表會把 GID 映射到 CID
  3. 取得 CID 後就與字型檔無關了,但 PDF 內還有個 CMap(由 9.7.6 Type 0 Font Dictionaries 的 Encoding 設定),這決定了 CID 到「character code」的映射。最後寫在 PDF 字串內的就是這些「character code」

https://ithelp.ithome.com.tw/upload/images/20221228/20112943eJ4VYLmwVi.jpg
(紅色區塊是 OTF 字型檔;黃色區塊是 CFF 字型資料)


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
greenriver
iT邦研究生 5 級 ‧ 2022-12-29 08:35:01

還想說是誰那麼厲害在介紹PDF格式
原來是淺水員大大
/images/emoticon/emoticon32.gif

淺水員 iT邦大師 6 級 ‧ 2022-12-29 11:48:41 檢舉

以前在看時,一開始把 CID 跟 character code 搞混。
想說整理一下,萬一有人想看文件,可以少浪費些時間。

後來我才發現這好像牽涉到一些歷史,以下是我的猜測
在 CFF 字型文件中有提到 character 是映射 GID 到 SID 的
這個 SID 代表這個字的「名稱」,例如「字母A」這樣
也許後來發現其他國家的文字太多不可能一一命名
所以又有了 CID 的模式可以使用

我要留言

立即登入留言