LemonHX

LemonHX

CEO of Limit-LAB 喜欢鼓捣底层的代码,意图改变世界
twitter
tg_channel

Adobe作恶多端, PDF和PostScript对出版物格式的垄断

adobe_logo_6.png

图片创作于 Adobe Photoshop

常见的出版物格式#

正常人,包括你我,如果想写 一本书 你会想用什么工具?

你先别急着回答,先仔细想想可能碰到什么问题,怎么在最快的时间内写好,怎么浏览...

好了,我猜你多半说 Latex + PDF 或者 Word.

应该没有人疯狂到上来就写 markdown 然后转 html 然后转 xml 转来转去的吧.

毕竟为了保证你打印出来的格式正常,你也没什么可选的,你再想一下如果你想做一个网页你能有多少中你知道的,你用过的技术栈?

是不是很惊讶,为什么我们现在出一本书居然没有别的可选项!

为什么活到最后的是 PDF?#

1991 年 Adobe 的联合创始人约翰沃诺克提出了使用这么一个系统来让文档便于分发,当时如日中天的还是 Latex,DVI 以及 Unix 机器,Latex 我们都知道... 您拿到 .tex 文件离能成功打印出来还差十万八千里... 所以他们想开创这么一个格式来减轻终端用户的心智负担.

有一些读者可能不太了解为什么 Latex 输了... 那么我们以一个可爱的 80 年代的大学生阿伟为例,他想打印出来他的学长杰哥的论文用于阅读.

latex.jpg

然后他拿到了学长的.tex 文件,然后他需要第一步找到他学长用过的宏包.

(然后他发现有一个宏包是他学长自己写的,存了源代码的软盘不知道弄哪儿去了...)

然后他花了九牛二虎之力在各个论坛翻箱倒柜的找到了所有的宏包,然后发现.sty 坏了.

(他问他学长,他学长说他没动过 .sty 文件...)

他发现他学长是使用的他学长大学实验室独家研制的一套 Latex 发行版,再引入了.sty 文件之后似乎对了...

然后他编译这个 latex...

Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.
Error line 114514 !Text line contains an invalid character.

然后似乎是宏包更新版本了...

他大喊: "杰哥不要!"

所以 PDF 出现极大程度上缓解了上面这个问题.

PDF 最大的贡献就是第一使用了 XML 进行排版,同时规定了图像的格式,还提供了一系列的元信息,统一了字体集,以及使用强大的 PostScript 进行绘制可以做出很多很 fantasy 的效果.

那么这么好的一个东西究竟那里作恶了呢?

专利问题#

2008 年,Adobe 公司发布了 ISO32000-1 对于公共许可,制作,使用,发布 PDF 兼容应用所属的专利以及技术文档.

等等,这个玩意儿有专利!?

没错!

不但又专利,而且还是买断制专利!

也就是说杰哥他们的贫穷的实验室再也不能发布一款基于 PDF 技术制作的 PDF 发行版了,否则就会吃官司.

而且还有一个最大的问题,就是他们所提供的技术参考实现... 居然依赖了专有技术!我的上帝!

字体专利#

为了解决当时位图字体的狗牙在先进的激光打印机打印出来的是更尖锐的狗牙的问题,Adobe 公司推出了 Type 1 和 Type 3 的字体格式,然后这种字体的轮廓数据被 Adobe 公司使用加密算法和密钥保存下来了,然后想打印光滑的字体吗?请支付给 Adobe 公司高昂的许可证授权费.

虽然 Adobe 公司的技术水平贼几把烂,刚一发布就被破解但是要是被他们看到你在用... 准备请律师吧,相信你的律师没 Adobe 家的牛逼.

图片专利#

Adobe 公司手里的图片专利多的你数不过来,无论是压缩也好,格式也好,过滤器也好,解码器也好,一不小心你就用了 Adobe 的技术处理了你的图片... 一不小心就有得交授权费.


但这两个专利还好,最要命的就是 PostScript 的专利了.

什么是 PostScript, 微软苹果和 Adobe 的爱恨情仇.#

E832B68B-A62E-4C72-8CC7-4CC3474DF202.png

PostScript 这一个基于堆栈长得像 Forth 的解释语言来自于 Adobe 最早的那一批人的想法,1978 年首次实现,然后随着 Adobe 公司的势力扩张,PostScript 甚至一度被塞到了每一个激光打印机.

有人会好奇为什么打印个图片都要一种编程语言?

因为随着 Adobe 开始鼓捣他们的矢量字体,如何把矢量的数据转换为位图并打印下来成了必要 (这一步在图形学里我们普遍称之为光栅化), Adobe 到 90 年代的绝大多数利润都来自于这个 PostScript 的打印机固件,可见其影响力.

然后我们的苹果和微软都坐不住了,因为 Adobe 这么搞有点心太黑了!

国共合作一致对外#

在 1980 年末为了抗议 Adobe 公司的流氓行为,苹果开始开发 TrueType (也就是我们现在都还在用的.ttf) 格式的字体,微软公司和苹果公司 py 交易了一些技术,然后也获得了 TrueType 的使用权,当即就把 TTF 当成了 Windows 的首要的字体格式.

我们的 GNU 和 FreeDesktop 也坐不住了#

你们都在这里玩闭源玩专利?老子开源社区第一个不服!

然后他们就写出了 FreeType, 然后被 Adobe 苹果和微软一起告了

(资本家合着都是一伙儿的)

直到 2010 年字体专利被解除,才允许 FreeType 再放出来。而且直到现在还阉割掉了部分仍然苹果持有专利的字体微调功能,这也是为啥 Linux GUI 字体难看的原因之一,Windows 你别狡辩了,写的烂就是写的烂.

PostScript 究竟为什么这么烂#

但凡你对并行和并发有一定的了解,你肯定知道,最好别搞全局状态...

PostScript 就是有隐藏全局状态的语言,这个从你打开大 PDF 文件快速翻页直接死机就看出来问题了...

PostScipt 不支持图片的透明度 (问你 PDF 咋来的透明?那可是 Adobe 的专利)

PostScript 的隐含全局状态造成任意一个不兼容引起的渲染错误的状态会传递到所有后续的页上...

这也就是说有一丁点不兼容你的整个文档有可能整个没法看.

哦忘了说了,除了 windows 是 GDI 的,其他的打印机驱动全部都是 PostScript... 也就是实质上出版物的事实标准被垄断了.

2022 年了,其他人怎么渲染的#

那有的人反应过来了,欸,我们前端现在这么花里胡哨的,好像也没你说的这些问题啊

(你试过拿打印机打印前端网页吗?不是截图)

随着前端的进步 HTML5 CSS 的后端日新月异,之前有 Google 的 Angle 和 Skia, 现在又更新的 Servo 更能充分的利用 GPU 去渲染,已经换了天了,而 PDF 呢?还在 PostScript 一点点解释.

2022 年了,你从一个网页切换到另一个完全没有打开过的网页也就顶多 1-3 秒,有缓存的基本就是毫秒级别,这已经形成了事实上的碾压.

Skia_Project_Logo.svg_-1024x565.png

开放带来进步,封闭必然落后#

垄断只是一时的,当 Adobe 的专利都悉数到期之后,等待他的将是一个名为 Web 的庞然大物.

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。