香雨站

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 133|回复: 1

Java,Forth, Postscript,OFD

[复制链接]

1

主题

4

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2022-9-20 08:19:43 | 显示全部楼层 |阅读模式
今天的有趣的事情就在于,标题里的这四个事物可以说是一脉相承的。要说顺序的话,就是Forth——Postscript——Java——OFD。
首先是Forth。Forth最大的历史成就应该就是引入了使用栈的哲学,这一点应该是影响深远。不过Forth也有它的局限性,不然现在流行的就不是Java而是Forth了。Forth在早期被用于嵌入式很多,据说还有天文仪器使用Forth。Forth在嵌入式领域的流行我觉得是生长出Postscript的最主要原因。
Postscript表面上是一种绘图语言和页面描述语言,但更本质的,它是一种打印机控制语言。打印机的控制设备作为一种嵌入式设备,设计一种Forth风格的控制语言,好像挺合理的。
然后就是Java。影响Java的语言有Postscript,这就挺奇特的。其中最为核心的应该就是Java Applet,现在虽然不怎么用了。Java创始人早期在公司研究用户界面、窗口系统,那应该还是操作系统GUI发展的早期。不得不说,打印机真是一个影响深远的技术,GUI和版式文档都可以追溯到打印机。Java创始人研究的GUI没有取得商业上的成功,所以转去一个开发消费电子产品的小组。这里的渊源就在于,这个GUI是用Postscript描述的,Java创世人基本上自己实现了一个Postscript运行时。
Java创始人转去开发消费电子产品后其实还是开发GUI以及配套的编程语言,同时增加了对嵌入式设备可移植性的考虑。最初的产品PDA没能取得成功。不过互联网时代很快就到来了。开发团队开发了浏览器,并在浏览器中是用Java。这就是Applet技术,应该是使Java流行开,并促使其在互联网编程领域取得进一步成就的技术。
去看看Applet利用awt绘制页面的字节码,我们就会发现它和Postscript惊人地相似。
// Java
bipush 30
bipush 50
invokevirtual java/awt/Graphics/drawString(Ljava/lang/String;II)V

// Postscript
30
50
moveto
(some string) show最后就是现在的OFD,参考了Postscript的成像模型。
不过作为排版语言,Postscript的问题在哪里?可能还是不够全面。绘制(计算)图形是一种子语言、公式排版是一种子语言、表格绘制是一种子语言、断行分页又是一种子语言。只有开源的LaTeX比较完整地实现了这些系统。PDF稍有后退,变成了一种纯粹的页面描述语言——失去了计算图形的能力(没有控制流和变量)。
精美排版可能还是小众需求。而且精美这种东西比较主观,大多数人可能都谈不上精美的排版。大众的需求很可能是过得去的排版就行。办公三件套可能更契合实际的生产需要。实际上关注OFD一段时间后就会发现,大家的关注点主要是发票和文件的签章之类的内容,没有人关注把OFD作为一种最终的排版呈现方式。
感觉基于OFD开发排版系统可能是一种创业机会。毕竟现在流行的绘图艺术软件都是建立在Postscript或者PDF之上的,说不定基于OFD开发有关软件可以复制A公司的成功路径。
在OFD中尝试实现Postscript的一些例子的时候,第一个例子就发现了问题,我发现不同的阅读器的渲染效果不一样,这可能是对Postscript成像模型的理解不同。传统PDF软件厂家实现基本和Postscript模型一致。
如图是是用4个lineto绘制的矩形,S软件没有缺口,F软件正确显示了缺口。按照Postscript模型,应该是有缺口的,因为路径没有显式地封闭(close)。



S软件的渲染效果



F软件的渲染效果
回复

使用道具 举报

2

主题

5

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2025-1-28 17:15:02 | 显示全部楼层
我擦!我要沙发!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|香雨站

GMT+8, 2025-3-15 04:49 , Processed in 0.738934 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表