最後更新: 2025年2月20日

什麼是 PostScript?
PostScript (PS) 是一種由 Adobe Systems 在1982年開發的 頁面描述語言 (PDL)。它主要用於桌面出版、印刷及圖形設計中,用來描述文字和圖像如何在頁面上呈現。

PostScript (PS) 的解說
PostScript (PS) 同時是一種 頁面描述語言 (PDL) 和一種 程序設計語言,具有 動態類型 和 基於堆疊 的特性。以下是其詳情:
1. 什麼是頁面描述語言 (PDL)?
頁面描述語言定義了圖形和文字在打印或顯示屏上的顯示方式。PostScript 用於打印機、出版軟體和數字排版中,以精確地渲染字體、圖像和佈局。
2. 什麼是基於堆疊的程式語言?
PostScript 使用堆疊來處理指令,這意味著它遵循 後進先出 (LIFO) 原則。例如,要在 PostScript 中添加兩個數字,你需將它們推入堆疊,然後調用運算符來處理:
10 20 add
這為 10
和 20
推入堆疊,然後 add
命令將它們彈出並將結果 (30
) 再次推入堆疊。
3. 動態類型
PostScript 不需要顯式的類型定義。變量可以容納不同類型(數字、字串、數組等)而不需預先定義類型。
4. PostScript 的用途
PostScript 主要用於桌面出版和電子出版,這意味著它助於創建和打印高質量文檔,具有對字體、佈局和圖形的精確控制。
5. 圖靈完備語言
作為 圖靈完備 意味著 PostScript 理論上可以執行任何計算,只要有足夠的記憶體和時間。這意味著它可用於一般的程式設計任務,而不僅僅是打印。
6. 歷史與發展
- Adobe Systems 於 1982到1984年間開發。
- 由 John Warnock、Charles Geschke、Doug Brotz、Ed Taft 和 Bill Paxton 創立。
- 最新版本 PostScript 3 發於 1997年,其增加了更好的性能、顏色管理以及圖像壓縮。
PostScript 的歷史
PostScript 的起源可追溯至 1976年,當時 John Gaffney 在 Evans & Sutherland 工作中開發了頁面描述語言的概念,並建造了一個圖形數據庫。與此同時,Xerox PARC 正在開發 激光打印機,並需要一個標準來定義頁面圖像。最先他們創建了 Press 格式,後來在1978年發展成 Interpress,由 John Gaffney 和 Martin Newell 開發。

在 1982年,John Warnock 和 Chuck Geschke 離開 Xerox PARC,並共同創立 Adobe Systems,與 Doug Brotz、Ed Taft、Bill Paxton 一同開發了 PostScript 作為 Interpress 的較簡單的替代方案。1984年正式商業發布。
Apple 在 PostScript 成功中的角色
在 1983年,Steve Jobs 看到了 PostScript 對 Macintosh 的潛力,並以 150萬美元的價格從 Adobe 授權它,外加 250萬美元用於 Adobe 20%的股份。他也曾試圖,卻未成功地購買 Adobe。然後 Apple 和 Adobe 開始聯合優化 PostScript 以便於 Apple 的 LaserWriter 打印機上——這於 1985年推出,在 桌面出版革命中發揮了重要作用。
Adobe 在 字體渲染和提示方面的突破,使得即使在較低解析度的 300-dpi Canon 激光打印機上,PostScript 也能顯得非常實用。為了將其保密,Adobe 選擇不對這項技術進行專利申請。
PostScript 的衰退與遺產
在 1980年代及1990年代,PostScript 廣泛用於 激光打印機,但它的高處理能力和內存需求使其昂貴。隨著 打印機變得便宜且計算機更強大,軟體解決方案取代了硬體 PostScript 處理。到 2001年,多數低端打印機放棄了 PostScript 支持,改用 噴墨技術和軟體渲染。
不過,PostScript 在高端專業打印機中仍佔主導地位,因為它能將渲染從電腦轉移到打印機進行,從而提高性能。此外,PDF (可攜式文件格式) —— PostScript 的直接後代,現已成為 電子文檔分發的標準。
PostScript 等級
PostScript 經歷了不同等級的演變,每個等級均提升了功能性、性能及效率。共有三個主要等級:

1. PostScript 等級 1 (1984)
原始版本的 PostScript(等級 1,1984年發布)允許用戶精確控制文字佈局及圖形、圖像,並在早期激光打印機中使用。然而,它僅限於灰階,對於複雜圖形處理速度較慢,且由於缺乏圖像壓縮導致較大文件。
- 由 Adobe 在 1984年版本發布。
- 提供對文字、圖形和圖像設備無關的頁面描述。
- 允許對字體排版和佈局進行精確控制。
- 曾用於 第一批 PostScript 打印機,包括 Apple LaserWriter。
- 限制條件:
- 缺乏顏色支持(僅限灰階)。
- 對複雜圖形處理速度慢。
- 無內建圖像壓縮,導致較大的文件尺寸。
2. PostScript 等級 2 (1991)
PostScript 等級 2(1991年)提高了性能,添加了顏色打印,壓縮了文件,改進了字體,並加速了複雜圖形的處理。
- 改進了性能和內存效率。
- 增加了顏色打印(CMYK 和專色)的支持。
- 引入數據壓縮以減少文件大小。
- 提供了改良的字體處理(Type 1 和 Type 3 字體)。
- 引入 Pattern, Forms, 和 Composite Fonts以增進文字渲染。
- 比等級 1 更快捷地處理複雜圖形。
3. PostScript 3 (1997)
PostScript 3(1997年)是一個主要更新,提供了更快速的渲染、優化的顏色、支持非常高的打印解析度、改進的字體及增強的圖形效果。雖然現在較少見,但在某些高端打印中仍有使用。
- 重大升級,提供了更高效的渲染。
- 使用 ICC 配置文件的顏色管理改進。
- 對於高解析度打印的改進支持(超過2400 dpi)。
- 包括支持多母版字體的壇端字體處理。
- 更多的透明度和陰影效果(增強圖形渲染)。
- 在現代出版中已被基於 PDF 的工作流程取代,但仍在高端打印中使用。
PostScript 在印刷中的應用
在 PostScript 出現前:
- 早期的打印機通常只打印固定字形的文本字符(例如打字機的鍵、金屬帶或光學板),通常是 ASCII 的。
- 點陣打印機引入可選的字體和自定義字形上傳,並通過轉義序列支持基本的 光柵圖形,但需要每個打印機機型的具體驅動程序。
- 矢量圖形的處理由 繪圖儀(如基於 HPGL 的)完成,但這些裝置較 慢、昂貴且僅限於圖形處理。
PostScript 打印:
- 激光打印機合併了點陣打印機和繪圖儀的強項,能夠在同一頁面上實現高品質的文本和圖形。
- PostScript 統一打印控制,提供一個單一、設備無關的語言,使之能適用於不同的打印機和軟件。
- 不像傳統的打印控制語言,PostScript 是一個完整的程序語言,允許精確的文檔渲染。
- 即時光柵化:PostScript 使用直線及貝塞爾曲線定義一切,允許平滑的縮放、旋轉及轉換處理。
- PostScript 解釋器,又稱作光柵圖像處理器(RIPs),將指令轉換為最終輸出所需的點。
PostScript 字體處理
PostScript 的字體系統使用基本圖形形狀來創建可縮放字形,允許字體在不損失品質的情況下進行調整。字體提示技術確保 字體 即使在小尺寸或低解析度下依然清晰可讀。PostScript 字體存儲於各種專用的「型格式」中,每種格式提供不同的功能。

PostScript 字體系統
- 使用圖形基元來定義可縮放的字形。
- 字體提示確保即使在低解析度下仍能高質量渲染。
- 字體被存儲在各種專門的型格式中,不同的格式提供不同的能力。
PostScript 字體類型
PostScript 提供了多種字體格式。Adobe 的高品質 Type 1 字體起初需要授權,而 Type 3 字體則因缺乏標準提示由其他人使用。Type 2 和 CFF 格式減小了文件大小並為 OpenType 的誕生鋪平了道路。CID-Keyed 字體支持大型亞洲字符集,並且可以使用 Type 1 或 Type 2 結構。
Type 1 字體 (T1):
- Adobe 的壓縮和加密專有字體格式。
- 使用於高質量、有提示的字體。
- 起初,Adobe 收費許可 Type 1 技術。
Type 3 字體 (T3):
- 允許全部 PostScript 功能,但缺乏標準提示。
- 由無法許可 Type 1 技術者使用。
Type 2 字體 (T2) 和壓縮字體格式 (CFF):
- 為效率而減少的字體文件大小。
- 成為 OpenType 字體的基礎。
CID-Keyed 字體:
- 為具有大編碼空間的亞洲 (CJK) 字符集而設計。
- 可以使用Type 1 或 Type 2 進行不同的字體結構處理。
字體格式演變
Apple 創建了 TrueType 字體以與 Adobe 的 字體 競爭。這促使 Adobe 分享其字體的工作原理。後來,Adobe 和微軟共同開發了 OpenType 字體,結合兩者的優點,並成為如今的標準字體格式。
TrueType (1991):
- Apple 開發來與 Adobe 系統競爭。
- 迫使 Adobe 公開 Type 1 規範供公眾使用。
OpenType (1990年代後期):
- 由 Adobe 和微軟 聯合開發。
- 統一 Type 1 和 TrueType 功能。
- 成為現代字體的行業標準。
Type 1 支持的結束
- Adobe 正式於 2023年1月停止支持 Type 1 字體,轉而支援 OpenType。
可攜式文件格式 (PDF) 與 PostScript
PDF 和 PostScript 之間的區別
PDF 和 PostScript 這兩種文件格式產生的打印結果相同,因為它們使用相同的底層圖形系統。它們之間的主要區別在於其結構:PostScript 是一種完備的編程語言,允許動態操作,而 PDF 是一種設計用於高效觀看與導航的簡化靜態格式。儘管存在這些差異,文件可以在兩種格式之間相互轉換。

- 相似的影像模型 – PDF 和 PostScript 都使用相同的圖形系統,確保相同的打印輸出。
- 有什麼不同?
- PostScript 是一種圖靈完備的編程語言,能夠進行動態操作。
- PDF 是一種靜態數據結構,優化映為高效存取與導航,使其更適合互動觀看。
- 相互轉換 – PDF 文件可以被轉換為 PostScript,反之亦然。
PostScript 語言
PostScript 是一種基於堆疊的動態類型語言,像 Forth 一樣,但具有 Lisp 式的數據結構。它使用反向波蘭表示法,要求精心管理記憶體。PostScript 使用數組和字典,在運行時管理類型,並包括垃圾回收。註釋以 “%” 開始,程序通常以 “%!PS” 開頭。
- 圖靈完備和基於堆疊 – 類似於 Forth,但具有動態類型和 Lisp 式的數據結構。
- 反向波蘭表示法 (RPN) – 操作符作用於 堆疊,需要小心管理。
- 記憶體管理 –
- 使用 作用域記憶體。
- 在 PostScript 等級 2 中引入 垃圾回收。
- 數據結構 –
- 使用 數組與字典。
- 無正式類型聲明——類型在運行時管理。
- 註解與程序結構 –
- % 用於標註註釋。
- 程序通常以 "%!PS" 開始以指示其為 PostScript 格式。
PostScript 的使用方式
- 主要由軟體生成而非手工編寫。
- 可以用作完整的編程語言來進行自動化。
- 由 打印機 (RIPs) 或 屏幕查看器解釋。
簡單的 PostScript 文件範例
這是個簡單的 PostScript (.ps) 文件 範例,可在頁面上打印「Hello, World!」:
%!PS
/Times-Roman findfont 24 scalefont setfont
100 700 moveto
(Hello, World!) show
showpage
解釋:
%!PS
→ 指示文件是 PostScript 文件。/Times-Roman findfont 24 scalefont setfont
→ 選擇 Times-Roman 字體,字號 24。100 700 moveto
→ 將游標移動至頁面座標 (100, 700)。(Hello, World!) show
→ 在指定位置打印 “Hello, World!”。showpage
→ 告知打印機打印頁面。
你可以將其儲存為 hello.ps 並使用 PostScript 查看器(如 GSview、Ghostscript)打開或將其發送至 PostScript 打印機。
Hello.ps 渲染後的樣子

用於渲染 PostScript 的軟體清單
PostScript 查看器和解釋器
- Ghostscript (開源) – 常用 PostScript 和 PDF 解釋器。
- GSview – Ghostscript 的圖形使用者介面前端。
- MuPDF – 支援 PostScript 和 PDF 的輕量級查看器。
- Xpdf – 開源 PDF 查看器,具有一些 PostScript 支持。
- Evince – GNOME 文件查看器能處理 PostScript 文件。
- Okular – KDE 文件查看器,支援 PostScript。
- Apple Preview – macOS 內建查看器,支援 PostScript 和 PDF。
PostScript 打印機與光柵化器
- Adobe Acrobat Distiller – 轉換 PostScript 成高品質 PDF。
- CUPS (Common Unix Printing System) – 處理 Unix/Linux 上的 PostScript 打印。
- PPR (Printer Production Release) – PostScript 排序器與渲染器。
矢量圖形及桌面出版軟體
- Adobe Illustrator – 可開啟與編輯 PostScript 文件。
- CorelDRAW – 支援用於矢量圖形的 PostScript。
- Scribus – 開源桌面出版軟體,支援 PostScript。
- Inkscape – 可導入/匯出 PostScript(透過 Ghostscript)。
命令行和轉換工具
- ps2pdf (Ghostscript 的一部分) – 將 PostScript 轉換成 PDF。
- pstopdf (macOS 命令行工具) –將 PostScript 轉換成 PDF。
- ImageMagick – 可將 PostScript 文件渲染為圖像。