23. 印刷格物致知
          23.2. PostScript
              23.2.1. PostScript 基礎知識
 23.2.1.5. 語言的具體細節

以下面我們看一下 PostScript 語言的一些具體東西:

運算子 (Operators)

每一個電腦語言有許多預先定義的指令,在 PostScript 上稱為運算子 (operators),以下是一些 PostScript 運算子的例子:

div - 兩個數字相除

lineto - 劃一條線

setlinewidth - 設定線條的寬度

showpage - 列印目前處理的頁面

PostScript 語言內有數以百計的運算子,應用程式甚至可以新增自己的運算子,例如:PostScript 中不包含一個具體的指令能繪製一個矩形,但繪圖應用程式可能需要這樣一個指令;在 PostScript 中,應用程式可以組合的四個 lineto 指令定義自己的 box 運算子畫出一個矩形,應用程式以這樣的方式新增它需要之 PostScript 指令集的功能。

應用程式(或 spoolers、OPI 系統或驅動程式)都可以建立自己的運算子使得 PostScript 代碼難以偵錯 (debug),如果出現問題發生於特定的運算子,恐怕難以找出到底是哪個應用程式加的錯誤代碼。

字典 (Dictionaries)

運算子群組可以被儲存在字典內,很多的應用程式以及印表機驅動程式使用他們自己的字典;如果從 QuarkXPress 列印一頁面到印表機,印表機驅動程式與 QuarkXPress 本身兩者都會添加他們的字典到發送給輸出設備的 PostScript 資料;有時這些額外的資料會造成很多問題,這就是為什麼在 PostScript 錯誤發生後錯誤排除時替換驅動程式或省略在輸出過程中的任何額外步驟往往是一個好主意的原因。

Stack 為基礎的語言

PostScript 是一個以 stack 為基礎的語言,它的工作方式類似計算器使用的 Reverse Polish Notation (RPN),HP 有賣這種計算器;假設要將 12 加上 15,在 PostScript 中的做法是:

15 12 add

首先兩個數字都被推入 stack 內,然後解譯器讀到 add 運算子後,解譯器從 stack 的上方拉出兩個數字相加,然後將計算結果再推入 stack 內。

不用說,RPN 讓人們更難以檢視研究的 PostScript 代碼與了解它的意義。

Idea associations
Table of contents