PostScript
2022-12-03 15:42:35 阿炯

PostScript(PS)是主要用于电子产业和桌面出版领域的一种页面描述语言和编程语言。 其思想起源于John Warnock1976年在著名的计算机图形公司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将打印机和绘图仪的优点组合在一起从而打破了传统。同绘图仪一样,PostScript具有高质量的曲线处理能力并且控制语言简单能够用于不同品牌的打印机;同点阵打印机一样,PostScript提供了一个生成文本和光栅图形的简单方法。与它们二者不同的是,PostScript能够将所有这些不同的内容放在同一页上,这样就比以前的打印机或者绘图仪提供了更具灵活性。它已经超出了普通的打印机控制语言,并成为一个完善的编程语言。许多应用程序能够将文档传送到一个PostScript程序中,它的输出结果就是原始文档。这个程序能够发送到打印机中的解释器上得到打印文档,或者发送到另外一个应用程序在屏幕上显示文档。由于文档程序与目的地无关,所以就被称为“与设备无关”。它也非常擅长于实现栅格化,所有的东西,甚至是文本都可以用直线和三阶贝塞尔曲线表示,贝塞尔曲线以前只有在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字体中的外形不同而有所不同。

作为显示系统的应用

随着PostScript成为打印输出的事实标准,很自然人们也希望将它用来描述屏幕输出。1980年代后期CPU性能的快速提升以及人们对于视窗系统兴趣的逐渐增加,促使人们多次试图开发使用PostScript作为主要的显示技术的显示系统。使用PS作为显示系统有许多优点,其中之一就是在其他系统上用户不仅仅要为屏幕显示保留位图,而且要为打印机保留Type 1字体,在显示器上使用PS只需要保留一套从而可以弥补这个缺点。另外一个优点是就是允许“dumbling down”打印机。当LaserWriter发布的时候它是苹果公司产品线中功能最为强大也是最为昂贵的机器,这样它就需要相当大的处理能力和内存以在合理的时间内生成高达300dpi分辨率的页面。与之形成对比的是,使用NeXT平台的400dpi打印机根本都没有CPU,相反它是使用计算机的CPU进行页面生成,然后将生成的页面位图传送到打印机。

但是使用PostScript作为视窗系统的一个更为主要的优点是他让用户使用一组图形处理子程序就可以开发桌面印刷和其他大量使用图形的应用程序,在视窗上进行描画的程序同样也可以不经任何转换直接在打印机上描画。传统系统上的桌面印刷应用程序要求程序员在各个平台的图形系统上构建图形用户界面(如Macintosh上的QuickDraw和微软视窗上的图形设备接口(GDI))编辑器,然后编写另外的程序将图形转换成正确的PostScript语言用于打印。这样的工作通常就会消耗项目的大部分编程工作,并且是程序错误的主要来源。使用PostScript作为显示技术的两个主要的例子是Display PostScript(DPS)和NeWS,它们两者戏剧性地在在哪里应用显示逻辑发生了分歧,在DPS中view系统留给了OS去处理,然而在NeWS上整个显示系统是用用PS写成的并且在一个单一的复杂解释器中运行。

PostScript语言

PostScript是一种图灵完全的编程语言,通常PostScript程序不是人为生成的,而是由其他程序生成的。然而,仍然可以使用手工编制的PostScript程序生成图形或者进行计算。它是一种基于堆栈的解释语言,它类似于Forth语言但是使用从Lisp语言派生出的数据结构。这种语言的语法使用逆波兰表示法,这就意味着不需要括号进行分割,但是因为需要记住堆栈结构,所以需要进行训练才能阅读这种程序。大部分运算符(其他程序中称为函数)从堆栈中读取变量,并且将运算结构放到堆栈中。如数字这样的符号字面值具有将它们自身副本放到堆栈的效果。


CHM 公开发布 Adobe PostScript 源代码

美国计算机历史博物馆 (Computer History Museum,CHM) 宣布公开发布并长期保存 Adobe 的 PostScript 源代码,作为其代码艺术系列的一部分。 “计算机历史博物馆很高兴首次公开发布突破性打印技术 PostScript 的源代码。我们感谢 Adob​​e, Inc. 的许可和支持,并感谢 John Warnock 对此次发布的支持。”代码可从下载。


PostScript 是 Adob​​e 于 1984 年推出的第一款产品,是桌面出版行业的重要组成部分;加速了 computing 对 printing 的转变,并推动了 Adob​​e 作为知名软件公司的成长。起初秉承着 “任何计算机都可以通过一种通用语言与打印机和排字机连接,以最高保真度打印文字和图像” 的愿景;在 Adob​​e 联合创始人 John Warnock 的带领下,Adobe 组建了一个程序员团队来创建这种用于高质量印刷的新编程语言,允许根据用户的喜好缩放、旋转和移动文本和图像。除了两位联合创始人之外,该团队还包括 Doug Brotz、Bill Paxton 和 Ed Taft。

PostScript 和 Adobe Type Library 的出现彻底改变了印刷和出版业,并从 1980 年代开启了桌面出版业的爆炸性增长。PostScript 成功的发展成为一个国际标准,Adobe 也公布了 PostScript 语言的细节,允许其他人创建与 PostScript 兼容的产品。现如今,大多数打印机都直接依赖 PostScript 技术,或者是从中衍生出来的技术:PDF(便携式文档格式)


John Warnock 在 1990 年代倡导 PDF 的发展,将 PostScript 转变为一种更安全、更易于作为数字文件基础的技术,但保留了互操作性、保真度和质量的所有优势。几十年来,Adobe 极大地开发了 PDF,增强了其功能,并使其成为数字文档、打印以及在从笔记本电脑到智能手机和智能手表的屏幕上显示各种图形的重要标准。团队成员 Doug Brotz 称,“PostScript 使印刷世界民主化”。PDF 如今也已成功的发展成为一个全球标准,每年创建的 PDF 数量以万亿计。值得一提的是,计算机历史博物馆向公众发布的 PostScript 源代码版本是一个非常早期的版本,可追溯到 1984 年 2 月下旬,因此相对而言有很多内容没有包含其中。虽然此版本确实包含后来作为商业机密保存的 “font hinting” 程序的早期版本,但这些方法在随后的几个月里已被 Bill Paxton 完全重写、扩展和完善。

更多相关信息可查看其博客文章。

Adobe 联合创始人 John Warnock 博士去世

Adobe 官网于2023年8月下旬宣布,联合创始人 John Warnock 博士去世,享年 82 岁。John Warnock 个人传记可见此处

Warnock 博士与 Charles Geschke 博士于 1982 年共同创立了 Adobe,第一个产品是 Adobe PostScript。


PostScript 是主要用于电子产业和桌面出版领域的一种页面描述语言和编程语言。

Adobe 最早计划向企业和消费者提供打印服务,但在其他人建议下,公司业务转向为软件开发,John Warnock 和 Charles Geschke 发明了名为 “PostScript” 的编程语言技术,该语言与打印机沟通,可以实现在不同打印机上打印时,也能得到相同打印结果的效果。

PostScript 的发明被视为计算机出版的革命,也引起了苹果公司注意,后者将 PostScript 内置于自家的 LaserWriter 系列打印机中,这一做法大获成功,奠定了苹果在早期出版业的霸主地位,也向市场证实了 PostScript 的价值和意义,Adobe 最终也在出版业站稳了脚跟。经由 Adobe 的技术和产品,成千上万的用户将电脑变成了小型出版社。其中图像编辑软件 Photoshop 和文档编辑软件 Acrobat 至今有重要意义:人们能够通过这些软件编辑、查看和打印图像和文档,实现创建网站、编辑图像、撰写文章和出版书籍等工作。

Warnock 于 2000 年从首席执行官职位上退休,并与 Geschke 共同担任董事会主席,直至 2017 年。此后他一直担任董事会成员。为了表彰他们的技术成就,Warnock 博士被授予著名的国家技术与创新奖章;IEEE 计算机协会颁发的计算机企业家奖;美国电子协会成就奖章;以及马可尼奖,表彰其对信息科学和通信的贡献。