文章摘要
文章介绍了如何将1991年Adobe的PostScript解释器移植到浏览器中运行。通过模拟M68K处理器和HP LaserJet硬件环境,开发者将原版ROM中的PostScript Level 2解释器成功运行在现代浏览器中,可直接渲染PS文件而无需服务器支持。这展示了经典代码在现代技术中的实用价值。
文章总结
标题:在浏览器中运行Adobe 1991年版PostScript解释器——pagetable.com
1991年推出的HP C2089A "PostScript Cartridge Plus"是一款为LaserJet II/III设计的附加组件,通过2MB ROM上的Adobe官方参考解释器(版本2010.118)实现了PostScript Level 2支持。
三十五年过去,这个ROM仍然是有效的PostScript实现:它能正确渲染语言,而该语言本身也未曾改变。虽然我们现在有Ghostscript,但这可是Adobe的官方参考实现!旧代码未必就是过时的代码:为何不让它继续发挥作用呢?
retro-ps项目提取该ROM,模拟其运行的M68K处理器,虚拟化周边LaserJet主板环境,最终在命令行或浏览器(pagetable.com/retro-ps)中运行。用户只需将.ps文件拖入页面,该卡带自带的栅格化程序就能在客户端完成渲染——整个过程无需服务器参与。
硬件细节
该卡带基于LaserJet III主机运行。其格式化主板配备8MHz的Motorola 68000处理器、1MB系统内存(可扩展至4MB)、可将外部ROM映射到CPU地址空间的卡带接口,以及用于连接打印引擎的内存映射寄存器。C2089A卡带即插入此接口,其ROM中运行着PostScript解释器、字体、半色调和分带处理程序,通过主板RAM进行工作。
模拟器内部机制
原卡带专为LaserJet III设计:300DPI分辨率、固定纸张尺寸、0.25英寸硬件边距。但其内置PostScript解释器是通用的——这些限制来自打印机而非语言本身。retro-ps移除了这些限制:支持任意DPI(不超过解释器上限)、任意纸张尺寸、任意半色调频率和无边距设置(使用--lj3参数可恢复原始限制)。关键技术包括:
- CPU与内存:模拟器采用68020处理器,支持16MB内存,远超原68000的寻址能力,使卡带无需重写分配器即可渲染高DPI页面。
- 虚拟化环境:由于缺少主板ROM和打印引擎,模拟器通过软陷阱模拟主板功能(打印机型号字节、IPC字节流、引擎状态轮询),并伪造引擎完成中断以推进卡带状态机。
- 半色调优化:针对300DPI优化的默认半色调单元在高DPI下会显得稀疏,模拟器通过注入DPI自适应的setscreen序言解决。
- 像素上限:解释器的clip操作符限制单轴约16000像素,这是Adobe代码的固有限制,实际最大DPI随纸张尺寸变化(Letter尺寸下约1450DPI)。
未来计划
- 支持其他卡带ROM,如Pacific Page P·E
- 适配LaserJet 4M及后续机型:这些设备使用Intel i960处理器,直接将PostScript Level 2集成在格式化ROM中,无需外置卡带。
(注:已删除原文中关于硬件规格的冗余描述,保留技术实现的关键细节;优化了专业术语的译法;调整了技术要点的呈现逻辑以符合中文阅读习惯。)
评论总结
以下是评论内容的总结:
对PostScript技术的兴趣与赞赏
- 多位用户表达了对PostScript技术的喜爱和对其在浏览器中应用的兴趣。
- "People must really love PostScript!" (评论1)
- "Sun NeWS in the browser would be cool as well." (评论2)
- "postscript hacks are fun!" (评论4)
- 多位用户表达了对PostScript技术的喜爱和对其在浏览器中应用的兴趣。
技术比较与实用性讨论
- 用户讨论了PostScript与其他技术(如pdf.js)的比较,并分享了个人经验。
- "I wonder if this is better than running pdf.js...using pdf.js wasn't gonna work and be too slow" (评论3)
- "After some manual culling of code I got the wasm module down to 27kb with no glue." (评论3)
- 用户讨论了PostScript与其他技术(如pdf.js)的比较,并分享了个人经验。
历史与行业影响
- 评论提到了PostScript的历史和其对印刷行业的影响。
- "the encryption on Type 1 fonts in 1987 was broken by Harvey Grosser" (评论4)
- "every print publication in existence was faced with 'do or die' in digital production." (评论4)
- 评论提到了PostScript的历史和其对印刷行业的影响。
使用体验与问题反馈
- 部分用户分享了使用PostScript时的体验和遇到的问题。
- "Dropped a .ps in there, it's just stuck 'rendering'." (评论7)
- "Minus the colors, they worked and look pretty good." (评论9)
- 部分用户分享了使用PostScript时的体验和遇到的问题。
对Adobe的调侃与对macOS的遗憾
- 有用户对Adobe进行了调侃,并对macOS取消PostScript支持表示遗憾。
- "How much does a subscription for this website costs per month? After all it says Adobe in the title." (评论5)
- "Such a shame that macOS lost all its built-in postscript support including Preview.app in recent versions :(" (评论10)
- 有用户对Adobe进行了调侃,并对macOS取消PostScript支持表示遗憾。
幽默与怀旧
- 一些评论带有幽默和怀旧的色彩。
- "But does it say 'PC LOAD LETTER'?" (评论8)
- "Wonderful." (评论6)
- 一些评论带有幽默和怀旧的色彩。
