> adobe | postscript | pdf <
// Ascii85 - Adobe 用于 PostScript/PDF 的 Base85 编码
[ADOBE]
Adobe 标准
被全球 PostScript 和 PDF 文档采用的官方编码方案。
[EFFICIENT]
25% 开销
相比 Base64 更高效,体积仅增加约 25%。
[COMPACT]
零压缩优化
特殊的 'z' 字符可以高效表示连续四个零字节。
>> 技术说明
Ascii85 的工作原理:
Ascii85 将 4 个字节编码为 5 个可打印的 ASCII 字符(33–117)。它对全为零的字节组('z')使用特殊编码,并在 Adobe 的实现中使用 <~ ~> 作为包裹定界符。
示例:
"Hello" → <~87cURD]i,"~>
为什么选择 Ascii85:
- >Adobe PostScript/PDF 标准
- >25% 开销,对比 Base64 约 33%
- >针对零数据的高效压缩
- >输出为可打印 ASCII 字符
- >得到众多工具和库的支持
>> 常见问题
什么是 Ascii85 编码?
Ascii85(也叫 Base85)是 Adobe 提出的二进制到文本编码方案,用于 PostScript 和 PDF 文件。它使用 85 个可打印 ASCII 字符来表示二进制数据。
<~ ~> 分隔符是什么?
<~ 和 ~> 是 Adobe 实现中的 Ascii85 包裹定界符,用来标记编码数据的开始和结束,方便解析器在 PostScript/PDF 文件中找到被编码的片段。
Ascii85 与 Z85 有什么区别?
虽然它们都属于 Base85 变体,Ascii85 使用不同的字符集并允许空白字符,更适合 PostScript/PDF;而 Z85 针对源代码和协议做了优化。
字母 'z' 有什么含义?
'z' 是 Ascii85 中的一个特殊压缩符号,表示连续四个零字节,这让包含大量零的二进制数据编码更高效。
其他语言
参考资料
我们如何确保结果正确
我们使用以下自动化测试验证此工具。下方保留测试用例的原始名称,便于查看实际断言和复现。
- 验证方法
- 把页面的编码交给 Python 解码,并把 Python 编码交给页面解码,覆盖 UTF-8、高位字节和不足四字节的尾组。
- 对比依据
- Python 标准库 base64.a85encode / a85decode。
- 验证范围
- 只覆盖这些样本和边界;不代表所有输入均已证明正确。
测试源码与用例(点击文件名查看)
-
encoding-reliability.test.js
- ASCII85 and Base85: real encoders and decoders agree with Python base64.a85 including UTF-8 and partial tuples
这些测试覆盖列出的样本和边界,不代表所有输入都已证明正确。往返测试和使用同一依赖库的检查,不属于独立交叉验证。