BIFF8 中的字体记录索引是否从零开始?

Is a font record index in BIFF8 zero-based?

我正在使用来自 https://www.codeproject.com/articles/13852/basicexcel-a-class-to-read-and-write-to-microsoft, which in turn is based on the documentation of the Excel file format from http://sc.openoffice.org/excelfileformat.pdf.

的源代码以编程方式读写 Excel 工作表

源代码支持的Excel文件格式为二进制交换文件格式第8版(BIFF8)。

Excel 文件中的一条记录是扩展格式 (XF) 记录。 XF 记录的前两个字节是 FONT 记录的索引。这就是所有文档必须说明的内容。

我的问题:这是从零开始的索引还是从 1 开始的索引?

下面是一个让我很困惑并让我思考这个问题的用例。

用例:粗体单元格

我创建了一个简单的 Excel 工作表:一个包含粗体文本的单元格。

我以编程方式读取 Excel 工作表并将所有数据转储为人类可读的格式,使用我添加到源代码中的新 dump() 方法。我发现:

400 的字体粗细不是我所期望的。如果我的单元格内容是粗体,那么根据文档,字体粗细应该是 700。

但是,如果 XF 记录引用索引从 1 开始的 FONT 记录,则从 1 开始的索引 20 处的 FONT 记录是:<Font height=220 options=1 colorIdx=8 weight=700 escType=0 uline=0 family=2 charSet=0 name="Calibri" />

并且该 FONT 记录确实具有 700 的权重来表示粗体。

这令人困惑。我不知道XF记录中FONT记录的索引应该是从零开始还是从1开始。

我想我在 http://sc.openoffice.org/excelfileformat.pdf 文档的其他地方找到了我自己的问题的答案。

The font with index 4 is omitted in all BIFF versions. This means the first four fonts have zero-based indexes, and the fifth font and all following fonts are referenced with one-based indexes.

如果这是真的,那么我观察到的数据就更有意义了。