3.7 Example of a List
The following is an example of a list. It demonstrates how LFO structures, LSTF structures, and LVL structures define the list formatting of a paragraph. See Determining List Formatting for information about how a paragraph is related to these structures.
Offset |
Size |
Structure |
Value |
---|---|---|---|
0000009A |
02E8 |
FibRgFcLcb97 - rgFcLcb97 |
|
0000009A |
0108 |
... (omitted for brevity) |
|
000002E2 |
0004 |
ULONG - fcPlfLst |
0x00000536 |
000002E6 |
0004 |
ULONG - lcbPlfLst |
0x0000001E |
000002EA |
0004 |
ULONG - fcPlfLfo |
0x000007E1 |
000002EE |
0004 |
ULONG - lcbPlfLfo |
0x00000018 |
000002F2 |
01D8 |
... (omitted for brevity) |
|
Figure 55: Portions of the FibRgFcLcb97 structure, highlighting the two fc/lcb pairs used for lists
As with all Word Binary files, this file has a Fib at offset zero in the WordDocument Stream. The preceding table shows a portion of the FibRgFcLcb97 that is contained in that Fib. The FibRgFcLcb97 is very large. Most fields have been omitted here for brevity.
fcPlfLst: A value of 0x00000536 specifies the offset, in bytes, of a location in the Table Stream. A PlfLst containing list formatting information begins at this offset. An array of LVL structures is directly appended to the PlfLst. The offset, in bytes, of the array of LVL structures in the Table Stream is equal to fcPlfLst + lcbPlfLst, which in this case is 0x00000554.
lcbPlfLst: A value of 0x0000001E specifies the size, in bytes, of the PlfLst at offset 0x00000536 in the Table Stream. This does not account for the size of the array of LVL structures that is appended to the PlfLst. The size of the array of LVLs cannot be determined without reading each LVL, as each LVL is of a variable size that can only be determined by reading that LVL. The number of LVL structures in the array, however, is equal to ((number of LSTFs in PlfLst such that lstf.fSimpleList is equal to 1) + (number of LSTFs in PlfLst such that lstf.fSimpleList is equal to zero) * 9), which in this case is 9.
fcPlfLfo: A value of 0x000007E1 specifies the offset, in bytes, of a location in the Table Stream. A PlfLfo containing list format override information begins at this offset.
lcbPlfLfo: A value of 0x00000018 specifies the size, in bytes, of the PlfLfo at offset 0x000007E1 in the Table Stream.
The following table shows the expansion of the PlfLst at offset 0x00000536 in the Table Stream.
Offset |
Size |
Structure |
Value |
---|---|---|---|
00000536 |
001E |
PlfLst - PlfLst |
|
00000536 |
0002 |
SHORT - cLst |
0x0001 |
00000538 |
001C |
Array of LSTF - rgLstf |
|
00000538 |
001C |
LSTF - lstf[0] |
|
Figure 56: Expansion of a PlfLst
In this particular example, there is only one list definition stored in the document, so rgLstf contains only one LSTF. It is common for rgLstf to contain multiple LSTF structures.
cLst: 0x0001 specifies that rgLstf contains one LSTF.
rgLstf: An array that contains the LSTF that is stored in the document.
rgLstf.lstf[0]: An LSTF that defines formatting of a list.
The following table shows the expansion of rgLstf.lstf[0] in the PlfLst at offset 0x00000536 in the Table Stream.
Offset |
Size |
Structure |
Value |
---|---|---|---|
00000538 |
001C |
LSTF - lstf[0] |
|
00000538 |
0004 |
LONG - lsid |
0x44F53D09 |
0000053C |
0004 |
LONG - tplc |
0x31200A2C |
00000540 |
0012 |
Array of SHORT - rgistdPara |
|
00000540 |
0002 |
SHORT - istdPara[0] |
0x0FFF |
00000542 |
000E |
... (omitted for brevity) |
|
00000550 |
0002 |
SHORT - istdPara[8] |
0x0FFF |
00000552 |
1 bit |
BYTE - fSimpleList |
0x0 |
00000552 |
1 bit |
BYTE - unused1 |
0x0 |
00000552 |
1 bit |
BYTE - fAutoNum |
0x0 |
00000552 |
1 bit |
BYTE - unused2 |
0x0 |
00000552 |
1 bit |
BYTE - fHybrid |
0x0 |
00000552 |
3 bits |
BYTE - reserved1 |
0x0 |
00000553 |
0001 |
grfhic - grfhic |
|
Figure 57: Expansion of an LSTF
lsid: A value of 0x44F53D09 specifies a unique list identifier. LFO structures used these unique identifier to refer to specific LSTF structures. The lfo[0].lsid in the PlfLfo at the offset 0x000007E1 is equal to this value, which means that lfo[0] corresponds to this particular LSTF.
tplc: 0x31200A2C specifies a value that is used internally by the list gallery user interface. For purposes of this example, ignore this value.
rgistdPara: Each element is the istd of the style which is linked to the level that corresponds to the index of the element. In this example, there are no styles linked to any level in the list, so the value of each element is 0x0FFF, which is common. This contains 9 elements, all but the first and last of which have been omitted for brevity.
rgistdPara.istdPara[0]: A value of 0x0FFF specifies that the first level of this list has no style linked to it.
rgistdPara.istdPara[8]: A value of 0x0FFF specifies that the ninth level of this list has no style linked to it.
fSimpleList: A value of 0x0 specifies that this list contains 9 levels, and that therefore there are 9 elements in the array of LVL structures at offset 0x00000554 that correspond to this LSTF.
unused1: A value of 0x0 is ignored.
fAutoNum: A value of 0x0 specifies that this list is not used by any field.
unused2: A value of 0x0 is ignored.
fHybrid: A value of 0x0 specifies that this list is not a hybrid list.
reserved1: A value of 0x0 is ignored.
grfhic: This structure contains information that is only useful for HTML compatibility. This example does not cover list HTML compatibility.
The following table shows the expansion of the array of LVL structures at offset 0x00000554 in the Table Stream.
Offset |
Size |
Structure |
Value |
---|---|---|---|
0000009A |
028D |
Array of LVL - rgLvl |
|
00000554 |
0047 |
LVL - lvl[0] |
|
0000059B |
004B |
LVL - lvl[1] |
|
000005E6 |
004B |
LVL - lvl[2] |
|
00000631 |
01B0 |
... (omitted for brevity) |
|
Figure 58: Expansion of an array of LVLs
As specified by lstf[0].fSimpleList, this contains 9 LVL structures that correspond to lstf[0]. If PlfLst had more than just one LSTF (as specified by PlfLst.cLst), this array would contain the additional LVL structures that would correspond to the extra LSTF structures (the number of which would be specified by the fSimple field of those LSTFs). The LVLs stored in this array are stored in same order as the LSTFs in PlfLst. The LVLs corresponding to each LSTF are stored in level order, starting with the most significant level. For brevity, only the first three LVL structures are included and will be expanded.
lvl[0]: This LVL specifies the level formatting of the first level in the list.
lvl[1]: This LVL specifies the level formatting of the second level in the list.
lvl[2]: This LVL specifies the level formatting of the third level in the list.
The following table shows the expansion of lvl[0] in the array of LVL structures at offset 0x00000554 in the Table Stream. This specifies the level formatting of the first level in the list corresponding to lstf[0].
Offset |
Size |
Structure |
Value |
---|---|---|---|
00000554 |
0047 |
LVL - lvl[0] |
|
00000554 |
001C |
LVLF - lvlf |
|
00000554 |
0004 |
LONG - iStartAt |
0x00000001 |
00000558 |
0001 |
MSONFC - nfc |
0x00 |
00000559 |
2 bits |
BYTE - jc |
0x0 |
00000559 |
1 bit |
BYTE - fLegal |
0x0 |
00000559 |
1 bit |
BYTE - fNoRestart |
0x0 |
00000559 |
1 bit |
BYTE - fIndentSav |
0x0 |
00000559 |
1 bit |
BYTE - fConverted |
0x0 |
00000559 |
1 bit |
BYTE - unused1 |
0x0 |
00000559 |
1 bit |
BYTE - fTentative |
0x0 |
0000055A |
0009 |
Array of BYTE - rgbxchNums |
|
0000055A |
0001 |
BYTE - xchNums[0] |
0x01 |
0000055B |
0001 |
BYTE - xchNums[1] |
0x00 |
0000055C |
0007 |
... (omitted for brevity) |
|
00000563 |
0001 |
BYTE - ixchFollow |
0x00 |
00000564 |
0004 |
LONG - dxaIndentSav |
0x00000000 |
00000568 |
0004 |
ULONG - unused2 |
0x00000000 |
0000056C |
0001 |
BYTE - cbGrpprlChpx |
0x0D |
0000056D |
0001 |
BYTE - cbGrpprlPapx |
0x18 |
0000056E |
0001 |
BYTE - ilvlRestartLim |
0x00 |
0000056F |
0001 |
grfhic - grfhic |
|
00000570 |
0018 |
Array of Prl - grpprlPapx |
|
00000588 |
000D |
Array of Prl - grpprlChpx |
|
00000595 |
0006 |
Xst - xst |
\0x0000. |
Figure 59: Expansion of lvl[0]
lvlf.iStartAt: A value of 0x00000001 specifies that the number sequence of this level starts at 1.
lvlf.nfc: A value of 0x00 specifies that any level number inherited from this level that replaces a placeholder in the number text of any level (see the xst field of LVL for information about placeholders) has Arabic formatting (for example, 1, 2, 3, 4…), unless otherwise specified by the lvlf.fLegal field of the LVL of that level.
lvlf.jc: A value of 0x0 specifies that the number text that is specified by xst is left-justified.
lvlf.fLegal: A value of 0x0 specifies that this level does not override the formatting of inherited level numbers.
lvlf.fNoRestart: A value of 0x0 specifies that number sequence of this level restarts after any more significant level. Because this LVL specifies the most significant level, this is ignored.
lvlf.fIndentSav: A value of 0x0 specifies that this level does not need to replace an indent when a paragraph is taken out of the level.
lvlf.fConverted: A value of 0x0 specifies that lvlf.nfc was not converted from an old value used for compatibility purposes.
lvlf.unused1: A value of 0x0 is ignored.
lvlf.fTentative: A value of 0x0 is ignored because this level is not in a hybrid list, as specified by lstf[0].fHybrid.
lvlf.rgbxchNums: An array that specifies the 1-based indexes of the placeholders in xst (see the xst field of LVL for information about placeholders). This array has 9 elements, but it is zero-terminated. The elements that follow the first terminating zero are omitted for brevity.
lvlf.rgbxchNums.xchNums[0]: A value of 0x01 specifies that the first character in the string which is specified by xst is a placeholder for a level number.
lvlf.rgbxchNums.xchNums[1]: A value of 0x00 specifies that this element and those that follow are ignored.
lvlf.ixchFollow: A value of 0x00 specifies that a tab immediately follows the number text which is specified by xst.
lvlf.dxaIndentSav: A value of 0x00000000 is ignored because lvlf.fIndentSav is zero.
lvlf.unused2: A value of 0x00000000 is ignored.
lvlf.cbGrpprlChpx: A value of 0x0D specifies that the size of grpprlChpx is 13 bytes.
lvlf.cbGrpprlPapx: A value of 0x18 specifies that the size of grpprlPapx is 24 bytes.
lvlf.ilvlRestartLim: A value of 0x00 is ignored because lvlf.fNoRestart is zero.
lvlf.grfhic: This structure contains information that is only useful for HTML compatibility. This example does not cover list HTML compatibility.
grpprlPapx: Contains paragraph properties that are applied to the paragraph after number text is applied to the paragraph. See Determining List Formatting.
grpprlChpx: Contains character properties that are applied to the number text. See Determining List Formatting.
xst: "\0x0000." specifies the number text of the level. '\0x0000' is a non-printable character, which is actually the integer 0x0000. This character is a placeholder for the first level in the list. It is the first character in the string, as specified by lvlf.rgbxchNums.xchNums[0]. This placeholder will be replaced by the current level number of the first level in the list for each paragraph in this level. The number text for the first paragraph in this level will be "1.".
The following table shows the expansion of lvl[1] in the array of LVL structures at offset 0x00000554 in the Table Stream. This specifies the level formatting of the second level in the list corresponding to lstf[0].
Offset |
Size |
Structure |
Value |
---|---|---|---|
0000059B |
004B |
LVL - lvl[1] |
|
0000059B |
001C |
LVLF - lvlf |
|
0000059B |
0004 |
LONG - iStartAt |
0x00000003 |
0000059F |
0001 |
MSONFC - nfc |
0x04 |
000005A0 |
2 bits |
BYTE - jc |
0x0 |
000005A0 |
1 bit |
BYTE - fLegal |
0x0 |
000005A0 |
1 bit |
BYTE - fNoRestart |
0x0 |
000005A0 |
1 bit |
BYTE - fIndentSav |
0x0 |
000005A0 |
1 bit |
BYTE - fConverted |
0x0 |
000005A0 |
1 bit |
BYTE - unused1 |
0x0 |
000005A0 |
1 bit |
BYTE - fTentative |
0x0 |
000005A1 |
0009 |
Array of BYTE - rgbxchNums |
|
000005A1 |
0001 |
BYTE - xchNums[0] |
0x01 |
000005A2 |
0001 |
BYTE - xchNums[1] |
0x03 |
000005A3 |
0001 |
BYTE - xchNums[2] |
0x00 |
000005A4 |
0006 |
... (omitted for brevity) |
|
000005AA |
0001 |
BYTE - ixchFollow |
0x00 |
000005AB |
0004 |
LONG - dxaIndentSav |
0x00000000 |
000005AF |
0004 |
ULONG - unused2 |
0x00000000 |
000005B3 |
0001 |
BYTE - cbGrpprlChpx |
0x0D |
000005B4 |
0001 |
BYTE - cbGrpprlPapx |
0x18 |
000005B5 |
0001 |
BYTE - ilvlRestartLim |
0x01 |
000005B6 |
0001 |
grfhic - grfhic |
|
000005B7 |
0018 |
Array of Prl - grpprlPapx |
|
000005CF |
000D |
Array of Prl - grpprlChpx |
|
000005DC |
000A |
Xst - xst |
\0x0000-\0x0001) |
Figure 60: Expansion of lvl[1]
lvlf.iStartAt: A value of 0x00000003 specifies that the number sequence of this level starts at 3.
lvlf.nfc: A value of 0x04 specifies that any level number inherited from this level that replaces a placeholder in the number text of any level (see the xst field of LVL for information about placeholders) has lowercase letter formatting (for example, a, b, c, d…), unless otherwise specified by the lvlf.fLegal field of the LVL belonging to that level.
lvlf.jc: A value of 0x0 specifies that the number text specified by xst is left-justified.
lvlf.fLegal: A value of 0x0 specifies that this level does not override the formatting of inherited level numbers.
lvlf.fNoRestart: A value of 0x0 specifies that the number sequence of this level restarts after any more significant level. As this LVL represents the second level, this means that the number sequence of this level restarts after any paragraph that is in the first level of this same list is encountered.
lvlf.fIndentSav: A value of 0x0 specifies that this level does not need to replace an indent when a paragraph is taken out of the level.
lvlf.fConverted: A value of 0x0 specifies that lvlf.nfc was not converted from an old value used for compatibility purposes.
lvlf.unused1: A value of 0x0 is ignored.
lvlf.fTentative: A value of 0x0 is ignored because this level is not in a hybrid list, as specified by lstf[0].fHybrid.
lvlf.rgbxchNums: An array that specifies the 1-based indexes of the placeholders in xst (see the xst field of LVL). This array has 9 elements, but it is zero-terminated. The elements that follow the first terminating zero are omitted for brevity.
lvlf.rgbxchNums.xchNums[0]: A value of 0x01 specifies that the first character in the string specified by xst is a placeholder for a level number.
lvlf.rgbxchNums.xchNums[1]: A value of 0x03 specifies that the third character in the string specified by xst is a placeholder for a level number.
lvlf.rgbxchNums.xchNums[2]: A value of 0x00 specifies that this element and those that follow are ignored.
lvlf.ixchFollow: A value of 0x00 specifies that a tab immediately follows the number text that is specified by xst.
lvlf.dxaIndentSav: A value of 0x00000000 is ignored because lvlf.fIndentSav is zero.
lvlf.unused2: A value of 0x00000000 is ignored.
lvlf.cbGrpprlChpx: A value of 0x0D specifies that the size of grpprlPapx is 13 bytes.
lvlf.cbGrpprlPapx: A value of 0x18 specifies that the size of grpprlPapx is 24 bytes.
lvlf.ilvlRestartLim: A value of 0x01 is ignored because lvlf.fNoRestart is zero.
lvlf.grfhic: This structure contains information that is only useful for HTML compatibility. This example does not cover list HTML compatibility.
grpprlPapx: Contains paragraph properties that are applied to the paragraph after the paragraph receives number text. See Determining List Formatting.
grpprlChpx: Contains character properties that are applied to the number text. See Determining List Formatting.
xst: A value of "\0x0000-\0x0001)" specifies the number text of the level. '\0x0000' and '\0x0001' are non-printable characters, which are actually the integers 0x0000 and 0x0001, respectively. These characters are the placeholders for the first and second levels in the list. These are placeholders because their indexes are specified in the elements of lvlf.rgbxchNums. These placeholders will be replaced by the current level numbers of the first and second levels in the list for each paragraph in this level. The number text for the first paragraph in this level that is the child of the first paragraph in the first level will be "1-a)".
The following table shows the expansion of lvl[2] in the array of LVL structures at offset 0x00000554 in the Table Stream. This specifies the level formatting of the first level in the list corresponding to lstf[0].
Offset |
Size |
Structure |
Value |
---|---|---|---|
000005E6 |
004B |
LVL - lvl[2] |
|
000005E6 |
001C |
LVLF - lvlf |
|
000005E6 |
0004 |
LONG - iStartAt |
0x00000001 |
000005EA |
0001 |
MSONFC - nfc |
0xFF |
000005EB |
2 bits |
BYTE - jc |
0x1 |
000005EB |
1 bit |
BYTE - fLegal |
0x0 |
000005EB |
1 bit |
BYTE - fNoRestart |
0x1 |
000005EB |
1 bit |
BYTE - fIndentSav |
0x0 |
000005EB |
1 bit |
BYTE - fConverted |
0x0 |
000005EB |
1 bit |
BYTE - unused1 |
0x0 |
000005EB |
1 bit |
BYTE - fTentative |
0x0 |
000005EC |
0009 |
Array of BYTE - rgbxchNums |
|
000005EC |
0001 |
BYTE - xchNums[0] |
0x00 |
000005ED |
0008 |
... (omitted for brevity) |
|
000005F5 |
0001 |
BYTE - ixchFollow |
0x01 |
000005F6 |
0004 |
LONG - dxaIndentSav |
0x00000000 |
000005FA |
0004 |
ULONG - unused2 |
0x00000000 |
000005FE |
0001 |
BYTE - cbGrpprlChpx |
0x0D |
000005FF |
0001 |
BYTE - cbGrpprlPapx |
0x10 |
00000600 |
0001 |
BYTE - ilvlRestartLim |
0x00 |
00000601 |
0001 |
grfhic - grfhic |
|
00000602 |
0010 |
Array of Prl - grpprlPapx |
|
00000612 |
000D |
Array of Prl - grpprlChpx |
|
0000061F |
0012 |
Xst - xst |
Example: |
Figure 61: Expansion of lvl[2]
This level does not have a number sequence because the number text for this level does not have a placeholder for this level.
lvlf.iStartAt: A value of 0x00000001 is ignored, because this level does not have a number sequence.
lvlf.nfc: A value of 0xFF specifies that this level does not have a number style.
lvlf.jc: A value of 0x1 specifies that the number text specified by xst is center-justified.
lvlf.fLegal: A value of 0x0 specifies that this level does not override the formatting of inherited level numbers.
lvlf.fNoRestart: A value of 0x1 is ignored, because this level does not have a number sequence.
lvlf.fIndentSav: A value of 0x0 specifies that this level does not need to replace an indent when a paragraph is taken out of the level.
lvlf.fConverted: A value of 0x0 specifies that lvlf.nfc was not converted from an old value used for compatibility purposes.
lvlf.unused1: A value of 0x0 is ignored.
lvlf.fTentative: A value of 0x0 is ignored because this level is not in a hybrid list, as specified by lstf[0].fHybrid.
lvlf.rgbxchNums: An array that specifies the 1-based indexes of the placeholders in xst (see the xst field of LVL). This array has 9 elements, but is zero-terminated. The elements that follow the first terminating zero are omitted for brevity.
lvlf.rgbxchNums.xchNums[0]: A value of 0x00 specifies that this element and those that follow are ignored. Because this is the first element in the array, this means that there are no placeholders in xst, and therefore it is a static string.
lvlf.ixchFollow: A value of 0x01 specifies that a space immediately follows the number text that is specified by xst.
lvlf.dxaIndentSav: A value of 0x00000000 is ignored because lvlf.fIndentSav is zero.
lvlf.unused2: A value of 0x00000000 is ignored.
lvlf.cbGrpprlChpx: A value of 0x0D specifies that the size of grpprlPapx is 13 bytes.
lvlf.cbGrpprlPapx: 0x10 specifies that the size of grpprlChpx is 16 bytes.
lvlf.ilvlRestartLim: A value of 0x00 is ignored because this level does not have a number sequence.
lvlf.grfhic: This structure contains information that is only useful for HTML compatibility. This example does not cover list HTML compatibility.
grpprlPapx: Contains paragraph properties that are applied to the paragraph after it receives number text. See Determining List Formatting.
grpprlChpx: Contains character properties that are applied to the number text. See Determining List Formatting.
xst: "Example:" specifies the number text of the level. As specified by lvlf.rgbxchNums, this does not have any placeholders in it. Therefore, this text is static and every paragraph in this level starts with "Example: ".
The following table shows the expansion of the PlfLfo at offset 0x000007E1 in the Table Stream.
Offset |
Size |
Structure |
Value |
---|---|---|---|
000007E1 |
0018 |
PlfLfo - PlfLfo |
|
000007E1 |
0004 |
ULONG - lfoMac |
0x00000001 |
000007E5 |
0010 |
Array of LFO - rgLfo |
|
000007E5 |
0010 |
LFO - lfo[0] |
|
000007F5 |
0004 |
Array of LFOData - rgLfoData |
|
000007F5 |
0004 |
LFOData - lfoData[0] |
|
000007F5 |
0004 |
LONG - cp |
0xFFFFFFFF |
000007F9 |
0000 |
Array of LFOLVL - rgLfoLvl |
|
Figure 62: Expansion of PlfLfo
This contains the list format override information in the document.
lfoMac: A value of 0x00000001 specifies that rgLfo and rgLfoData each have one element.
rgLfo: An array of LFO structures.
rgLfo.lfo[0]: An LFO structure that specifies a list format override.
rgLfoData: An array of additional list format override data.
rgLfoData.lfoData[0]: An LFOData structure that specifies addition list format override.
rgLfoData.lfoData[0].cp: A value of 0xFFFFFFFF is ignored.
rgLfoData.lfoData[0].rgLfoLvl: An empty array, because rgLfo.lfo[0].clfolvl is zero.
The following table shows the expansion of rgLfo.lfo[0] in the PlfLfo at offset 0x000007E1 in the Table Stream.
Offset |
Size |
Structure |
Value |
---|---|---|---|
000007E5 |
0010 |
LFO - lfo[0] |
|
000007E5 |
0004 |
LONG - lsid |
0x44F53D09 |
000007E9 |
0004 |
LONG - unused1 |
0x00000000 |
000007ED |
0004 |
LONG - unused2 |
0x00000000 |
000007F1 |
0001 |
BYTE - clfolvl |
0x00 |
000007F2 |
0001 |
BYTE - ibstFltAutoNum |
0x00 |
000007F3 |
0001 |
grfhic - grfhic |
|
000007F4 |
0001 |
BYTE - unused3 |
0x00 |
Figure 63: Expansion of lfo[0]
This LFO is used as a level of indirection between the paragraphs in a list and the LSTF that defines the list that they are in. An LFO, along with its corresponding LFOData, can specify information that overrides the formatting information specified by an LSTF and its corresponding LVL structures. In this example, as in most cases, there is no such overriding information specified.
lsid: A value of 0x44F53D09 specifies the value of the lsid field of the LSTF that this LFO corresponds to. In this example, this value is equal to lstf[0].lsid in the PlfLst at offset 0x00000536 in the Table Stream. Therefore, the list formatting of any paragraph that uses this LFO is specified by lstf[0] in the PlfLst at offset 0x00000536 in the Table Stream.
unused1: A value of 0x00000000 is ignored.
unused2: A value of 0x00000000 is ignored.
clfolvl: A value of 0x00 specifies that there are no LFOLVL structures in rgLfoData.lfoData[0].rgLfoLvl in the PlfLfo at offset 0x000007E1 in the Table Stream.
ibstFltAutoNum: A value of 0x00 specifies that this LFO is not used by any field.
grfhic: This structure contains information that is only useful for HTML compatibility. This example does not cover list HTML compatibility.
unused3: 0x00 is ignored.