PostScript字型

PostScript字型是由Adobe Systems為專業數字排版開發的輪廓字體規範編碼的字體文件。該系統使用PostScript文件格式來編碼字型資訊。

PostScript字型也可以單獨用於指代PostScript系統中作為標準包括的基本字體集，例如Times，Helvetica和Avant Garde。

## 歷史

Adobe在1984年的PostScript頁面描述語言中定義了Type 1和Type 3字型格式。但在1985年3月支持PostScript的雷射印表機Apple LaserWriter面世，它才真正流行起來。在當時，輪廓字型只在印表機中使用，螢幕上依舊用位圖字體（bitmap fonts）。

儘管在最初，Type 1字型是作為PostScript的一部分出現的，其所採用的一組繪製操作要比普通的PostScript簡單（和PDF相類似，循環和變量等編程特性被移除了），但是增加了渲染提示（hints）以提升低解析度渲染效果。開始的時候，Adobe並沒有公開渲染提示方案的細節，用一種簡單的加密方案將Type 1輪廓數據和渲染提示保護了起來，加密也延續至今（儘管加密方案和密鑰早已被Adobe公開）。但這一加密方案很快被業界同行的反向工程所破解。雖然如此，Adobe仍要求Type 1字型技術的使用者需要許可證授權。許可證的要價在當時看來是頗高的，Adobe的堅守讓價格居高不下。正因如此，蘋果公司於1991年決定開發自己的TrueType格式。TrueType一經發布，Adobe就公開了Type 1字型格式的定義和說明。

Type 3字型支持PostScript語言的全部特性，但是沒有標準的渲染提示實現，也沒有加密方案。而Type 2字型成為了現代OpenType字型格式的基礎之一。

## 技術

字形（glyph）通過PostScript（PS）語言用三階貝塞爾曲線（TrueType使用二階貝塞爾曲線）描述，字形因此可以通過簡單的數學變換調整大小，然後被送到PostScript印表機中。因為Type 1數據描述的是字形的輪廓而不是柵格化的圖像（即位圖），Type 1字型通常被稱為「輪廓字型」，以和位圖字型（bitmap fonts）相對比。為了滿足需要在螢幕上預覽字體的使用者，利用渲染提示（hints）和抗鋸齒技術可以讓文字顯示效果變得平滑易認。有時也會加入相同字體的位圖版本優化螢幕顯示。Adobe Type Manager實用程序可以顯示Type 1字型。

## 字型類型

### Type 0

根據《PostScript語言參考手冊》（第二版），Type 0 是一個「複合」字體格式。主要用於OCF字型（如下述）。

### Type 1

Type 1（也稱為 PostScript Type 1、PS1、T1 或 Adobe Type 1）是用於 Adobe Type Manager 軟體和 PostScript 印表機的單字節數碼字型格式，支持渲染提示資訊。最初為 Adobe 的專有規範，但後來 Adobe 將其公開。Mac OS X 和 Windows 2000 及更高版本通過 GDI API 原生支持 Type 1 字體。（但 Windows GDI+、WPF 或 DirectWrite API 不支持）

Adobe已於2021年1月27日宣布將在2023年1月之後終止對Adobe產品中Type 1 字體的支持。Photoshop 中對 Type 1 字體的支持也於 2021 年結束。

### Type 2

Type 2的本質是一個字串格式，用於在輪廓字體文件中對字符描述過程進行更為緊湊的表現形式，目的是用在緊湊字體格式（CFF，Compact Font Format）中。它通過使用多參數的運算符、各種預定義的默認值、更有效的編碼值分配、字型間（一個字體家族內）共享子例程，它相較於Type 1可以占用更小的空間。CFF/Type2 格式是 Type 1 OpenType 字體的基礎，所以所謂的PostScript或Type 1風格OpenType字體，亦稱為OpenType CFF，在CFF表中寫入了字形輪廓和渲染提示。從PDF 文件 1.2 開始，CFF 字體可以嵌入PDF文檔。

### Type 3

Type 3 字體（也稱為 PostScript Type 3 或 PS3、T3 或 Adobe Type 3）內含字形使用 PostScript 語言完整定義，而不是子集。因此，Type 3 字體可以實現一些 Type 1 字體無法實現的效果，例如指定陰影、顏色和填充圖案。但它不支持渲染提示。Adobe Type Manager 也不支持 Type 3 字體，並且沒有一個版本的 Mac OS 或 Windows 將其作為所見即所得字體進行支持。

### Type 4

Type 4 格式用於製作印表機字體盒的字型以及永久存儲在印表機硬碟上的字型，字符描述以 Type 1 格式表示。Adobe 對這此專有格式沒有公開文檔。

### Type 5

Type 5 類似於 Type 4 格式，用於存儲在 PostScript 印表機 ROM 中的字型，也被稱為 CROM（Compressed ROM）字體。

### Type 14

Type 14，即變色龍字體格式（Chameleon font format），用於在印表機ROM等少量存儲空間中能顯示大量字體。其核心集由一個主字體（Master Font）和一組字體描述符組成，這些描述符用來指定如何調整主字體以提供特定字體所需的字符形狀。Adobe沒有公開Type 14 格式的文檔。它於 1997 年隨 PostScript 3 一起推出，後來隨著存儲成本的降低而不再受到重視。

### Type 32

Type 32 用於將位圖字體下載到版本號為 2016 或更高版本的 PostScript 解釋器。位圖字符直接傳輸到解釋器的字體緩存中，由此節省印表機記憶體空間。

### Type 42

Type 42 字體格式是針對TrueType字體的一個包裝器（wrapper），通過在PostScript的印表機中加入TrueType光柵化器（在 PostScript 解釋器版本 2010，最初只是選配功能，後來成為標準配備）讓其可以列印 TrueType 字體。PostScript的2015版中添加了對多字節中日韓TrueType字體的支持。之所以不按順序突然選用數字 42，據說是引用了《銀河系漫遊指南》中的玩笑。

## 文件格式

### OCF

OCF 即Original Composite Font，是支持雙字節文種（比如中文、日文）的字體格式之一，這也是最早能支持東亞文字的 PostScript 字體。由於 Type 1 僅支持單字節（256字），所以 OCF 通過將多個 Type 1 字體數據按照一定形式連接起來封裝成一個字體，用來支持雙字節（最多可存放65,536字），其輪廓資訊表現方式和 Type1 字體相同一樣。由於一個字型要四個文件，所謂「複合」（composite）構造很複雜，不能用於 Mac OS X，柵格化費時、不能被輪廓化，也不能嵌入 PDF 文件。

### CID字型

CID鍵字型（亦稱CID字型、CID基礎字型，CID-keyed font, CID font, CID-based font；其中CID是Character Identifier Font的縮寫，即「字符標識符字體」）原本是為PostScript開發的字體格式，設計用於製作字形數量龐大的字型。CID字型開發用於支持東亞文字集。支持異體字、可以PDF嵌入，也可包含字偶距資訊。先對各個文種的字形賦予 CID 編號，再映射到各個文種的編碼，這個映射關係存儲在CMap（Character Map）數據文件中。一個字體文件里可以有多個CMap的映射，因此支持「字形與碼位」之間一對多、多對一的複雜關係。具體分為sfn-CID 和 Naked-CID兩種。與CID等同的結構被 TrueType、OpenType繼承下來，但改稱為GID（Glyph ID）。

### CFF

緊湊字型格式（Compact Font Format，亦稱為Type 2字型格式，或CFF/Type2字型格式）是使用了Type 2字串、對Type 1無損壓縮的一種字型格式。通過使用多參數的運算符、各種預定義的默認值、更有效的編碼值分配、字型間（一個字體家族內）共享子例程，它相較於Type 1可以占用更小的空間。Type 1字體可以無損地轉換為CFF/Type 2字型，反之亦然。

## 外部連結

### 字型格式定義

- Adobe Type 1 Font Format (PDF: 445 KB)
- Adobe Technical Note #5015: Type 1 Font Format Supplement (PDF: 225 KB)
- Adobe Technical Note #5176: The CFF (Compact Font Format) Specification, (PDF: 251 KB)
- Adobe Technical Note #5177: Type 2 Charstring Format (PDF: 212 KB)
- Adobe Technical Note #5012: The Type 42 Font Format Specification
- Adobe Technical Note #5014: Adobe CMap and CIDFont Files Specification
- Adobe Technical Note #5004: Adobe Font Metrics (AFM) File Format Specification

### 關於字型

- Font Formats Q&A
- Adobe font technical notes
- Adobe CID fonts
- Adobe Technical Note #5092: CID-Keyed Font Technology Overview
- Adobe Technical Note #5178: Building PFM Files for PostScript-Language CJK Fonts
- Adobe Technical Note #5641: Enabling PDF Font Embedding for CID-Keyed Fonts

### 字符集資訊

- Common Character Sets
- Adobe Latin Character Sets
- Adobe Greek Character Sets
- Adobe Cyrillic Character Sets
- Adobe Technical Note #5078: Adobe-Japan1-6 Character Collection for CID-Keyed Fonts
- Adobe Technical Note #5079: The Adobe-GB1-5 Character Collection
- Adobe Technical Note #5080: The Adobe-CNS1-6 Character Collection
- Adobe Technical Note #5093: The Adobe-Korea1-2 Character Collection
- Adobe Technical Note #5094: Adobe CJKV Character Collections and CMaps for CID-Keyed Fonts
- Adobe Technical Note #5097: Adobe-Japan2-0 Character Collection for CID-Keyed Fonts

### 關於核心字型

- PostScript Type 1 fonts
- Adobe Technical Note #5609: PostScript 3 Core Font Set Overview
- The Adobe PostScript 3 Font Set
- Apache FOP: fonts

### 雜項

- comp.fonts FAQ: OS/2 2.1 and beyond
- comp.lang.postscript FAQ
- About Fonts
- Fonts, Fonts, and more Fonts!

## 基本資料

- 日語原文：PostScript Type 1
- 擴展名：yes
- 擴展名：Windows & OS/2: `.pfb`, `.pfm`, `.afm`、Mac OS: `.pfm`, `.afm`, `.inf` (Optional files).、Linux: `.pfa`, `.afm`、OS/2: `.ofm`
- 所有者：Adobe Systems
- typecode：Mac: : `LWFN` (prn/outline-data/Mac-bitmap). : `sfnt` (Mac PS1 bitmap) suitcase file. : printer (prn) outline (FOND/bitmap) file. : `ffil` (display). : `FFIL` (suitcase/screen). ; Win: : binary (.pfb).
- 類型：PostScript outline font
- 擴展為：`.otf` (OpenType PostScript).
- 標準：ISO 9541