한국   대만   중국   일본 
PostScript - ?基百科,自由的百科全? 跳?到?容

PostScript

本页使用了标题或全文手工转换
?基百科,自由的百科全?
PostScript
PostScript 3標誌
?程范型 多范式 面向堆? ?程式
設計者 John Warnock & Chuck Geschke
實作者 Adobe系?
?行?? 1982
?前版本
  • PostScript 3 (1997)
編輯維基數據鏈接
型態系統 ??,强?型
主要實作?品
Adobe PostScript, TrueImage , Ghostscript , InterPress
?發語言
Lisp
影響語言
PDF
PostScript
?展名
.ps
互?? 媒??型
application/postscript
?一?型?? com.adobe.postscript
??者 Adobe系?
格式?型 打印文件格式
?展? EPS

PostScript PS )是主要用于?子??和 ?面出版 ?域的一? ?面描述?言 ?程?言

?史 [ ?? ]

PostScript?言的思想起源于 John Warnock 1976年在著名的 ?算机?形 公司 Evans and Sutherland ?的想法。?? John Gaffney 正在??一?解? ?? 港大型三??形?据?的解?器。Gaffney??了非常?似于 Forth?程?言 Design System ?言??理?形。

1978年Evans and Sutherland要求Warnock?? ?金山? ?他州 ?部去,但是他?不想搬家到那里去。于是他后?加入了 Xerox PARC ? Martin Newell 一起工作。他?重?了Design System??出了用于 VLSI ??和字???形打印?究的 JaM (John and Martin)系?。??工作后??展成?一?名? InterPress 的?展系?。

在1982年12月Warnock和 Chuck Geschke 一起???建了 Adobe Systems 公司。他???了一??似于InterPress名?PostScript的更??的?言,???品在1984年推向市?。大?在???候, Steve Jobs ??了他?的工作,他敦促他?改?PostScript作??? 激光打印机 的?言,?添加到 Canon 打印机?生了 LaserWriter

1985年3月, Apple LaserWriter是第一款?有PostScript的打印机,?也??了1980年代中期的 ?面印刷 革命。?的技??点和?泛?用使得PostScript成?打印?用?域影像?出的一???。直到1990年代,PostScript?言 解?器 ,有??作 Raster image processor ,曾?一度成? 激光打印机 的一?普通?成部分。

?着使用?子方式?布文?最?版本成?事?上的?准,PostScript就在???域不?地被?的后?版本Portable Document Format也就是 PDF 所超越,到了2001年更少有打印机支持PostScript,?主要是由于?自于非PostScript的廉价?墨打印机的不?加?的??(PostScript解?器?大幅度地增加打印机成本),以及在?算机上使用?件渲染PostScript?像的新方法可以用于任何的打印机,PDF就是??方法之一。然而使用PostScript的激光打印机仍然可以大幅度地?少?算机在打印、??算机到打印机??渲染出的PostScript?像方面的工作量。

PostScript??了?次主要的更新。第一版??PostScript Level 1在1984年?布。PostScript Level 2在1991年?布,?有??增强的特性:提升了速度和可?性;支持RIP?的分割;支持解??,?就意味着如 JPEG ??的?像能?直接在PostScript程序中?行?理;支持?合字?以及?存重用?容的Form机制。PostScript Level 3在1997年年底出?,?多?版操作符?成了基于字典的新版本,?提供了更好的?色?理以及新的允?在程序??行??和解?的??器、程序chunking以及先?的???理。

在打印中的?用 [ ?? ]

PostScript之前 [ ?? ]

在PostScript出?之前,打印机??成?字符??通常是 ASCII 字符??打印出?。有?多技?用于??工作,但是大多?都有一?共性也就是 字符 在物理上??更改,就像在 打字机 ?上的金?或者光?平板那?的??。

?着 点?打印机 的流行?生的一些?化,在?些系?上字符是用一系列的点“?”出?的,?些点在打印机中定?? 字? 表。?着他?越?越??,点?打印机?始包含有???置的字?,用?可以??所用字?,有一些型?甚至允?用?下?自己的字符?形到打印机中。

点?打印机也?有打印 光??形 的能力,?形在?算机上?行解??且使用一系列的 ??序列 ???按照一系列的点?送到打印机。?? 打印机控制?言 ?着打印机的不同而不同,?就要求程序??建??多多的 ??程序

?正的?形打印是名? ??? 的特殊的??所完成的,???的?是共用一?常?的?言?? HPGL ,但是除了打印?形之外??有多大用途。?外,??通常价格??,速度?慢,所以使用?少。

PostScript打印 [ ?? ]

PostScript?打印机和???的?点?合在一起?而打破了??。同???一?,PostScript具有高?量的曲??理能力?且控制?言??能?用于不同品牌的打印机;同点?打印机一?,PostScript提供了一?生成文本和光??形的??方法。???二者不同的是,PostScript能??所有?些不同的?容放在同一?上,??就比以前的打印机或者???提供了更具?活性。

PostScript已?超出了普通的打印机控制?言,?成?一?完善的?程?言。?多?用程序能??文??送到一?PostScript程序中,?的?出?果就是原始文?。??程序能??送到打印机中的 解?器 上得到打印文?,或者?送到?外一??用程序在?幕上?示文?。由于文?程序?目的地无?,所以就被??“???无?”。

PostScrip也非常擅?于?? ?格化 ;所有的?西,甚至是文本都可以用直?和三? ?塞?曲? 表示,?塞?曲?以前只有在 CAD ?用中才能?到,?允?任意的?放、旋?或者其他??。?解?PostScript程序的?候,解?器??些指令??成所需的点形成?出?容。

字??理 [ ?? ]

同PostScript一???的是?的 字? ?理。?富的字?系?使用PS 基本?形 ?字符?成 ???? ,????能?在任意的 分辨率 生成。?管??起?是?直?的?念,但是需要考???多多的 拓? ?形??。

其中一???是字?在小尺寸的?候??上?不是?行?性?放,如果那?的?字?的某些部分就?不成比例地?大或者?小?而字?看起?不太正?。PostScript使用?字形曲?保存在一起的 ?含信息 (Hints)避免了????的?生,??基本上是水平或者?直方向??上一些附加信息,用以??光??像生成器需要??的字?中的重要特征。甚至在?低的分辨率的?候字?也是非常好看;通??Adobe的 Type 1 Font 。Type 1是一?高效的??用?保存字形信息的?化PS系?,而不是一?完善的?言,PDF也是一??似的情?。Adobe向那些打算在自己的字?中添加?含信息的?商征收高?的Type 1技?授?使用?用。那些不愿意使用?含信息或者不愿支付?用的用?只能使用 Type 3 Font 。Type 3字?允?使用除了?准的?含信息之外的PostScript?言的所有??特性,后?又添加了一些其他的不同特点。

?多人??授?的?用?于高?,?且Adobe也不愿采用更具吸引力的?率,??就?致了Apple在1991年左右??了他?自己的系? TrueType 。??着TrueType的?布,Adobe就公?了Type 1字?的?范。如Altsys Fontographer (1995年1月被 Macromedia 收?,自?2005年5月? FontLab 所有)??的零?系?加入了?建Type 1字?的能力。?那??始,就出?了?多免?Type 1字?,例如 TeX 排版系?中所用字?就是??格式。

在1990年代早期?有其他??基于字形的字?系?,如 Bitstream METAFONT ??的系?,但是??都不包括通用的打印解?方案,所以??有得到?泛?用。

在1990年代,Adobe和微?公司一同?? OpenType ,?基本上是Type 1和TrueType格式功能的超集。?打印到PostScript?出??的?候,OpenType字?中不需要的部分就?被??,??程序送到??的?容??送TrueType或者Type 1字?完全一?,根据OpenType字?中的外形不同而有所不同。

其他?? [ ?? ]

在1980年代,Adobe利?的?大部分都?自于用于打印机的PostScript??(?? 光??像?理器 或者 RIP )的高?授??用。RIP相???,?且通常只在少?一些特定的硬件上?行。1980年代中期?着?多基于 RISC 的新平台出?,Adobe?常是在支持新机器方面落后一步。

因此第三方的PostScript???得?普遍,尤其是在授??用是??症?的低端打印机或者新硬件激?更快速度要求的高端排版???域更加常用。一方面,微?公司和?果公司?合起?努力?Adobe???打印机的位置拉下?,微?公司????的 TrueImage PostScript解?器授???果公司,?果公司??的新字?格式 TrueType 授??微?公司。(?果公司?止了?Adobe保持一致以及?的打印机使用Adobe公司?正的PostScript的策略,但是TrueType在微???和Macintosh上都成?了?准的 outline font 。)一些第三方的PostScript的克隆?品仍在?泛使用,尤其是在作?惠普黑白激光打印机?准 Phoenix Page 的中仍在?泛使用。

?多基本的廉价激光打印机不支持PostScript,??的??程序根本不使用PostScript。?需要在??的打印机上使用PostScript?可以使用名? Ghostscript 的PostScript解?器,?是一? 自由?件 。Ghostscript使用主?算机的 CPU ?行光?化?理、??果作?一?大幅的位??送到?算机??一?方式在非PostScript打印机上打印PostScript文?。Ghostscript也可以在?算机?示器上??PostScript文?以及?PostScript??成如 TIFF PNG ??的 光? ?形或者如 PDF ??的矢量格式。

分辨率非常高的??,如 imagesetter 或者 CTP platesetter 超?2500dpi的分辨率也?常?,仍然需要?有大量?存和磁?空?的外部光??像?理器。?多???字印刷的高端激光打印机系?也使用外部光??像?理器?容易升?的?算机系??特定的打印硬件分?。如 EFI ?面存??? ,存于 互???案? )和 Xitron ?面存??? ,存于 互???案? )??的公司???事??的光??像?理器?件??。

作??示系?的?用 [ ?? ]

?着PostScript成?打印?出的事??准,?自然人?也希望??用?描述 ?幕?出 。1980年代后期 CPU 性能的快速提升以及人??于??系??趣的逐?增加,促使人?多次????使用PostScript作?主要的?示技?的?示系?。

使用PS作??示系?有?多?点,其中之一就是在其他系?上用?不??要??幕?示保留位?,而且要?打印机保留Type 1字?,在?示器上使用PS只需要保留一套?而可以????缺点。?外一??点是就是允?“dumbling down”打印机。?LaserWriter?布的?候?是?果公司?品?中功能最?强大也是最???的机器,???就需要相?大的?理能力和?存以在合理的???生成高?300 dpi 分辨率的?面。?之形成?比的是,使用 NeXT 平台的400dpi打印机根本都?有CPU,相反?是使用?算机的CPU?行?面生成,然后?生成的?面 位? ?送到打印机。

但是使用PostScript作???系?的一?更?主要的?点是他?用?使用一??形?理子程序就可以?? ?面印刷 和其他大量使用?形的?用程序,在??上?行描?的程序同?也可以不?任何??直接在打印机上描?。??系?上的?面印刷?用程序要求程序?在各?平台的?形系?上?建 ?形用?界面 (如 Macintosh 上的 QuickDraw 微??? 上的 ?形??接口 (GDI))??器,然后???外的程序??形??成正?的PostScript?言用于打印。??的工作通常就?消耗?目的大部分?程工作,?且是程序??的主要?源。

使用PostScript作??示技?的??主要的例子是 Display PostScript DPS )和 NeWS ,???者??性地在在?里?用?示???生了分?,在DPS中view系?留?了OS去?理,然而在NeWS上整??示系?是用用PS?成的?且在一??一的??解?器中?行。

PostScript?言 [ ?? ]

PostScript是一? ??完全 的?程?言,通常PostScript程序不是人?生成的,而是由其他程序生成的。然而,仍然可以使用手工?制的PostScript程序生成?形或者?行?算。

PostScript是一? 基于堆? 的解??言,??似于 Forth?言 但是使用? Lisp?言 派生出的?据??。???言的?法使用 逆波?表示法 ,?就意味着不需要括??行分割,但是因?需要?住堆???,所以需要?行??才能????程序。大部分 ?算符 (其他程序中?? 函? )?堆?中?取?量,?且??算??放到堆?中。如?字??的 符?字面? 具有???自身副本放到堆?的效果。

算法 [ ?? ]

例如:

 3 4 add 5 1 sub mul

??行 (3 + 4) × (5 - 1)??的?算。

?我???地分析一下?是如何完成的:

3和4都是符?,???自己放到堆?中,在???命令之后,堆???成??:

4
3

add 是一??算符,??堆?中最上面的??元素取出(在我?的例子中是3和4)、???相加、然后??果放到堆?上:

7

下面又是??符?,???把堆??成??(需要注意的是操作??局限在堆??部,下面的元素不受影?):

1
5
7

?外一??算符 sub ,?堆??取出??元素、第二??去第一?、然后??果放到堆?:

4
7

??然 mul 同其他???算符一?,?堆?取出??元素、???的乘?放到堆?:

28

命名?量 [ ?? ]

上面的例子只是一?古老的 逆波?表示法 ?算,?然PostScript也使用?量。??地?就是?有一? 字典 用???所有不是符?的?西;如果?到的?,那?名字下保存的?就???到?中(或者更???是 ?行 ????后面的?容);?不到就返回??。?一??量放到字典中需要使用 def ?算符,?用一?名字和一??作???,通?在前面使用斜??建一?名字。因此

 /x1 15 def

首先?名字“x1”放到堆?上、然后是?15、然后?行 def ,???堆?中取出“x1”和15,?且?15?到字典中“x1”的下面。后面出?的“x1”(注意不要?“/x1”混淆)???15放到堆?而?量?不改?。下面的代???x1的?增加2:

/x1 x1 2 add def

堆??算符 [ ?? ]

PostScript有??操作符用于重?或者控制堆?:?制( dup )、??( pop )和交?( exch )在堆??部?行操作,然而 roll 旋?堆?中的某一部分, copy ?制某?特定的部分, index 允?象??那???堆?。

?理?程定? [ ?? ]

{ 」和「 } 」提供了一些?程的工具。「 { 」?解?器切?到 延??行 模式,所有的?西甚至是?算符和其他的可?行?象都放到堆?中,其中一?例外就是「 } 」,??堆?中?「 { 」?始的所有?容,?定成一?(匿名)?理?程,然后??放到堆?上。

????有??不同的用途,如子程序定?(匿名程序??一??量)、循?、?件等等:

x1 0 eq { 0 } { 1 x1 div } ifelse

?段代?首先使用 eq ??x1是否是0;根据?果的不同? ? 或者 放到堆?上。在此之后,????程放到堆?上,然后?行 ifelse ,??堆?中取出三???,如果第三???是 ? 就?行第二?否?就?行第一?。?之,如果x1是0?果就是0, 其他情??果就是1/x1。

?形操作 [ ?? ]

在生成?形的?候,PostScript使用普通的 笛??坐?系

100 200 moveto 300 400 lineto stroke

?“光?”移到坐?点(100, 200)然后??到(300, 400)。

50 70 moveto 100 200 50 80 100 100 curveto stroke

生成一??(50, 70)到(100, 100)的立方 ?塞?曲? ,控制点是(100, 200)和(50, 80)。

250 250 moveto (Wikipedia) show

在位置(250, 250)使用?先??的字??出文本“Wikipedia”,字???可以使用例如 /Courier findfont 12 scalefont setfont ??的命令串。

?形最初在“ 用?坐?系 ”中?建,在?制到?定最后?出的“ ??坐?系 ”之前??可以?行旋?、?放或者?曲等??。

 200 300 translate 45 rotate

?用?坐?系中的?容上移200点、右移300点?且?制到??坐?系?旋?45度。

字符“%”用?在PostScript程序中表示注?。作?一?通用的?定,每?PostScript都以字符“%!”?始??所有的??都???解??PostScript。

?考文? [ ?? ]

本條目部分或全部?容出自以 GFDL 授權發佈的《 自由線上電腦詞典 》(FOLDOC)。

外部?接 [ ?? ]

PostScript hacks [ ?? ]