有这么多格式,直觉上更多的图形绑定:它可能是矢量图形格式,如SVG,各种PNG,JPEG格式等.为什么它们的PDF都有一个专用的库?
注意:这个问题不是基于意见的.我对PDF在xOS中有这样一个中心点的原因感兴趣.给它一天看.
Wil*_*ley 10
我的真实情况:我将我的PDF查看器授权给Apple for Rhapsody,然后将我在Objective-C中编写的PDF库授权给Apple作为CoreGraphics的基础.我从1988年开始为NeXT系统编写代码,并多次担任NeXT和Apple的承包商.
正如Rob所说,NeXTstep在Adobe的许可下使用了Display Postscript("DPS").当Apple从"经典"Mac OS切换到OS X时,他们绝对不想继续向Adobe支付每个Mac销售的DPS的每个座位许可证 - 已经多年以来他们同意支付每个座位Mac的任何人的许可.
而且,与此同时,DPS并没有反映现代图形趋势.它是一种图灵完备语言并在其自己的进程中运行,客户端应用程序必须向其发送进程间消息,这意味着昂贵的上下文切换并且不直接共享缓冲区.(它还打破了客户端进程之间的隔离.)
因此,图形团队(由Peter Graffagnino领导)需要更换DPS,但也不会破坏所有现有的NeXTstep应用程序.事实上,Adobe的一名工程师(我相信它最初是Sam Streeper)已经编写了一种比PostScript简单得多的图形语言,并没有图灵完整,但仍然拥有PostScript的大部分绘图惯例.(显示PostScript是PostScript的超集,因此任何PostScript程序都在DPS中运行.)
PDF最初是为PostScript驱动的打印机设计的,因为许多PostScript程序(也就是"打印作业")最终会降低内存和处理器的时间,而且往往太大而无法在任何单独的打印机上工作(当时RAM很昂贵).将PostScript文件转换为PDF使它们更容易处理,并且由于PDF没有控制流,因此您无法将打印机发送到无限循环中.(Adobe使用PostScript程序处理PDF,并将它们发送到打印机.)
PDF也是一个开放的标准,因此在Apple编写自己的实现时,他们不必向Adobe支付任何费用.PDF快速,简单且免费,并且具有完全相同的模型,因为它设计为在PostScript打印机上运行.
因此:Apple必须切换到适用于Mac OS X(néeNeXTstep)的新图形语言,并且想要一个具有相同语义和Display PostScript的图形语言,因此所有现有的应用程序仍然可以使用.
首先,他们编写了对CoreGraphics的函数调用,实现了PostScript/PDF的所有约定(例如:剪辑路径如何工作,路径如何填充,如果它们自我重叠,分辨率独立,状态堆栈等).他们重写了所有现有的高级图形功能(例如,NSRectFill()),因此它们位于CoreGraphics之上,因此99%的现有NeXTstep程序可以在不进行修改的情况下从DPS切换到CG.(到20世纪90年代末,大多数NeXTstep程序员已经意识到深入DPS并尝试通过编写PostScript创建效果几乎总是一个坏主意,所以我们使用了高级调用.)
但最后缺失的部分是为程序提供一种可以读取和写入磁盘的格式.在NeXTstep时代,我们使用PostScript和Encapsulated PostScript,但前者现在是Right Out.PDF很自然(由于上面提到的原因),因此他们添加了PDF文件的读写.
Postscript(双关语):今天CoreGraphics中的PDF代码不是我授权的Apple - 他们使用我的代码作为更多的"工作参考"并提出了他们自己的API,因为CoreGraphics不能使用Objective-C和我的API从未真正用于一般程序.
Quartz 2D 使用的绘图模型基于 PDF 规范。
人们普遍认为 Quartz“在内部使用 PDF”(特别是 Apple 在 2000 年的 Macworld 演示和 Quartz 的早期开发人员文档中),...Quartz 的内部成像模型与 PDF 对象图密切相关,使得将 PDF 输出到多个文件变得很容易。设备。
https://en.wikipedia.org/wiki/Quartz_(graphics_layer)#Use_of_PDF
| 归档时间: |
|
| 查看次数: |
886 次 |
| 最近记录: |