最後更新: 2025年2月20日

標題 - PostScript: 一個清晰的解說

什麼是 PostScript?

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

PostScript: 特點與應用

PostScript (PS) 的解說

PostScript (PS) 同時是一種 頁面描述語言 (PDL) 和一種 程序設計語言,具有 動態類型基於堆疊 的特性。以下是其詳情:

1. 什麼是頁面描述語言 (PDL)?

頁面描述語言定義了圖形和文字在打印或顯示屏上的顯示方式。PostScript 用於打印機、出版軟體和數字排版中,以精確地渲染字體、圖像和佈局。

2. 什麼是基於堆疊的程式語言?

PostScript 使用堆疊來處理指令,這意味著它遵循 後進先出 (LIFO) 原則。例如,要在 PostScript 中添加兩個數字,你需將它們推入堆疊,然後調用運算符來處理:

10 20 add

這為 1020 推入堆疊,然後 add 命令將它們彈出並將結果 (30) 再次推入堆疊。

3. 動態類型

PostScript 不需要顯式的類型定義。變量可以容納不同類型(數字、字串、數組等)而不需預先定義類型。

4. PostScript 的用途

PostScript 主要用於桌面出版和電子出版,這意味著它助於創建和打印高質量文檔,具有對字體、佈局和圖形的精確控制。

5. 圖靈完備語言

作為 圖靈完備 意味著 PostScript 理論上可以執行任何計算,只要有足夠的記憶體和時間。這意味著它可用於一般的程式設計任務,而不僅僅是打印。

6. 歷史與發展

  • Adobe Systems1982到1984年間開發。
  • John Warnock、Charles Geschke、Doug Brotz、Ed Taft 和 Bill Paxton 創立。
  • 最新版本 PostScript 3 發於 1997年,其增加了更好的性能、顏色管理以及圖像壓縮。

PostScript 的歷史

PostScript 的起源可追溯至 1976年,當時 John GaffneyEvans & Sutherland 工作中開發了頁面描述語言的概念,並建造了一個圖形數據庫。與此同時,Xerox PARC 正在開發 激光打印機,並需要一個標準來定義頁面圖像。最先他們創建了 Press 格式,後來在1978年發展成 Interpress,由 John Gaffney 和 Martin Newell 開發。

PostScript 的演變和影響

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 經歷了不同等級的演變,每個等級均提升了功能性、性能及效率。共有三個主要等級

PostScript 等級的演變

1. PostScript 等級 1 (1984)

原始版本的 PostScript(等級 1,1984年發布)允許用戶精確控制文字佈局及圖形圖像,並在早期激光打印機中使用。然而,它僅限於灰階,對於複雜圖形處理速度較慢,且由於缺乏圖像壓縮導致較大文件。

  • Adobe1984年版本發布。
  • 提供對文字、圖形和圖像設備無關的頁面描述。
  • 允許對字體排版和佈局進行精確控制。
  • 曾用於 第一批 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 字體類型

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 是一種設計用於高效觀看與導航的簡化靜態格式。儘管存在這些差異,文件可以在兩種格式之間相互轉換。

理解 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

解釋:

  1. %!PS → 指示文件是 PostScript 文件。
  2. /Times-Roman findfont 24 scalefont setfont → 選擇 Times-Roman 字體,字號 24
  3. 100 700 moveto → 將游標移動至頁面座標 (100, 700)
  4. (Hello, World!) show → 在指定位置打印 “Hello, World!”
  5. showpage → 告知打印機打印頁面

你可以將其儲存為 hello.ps 並使用 PostScript 查看器(如 GSviewGhostscript)打開或將其發送至 PostScript 打印機

Hello.ps 渲染後的樣子

標題 - Hello.ps 渲染後的樣子

用於渲染 PostScript 的軟體清單

PostScript 查看器和解釋器

  1. Ghostscript (開源) – 常用 PostScript 和 PDF 解釋器。
  2. GSview – Ghostscript 的圖形使用者介面前端。
  3. MuPDF – 支援 PostScript 和 PDF 的輕量級查看器。
  4. Xpdf – 開源 PDF 查看器,具有一些 PostScript 支持。
  5. Evince – GNOME 文件查看器能處理 PostScript 文件。
  6. Okular – KDE 文件查看器,支援 PostScript。
  7. Apple Preview – macOS 內建查看器,支援 PostScript 和 PDF。

PostScript 打印機與光柵化器

  1. Adobe Acrobat Distiller – 轉換 PostScript 成高品質 PDF。
  2. CUPS (Common Unix Printing System) – 處理 Unix/Linux 上的 PostScript 打印。
  3. PPR (Printer Production Release) – PostScript 排序器與渲染器。

矢量圖形及桌面出版軟體

  1. Adobe Illustrator – 可開啟與編輯 PostScript 文件。
  2. CorelDRAW – 支援用於矢量圖形的 PostScript。
  3. Scribus – 開源桌面出版軟體,支援 PostScript。
  4. Inkscape – 可導入/匯出 PostScript(透過 Ghostscript)。

命令行和轉換工具

  1. ps2pdf (Ghostscript 的一部分) – 將 PostScript 轉換成 PDF。
  2. pstopdf (macOS 命令行工具) –將 PostScript 轉換成 PDF。
  3. ImageMagick – 可將 PostScript 文件渲染為圖像。