您的位置:首页 > 百科 > 正文

PostScript

Po来自stScript是一种编程语言,最适用于列印图像和文字(无论是在纸、胶片或非物质的CRT都可层战攻效答证)。用现今的行话讲,它是页面描述语言。它既可以像程序代码一还善样具有可读性,又降又能表示出可任意放大和缩小的矢量图。

  • 中文名称 PostScript
  • 外文名称 PostScript
  • 推出 Adobe
  • 出现 Apple LaserWriter
  • 适用 列印图像和文字

发展历程

  它于1985年由Adobe推出,最早在AppleLas来自erWriter上出现和计(据作者所知)。

  PostScript对于印制工业产生很深远的影响,甚至到今天仍保留着当LaserWriter印表机问世时重要的地位。

  为了更好360百科理会PostScript,我们必须先了解在它出现以前市场是怎样运做的。在那时候,需要排版设备的话要找Acme Typesetters,他们会提供一套Acme系统及Acme输出设备。该Acme系统和其他生产商的设备不兼容。在多数情况下,与其他系统调换数据相当困难,几乎是不可能的。

  如果拥有一台个人计算机,连接在一台只能打出低品质位图字符的点阵打印机上。打印效果已经无法满足现在用户的需要。

  PostScript的历史由Parc开始,它是施乐的备既应层培前土孔材研究院,许多我们现在不以为意胞远候食松眼阶哥的计算机技术都是从那里开发的:几个首要的例子,如雷射印剂战物相烟停副德印表机,图像使用者界面和以太网。

  John Warnock伟耐课持命势威斤子企集是工作于施乐的出色的工冲至头准城板煤老界程师之一。他开发了名为「Interpress」的语言,用于操作施乐雷射印表机。他和他的上司,Chuck Geschke,用了两年时间力图让施乐把Interpr练毫图争ess商业化。当建议被拒绝后,他们决定离开施乐,自立门户

  John Warnock和Chuck Geschke把他们的公司取名为Adobe,位于加州的Los Altos,Warnock的家。房子后面有一条小溪,有时你能在关于Napa Valley的酒类向导图上看到,Napa 径给兵经们内乱群任称叶Valley是出产最纯的加州酒的地方。

  最初,Warnock和Geschke曾设想自行组建一台真正强大的印表机,但很令字适万规采降和快他们意识到为其他生产商提供可控制他们生产的印表机的工具更现实。

  PostScri其职片护pt Level 1

  式们火有太群初始时只称作PostScript。「Level 1」是为了与新近升级的Level 2区别而后加的。

  PostScript是一个非常强大的语言,类似于Forth,另一种计算机语言。开始时需要一套相价世顾气底当强大的系统运做PostS率触二袁cript。事实上,在它推出的头几年中,PostScript印表机具有更强的处理能力,可以和Macintosh机连接使用

  PostScript 是相对设备独立的。也就是说PostScript文件可以在任何PostScript设备中运做。你可在雷射印表机上得到300dpi的打印效果,但同样影像在imagesetter中就可得到漂亮且清晰的2400dpi效果。对于用户来讲,他们不需要受限与一个生产商,可自由选择最适合要求的设备。

  PostScript的腾飞

  对Adobe来说,PostScript是一个者再万儿衡弦少期移相当大的赌注,如果没有Apple计算机的Steve Jobs,他们可能会无法向市场证实PostScript的价值和意义。

  1985年,Macintosh计算机的销售量开始下降,而Apple的新机型迫切需要究击微差开宗体止倍内一个有威力的应用程式。Steve

  Jobs对Adobe的技术很感兴趣,投资了Adobe 二百五十万让Warnock为Apple LaserWriter编写PostScript控制器。该印表机和HP LaserJet相似缺冷江与较整回一,但PostScript控制器可以使它输出「typesetter」品质。

  与功能强大的雷射印表机连接的计算机并不会产生大的影响,但Apple和Adobe很幸运地在偶然机会遇到第三个合作伙伴Aldus,一个刚起步的小公司,它编写了能够充分发挥出Mac 和LaserWriter功能的应用程式,该软件就是PageMaker。

  在桌上型电脑的问世后的一年内,LaserWriter,PostScript和PageMaker的结合挽救了Apple,Aldus和Adobe也由此变成了有钱的公司。Linotype是首家赏识PostScript价值的图像艺术供应商,它推出了自带专用PostScript RIP的imagesetter。其他的生产商也紧跟其后,很快地PostScript就成了印前业的国际性混合语。

  PostScript Level 2

  大约在1994,Adobe发行了PostScript的下个修订版本Level 2。 Level 2是个具有重大意义的升级版,也是印前业者急切期盼的版本。

  最重要的功能:

  增进的速度和可靠性:在Level 2出现之前,Limitcheck和Vmerror PostScript错误非常麻烦,令人头痛。Adobe优化了PostScript程式码和增强程式码的记忆管理功能。该功能提高了功效,尤其对於旋转的扫描作业。

  支持分立的内置RIP:Level 2 RIPs能够接受合成的PostScript文件,自行处理分色工作。它并不是一个必须遵循的功能,不同生产商的Level 2 RIPs的功能也有不同。

  RIP中解压缩影像:Level 2 RIPs能够解压缩JPEG和CCITT

  支持合成字体:该功能对于亚洲国家来讲相当重要,他们的字符比欧洲使用的大。Apple通过QuickDraw

  GX来支持合成字体。现今你可能只在Apple的档案储藏柜里找到,还有其他的一些技术突破如OpenDoc 和the Newton。

  字体和字型的缓存:有了Level 2,令人讨厌的字体缓存删除没有了。

  字型的缓存问题几年后通过一些整版应用程式如PressWise 和Preps 解决了。

  改进的驱动程式:Macintosh的LaserWriter 8和Adobe的Windows 3.1系统PostScript driver 2.X为基础,联合恰当的PPD-drivers。

  改进的网屏算法:对于许多的RIP生产商,当Level2推出时已是过时的新闻。比如Agfa,已在这前一年就已销售它的对称网屏技术,为胶印业提供高品质的无网屏镜像效果。Adobe版本被称为准确网屏。

  Level 2的市场应用较慢

  先发表Level 2规范,然后才开始研究它的实际应用,这可以说是Adobe的一大错误。更为难堪的是,竞争者们推出Level 2的竞争产品的速度比Adobe想像的更快。

  虽然PostScript Level 2具有明显的优点,但却花费了很长时间才真正开始应用新功能。例如在Level 2推出的6年后,XPress4.11还不能很好地支持分立内置RIP功能。

  PostScript 3

  由于一些不明确的原因,Adobe把最新升级版本取名为PostScript 3,而不是PostScript Level 3。和Level 2相比,3升级的意义并不大。这是可以理解的,因为当时许多应用程式还正在如何正确支持好Level 2的困惑中。

  PostScript 3的主要优点:

  每种颜色支持超过256个灰阶。Adobe在PostScript程式码中包含了12-bit的网屏。可支持每种颜色多达4096个。在过去,256灰阶的极限有时可看到条纹状,尤其是混合色。

  支持PDF:PostScript 3 RIPs可支持PostScript Level 2和PDF文件。

  改进的分立内置RIP支持功能:PostScript Level 2

  RIP本身已经能够完成分色作业,但对于某些类型的影像如双网屏和多彩印影像就不能处理。PostScript 3含有名为Device N的色域。如果非CMKY色彩影像解译成该色域内,PostScript 3 RIP能正确地对影像进行分色。

  网络打印:在如今网络发烧的时代,Adobe也不甘落后,在PostScript增添了网络功能。有趣的是没有Adobe的OEM用户想尝试该功能。

特点

  PS的最大特点是避免了版面制作对使用设备的依赖性,只要符合PS这个标准的数据格式,不管是用MAC微机编辑也好,还是用SUN工作站进行编辑也好,都可以通过打印驱动程序获得共同的PS编码文件;

  PS的另一特点是能够综合处理文字和图像,在一页印刷品中,PS将其中的所有信息都用一种计算机数据来表现和描述,为图文合一的版面处理提供了可能;

  有了这种页面数据格式,不同生产厂家的通用计算机之间和各种专用计算机系统(设计用,文字处理用,图像制版用等)之间,才可能进行数字化数据的交换,它是印前处理系统开放化的基础之一。

  PostScript的主要用意是为以相对设备独立的方式描述影像提供一种方便的语言。该设备相对独立是指不以某种特定设备特性作参照,来描述影像(比如印表机的解析度),这样同一种描述不需修改就可适用于任何一种PostScript印表机(比如,LaserWriter 或Linotron)。实际情况下,有些PostScript文件对于目标设备做假设定(比如它的解析度或纸匣的数量),但这并不实用,而且局限了可转移性。

  对于语言本身,通常是解译的,如RPN计算器一样的存储方式。程序把运算的参数存储在一起,然后调用该操作。通常情况下,运算后将结果留在存储显示上。例如,我们将12乘以134。我们会使用以下PostScript程式码:12 134 mul前面的两个字「12」和「134」将12和134存储显示。「mul」激活相乘运算,将两个数值相乘,并将结果推倒存储显示上。结果数值将保留在那里供以后程序中其它运算时使用。

  根据手册中Adobe使用的规定,作者用以下两个主题概括运算:参数-1 参数-2。此概念是指使用运算时要推出参数-1 参数-2等后方可激活运算。运算后将显示结果。许多运算返回后无结果(因副作用);返回后显示「-」。

语法和命令

  Postscript语言 以空格,换行符或水平制表符作为基本分割符,以百分号("%")为注释开始的标志,每行注释在遇到换行符结束,所有的字符都用ansi编码。如果想体验一下postscript神奇的画图,最简单的方东期举深然局析营错法是用记事本编辑来自一段postscript代码,保存的时候注意要用ansi编码,把扩展名改为.eps,用GSView或者Su马格纪matraPDF打开,就可以看到对应画出的图形。如斗山果使用Notepad++,可以设置Post Script的语法提示。

  基本画图命令

360百科  Post Script画弱伯右采用操作数在前,操作符在后的结构。因为这样相当于对操作符的后续编历纸七因特且写,大大减少语法解析的难度。操作数按顺序压栈,操作城宁广程拉政则功能了符则从栈顶取出对应数著裂和员报江量的操作数进行操作。Post Script采用的坐标系以左下角为原点,水平向右为x轴正方向,水平向左为y轴正销前厂的困省良速火状方向。pt是Post Scr则态从使界林七武形怀病ipt里的基本长度单位,1英寸为72pt,相当于屏幕的96个像素。因此,可以认为3个pt和4个像素大小相当。

  Post Script用setlinewidth设置线宽,用setrgbcolor设置颜色,例如:

  扩案一运3 setlinewidth %设置线宽为3pt

  0.5 0.5 0.5 %设置颜色为50%灰色

  如果不设置,线宽默保先认为1,颜色默认为黑色。

  Post Script画线是用行走的图龟描述。主要命令有:

  x y moveto %图龟移到点(x, y)

  x y lineto %图龟由所在点构造线段路径到点(x, y)

  x, y, r, arc1, arc2 %构造以(x, y)为圆心序绿钟早原缺训,以r为半径,半径辐角从arc架居市1到辐角arc2的圆弧路径

  x1, y1, x2, y2, x3, y3 curve %以图龟当前位置, (x1你维误东门触错, y1), (x2, y2), (x3, y3)四点为控制点构造三次Bezier曲线路径

  stroke %用当前的线宽和颜色

  num setlinew某威法化亲汽营周玉判idth %设置画线宽度为num

  例如画一条从左下角出发,以4:3为坡度,长度为100的斜线,可以用下面的命令:

  0 0 moveto 80 60 lineto stroke

  也可以写为

  80 60 0 0 moveto lineto stroke

  其中第二种写法的语法解析是这样的,四个数字80, 60, 0, 0依次入栈叶技被刘音情货走室女海,当执行到命令moveto时,该命令有两个参数,因此从栈顶取出两个参数0, 0,并执行移到这一点的命令。再执行命令lineto时,该命令也有两个参数利政担二随飞,再从栈顶取出两个参数80 60,并执行向这一点画线的命令。虽然与第一种写法入栈和出栈的顺序不同,但执行结果是一样的。

  Post Script的线的末端形状和连接点形状分别用setlinecap和setlinejoin设置,如果参数为2,即为圆形末端和连接,默认值为1,即矩形末端和连接。

  Post Script可以用fill命令以当前颜色填充闭合路径。闭合路径由newpath和closepath设置。例如以25%灰度填充宽为100,高为50的矩形,可以用下面的命令:

  newpath

  0 0 moveto

  100 0 lineto

  100 50 lineto

  0 50 lineto

  closepath

  0.75 0.75 0.75 setrgbcolor

  fill

  PostScript通常情况下默认的页面大小是A4大小,如果要改变页面大小,通常用PageSize语句。例如,如果要把页面设置为宽400pt,高300pt,可以使用下面的命令:

  <</PageSize [400 300]>> setpagedevice

  双书名号<<>>定义结构体。这里的双书名号是英文的大于号和小于号的双写,而不是中文的书名号。

  右图是用PostScript画半球的例子,其中半球的椭圆边是用三次Bezier样条近似画出的。对应的代码如下:

  <</PageSize[250 175]>>setpagedevice

  1 setlinecap1 setlinejoin

  25 50 moveto

  25 50 25 36.25 70 25 125 25 curveto

  125 25 180 25 225 36.25 225 50 curveto

  0.5 0.5 0.5 setrgbcolor3 setlinewidthstroke

  newpath

  25 50 moveto

  25 50 25 36.25 70 25 125 25 curveto

  125 25 180 25 225 36.25 225 50 curveto

  125 50 100 0 180 arc

  closepath

  0.875 0.875 1.0 setrgbcolorfill

  坐标变换命令

  Post Script支持坐标平移,旋转,缩放变换。在变换之前,一般是先用gsave保存当前的坐标系,画完在变换下的图形后,再用grestore恢复当前坐标系。变换函数有下面几种:

  x y translate %后面所画的图形都向右平移xpt,向上平移ypt

  angle rotate %后面所画的图形都以(0, 0)点为轴心逆时针旋转角度angle

  s1 s2 scale %后面所画的图形都在x方向上变为原来的s1倍,在y方向上变为原来的s2倍

  [a b c d e f] concat %后面所画的图形上的点都以下面的变换的值确定新位置:

  在Post Script中,方括号表示数组,矩阵用6个元素的数组表示。需要注意的是,在伸缩变换中,线宽也会做相应的变换。因而如果要画椭圆弧,利用圆弧仿射变换不如用三次Bezier样条画得线条粗细均匀。

  利用translate平移变换设置位置可以把多个PostScript图片拼成一张子图,也为图的合并带来方便。

显示字体

  Post Script支持英文字母,希腊字母和数学公式。所有数学公式的符号都是由ascii码表示。Post Script的字符串要放在圆括号里。设置字体的命令是findfont,前面的参数为/Times(用来显示TimeNewRoman英文字体)或者/Symbol(用来显示希腊字母)。其它重要命令有

  num scalefont %设置字体大小

  setfont %选中刚刚设置的字体

  show %显示字体。

  例如,在画图区的左右角用16号字Times new roman显示字符串"Post Script"可以表达为:

  /Times findfont 16 scalefont setfont 0 8 moveto (Post Script) show

  在圆括号里的字符串由可打印字符(ascii码值为32-126,包括空格,数字,大小写字母,标点符号和部分运算符)和一部分不可打印字母组成。可打印字符直接把字符放在括号中即可,不可打印字符则由反斜杠加3位8进制数表示,例如"£"可以表示为(/244)。字符表放在这一部分的图中。其中每三列为一个模块。每个模块中,第1列为8进制数,第2列为Times字体对应的符号,第3列为Symbol。

  颜色渐变

  在Postscript语言里,颜色渐变用填充模板(Shading Pattern)实现。颜色渐变填充模板有很多种。其中三角形网格是最简单的,也是用起来最方便的。Shading Pattern用双书名号(<<>>)建立结构体。定义宏替换可以使用反斜杠加宏名最后以def结束。例如要画一条竖直的彩虹颜色条,可以这样定义竖直颜色填充模板:

  /VerticalColorBar

  <<

  /PatternType 2

  /Shading

  <<

  /ShadingType 5

  /ColorSpace /DeviceRGB

  /VerticesPerRow 2

  /DataSource

  [

  0 80.5 0 0

  1 80.5 0 0

  0 71 0 0

  1 71 0 0

  0 51 1 0

  1 51 1 0

  0 30 1 1

  1 30 1 1

  0 10 0 1

  1 10 0 1

  0 00 0 0.5

  1 00 0 0.5

  ]

  >>

  >>def

  其中VerticalColorBar是宏名,前面加反斜杠表示这是个宏定义,后面用def表示宏定义结束。下面用这个宏定义画一个竖直矩形:

  newpath

  10 10 moveto

  60 10 lineto

  60 410 lineto

  10 410 lineto

  closepath

  VerticalColorBar [10 0 0 50 10 10] makepattern setpattern

  fill

  需要注意的是,在makepattern前面要有个矩阵,因为前面定义的填充模板不一定正好在所要填充的模板上。即使所定义的填充模板与所要填充的区域正好重合,还是需要在makepattern前加一个单位矩阵,因为这是makepattern必须有的参数。通过矩阵,还可以实现对填充模板的变换。例如,想要把前面的模板做成一行彩色字的填充,可以使用下面的代码

  /Times findfont 32 scalefont setfont

  0 16 moveto

  VerticalColorBar [0 48 -24 0 192 0] makepattern setpattern

  (Hello World!) show

  上面的代码相当于把定义的填充模板逆时针旋转了90度,因此可以看出把"上红下蓝"的填充模板变成了"左红右蓝"的字体填充。

应用和学习

  Post Script非常适合制作学术论文插图,因为在很多顶尖学术期刊要求示意图必须为矢量图,而Latex支持的矢量图一般都是eps格式的矢量图。Adobe公司的illustrator和免费软件Inkscape都支持eps格式矢量图的编辑。公式编辑器MathType,几何作图软件Geogebra,还有强大的科学计算软件Matlab都支持保存为eps格式矢量图。因此,如果学会了Post Script语言,可以在它们输出的矢量图的基础上加以修改,从而得到更适应论文的插图,对于写出高质量的学术论文有重要意义。

  学习PostScript语言推荐的书为Adobe公司发布的Post Script Language Reference Third Edition,这本书可以在公司官网免费下载电子版 。

发表评论

评论列表