LibreOffice 26.8 增加了对 Microsoft Office 在 OOXML 文件中使用的多种图表类型的基本导入导出支持:箱线图、漏斗图、帕累托图、径向图、树状图和瀑布图。LibreOffice 无法显示或编辑这些图表,但能识别它们,告知用户该图表类型尚未支持,原样保留其底层定义,并在保存文件时重新写入。
乍看之下,这像是承认自身功能不完整,实际上它是实现一种专有格式、以互操作性为目标时会遇到的情况的一个例子——出发点是为用户带来好处,而不是把用户当作工具的商业策略。
发生了什么
Microsoft 从 2016 起将这些图表类型加入 Office,并把它们存放在通常称为“chartex”的命名空间中。该命名空间不属于被批准为国际标准的 ISO/IEC 29500 文本,而是单独记录在 Microsoft 的扩展文档中。
这完全合法,也是再正常不过的商业行为:厂商改进产品,文件格式随之演进。但后果是,日常使用的格式已不再是当初被标准化的那一个。ISO 编号仍被写进招标文件和政策文件,而实际交换的文件已经不同。
对于厂商之外的任何实现者来说,这造成一种永久性的滞后。这不是靠足够努力就能弥合的一次性差距,而是结构性的滞后:规范掌握在厂商手里,厂商不公布自己的发布计划,优先级按商业标准确定。
三种可能的应对方式
办公套件遇到自己无法识别的图表时,有三种选择:
- 拒绝文件。这很诚实,但毫无意义:用户拿到一份打不开的文档,只会认定软件不能用。
- 丢弃看不懂的内容。文件能打开,图表消失了,用户往往直到把文档转发给同事、发现图表不见了时才会察觉。这是危害最大的结果,因为丢失是静默发生的,责任却落在最后一个打开文件的人身上。
- 保留无法显示的内容。用户被告知不支持这种图表类型,看到的是占位提示而不是空白,文档从一个应用转移到另一个应用时底层定义保持完整,回到源应用时又能完整恢复。
LibreOffice 26.8 采用第三种做法,这是三者中唯一尊重“文档属于用户,而不属于软件——也不属于开发软件的公司”这一事实的做法。
遗憾的是存在一个限制,而且是一个例外。带区域地图的图表包含大量地理信息,LibreOffice 无法保留。图表类型本身能在导入导出过程中留存下来,但其中能保持完整的内容极少。
为什么这不止关乎图表
chartex 这个案例影响范围有限,但它所体现的模式并非如此。
所有文档采用由单一厂商控制的格式的组织,都接受了一种自己无法管理的依赖:规范可能随时变化,新增的功能只有单一实现能够理解。
不需要发生任何异常事件,这些组织的档案就会逐渐变得难以被其他所有软件读取。
开放文档格式(ODF)并非不会变化,但它的变化方式不同。修订由 OASIS 的技术委员会提出、讨论和批准,其工作是公开的,并以版本规范的形式发布,任何人都可以自由实现。
想要支持 ODF 1.4 的实现者,可以阅读 ODF 1.4 规范并付诸实践。这是唯一的区别,而它已经足够。
在当前条件下,是否对不支持的功能做双向保留,是区分一款负责任实现的标准,但这并不构成对当前条件的改善。文档基金会博客的这篇文章称,LibreOffice 是唯一采用这种做法的办公套件,目的是保护用户及其文档中的内容。

