引擎更新:文字落在 Publisher 放置的位置

又一周的引擎工作上线了。方法和以往一样:把我们的输出和 Publisher 自己对真实文档的输出逐一比对,然后修掉差异。以下是这次的变化。

首行现在落在 Publisher 放置的位置。 我们对很多常见字体的字体度量读错了,包括 Gill Sans MT 和粗体 Times New Roman。首行的起始位置可能偏高约一磅,下面的每一行都继承了这个误差,偏移随着页面向下累积。框架顶部段落上方的间距也不对。在我们测量的文件里,这个偏差通常是 4.67 磅。现在是 0.53 磅。

表格单元格里的文字位置现在和 Publisher 一样了。 单元格边框和内部文字之间的内边距以前是我们猜的,不是 Publisher 的实际值。落在 Publisher 半磅以内的单元格比例从不到 2/100 升到了 89/100。单元格里的项目符号以前会消失;在 142 个文件里,780 个带项目符号的单元格中现在有 765 个显示出来了。

换行现在断在同样的位置。 Publisher 在右边距留出 18 磅的窗口,才会给单词断字。我们的引擎现在使用同样的窗口,所以段落的换行方式和 Publisher 里一样。

小册子和对折卡片现在按正确顺序输出。 文件里存的印刷设置,骑马订小册子、对折卡片或普通页面,现在直接从文档里读取。页面按 Publisher 给出的顺序排列。

叠在白色区域上方的形状现在层级正确。 画在白色文本框上方的形状以前会消失,或者盖住不该盖住的东西。3D WordArt 也改进了:立体侧面现在有了真实的颜色,包括金色、金属色和红色的侧壁,字母的悬挂和转向和 Publisher 一样,纹理填充也保住了它们的不透明度。

小修复,真实文件。 没有高度的极细线条现在会画出来了。一个幽灵般的 Helvetica 替换消失了。Optima 映射到 Calibri,和 Publisher 做的替换一样。带损坏元数据的 PNG 不再让 PDF 无法完成。在底层,九万行的解析器核心被拆分成了各司其职的模块,每个选项都有统一的设置入口,修复落地更快,出问题更少。相比一周前,又多了几百个文件进入了我们的最高保真度区间。

每一项修复都用同样的方式测试过:对着数千个真实文件,和 Publisher 自己的输出逐像素打分,赢了才发布。如果你的文件曾以其中某种方式出错,再转一次