(MS-DOC) : Word (.Doc) Binary File Format: Open Specifications Promise Microsoft Community Promise
(MS-DOC) : Word (.Doc) Binary File Format: Open Specifications Promise Microsoft Community Promise
Tools. The Open Specifications documentation does not require the use of Microsoft programming
tools or programming environments in order for you to develop an implementation. If you have access
to Microsoft programming tools and environments, you are free to take advantage of them. Certain
Open Specifications documents are intended for use in conjunction with publicly available standards
specifications and network programming art and, as such, assume that the reader either is familiar
with the aforementioned material or has immediate access to it.
                                                                                                 1 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Revision Summary
             Revision           Revision
Date         History            Class       Comments
6/29/2010 2.04 Editorial Changed language and formatting in the technical content.
9/27/2010 2.05 Editorial Changed language and formatting in the technical content.
                                                                                                   2 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
             Revision           Revision
Date         History            Class      Comments
technical content.
                                                                                                  3 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Table of Contents
 1     Introduction........................................................................................................14
     1.1     Glossary........................................................................................................14
     1.2     References.....................................................................................................23
       1.2.1     Normative References................................................................................23
       1.2.2     Informative References...............................................................................24
     1.3     Overview.......................................................................................................24
       1.3.1     Characters................................................................................................24
       1.3.2     PLCs........................................................................................................25
       1.3.3     Formatting................................................................................................25
       1.3.4     Tables......................................................................................................25
       1.3.5     Pictures....................................................................................................25
       1.3.6     The FIB....................................................................................................26
       1.3.7     Byte Ordering............................................................................................26
       1.3.8     General Organization of This Documentation..................................................26
     1.4     Relationship to Protocols and Other Structures....................................................27
     1.5     Applicability Statement....................................................................................27
     1.6     Versioning and Localization...............................................................................27
     1.7     Vendor-Extensible Fields..................................................................................27
 2     Structures............................................................................................................28
     2.1     File Structure..................................................................................................28
       2.1.1      WordDocument Stream...............................................................................28
       2.1.2      1Table Stream or 0Table Stream..................................................................28
       2.1.3      Data Stream.............................................................................................28
       2.1.4      ObjectPool Storage....................................................................................28
         2.1.4.1      ObjInfo Stream....................................................................................28
         2.1.4.2      Print Stream........................................................................................29
         2.1.4.3      EPrint Stream......................................................................................29
       2.1.5      Custom XML Data Storage...........................................................................29
       2.1.6      Summary Information Stream.....................................................................29
       2.1.7      Document Summary Information Stream......................................................29
       2.1.8      Encryption Stream.....................................................................................29
       2.1.9      Macros Storage.........................................................................................29
       2.1.10     XML Signatures Storage..............................................................................30
       2.1.11     Signatures Stream.....................................................................................30
       2.1.12     Information Rights Management Data Space Storage......................................30
       2.1.13     Protected Content Stream...........................................................................30
     2.2     Fundamental Concepts.....................................................................................30
       2.2.1      Character Position (CP)...............................................................................30
       2.2.2      PLC..........................................................................................................30
       2.2.3      Valid Selection...........................................................................................31
       2.2.4      STTB........................................................................................................32
       2.2.5      Property Storage.......................................................................................33
         2.2.5.1      Sprm..................................................................................................33
         2.2.5.2      Prl......................................................................................................34
       2.2.6      Encryption and Obfuscation (Password to Open).............................................34
         2.2.6.1      XOR Obfuscation..................................................................................35
         2.2.6.2      Office Binary Document RC4 Encryption...................................................35
         2.2.6.3      Office Binary Document RC4 CryptoAPI Encryption....................................35
     2.3     Document Parts..............................................................................................36
       2.3.1      Main Document.........................................................................................36
       2.3.2      Footnotes.................................................................................................36
       2.3.3      Headers...................................................................................................36
       2.3.4      Comments................................................................................................37
       2.3.5      Endnotes..................................................................................................38
                                                                                                                                4 / 556
 [MS-DOC] - v20180828
 Word (.doc) Binary File Format
 Copyright © 2018 Microsoft Corporation
 Release: August 28, 2018
    2.3.6     Textboxes.................................................................................................38
    2.3.7     Header Textboxes......................................................................................38
  2.4     Document Content..........................................................................................38
    2.4.1     Retrieving Text..........................................................................................39
    2.4.2     Determining Paragraph Boundaries...............................................................39
    2.4.3     Overview of Tables.....................................................................................40
    2.4.4     Determining Cell Boundaries........................................................................43
    2.4.5     Determining Row Boundaries.......................................................................44
    2.4.6     Applying Properties....................................................................................45
      2.4.6.1      Direct Paragraph Formatting..................................................................45
      2.4.6.2      Direct Character Formatting...................................................................45
      2.4.6.3      Determining List Formatting of a Paragraph.............................................46
      2.4.6.4      Determining Level Number of a Paragraph...............................................47
      2.4.6.5      Determining Properties of a Style...........................................................48
      2.4.6.6      Determining Formatting Properties..........................................................49
    2.4.7     Application Data For VtHyperlink..................................................................51
  2.5     The File Information Block................................................................................52
    2.5.1     Fib...........................................................................................................52
    2.5.2     FibBase....................................................................................................54
    2.5.3     FibRgW97.................................................................................................56
    2.5.4     FibRgLw97................................................................................................57
    2.5.5     FibRgFcLcb...............................................................................................59
    2.5.6     FibRgFcLcb97............................................................................................59
    2.5.7     FibRgFcLcb2000.........................................................................................79
    2.5.8     FibRgFcLcb2002.........................................................................................82
    2.5.9     FibRgFcLcb2003.........................................................................................89
    2.5.10    FibRgFcLcb2007.........................................................................................96
    2.5.11    FibRgCswNew............................................................................................99
    2.5.12    FibRgCswNewData2000............................................................................100
    2.5.13    FibRgCswNewData2007............................................................................100
    2.5.14    Determining the nFib................................................................................100
    2.5.15    How to read the FIB.................................................................................101
  2.6     Single Property Modifiers................................................................................101
    2.6.1     Character Properties.................................................................................102
    2.6.2     Paragraph Properties................................................................................116
    2.6.3     Table Properties.......................................................................................128
    2.6.4     Section Properties....................................................................................137
    2.6.5     Picture Properties.....................................................................................145
  2.7     Document Properties......................................................................................145
    2.7.1     Dop.......................................................................................................145
    2.7.2     DopBase.................................................................................................146
    2.7.3     Dop95....................................................................................................152
    2.7.4     Dop97....................................................................................................153
    2.7.5     Dop2000.................................................................................................157
    2.7.6     Dop2002.................................................................................................160
    2.7.7     Dop2003.................................................................................................163
    2.7.8     Dop2007.................................................................................................165
    2.7.9     Dop2010.................................................................................................167
    2.7.10    Dop2013.................................................................................................168
    2.7.11    Copts60..................................................................................................168
    2.7.12    Copts80..................................................................................................169
    2.7.13    Copts.....................................................................................................170
    2.7.14    Asumyi...................................................................................................173
    2.7.15    Dogrid....................................................................................................174
    2.7.16    DopTypography.......................................................................................175
    2.7.17    DopMth..................................................................................................177
  2.8     PLCs............................................................................................................180
    2.8.1     Plcbkf.....................................................................................................180
                                                                                                                             5 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    2.8.2     Plcbkfd...................................................................................................180
    2.8.3     Plcbkl.....................................................................................................181
    2.8.4     Plcbkld...................................................................................................181
    2.8.5     PlcBteChpx..............................................................................................182
    2.8.6     PlcBtePapx..............................................................................................182
    2.8.7     PlcfandRef...............................................................................................183
    2.8.8     PlcfandTxt...............................................................................................183
    2.8.9     PlcfAsumy...............................................................................................184
    2.8.10    Plcfbkf....................................................................................................184
    2.8.11    Plcfbkfd..................................................................................................185
    2.8.12    Plcfbkl....................................................................................................186
    2.8.13    Plcfbkld..................................................................................................186
    2.8.14    Plcfcookie...............................................................................................187
    2.8.15    PlcfcookieOld...........................................................................................187
    2.8.16    PlcfendRef...............................................................................................188
    2.8.17    PlcfendTxt...............................................................................................188
    2.8.18    Plcffactoid...............................................................................................189
    2.8.19    PlcffndRef...............................................................................................189
    2.8.20    PlcffndTxt...............................................................................................190
    2.8.21    Plcfgram.................................................................................................190
    2.8.22    Plcfhdd...................................................................................................191
    2.8.23    PlcfHdrtxbxTxt.........................................................................................191
    2.8.24    Plcflad....................................................................................................191
    2.8.25    Plcfld......................................................................................................192
    2.8.26    PlcfSed...................................................................................................193
    2.8.27    PlcfSpa...................................................................................................194
    2.8.28    Plcfspl....................................................................................................194
    2.8.29    PlcfTch...................................................................................................195
    2.8.30    PlcfTxbxBkd............................................................................................196
    2.8.31    PlcfTxbxHdrBkd.......................................................................................196
    2.8.32    PlcftxbxTxt..............................................................................................197
    2.8.33    Plcfuim...................................................................................................197
    2.8.34    PlcfWKB..................................................................................................198
    2.8.35    PlcPcd....................................................................................................198
  2.9     Basic Types..................................................................................................199
    2.9.1     Acd........................................................................................................199
    2.9.2     Afd........................................................................................................201
    2.9.3     ASUMY...................................................................................................201
    2.9.4     ATNBE....................................................................................................201
    2.9.5     AtrdExtra................................................................................................202
    2.9.6     ATRDPost10............................................................................................202
    2.9.7     ATRDPre10..............................................................................................203
    2.9.8     BKC.......................................................................................................203
    2.9.9     BKF........................................................................................................204
    2.9.10    BKFD......................................................................................................205
    2.9.11    BKL........................................................................................................205
    2.9.12    BKLD......................................................................................................205
    2.9.13    BlockSel.................................................................................................206
    2.9.14    Bool16....................................................................................................206
    2.9.15    Bool8.....................................................................................................206
    2.9.16    Brc........................................................................................................206
    2.9.17    Brc80.....................................................................................................207
    2.9.18    Brc80MayBeNil........................................................................................208
    2.9.19    BrcCvOperand.........................................................................................208
    2.9.20    BrcMayBeNil............................................................................................208
    2.9.21    BrcOperand.............................................................................................209
    2.9.22    BrcType..................................................................................................209
    2.9.23    BxPap....................................................................................................215
                                                                                                                            6 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    2.9.24    CAPI......................................................................................................216
    2.9.25    CDB.......................................................................................................217
    2.9.26    CellHideMarkOperand...............................................................................217
    2.9.27    CellRangeFitText......................................................................................217
    2.9.28    CellRangeNoWrap....................................................................................218
    2.9.29    CellRangeTextFlow...................................................................................218
    2.9.30    CellRangeVertAlign...................................................................................218
    2.9.31    CFitTextOperand......................................................................................219
    2.9.32    Chpx......................................................................................................219
    2.9.33    ChpxFkp.................................................................................................219
    2.9.34    Cid.........................................................................................................220
    2.9.35    CidAllocated............................................................................................221
    2.9.36    CidFci.....................................................................................................221
    2.9.37    CidMacro................................................................................................224
    2.9.38    Clx.........................................................................................................224
    2.9.39    CMajorityOperand....................................................................................224
    2.9.40    Cmt.......................................................................................................225
    2.9.41    CNFOperand............................................................................................225
    2.9.42    CNS.......................................................................................................226
    2.9.43    COLORREF..............................................................................................226
    2.9.44    COSL......................................................................................................227
    2.9.45    CSSA.....................................................................................................227
    2.9.46    CSSAOperand..........................................................................................228
    2.9.47    CSymbolOperand.....................................................................................228
    2.9.48    CTB.......................................................................................................229
    2.9.49    CTBWRAPPER..........................................................................................230
    2.9.50    Customization.........................................................................................231
    2.9.51    DCS.......................................................................................................232
    2.9.52    DefTableShd80Operand............................................................................232
    2.9.53    DefTableShdOperand................................................................................232
    2.9.54    DispFldRmOperand...................................................................................233
    2.9.55    Dofr.......................................................................................................233
    2.9.56    DofrFsn..................................................................................................234
    2.9.57    DofrFsnFnm............................................................................................235
    2.9.58    DofrFsnName..........................................................................................235
    2.9.59    DofrFsnp.................................................................................................235
    2.9.60    DofrFsnSpbd...........................................................................................236
    2.9.61    Dofrh.....................................................................................................236
    2.9.62    DofrRglstsf..............................................................................................237
    2.9.63    Dofrt......................................................................................................237
    2.9.64    DPCID....................................................................................................238
    2.9.65    DTTM.....................................................................................................239
    2.9.66    FACTOIDINFO..........................................................................................239
    2.9.67    FactoidSpls.............................................................................................240
    2.9.68    FarEastLayoutOperand..............................................................................240
    2.9.69    Fatl........................................................................................................240
    2.9.70    FBKF......................................................................................................241
    2.9.71    FBKFD....................................................................................................242
    2.9.72    FBKLD....................................................................................................242
    2.9.73    FcCompressed.........................................................................................243
    2.9.74    FCCT......................................................................................................243
    2.9.75    Fci.........................................................................................................244
    2.9.76    FCKS......................................................................................................313
    2.9.77    FCKSOLD................................................................................................314
    2.9.78    FFData...................................................................................................315
    2.9.79    FFDataBits..............................................................................................316
    2.9.80    FFID.......................................................................................................318
    2.9.81    FFM........................................................................................................318
                                                                                                                            7 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    2.9.82    FFN........................................................................................................319
    2.9.83    FieldMapBase..........................................................................................320
    2.9.84    FieldMapDataItem....................................................................................320
    2.9.85    FieldMapInfo...........................................................................................321
    2.9.86    FieldMapTerminator..................................................................................322
    2.9.87    FilterDataItem.........................................................................................322
    2.9.88    Fld.........................................................................................................323
    2.9.89    fldch......................................................................................................324
    2.9.90    flt..........................................................................................................324
    2.9.91    FNFB......................................................................................................327
    2.9.92    FNIF.......................................................................................................327
    2.9.93    FNPI.......................................................................................................328
    2.9.94    FOBJH....................................................................................................328
    2.9.95    FrameTextFlowOperand............................................................................329
    2.9.96    FSDAP....................................................................................................329
    2.9.97    Fsnk.......................................................................................................330
    2.9.98    Fssd.......................................................................................................330
    2.9.99    FssUnits..................................................................................................330
    2.9.100   FTO........................................................................................................330
    2.9.101   Fts.........................................................................................................331
    2.9.102   FtsWWidth_Indent....................................................................................331
    2.9.103   FtsWWidth_Table.....................................................................................332
    2.9.104   FtsWWidth_TablePart................................................................................332
    2.9.105   FTXBXNonReusable..................................................................................333
    2.9.106   FTXBXS..................................................................................................333
    2.9.107   FTXBXSReusable......................................................................................334
    2.9.108   GOSL.....................................................................................................335
    2.9.109   GrammarSpls..........................................................................................335
    2.9.110   grffldEnd.................................................................................................335
    2.9.111   grfhic.....................................................................................................336
    2.9.112   GRFSTD..................................................................................................337
    2.9.113   GrLPUpxSw.............................................................................................338
    2.9.114   GrpPrlAndIstd..........................................................................................338
    2.9.115   HFD.......................................................................................................339
    2.9.116   HFDBits..................................................................................................339
    2.9.117   Hplxsdr...................................................................................................340
    2.9.118   HresiOperand..........................................................................................340
    2.9.119   Ico.........................................................................................................341
    2.9.120   IDPCI.....................................................................................................341
    2.9.121   Ipat.......................................................................................................342
    2.9.122   IScrollType..............................................................................................346
    2.9.123   ItcFirstLim..............................................................................................346
    2.9.124   Kcm.......................................................................................................347
    2.9.125   Kme.......................................................................................................347
    2.9.126   Kt..........................................................................................................348
    2.9.127   Kul.........................................................................................................348
    2.9.128   LadSpls..................................................................................................348
    2.9.129   LBCOperand............................................................................................349
    2.9.130   LEGOXTR_V11.........................................................................................349
    2.9.131   LFO........................................................................................................350
    2.9.132   LFOData.................................................................................................351
    2.9.133   LFOLVL...................................................................................................351
    2.9.134   LID........................................................................................................352
    2.9.135   LPStd.....................................................................................................352
    2.9.136   LPStshi...................................................................................................352
    2.9.137   LPStshiGrpPrl..........................................................................................353
    2.9.138   LPUpxChpx..............................................................................................353
    2.9.139   LPUpxChpxRM.........................................................................................353
                                                                                                                             8 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    2.9.140   LPUpxPapx..............................................................................................354
    2.9.141   LPUpxPapxRM..........................................................................................354
    2.9.142   LPUpxRm................................................................................................354
    2.9.143   LPUpxTapx..............................................................................................355
    2.9.144   LPXCharBuffer9.......................................................................................355
    2.9.145   LSD.......................................................................................................356
    2.9.146   LSPD......................................................................................................356
    2.9.147   LSTF......................................................................................................357
    2.9.148   Lstsf.......................................................................................................357
    2.9.149   LVL........................................................................................................358
    2.9.150   LVLF......................................................................................................359
    2.9.151   MacroName.............................................................................................361
    2.9.152   MacroNames...........................................................................................361
    2.9.153   MathPrOperand........................................................................................361
    2.9.154   Mcd........................................................................................................362
    2.9.155   MDP.......................................................................................................362
    2.9.156   MFPF......................................................................................................363
    2.9.157   NilBrc.....................................................................................................363
    2.9.158   NilPICFAndBinData...................................................................................364
    2.9.159   NumRM..................................................................................................365
    2.9.160   NumRMOperand.......................................................................................366
    2.9.161   OcxInfo..................................................................................................366
    2.9.162   ODSOPropertyBase..................................................................................368
    2.9.163   ODSOPropertyLarge.................................................................................369
    2.9.164   ODSOPropertyStandard.............................................................................370
    2.9.165   ODT.......................................................................................................370
    2.9.166   ODTPersist1............................................................................................371
    2.9.167   ODTPersist2............................................................................................371
    2.9.168   OfficeArtClientAnchor................................................................................372
    2.9.169   OfficeArtClientData...................................................................................372
    2.9.170   OfficeArtClientTextbox..............................................................................373
    2.9.171   OfficeArtContent......................................................................................373
    2.9.172   OfficeArtWordDrawing..............................................................................374
    2.9.173   PANOSE..................................................................................................374
    2.9.174   PapxFkp.................................................................................................379
    2.9.175   PapxInFkp...............................................................................................379
    2.9.176   PbiGrfOperand.........................................................................................380
    2.9.177   Pcd........................................................................................................380
    2.9.178   Pcdt.......................................................................................................381
    2.9.179   PChgTabsAdd..........................................................................................381
    2.9.180   PChgTabsDel...........................................................................................381
    2.9.181   PChgTabsDelClose....................................................................................382
    2.9.182   PChgTabsOperand....................................................................................382
    2.9.183   PChgTabsPapxOperand.............................................................................383
    2.9.184   PgbApplyTo.............................................................................................383
    2.9.185   PgbOffsetFrom.........................................................................................384
    2.9.186   PgbPageDepth.........................................................................................384
    2.9.187   PGPArray................................................................................................384
    2.9.188   PGPInfo..................................................................................................384
    2.9.189   PGPOptions.............................................................................................385
    2.9.190   PICF.......................................................................................................387
    2.9.191   PICF_Shape............................................................................................387
    2.9.192   PICFAndOfficeArtData...............................................................................388
    2.9.193   PICMID...................................................................................................389
    2.9.194   PlcfGlsy..................................................................................................390
    2.9.195   PlfAcd.....................................................................................................390
    2.9.196   PlfCosl....................................................................................................391
    2.9.197   PlfGosl....................................................................................................391
                                                                                                                            9 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    2.9.198   PlfguidUim..............................................................................................392
    2.9.199   PlfKme...................................................................................................392
    2.9.200   PlfLfo.....................................................................................................392
    2.9.201   PlfLst......................................................................................................393
    2.9.202   PlfMcd....................................................................................................393
    2.9.203   PLRSID...................................................................................................394
    2.9.204   Pmfs......................................................................................................394
    2.9.205   Pms.......................................................................................................397
    2.9.206   PnFkpChpx..............................................................................................398
    2.9.207   PnFkpPapx..............................................................................................398
    2.9.208   PositionCodeOperand................................................................................399
    2.9.209   Prc.........................................................................................................399
    2.9.210   PrcData..................................................................................................399
    2.9.211   PrDrvr....................................................................................................400
    2.9.212   PrEnvLand..............................................................................................400
    2.9.213   PrEnvPort................................................................................................401
    2.9.214   Prm.......................................................................................................401
    2.9.215   Prm0......................................................................................................401
    2.9.216   Prm1......................................................................................................402
    2.9.217   PropRMark..............................................................................................403
    2.9.218   PropRMarkOperand..................................................................................403
    2.9.219   ProtectionType.........................................................................................403
    2.9.220   PRTI.......................................................................................................404
    2.9.221   PTIstdInfoOperand...................................................................................404
    2.9.222   Rca........................................................................................................405
    2.9.223   RecipientBase..........................................................................................405
    2.9.224   RecipientDataItem...................................................................................405
    2.9.225   RecipientInfo...........................................................................................407
    2.9.226   RecipientTerminator.................................................................................407
    2.9.227   Rfs.........................................................................................................408
    2.9.228   RgCdb....................................................................................................408
    2.9.229   RgxOcxInfo.............................................................................................409
    2.9.230   RmdThreading.........................................................................................409
    2.9.231   Rnc........................................................................................................414
    2.9.232   RouteSlip................................................................................................414
    2.9.233   RouteSlipInfo..........................................................................................415
    2.9.234   RouteSlipProtectionEnum..........................................................................416
    2.9.235   SBkcOperand..........................................................................................416
    2.9.236   SBOrientationOperand..............................................................................417
    2.9.237   SClmOperand..........................................................................................417
    2.9.238   SDmBinOperand......................................................................................417
    2.9.239   SDTI......................................................................................................417
    2.9.240   SDTT......................................................................................................418
    2.9.241   SDxaColSpacingOperand...........................................................................419
    2.9.242   SDxaColWidthOperand..............................................................................419
    2.9.243   Sed........................................................................................................419
    2.9.244   Selsf......................................................................................................420
    2.9.245   Sepx......................................................................................................422
    2.9.246   SFpcOperand...........................................................................................422
    2.9.247   Shd........................................................................................................422
    2.9.248   Shd80....................................................................................................424
    2.9.249   SHDOperand...........................................................................................424
    2.9.250   SLncOperand...........................................................................................424
    2.9.251   SmartTagData.........................................................................................425
    2.9.252   SortColumnAndDirection...........................................................................425
    2.9.253   Spa........................................................................................................425
    2.9.254   SpellingSpls............................................................................................428
    2.9.255   SPgbPropOperand....................................................................................428
                                                                                                                          10 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    2.9.256   SPLS......................................................................................................428
    2.9.257   SPPOperand............................................................................................429
    2.9.258   STD.......................................................................................................430
    2.9.259   Stdf.......................................................................................................431
    2.9.260   StdfBase.................................................................................................431
    2.9.261   StdfPost2000...........................................................................................433
    2.9.262   StdfPost2000OrNone................................................................................433
    2.9.263   StkCharGRLPUPX.....................................................................................434
    2.9.264   StkCharLPUpxGrLPUpxRM..........................................................................434
    2.9.265   StkCharUpxGrLPUpxRM.............................................................................434
    2.9.266   StkListGRLPUPX.......................................................................................435
    2.9.267   StkParaGRLPUPX......................................................................................435
    2.9.268   StkParaLPUpxGrLPUpxRM..........................................................................436
    2.9.269   StkParaUpxGrLPUpxRM.............................................................................436
    2.9.270   StkTableGRLPUPX....................................................................................437
    2.9.271   STSH.....................................................................................................437
    2.9.272   STSHI....................................................................................................438
    2.9.273   STSHIB..................................................................................................439
    2.9.274   Stshif.....................................................................................................439
    2.9.275   StshiLsd.................................................................................................440
    2.9.276   SttbfAssoc..............................................................................................441
    2.9.277   SttbfAtnBkmk..........................................................................................442
    2.9.278   SttbfAutoCaption......................................................................................443
    2.9.279   SttbfBkmk...............................................................................................443
    2.9.280   SttbfBkmkBPRepairs.................................................................................448
    2.9.281   SttbfBkmkFactoid.....................................................................................448
    2.9.282   SttbfBkmkFcc..........................................................................................449
    2.9.283   SttbfBkmkProt.........................................................................................450
    2.9.284   SttbfBkmkSdt..........................................................................................451
    2.9.285   SttbfCaption............................................................................................452
    2.9.286   SttbfFfn..................................................................................................453
    2.9.287   SttbfGlsy................................................................................................454
    2.9.288   SttbFnm.................................................................................................454
    2.9.289   SttbfRfs..................................................................................................455
    2.9.290   SttbfRMark..............................................................................................457
    2.9.291   SttbGlsyStyle..........................................................................................457
    2.9.292   SttbListNames.........................................................................................458
    2.9.293   SttbProtUser...........................................................................................459
    2.9.294   SttbRgtplc...............................................................................................460
    2.9.295   SttbSavedBy...........................................................................................460
    2.9.296   SttbTtmbd..............................................................................................461
    2.9.297   SttbW6...................................................................................................462
    2.9.298   StwUser..................................................................................................462
    2.9.299   Sty........................................................................................................463
    2.9.300   TabJC.....................................................................................................464
    2.9.301   TabLC.....................................................................................................464
    2.9.302   TableBordersOperand...............................................................................465
    2.9.303   TableBordersOperand80............................................................................466
    2.9.304   TableBrc80Operand..................................................................................466
    2.9.305   TableBrcOperand.....................................................................................467
    2.9.306   TableCellWidthOperand.............................................................................468
    2.9.307   TableSel.................................................................................................468
    2.9.308   TableShadeOperand.................................................................................469
    2.9.309   TBC.......................................................................................................469
    2.9.310   TBD.......................................................................................................469
    2.9.311   TBDelta..................................................................................................470
    2.9.312   Tbkd......................................................................................................472
    2.9.313   TC80......................................................................................................472
                                                                                                                         11 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
      2.9.314     TCellBrcTypeOperand...............................................................................473
      2.9.315     Tcg........................................................................................................473
      2.9.316     Tcg255...................................................................................................474
      2.9.317     TCGRF....................................................................................................474
      2.9.318     TcgSttbf.................................................................................................475
      2.9.319     TcgSttbfCore...........................................................................................475
      2.9.320     Tch........................................................................................................476
      2.9.321     TDefTableOperand...................................................................................477
      2.9.322     TDxaColOperand......................................................................................477
      2.9.323     TextFlow.................................................................................................478
      2.9.324     TInsertOperand.......................................................................................478
      2.9.325     TIQ........................................................................................................478
      2.9.326     TLP........................................................................................................479
      2.9.327     ToggleOperand........................................................................................479
      2.9.328     Tplc.......................................................................................................480
      2.9.329     TplcBuildIn..............................................................................................480
      2.9.330     TplcUser.................................................................................................481
      2.9.331     Ttmbd....................................................................................................481
      2.9.332     UFEL......................................................................................................482
      2.9.333     UID........................................................................................................483
      2.9.334     UidSel....................................................................................................483
      2.9.335     UIM........................................................................................................483
      2.9.336     UpxChpx.................................................................................................484
      2.9.337     UPXPadding.............................................................................................485
      2.9.338     UpxPapx.................................................................................................485
      2.9.339     UpxRm...................................................................................................486
      2.9.340     UpxTapx.................................................................................................487
      2.9.341     VerticalAlign............................................................................................489
      2.9.342     VerticalMergeFlag.....................................................................................489
      2.9.343     VertMergeOperand...................................................................................489
      2.9.344     Vjc.........................................................................................................490
      2.9.345     WHeightAbs............................................................................................490
      2.9.346     WKB......................................................................................................490
      2.9.347     Wpms....................................................................................................491
      2.9.348     Wpmsdt..................................................................................................492
      2.9.349     XAS.......................................................................................................492
      2.9.350     XAS_nonNeg...........................................................................................492
      2.9.351     XAS_plusOne...........................................................................................492
      2.9.352     XSDR.....................................................................................................493
      2.9.353     Xst.........................................................................................................493
      2.9.354     Xstz.......................................................................................................494
      2.9.355     YAS........................................................................................................494
      2.9.356     YAS_nonNeg...........................................................................................494
      2.9.357     YAS_plusOne...........................................................................................494
3     Structure Examples............................................................................................495
    3.1    Example of a Clx...........................................................................................495
    3.2    Example of a section......................................................................................500
    3.3    Example of a Bookmark..................................................................................505
    3.4    Example of a PlcBteChpx................................................................................510
    3.5    Example of a PlcBtePapx................................................................................514
    3.6    Example of Table Row Properties.....................................................................520
    3.7    Example of a List...........................................................................................531
4     Security Considerations......................................................................................542
    4.1    Encryption and Obfuscation (Password to Open)................................................542
    4.2    Write Reservation Password............................................................................542
5     Appendix A: Product Behavior............................................................................543
                                                                                                                              12 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
6   Change Tracking................................................................................................561
7   Index.................................................................................................................562
                                                                                                                          13 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
1     Introduction
This document specifies the Word Binary File Format (.doc) Structure, which defines the Word Binary
File Format (.doc). The Word Binary File Format is a collection of records and structures that specify
text, tables, fields, pictures, embedded XML markup, and other document content. The content can be
printed on pages of multiple sizes or displayed on a variety of devices.
The Word Binary File Format begins with a master record named the File Information Block, which
references all other data in the file. By following links from the File Information Block, an application
can locate all text and other objects in the file and compute the properties of those objects.
Sections 1.7 and 2 of this specification are normative. All other sections and examples in this
specification are informative.
1.1 Glossary
accelerator key: Any combination of keys that are pressed simultaneously to run a command.
    allocated command: A built-in command that requires the user to specify a value for a parameter
       when customizing the command.
    anchor: A set of qualifiers and quantifiers that specifies the location of an element or object within
      a document. These values are typically relative to another element or known location in the
      document, such as the edge of a page or margin.
    annotation bookmark: An entity in a document that is used to denote the range of content to
      which a comment applies.
    ASCII: The American Standard Code for Information Interchange (ASCII) is an 8-bit character-
      encoding scheme based on the English alphabet. ASCII codes represent text in computers,
      communications equipment, and other devices that work with text. ASCII refers to a single 8-bit
      ASCII character or an array of 8-bit ASCII characters with the high bit of each character set to
      zero.
    auto spacing: A condition in which space is inserted automatically before and after a series of
      consecutive paragraphs that do not have breaks or other items between them.
    AutoCaption: A feature that adds a caption to an object automatically when the object is inserted
      in a document.
    AutoCorrect: A feature that corrects errors and makes other substitutions in a document
      automatically by using default and user-defined settings.
    auto-hyphenated: A condition of content where the distance between the text is measured and
      maintained to force breaks automatically in elongated words that would not otherwise end
      correctly on a line.
    automark file: A file that stores the text, location, and index level of a set of characters that were
      marked for inclusion in a document index.
                                                                                                   14 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
   AutoSummary: A process in which key points are identified in selected text by analyzing
     document content. A score is assigned to each sentence; sentences that contain frequently used
     words are given a higher score.
   AutoText: A storage location for text and graphics, such as a standard contract clause, that can be
     used multiple times in one or more documents. Each selection of text or graphics is recorded as
     an AutoText entry and assigned a unique name.
   bar tab: A tab that specifies where to draw a vertical line or bar in a paragraph. It neither affects
     the position of characters nor creates a custom tab stop in a paragraph.
   bidirectional compatibility: The ability to display and process text in two directions, right-to-left
      and left-to-right.
   big-endian: Multiple-byte values that are byte-ordered with the most significant byte stored in the
      memory location with the lowest address.
   bookmark: An entity that is used in a document to denote the beginning and ending character
     positions of specific text in the document, and optionally, metadata about that text or its
     relationship to other referenced parts of the document.
   caption: One or more characters that can be used as a label for display purposes or as an
     identifier.
   cascading style sheet (CSS): An extension to HTML that enables authors and users of HTML
     documents to attach style sheets to those documents, as described in [CSS-LEVEL1] and [CSS-
     LEVEL2]. A style sheet includes typographical information about the appearance of a page,
     including the font for text on the page.
   cell: A box that is formed by the intersection of a row and a column in a worksheet or a table. A
      cell can contain numbers, strings, and formulas, and various formats can be applied to that
      data.
   cell margin: A measurement of the distance between the border of a cell and the nearest pixel in
      a character or digit of data in the cell. There are top, bottom, right, and left margins. See also
      cell spacing.
   cell spacing: A measurement of the distance between the cells of a table or worksheet. Most
      tables and worksheets are implemented with contiguous cells, in which case the cell spacing
      value is 0 (zero). See also cell margin.
   CGAPI: An API that is implemented by grammar checkers that have been licensed to Microsoft
     Corporation by external vendors.
   chapter numbering: A page numbering format in which pages are numbered relative to the
     beginning of a chapter within a document instead of the beginning of the document. The chapter
     number is typically included in a page number; for example "3 – 2," where "3" is the chapter
     number and "2" is the number of that page within that chapter.
   character pitch: A quality that measures the number of characters that can be printed in a
     horizontal inch. Pitch is typically used to measure monospace fonts.
   character set: A mapping between the characters of a written language and the values that are
     used to represent those characters to a computer.
   character unit: A horizontal unit of measurement that is relative to the document grid and is used
     to position content in a document.
   class identifier (CLSID): A GUID that identifies a software component; for instance, a DCOM
      object class or a COM class.
                                                                                                  15 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
   code page: An ordered set of characters of a specific script in which a numerical index (code-point
     value) is associated with each character. Code pages are a means of providing support for
     character sets and keyboard layouts used in different countries. Devices such as the display
     and keyboard can be configured to use a specific code page and to switch from one code page
     (such as the United States) to another (such as Portugal) at the user's request.
   Component Object Model (COM): An object-oriented programming model that defines how
     objects interact within a single process or between processes. In COM, clients have access to an
     object through interfaces implemented on the object. For more information, see [MS-DCOM].
   connection string: A series of arguments, delimited by a semicolon, that defines the location of a
     database and how to connect to it.
   custom toolbar: A type of toolbar that contains a user-defined set of controls and is not included
     in an application by default. A custom toolbar has a toolbar identifier value of "1".
   custom toolbar control: A user-defined control that can be added to a toolbar. A custom toolbar
     control has a toolbar control identifier (TCID) value of "1" and can be one of the following
     types of controls: ActiveX, Button, ComboBox, DropDown, Edit, or Popup.
   deletion point: A position between two existing characters, or a position before or after a
     character, where text was removed. If a caret is positioned at a deletion point, the point can
     retain unique formatting and that formatting can be reapplied to any text that is inserted at the
     deletion point.
   digital signature: A value that is generated by using a digital signature algorithm, taking as input
      a private key and an arbitrary-length string, such that a specific verification algorithm is
      satisfied by the value, the input string, and the public key corresponding to the input private
      key.
   document: An object in a content database such as a file, folder, list, or site. Each object is
     identified by a URI.
   document grid: A feature that enables the precise layout of full-width East Asian language
     characters by specifying the number of characters per line and the number of lines per page.
document template: A file that serves as the basis for new documents.
   East Asian character: A character that is part of the Simplified Chinese, Traditional Chinese,
     Japanese, or Korean character set.
   East Asian language: A spoken or written communication that consists of words that are used
     within the grammatical and syntactic structure of Simplified Chinese, Traditional Chinese,
     Japanese, or Korean.
   East Asian line breaking rules: A set of algorithms that define how text is parsed and displayed
     to ensure that line breaks and word wraps follow the rules of various East Asian languages,
     including Simplified Chinese, Traditional Chinese, Japanese, and Korean.
   end of cell mark: A character with a hexadecimal value of "0x07" that is used to indicate the end
     of a cell in a table.
   end of row mark: The combination of a character, hexadecimal value of "0x07", and a paragraph
     property, sprmPFTtp, that is used to indicate the end of a row in a table.
   endnote: A note that appears at the end of a section or document and that is referenced by text in
     the main body of the document. An endnote consists of two linked parts, a reference mark
     within the main body of text and the corresponding text of the note.
   endnote continuation notice: A set of characters indicating that an endnote continues to the
     next page. The default notice is blank.
                                                                                                 16 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
   endnote continuation separator: A set of characters that indicates the end of document text on
     a page and the beginning of endnotes that continue from the preceding page.
   endnote separator: A set of characters that separates document text from endnotes about that
     text. The default separator is a horizontal line.
   field type: A name that identifies the action or effect that a field has within a document. Examples
      of field types are Author, Page, Comments, and Date.
   file allocation table (FAT): A data structure that the operating system creates when a volume is
       formatted by using FAT or FAT32 file systems. The operating system stores information about
       each file in the FAT so that it can retrieve the file later.
   footer: One or more lines of text in the bottom margin area of a page in a document or a slide in a
      presentation. A footer typically contains elements such as the page number and the name of the
      file.
   footnote: A note that appears at the end of a page, section, chapter, or publication. It explains,
      comments on, or provides references for text in the main body of a document. A footnote
      consists of two linked parts, a reference mark within the main body of the document and the
      corresponding text of the note.
   footnote continuation notice: A set of characters indicating that a footnote continues to the next
      page. The default notice is blank.
   footnote continuation separator: A set of characters that indicates the end of document text on
      a page and the beginning of footnotes that continue from the preceding page.
   footnote separator: A set of characters that separates document text from footnotes about that
      text. The default separator is a horizontal line.
   format consistency checker: An application that applies a wavy blue underline to text where the
      formatting is similar, but not identical, to comparable text in a document.
frame: A space, displayed onscreen as a box, that contains a specific element of a publication.
   full save: A process in which an existing file is overwritten with all of the additions, changes, and
      other content in a document.
   full screen view: A document view that expands the display of a document to fill the computer
      screen. The view hides menus, toolbars, and taskbars.
   grammar checker: An application that uses default or user-defined settings to search for
     grammatical errors in a document.
   grammar checker cookie: An entity in a document that a grammar checker uses to denote a
     possible grammatical error in the document and data about that error.
   gutter: An area above a column heading and to the left of a row heading. A gutter typically
     displays outline symbols that are used to expand and collapse groups of cells.
   gutter margin: A margin setting that adds extra space to the side or top margin of a document
     that will be printed and bound. A gutter margin ensures that text is not obscured by the binding.
                                                                                                  17 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
   Hangul-Hanja converter (HHC): A collection of dictionaries that readers can use to search for
     and select a Hanja word that corresponds to a specified Hangul word, or a Hangul word that
     corresponds to a specified Hanja word.
   header: A line, or lines, of content in the top margin area of a page in a document or a slide in a
     presentation. A header typically contains elements such as the title of the chapter, the title of
     the document, a page number, or the name of the author.
   heading style: A type of paragraph style that also specifies a heading level. There are as many as
     nine built-in heading styles, Heading 1 through Heading 9.
   horizontal band: A set of rows in a table that are treated as a single unit, typically to ensure the
     consistency of the layout and the format.
   HTML image map: An image that contains more than one hyperlink on a webpage. Clicking
     various parts of the image links the user to other resources on another part of the page, a
     different page, or a file.
   hybrid list: A nine-level list that is exposed in the user interface as a collection of nine, one-level
     lists, instead of a single nine-level list.
Hyperlink view: A document view that displays a document as it would appear as a webpage.
   incremental save: A process in which an existing file is modified to reflect only additions or
      changes to a document, while maintaining all other existing content in the file.
   Input Method Editor (IME): An application that is used to enter characters in written Asian
     languages by using a standard 101-key keyboard. An IME consists of both an engine that
     converts keystrokes into phonetic and ideographic characters and a dictionary of commonly used
     ideographic words.
   insertion point: A position between two existing characters, or a position before or after a
      character, where text can be inserted. If a caret is positioned at an insertion point, the point can
      have unique formatting, which is applied to any text that is inserted at the insertion point.
   kinsoku: A rule set in the Japanese language that is used to determine characters that are not
      permitted at the beginning or end of a line.
   Kumimoji: A text layout setting that displays annotative characters inline next to the text to which
     they apply. It is typically used with East Asian text to indicate pronunciation.
   labels document: A document that stores label design and printing information in conjunction
      with a mail merge document.
   language auto-detection: A process that automatically determines the language code identifier
      (LCID) for text in a document.
   left-to-right: A reading order in which characters in words are read from left to right, and words
      are read from left to right in sentences.
   line numbers: A formatting property in which each line of text is prefixed with a sequential
      number as part of a larger collection of lines on a page.
   line unit: A vertical unit of measurement that is relative to the document grid and is used to
      position content in a document.
   list level: A condition of a paragraph that specifies which numbering system and indentation to
       use, relative to other paragraphs in a bulleted or numbered list.
list tab: A tab stop that is between a list number or bullet and the text of that list item.
                                                                                                    18 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
   little-endian: Multiple-byte values that are byte-ordered with the least significant byte stored in
       the memory location with the lowest address.
   logical left: A position that is relative to the language orientation of a document. Logical left
      means left, except in a right-to-left language where it means right. Also referred to as leading
      edge.
   logical right: A position that is relative to the language orientation of a document. Logical right
      means right, except in a right-to-left language where it means left. Also referred to as trailing
      edge.
   macro: A set of instructions that are recorded or written, and then typically saved to a file. When a
     macro is run, all of the instructions are performed automatically.
   mail merge: The process of merging information into a document from a data source, such as an
     address book or database, to create customized documents, such as form letters or mailing
     labels.
   mail merge data source: A file or address book that contains the information to be merged into a
     document during a mail merge operation.
   mail merge header document: A file that contains the names of the fields in a mail merge data
     source.
   mail merge main document: A document that contains the text and graphics that are the same
     for each version of the merged document, such as the return address or salutation in a form
     letter.
   manifest: A file that stores metadata about an expansion pack, such as the name of the expansion
     pack, the files and resources that are included in the expansion pack, and the dependencies that
     it has on other files and components.
   master document: A document that refers to or contains one or more other documents, which
     are referred to as subdocuments. A master document can be used to configure and manage a
     multipart document, such as a book with multiple chapters.
   menu toolbar: A type of toolbar that is displayed in an application window, typically at the top,
     and provides a set of menu controls from which the user can select. Activating a control on the
     toolbar displays a list of commands in that menu, and the menu remains open until the user
     closes it or chooses a menu command.
   NLCheck: An API that is implemented by grammar checkers that were developed by Microsoft
     Corporation.
   Normal template: The default global template that is used for any type of document. Users can
     modify this template to change default document formatting, or content for any new document.
   Normal view: A document view that displays text formatting and a simplified page layout of a
     document. The Normal view hides some layout elements such as the header and footer.
     Referred to as Draft view in Microsoft Office Word 2007 and Microsoft Word 2010.
   NT file system (NTFS): A proprietary Microsoft file system. For more information, see [MSFT-
     NTFS].
   number text: A string that is calculated automatically and represents the numbering scheme and
     position of a paragraph in a bulleted or numbered list.
                                                                                                  19 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
   Object Linking and Embedding (OLE): A technology for transferring and sharing information
     between applications by inserting a file or part of a file into a compound document. The inserted
     file can be either embedded or linked. See also embedded object and linked object.
   OLE compound file: A form of structured storage, as described in [MS-CFB]. A compound file
     allows independent storages and streams to exist within a single file.
   OLE control: A reusable software component that is designed to work in containers that support
     Object Linking and Embedding (OLE) 2.0.
OLE object: An object that supports the Object Linking and Embedding (OLE) protocol.
   outline level: A type of paragraph formatting that can be used to assign a hierarchical level, Level
     1 through Level 9, to paragraphs in a document. After outline levels are assigned, an outline of
     a document can be viewed by using Outline view, the document map, or the navigation pane.
   page border: A line that can be applied to the outer edge of a page in a document. A page border
     can be formatted for style, color, and thickness.
   paragraph mark: An entity in a document that is used to denote the end of a paragraph and has
     a Unicode character code of 13.
   personal style: A list of formatting settings that is applied to a document or an Internet message
     when it is opened or created by a specific user on a specific computer. The settings are
     associated with a user and a computer.
   physical left: A leftward position that is not relative to the language orientation of document
     content. See also logical left.
   physical right: A rightward position that is not relative to the language orientation of document
     content. See also logical right.
point: A unit of measurement for fonts and spacing. A point is equal to 1/72 of an inch.
   policy labels: A set of fields that stores metadata about a document and is defined by an
     information management policy.
   primary shortcut key: The default combination of keys that are pressed simultaneously to
      execute a command. See also secondary shortcut key.
   Print Preview view: A document view that displays a document as it will appear on a printed
      page.
   ProgID: An identifier that is used by the Windows registry to uniquely identify an object and is in
     the form OLEServerName.ObjectName, for example, "Excel.Sheet" or "PowerPoint.Slide."
   property revision mark: A type of revision mark indicating that one or more formatting
     properties, such as bold, indentation, or spacing, changed.
   range-level protection: A mechanism that permits users to change only specific parts of a
      protected document while restricting access to all other parts of the document. See also range-
      level protection bookmark.
                                                                                                20 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
   Reading Layout view: A document view that displays a document as it will appear on a printed
     page and is optimized for reading a document on a computer screen. Two pages are displayed
     simultaneously, side-by-side.
   repair bookmark: An entity in a document that is used to denote text that was changed
      automatically during a document repair operation.
rich text: Text that is formatted in the Rich Text Format, as described in [MSFT-RTF].
right-to-left: A reading and display order that is optimized for right-to-left languages.
   Ruby: A text layout setting that displays annotative characters above or to the right of the text to
     which it applies. It is typically used in East Asian documents to indicate pronunciation or to
     provide a brief annotation.
   ScreenTip: A small pop-up window that provides brief context-sensitive help when users point to
     an item.
   secondary shortcut key: A user-defined combination of keys that are pressed simultaneously to
     execute a command. See also primary shortcut key.
   section: A portion of a document that is terminated by a section break or the end of the
     document. A section can store unique, page-level formatting, such as page size and orientation,
     and other formatting features such as headers and footers.
   section break: A special character that terminates a section and acts as a repository for the
     properties of the specified section.
   shading pattern: A background color pattern against which characters and graphics are displayed,
     typically in tables. The color can be no color or it can be a specific color with a transparency or
     pattern value.
   smart tag: A feature that adds the ability to recognize and label specific data types, such as
     people's names, within a document and displays an action button that enables users to perform
     common tasks for that data type.
   smart tag bookmark: An entity in a document that is used to denote the location and presence of
     a smart tag.
   smart tag recognizer: An add-in that can interpret a specific type of smart tag, such as an
     address or a financial symbol, in a document and display an action button that enables users to
     perform common tasks for that data type.
   South Asian language: A spoken or written communication consisting of words that are used
     within the grammatical and syntactic structure of a language of southern Asia, such as Hindi,
     Urdu, or Tamil.
   structured document tag: An entity in a document that is used to denote content that is stored
      as XML data.
   structured document tag bookmark: An entity in a document that is used to denote the location
      and presence of a structured document tag.
   style: A set of formatting options that is applied to text, tables, charts, and other objects in a
      document.
   table depth: An indicator that specifies how tables are nested and how to display paragraphs
      within those tables. The depth is derived from values that are applied to paragraph marks, cell
                                                                                                   21 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
      marks, or table-terminating paragraph marks. A paragraph that is not in a table has a table
      depth of "0" (zero); a nested table has a table depth of one greater than the cell that contains
      it.
   table style: A set of formatting options, such as font, border formatting, and row banding, that
      are applied to a table. The regions of a table, such as the header row, header column, and data
      area, can be variously formatted.
   Tatenakayoko: A text layout setting that displays a range of text perpendicular (horizontal) to the
     flow of other text (vertical).
   toolbar: A row, column, or block of controls that represent tasks or commands within an
      application. A toolbar can be either a menu toolbar, which provides access to menu commands,
      or a basic toolbar, which contains buttons that provide shortcuts to tasks that are frequently
      accessed from menus.
   toolbar control: An object that appears on a toolbar and enables user interaction or input,
      typically to initiate an action, display information, or set values.
toolbar control identifier (TCID): An integer that identifies a specific control on a toolbar.
   toolbar delta: A file component that stores a modification that a user made to a built-in toolbar.
      Stored modifications include adding, changing, or removing a control from a built-in toolbar.
   TrueType font: A type of computer font that can be scaled to any size. TrueType fonts are clear
     and readable in all sizes and can be sent to any printer or other output device.
   twip: A unit of measurement that is used in typesetting and desktop publishing. It equals one-
     twentieth of a printer's point, or 1/1440 of an inch.
   Unicode: A character encoding standard developed by the Unicode Consortium that represents
     almost all of the written languages of the world. The Unicode standard [UNICODE5.0.0/2007]
     provides three forms (UTF-8, UTF-16, and UTF-32) and seven schemes (UTF-8, UTF-16, UTF-16
     BE, UTF-16 LE, UTF-32, UTF-32 LE, and UTF-32 BE).
   Uniform Resource Identifier (URI): A string that identifies a resource. The URI is an addressing
     mechanism defined in Internet Engineering Task Force (IETF) Uniform Resource Identifier (URI):
     Generic Syntax [RFC3986].
   Universal Input Method (UIM): An application or service that provides multilingual support and
     delivers text services such as keyboard processors, handwriting recognition, and speech
     recognition
   vertical band: A set of columns in a table that are treated as a single unit, typically for the
     purpose of layout and formatting consistency.
   virtual key code: A symbolic constant name, hexadecimal value, or mouse or keyboard equivalent
      that provides a hardware- and language-independent method of identifying keyboard keys. Each
      virtual key code represents a unique keyboard key and also identifies the purpose of that key.
      The keyboard driver provides one or more keyboard layouts that maps keyboard scan codes to
      the appropriate virtual key codes.
   Visual Basic for Applications (VBA): A macro-based programming language that derives from
      Microsoft Visual Basic and can be used to customize and extend an application. Unlike Visual
      Basic, Microsoft Visual Basic for Applications (VBA) code and macros can be run only from within
      a host application that supports VBA.
                                                                                                     22 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
   Warichu: A text layout setting that creates two sublines within a line and stacks text equally
     between those sublines. One subline contains the text proper and the other subline contains
     comments, notes, and annotations about that text.
   Web Layout view: A view of a document as it might appear in a web browser. For example, the
     document appears as only one page, without page breaks.
   word wrap: The process of breaking lines of text automatically to stay within the page margins of
     a document or window boundaries.
   Word97 compatibility mode: An application mode that prevents users from applying formatting
     and other document features and settings that are not supported in Microsoft Word 97 or earlier
     versions of Word.
   MAY, SHOULD, MUST, SHOULD NOT, MUST NOT: These terms (in all caps) are used as defined
     in [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or SHOULD NOT.
1.2 References
Links to a document in the Microsoft Open Specifications library point to the correct section in the
most recently published version of the referenced document. However, because individual documents
in the library are not updated at the same time, the section numbers in the documents may not
match. You can confirm the correct section numbering by checking the Errata.
We conduct frequent surveys of the normative references to assure their continued availability. If you
have any issue with finding a normative reference, please contact dochelp@microsoft.com. We will
assist you in finding the relevant information.
[ECMA-376] ECMA International, "Office Open XML File Formats", 1st Edition, ECMA-376, December
2006, http://www.ecma-international.org/publications/standards/Ecma-376.htm
[Embed-Open-Type-Format] Nelson, P., "Embedded OpenType (EOT) File Format", W3C Member
Submission, March 2008, http://www.w3.org/Submission/2008/SUBM-EOT-20080305/
[MS-DOCX] Microsoft Corporation, "Word Extensions to the Office Open XML (.docx) File Format".
                                                                                               23 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
[MS-ODRAW] Microsoft Corporation, "Office Drawing Binary File Format".
[MS-OLEPS] Microsoft Corporation, "Object Linking and Embedding (OLE) Property Set Data
Structures".
[MS-OSHARED] Microsoft Corporation, "Office Common Data Types and Objects Structures".
[RFC1950] Deutsch, P., and Gailly, J-L., "ZLIB Compressed Data Format Specification version 3.3",
RFC 1950, May 1996, http://www.ietf.org/rfc/rfc1950.txt
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC
2119, March 1997, http://www.rfc-editor.org/rfc/rfc2119.txt
[RFC2822] Resnick, P., Ed., "Internet Message Format", RFC 2822, April 2001,
http://www.ietf.org/rfc/rfc2822.txt
[RFC4234] Crocker, D., Ed., and Overell, P., "Augmented BNF for Syntax Specifications: ABNF", RFC
4234, October 2005, http://www.rfc-editor.org/rfc/rfc4234.txt
[MS-OLEDS] Microsoft Corporation, "Object Linking and Embedding (OLE) Data Structures".
1.3 Overview
1.3.1 Characters
The fundamental unit of a Word binary file is a character. This includes visual characters such as
letters, numbers, and punctuation. It also includes formatting characters such as paragraph marks,
end of cell marks, line breaks, or section breaks. Finally, it includes anchor characters such as
footnote reference characters, picture anchors, and comment anchors.
Characters are indexed by their zero-based Character Position, or CP (section 2.2.1). This
documentation is generally concerned with CPs (section 2.2.1), not with the underlying text. Section
2.4.1 specifies an algorithm for determining the text at a particular CP (section 2.2.1), but this is just
one of many pieces of information an application might look for. The reader needs to understand that
this documentation is much more about logical characters in a document than about physical bytes in
a file.
                                                                                                   24 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
1.3.2 PLCs
Many features of the Word Binary File Format pertain to a range of CPs (section 2.2.1). For example,
a bookmark is a range of CPs (section 2.2.1) that is named by the document author. As another
example, a field is made up of three control characters with ranges of arbitrary document content
between them.
The Word Binary File Format uses a PLC structure (section 2.2.2) to specify these and other kinds of
ranges of CPs (section 2.2.1). A PLC (section 2.2.2) is simply a mapping from CPs (section 2.2.1) to
other, arbitrary data.
1.3.3 Formatting
The formatting of characters, paragraphs, sections, tables, and pictures is specified as a set of
differences in formatting from the default formatting for these objects. Modifications to individual
properties are expressed using a Prl. A Prl is a Single Property Modifier, or Sprm, and an operand that
specifies the new value for the property. Each property has (at least) one unique Sprm that modifies
it. For example, sprmCFBold modifies the bold formatting of text, and sprmPDxaLeft modifies the
logical left indent of a paragraph.
The final set of properties for text, paragraphs, and tables comes from a hierarchy of styles and from
Prl elements applied directly (for example, by the user selecting some text and clicking the Bold
button in the user interface). Styles allow complex sets of properties to be specified in a compact way.
They also allow the user to change the appearance of a document without visiting every place in the
document where a change is necessary. The style sheet for a document is specified by a STSH, as
defined in section 2.9.271.
See section 2.4.6.6 for the algorithm that determines the complete set of formatting for a character,
paragraph, table, or picture.
See section 2.8.26 for the structure used to determine the boundaries of sections and the location of
their properties.
1.3.4 Tables
A table consists of a set of paragraphs that has a particular set of properties applied. There are special
characters that denote the ends of table cells and the ends of table rows, but there are no characters
to denote the beginning of a table cell or the end of the table as a whole. Tables can be nested inside
other tables.
Section 2.4.3 provides an overview of tables, and Sections 2.4.4 and 2.4.5 specify algorithms for
determining the boundaries of a table cell and table row, respectively.
1.3.5 Pictures
Pictures in the Word Binary File format can be either inline or floating. An inline picture is represented
by a character whose Unicode value is 0x0001 and has sprmCFSpec applied with a value of 1 and
sprmCPicLocation applied to specify the location of the picture data. A floating picture is represented
by an anchor character with a Unicode value of 0x0008 with sprmCFSpec applied with a value of 1. In
addition, floating pictures are referenced by a PlcfSpa structure which contains additional data about
the picture. A floating picture can appear anywhere on the same page as its anchor. The document
author can choose to have the floating picture rearrange the text in various ways or to leave the text
as is.
                                                                                                  25 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
1.3.6 The FIB
The main stream of the Word Binary File Format begins with a File Information Block, or FIB. The FIB
specifies the locations of all other data in the file. The locations are specified by a pair of integers, the
first of which specifies the location and the second of which specifies the size. These integers appear in
substructures of the FIB such as the FibRgFcLcb97. The location names are prefixed with fc; the size
names are prefixed with lcb.
Some computer architectures number bytes in a binary word from left to right, which is referred to as
big-endian. The bit diagram for this documentation is big-endian. Other architectures number the
bytes in a binary word from right to left, which is referred to as little-endian. The underlying file
format enumerations, objects, and records are little-endian.
Using big-endian and little-endian methods, the number 0x12345678 would be stored as shown in the
following table.
Unless otherwise specified, all data in the Word Binary File Format is stored in little-endian format.
Sections 2.1 through 2.4 provide general specifications of structures and concepts that recur in this
documentation. Read these sections from beginning to end before delving deeper into section 2. The
most important part of this documentation is section 2.4, which specifies algorithms for retrieving
document content and determining its properties.
Section 2.5 provides a complete specification of the FIB, including links to all referenced data
structures.
Section 2.6 provides a complete list of Sprm elements and their operands; it can be considered a
complete list of the character, paragraph, table, and section properties supported by the Word Binary
File Format. Note that most picture properties are not represented by Sprm elements. [MS-ODRAW]
specifies most picture properties. Each Sprm definition specifies the default value for the property that
it modifies.
Section 2.8 provides a complete specification of all PLC types. Finally, section 2.9 provides
specifications for data types referenced by previous sections. Sections 2.8 and 2.9 are intended to be
read as the destination of links from other sections; they are not intended to be read straight through.
Section 3 provides examples that relate to the algorithms in section 2.4 and examples of bookmarks
(1) and sections. These examples are intended to illustrate the concept of property storage, PLCs, and
numbering, and to demonstrate the mapping between CP (section 2.2.1) and underlying text (as
specified in section 2.4.1).
Section 4 discusses encryption, obfuscation, and other security issues relating to the Word Binary File
Format.
                                                                                                    26 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Section 5 is a list of version-specific behaviors. It is intended to be read in the context of specifications
in section 2, not as a stand-alone section. Specifications in section 2 provide links to the relevant
items in section 5.
The Word Binary File Format is an OLE compound file as specified in [MS-CFB]. It is dependent on
the structures defined in the following references:
This document specifies a persistence format for word processing document content and templates,
which can include text, images, tables, custom XML schemas applied to the content, and page layout
information. This persistence format is applicable when the document content is intended to flow
across a set of pages as necessary for a particular media, and when the document can be printed. This
persistence format is not applicable when exact reproduction of a specific representation of the
content across various media and devices is desired.
This persistence format is applicable for use as a stand-alone document, and for containment within
other documents as an embedded object as specified by [MS-OLEDS].
This persistence format provides interoperability with applications that create or read documents
conforming to this structure<1>. 
Structure Versions: There is only one version of the Word Binary File Format structure.
This persistence format can be extended by storing information in streams and storages that are not
specified in section 2. Implementations are not required to preserve or remove additional streams or
storages when modifying an existing document.
                                                                                                     27 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2     Structures
A Word Binary File is an OLE compound file as specified by [MS-CFB]. The file consists of the
following storages and streams.
The WordDocument stream MUST be present in the file and MUST have an FIB at offset 0. It also
contains the document text and other information referenced from other parts of the file. The stream
has no predefined structure other than the FIB at the beginning.
In the context of Word Binary Files, the delay stream that is referenced in [MS-ODRAW] is the
WordDocument stream.
Either the 1Table stream or the 0Table stream MUST be present in the file. If the FIB at offset 0 in the
WordDocument stream has base.fWhichTblStm set to 1, this stream is called 1Table. Otherwise, it is
called 0Table.
If the document is encrypted as specified in section 2.2.6, this stream MUST have an
EncryptionHeader at offset 0, as specified in section 2.2.6. If the document is not encrypted, this
stream has no predefined structure. Other than the possible EncryptionHeader, this stream contains
the data that is referenced from the FIB or from other parts of the file.
If a file contains both a 1Table and a 0Table stream, only the stream that is referenced by
base.fWhichTblStm is used. The unreferenced stream MUST be ignored.
The Data stream has no predefined structure. It contains data that is referenced from the FIB or from
other parts of the file. This stream need not be present if there are no references to it.
The Object Pool storage contains storages for embedded OLE objects. This storage need not be
present if there are no embedded OLE objects in the document.
Each storage within the ObjectPool storage contains a stream whose name is "\003ObjInfo" where \
003 is the character with value 0x0003, not the string literal "\003". This stream contains an ODT
structure which specifies information about that embedded OLE object.
                                                                                                28 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.1.4.2 Print Stream
Each storage within the ObjectPool storage optionally contains a stream whose name is "\003PRINT"
where \003 is the character with value 0x0003, not the string literal "\003". This stream contains an
MFPF followed immediately by a Metafile as specified in [MS-WMF]. If no PRINT or EPRINT stream is
present, then the object does not have a print presentation distinct from its screen presentation.
Each storage within the ObjectPool storage optionally contains a stream whose name is "\003EPRINT"
where \003 is the character with value 0x0003, not the string literal "\003".<2> This stream contains
an Enhanced Metafile, as specified in [MS-EMF], to be used when printing the object. If no EPRINT or
PRINT stream is present, then the object does not have a print presentation distinct from its screen
presentation.
The Custom XML Data storage is an optional storage whose name MUST be "MsoDataStore".
The Document Summary Information stream is an optional stream whose name MUST be
"\005DocumentSummaryInformation", where \005 is the character with value 0x0005, not the string
literal "\005".
The Encryption stream is an optional stream whose name MUST be "encryption". The format of this
stream is specified in section 2.2.6.3. This stream MUST NOT be present unless both of the following
conditions are met:
§   The document is encrypted with Office Binary Document RC4 CryptoAPI Encryption (section
    2.2.6.3).
The Macros storage is an optional storage that contains the macros for the file. If present, it MUST be
a Project Root Storage as defined in [MS-OVBA] section 2.2.1.
                                                                                                29 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.1.10 XML Signatures Storage
The XML signatures storage is an optional storage whose name MUST be "_xmlsignatures". This
storage contains digital signatures as specified in [MS-OFFCRYPTO] section 2.5.2.4. This storage
MAY<3> be ignored.
The signatures stream is an optional stream whose name MUST be "_signatures". This stream
contains digital signatures as specified in [MS-OFFCRYPTO] section 2.5.1. This stream MAY<4> be
ignored.
The Information Rights Management Data Space storage is an optional storage whose name MUST be
"\006DataSpaces", where \006 is the character with value 0x0006, and not the string literal "\006".
This storage is specified in [MS-OFFCRYPTO] section 2.2.
If this storage is present, the Protected Content Stream MUST also be present.
If this storage is present, all specified streams and storages other than this storage and the Protected
Content Stream SHOULD<5> be read from the Protected Content Stream as specified in [MS-
OFFCRYPTO] section 1.3.2 and if any of those streams and storages exist outside of the Protected
Content Stream, they SHOULD<6> be ignored.
The Protected Content Stream is an optional stream whose name MUST be "\009DRMContent",
where \009 is the character with value 0x0009, and not the string literal "\009". This storage is
specified in [MS-OFFCRYPTO] section 2.2.10.
If this stream is present, the Information Rights Management Data Space Storage MUST also be
present.
A character position, which is also known as a CP, is an unsigned 32-bit integer that serves as the
zero-based index of a character in the document text. There is no requirement that the text at
consecutive character positions be at adjacent locations in the file. The size of each character in the
file also varies. The location and size of each character in the file can be computed using the algorithm
in section 2.4.1 (Retrieving Text).
Characters include the text of the document, anchors for objects such as footnotes or textboxes, and
control characters such as paragraph marks and table cell marks.
Unless otherwise specified by a particular usage, a CP MUST be greater than or equal to zero and less
than 0x7FFFFFFF. The range of valid character positions in a particular document is given by the
algorithm in section 2.4.1 (Retrieving Text).
2.2.2 PLC
The PLC structure is an array of character positions followed by an array of data elements. The data
elements for any PLC MUST be the same size of zero or more bytes. The number of CPs MUST be one
more than the number of data elements. The CPs MUST appear in ascending order. There are different
                                                                                                 30 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
types of PLC structures, as specified in section 2.8. Each type specifies whether duplicate CPs are
allowed for that type.
If the total size of a PLC (cbPlc) and the size of a single data element (cbData) are known, the
number of data elements in that PLC (n) is given by the following expression:
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aData (variable)
aCP (variable length): An array of CP elements. Each type of PLC structure specifies the meaning of
   the CP elements and the allowed range.
aData (variable length): Each type of PLC structure specifies the structure and meaning of the data
   elements, any restrictions on the number of data elements, and any restrictions on the data
   contained therein. It also specifies the relationship between the data elements and the
   corresponding CPs.
Many constructs in file types described by this document refer to ranges of CPs. When such ranges
specify that they are restricted to a valid selection, the following rules apply.
§   If the range contains content from more than one table cell at a particular table depth, then it
    MUST contain only whole table rows at that table depth. For further specification, see Overview of
    Tables (section 2.4.3).
§   If the range contains a field begin character, field separator character, or field end character, then
    it MUST contain the entire field. For further specification, see Plcfld (section 2.8.25).
§   If the range is in the footnote document, then both ends MUST be in the same footnote. For
    further specification, see PlcffndTxt (section 2.8.20).
§   If the range is in the header document, then both ends MUST be in the same header or footer. For
    further specification, see Plcfhdd (section 2.8.22).
§   If the range is in the comment document, both ends MUST be in the same comment. For further
    specification, see PlcfandTxt (section 2.8.8).
§   If the range is in the endnote document, then both ends MUST be in the same end note. For
    further specification, see PlcfendTxt (section 2.8.17).
                                                                                                                                     31 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§   If the range is in the textbox document, then both ends MUST be in the same textbox. For further
    specification, see PlcftxbxTxt (section 2.8.32).
§   If the range is in the header textbox document, then both ends MUST be in the same textbox. For
    further specification, see PlcfHdrtxbxTxt (section 2.8.23).
2.2.4 STTB
The STTB is a string table that is made up of a header that is followed by an array of elements. The
cData value specifies the number of elements that are contained in the array.
                                           1                                       2                                            3
0   1   2   3   4    5   6    7   8    9   0   1   2   3   4   5   6   7   8   9   0    1   2   3       4   5   6   7   8   9   0   1
ExtraData1 (variable) …
ExtraDatacData-1 (variable)
fExtend (variable): If the first two bytes of the STTB are equal to 0xFFFF, this is a 2-byte fExtend
    field that specifies, by its existence, that the Data fields in this STTB contain extended (2-byte)
    characters and that the cchData fields are 2 bytes in size. If the first two bytes of the STTB are
    not equal to 0xFFFF, this fExtend field does not exist, which specifies, by its nonexistence, that
    the Data fields in this STTB contain nonextended (1-byte) characters and that the cchData fields
    are 1 byte in size.
cData (variable): A 2-byte unsigned integer or a 4-byte signed integer that specifies the count of
   elements in this STTB. If this is a 2-byte unsigned integer, it MUST be less than 0xFFFF. If this is
   a 4-byte signed integer, it MUST be greater than zero. Unless otherwise specified, this is a 2-byte
   unsigned integer.
cbExtra (2 bytes): An unsigned integer that specifies the size, in bytes, of the ExtraData fields in
   this STTB.
cchData (variable): An unsigned integer that specifies the count of characters in the Data field
   following this field. If this STTB is using extended characters as defined by fExtend, the size of
   cchData is 2 bytes. If this STTB is not using extended characters, the size of cchData is 1 byte.
Data (variable): The definition of each STTB specifies the meaning of this field. If this STTB uses
   extended characters, the size of this field is 2×cchData bytes and it is a Unicode string unless
   otherwise specified by the STTB definition. If this STTB does not use extended characters, then
   the size of this field is cchData bytes and it is an ANSI string, unless otherwise specified by the
   STTB definition.
                                                                                                                                        32 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
ExtraData (variable): The definition of each STTB specifies the structure and meaning of this field.
   The size of this field is cbExtra bytes.
Files in Word Binary File Format store the properties of characters, paragraphs, tables, pictures, and
sections as lists of differences from the default. A Prl specifies each difference. It consists of a Single
Property Modifier (Sprm) and its operand. An application can determine the final set of properties by
applying lists of Prls in the order that is specified in section 2.4.6 (Applying Properties).
An application SHOULD<7> skip any Prl that corresponds to a property or feature not present in the
application by using Sprm.spra to determine the size of the Prl to skip.
The definition of each Sprm in section 2.6 specifies the default value for the corresponding property.
If multiple Prls modify the same property, the last one that is applied determines the final value of
that property unless otherwise specified in a Sprm definition in section 2.6.
Any restrictions on the ordering of Prls are included in the specifications of the individual Sprms
involved in the restriction. See sprmTDelete as an example.
In cases where multiple Sprms modify the same property, but are supported by different application
versions, an application generating a file MUST first emit the Sprm that has the lower ispmd,
followed by the Sprm that has the higher ispmd. For example, sprmPBrcTop80 and sprmPBrcTop
both modify the top border of a paragraph, but sprmPBrcTop can express more colors. If an
application emits only sprmPBrcTop, applications that support only sprmPBrcTop80 do not display a
top border.
2.2.5.1 Sprm
The Sprm structure specifies a modification to a property of a character, paragraph, table, or section.
                                         1                                            2                                       3
0   1   2   3   4   5   6   7   8    9        1    2   3    4     5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                            0                                       0
ispmd (9 bits): An unsigned integer that, when combined with fSpec, specifies the property being
   modified. See the tables in the Single Property Modifiers section (2.6) for the complete list of valid
   ispmd, fSpec, spra combinations for each sgc.
A - fSpec (1 bit): When combined with ispmd, specifies the property being modified. See the tables
    in the Single Property Modifiers section (2.6) for the complete list of valid ispmd, fSpec, spra
    combinations for each sgc.
sgc (3 bits): An unsigned integer that specifies the kind of document content to which this Sprm
   applies. The following table specifies the valid values and their meanings.
Sgc     Meaning
1       Sprm is modifying       a   paragraph property.
2       Sprm is modifying       a   character property.
3       Sprm is modifying       a   picture property.
4       Sprm is modifying       a   section property.
5       Sprm is modifying       a   table property.
                                                                                                                                      33 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
spra (3 bits): An unsigned integer that specifies the size of the operand of this Sprm. The following
   table specifies the valid values and their meanings.
Spra        Meaning
0           Operand is a ToggleOperand (which is 1 byte in size).
1           Operand is 1 byte.
2           Operand is 2 bytes.
3           Operand is 4 bytes.
4           Operand is 2 bytes.
5           Operand is 2 bytes.
6           Operand is of variable length. The first byte of the operand indicates the size of the rest of the
            operand, except in the cases of sprmTDefTable and sprmPChgTabs.
7           Operand is 3 bytes.
2.2.5.2 Prl
The Prl structure is a Sprm that is followed by an operand. The Sprm specifies a property to modify,
and the operand specifies the new value.
                                          1                                         2                                       3
0   1   2     3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                         0                                       0
...
operand (variable): A variable-length operand for the sprm. The size of the operand is specified by
   sprm.spra. The meaning of the operand depends on the sprm, see section 2.6 (Single Property
   Modifiers).
A file in Word Binary File Format can be password protected by using one of the following
mechanisms:
If FibBase.fEncrypted and FibBase.fObfuscation are both 1, the file is obfuscated by using XOR
obfuscation (section 2.2.6.1) as specified in section 2.2.6.1.
See Security Considerations for information about security concerns relating to file obfuscation and
encryption for this file format.
                                                                                                                                    34 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.2.6.1 XOR Obfuscation
The password verifier computed from the password as specified in Binary Document Password Verifier
Derivation Method 2 in [MS-OFFCRYPTO] section 2.3.7.4 MUST be stored in FibBase.lKey.
The WordDocument stream, the Table stream, and the Data stream MUST be obfuscated using XOR
Data Transformation Method 2 as specified in [MS-OFFCRYPTO] section 2.3.7.6. All other streams and
storages MUST NOT be obfuscated.
The byte transformation specified in [MS-OFFCRYPTO] section 2.3.7.6 MUST be carried out in the
WordDocument stream relative to the beginning of the stream, but the initial 68 bytes MUST be
written out with their untransformed values.
In a file that is password protected by using Office binary document RC4 encryption as specified in
[MS-OFFCRYPTO] section 2.3.6, FibBase.fEncrypted MUST be 1 and FibBase.fObfuscation MUST
be 0.
These three streams of data MUST be encrypted in 512-byte blocks. The block number MUST be set to
zero at the beginning of the stream and MUST be incremented at each 512-byte boundary. The
encryption algorithm MUST be carried out at the beginning of the Table stream and the
WordDocument stream even though some of the bytes are written in unencrypted form.
In a file that is password protected by using Office binary document RC4 CryptoAPI encryption as
specified in [MS-OFFCRYPTO] section 2.3.5, FibBase.fEncrypted MUST be 1 and
FibBase.fObfuscation MUST be 0.
These three streams of data MUST be encrypted in 512-byte blocks. The block number MUST be set to
zero at the beginning of the stream and MUST be incremented at each 512 byte boundary. The
encryption algorithm MUST be carried out at the beginning of the Table stream and the
WordDocument stream even though some of the bytes are written in unencrypted form.
The ObjectPool storage MUST NOT be present and if the file contains OLE objects, the storage
objects for the OLE objects MUST be stored in the Data stream as specified in sprmCPicLocation.
If fDocProps is set in the EncryptionHeader.Flags, the Encryption stream MUST be present, the
Summary Information stream MUST NOT be present, and a placeholder Document Summary
Information stream MUST be present as specified in [MS-OFFCRYPTO] section 2.3.5.4.
If fDocProps is not set in the EncryptionHeader.Flags, the Document Summary Information stream
and the Summary Information stream MUST NOT be encrypted.
                                                                                             35 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
All other streams and storages MUST NOT be encrypted<9>.
The range of CPs in a document is separated into multiple logical parts. Many features operate within
the individual parts and use CPs relative to the beginning of the part in which they operate rather than
relative to the beginning of the document. This section defines the document parts and specifies the
corresponding range of CPs.
All documents MUST include a non-empty Main Document part. In addition, if any of the other
document parts are non-empty, the document MUST include one additional paragraph mark
character (Unicode 0x000D) beyond the end of the last non-empty document part. That character is
not displayed to or editable by the user, because it is outside of any document part.
The main document contains all content outside any of the specialized document parts, including
anchors that specify where content from the other document parts appears.
The last character in the main document MUST be a paragraph mark (Unicode 0x000D).
2.3.2 Footnotes
The footnote document contains all of the content in the footnotes. It begins at the CP immediately
following the Main Document, and is FibRgLw97.ccpFtn characters long.
The locations of individual footnotes within the footnote document are specified by a PlcffndTxt whose
location is specified by the fcPlcffndTxt member of FibRgFcLcb97. The locations of the footnote
reference characters in the Main Document are specified by a PlcffndRef whose location is specified
by the fcPlcffndRef member of FibRgFcLcb97.
2.3.3 Headers
The header document contains all content in headers and footers as well as the footnote and endnote
separators. It begins immediately after the footnote document and is FibRgLw97.ccpHdd characters
long.
The header document is split into text ranges called stories, as specified by PlcfHdd. Each story
specifies the contents of a single header, footer, or footnote/endnote separator. If a story is non-
empty, it MUST end with a paragraph mark that serves as a guard between stories. This paragraph
mark is not considered part of the story contents (that is, if the story contents require a paragraph
mark themselves, a second paragraph mark MUST be used).
Stories are considered empty if they have no contents and no guard paragraph mark. Thus, an empty
story is indicated by the beginning CP, as specified in PlcfHdd, being the same as the next CP in
PlcfHdd.
0 Footnote separator
                                                                                                36 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Story number      Contents
3 Endnote separator
    The footnote and endnote separator stories do not need to contain whole paragraphs—that is,
    they do not necessarily need to have paragraph marks in their contents. However, they MUST
    have the guard paragraph marks if they are non-empty.
    Following the footnote and endnote separator stories are the stories that contain the contents of
    headers and footers. Six such stories MUST exist for every section of the Main Document. The
    first such group of stories specifies the contents of the headers and footers for the first section.
    The second group specifies the contents of the headers and footers for the second section, and so
    on. The stories within each group MUST appear in the following order.
0                            Even page header. This MUST be non-empty if different even and odd
                             headers and footers are enabled for the section.
1                            Odd page header. If different even and odd headers and footers are not
                             enabled for the section, the odd page header MUST be used on both even
                             and odd pages.
2                            Even page footer. This MUST be non-empty if different even and odd
                             headers and footers are enabled for the section.
3                            Odd page footer. If different even and odd headers and footers are not
                             enabled for the section, the odd page footer MUST be used on both even
                             and odd pages.
4                            First page header. This MUST be non-empty if different first page headers
                             and footers are enabled for the section.
5                            First page footer. This MUST be non-empty if different first page headers
                             and footers are enabled for the section.
Non-empty header and footer stories MUST contain whole paragraphs and thus MUST end with a
paragraph mark. Therefore, non-empty header and footer stories MUST have two paragraph marks at
their ends, one as part of the content followed by a separate guard paragraph mark.
An empty header or footer story specifies that the header or footer of the corresponding type of the
previous section is used. For the first section, an empty header or footer story specifies that it does
not have a header or footer of this type.
2.3.4 Comments
The comment document contains all of the content in the comments. It begins at the CP immediately
following the Header Document and is FibRgLw97.ccpAtn characters long.
The locations of individual comments within the comment document are specified by a PlcfandTxt
whose location is specified by the fcPlcfandTxt member of FibRgFcLcb97. The locations of the
comment reference characters in the Main Document are specified by a PlcfandRef whose location is
specified by the fcPlcfandRef member of FibRgFcLcb97.
2.3.5 Endnotes
The endnote document contains all of the content in the endnotes. It begins at the CP that
immediately follows the Comment Document and is FibRgLw97.ccpEdn characters long.
                                                                                                         37 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
The locations of individual endnotes within the endnote document are specified by a PlcfendTxt whose
location is specified by the fcPlcfendTxt member of FibRgFcLcb97. The locations of the endnote
reference characters in the Main Document are specified by a PlcfendRef whose location is specified by
the fcPlcfendRef member of FibRgFcLcb97.
2.3.6 Textboxes
The textbox document contains all of the content in the textboxes whose anchors are in the Main
Document. It begins at the CP immediately following the Endnote Document and is
FibRgLw97.ccpTxbx characters long.
The locations of individual textboxes within the textbox document are specified by a PlcftxbxTxt whose
location is specified by the fcPlcftxbxTxt member of the FibRgFcLcb97. The locations of the textbox
anchors in the Main Document are specified by a plcfSpa whose location is specified by the
fcPlcSpaMom member of the FibRgFcLcb97.
Not all members of a plcfSpa specify the location of a textbox. The lid member of the FTXBXS
structure specifies the relationship between shape anchors and textbox anchors.
The header textbox document contains all of the content in the textboxes whose anchors are in the
Header Document. It begins at the CP immediately following the Textbox Document and is
FibRgLw97.ccpHdrTxbx characters long.
The locations of individual textboxes within the header textbox document are specified by a
PlcfHdrtxbxTxt whose location is specified by the fcPlcfHdrtxbxTxt member of the FibRgFcLcb97.
The locations of the textbox anchors in the Header Document are specified by a plcfSpa whose
location is specified by the fcPlcSpaHdr member of the FibRgFcLcb97.
Not all members of a plcfSpa specify the location of a textbox. The lid member of the FTXBXS
structure specifies the relationship between shape anchors and textbox anchors.
This section specifies algorithms that are used to analyze document content and determine its
properties. These algorithms take CPs as input and return some piece of information about the
document content at that location. For example, the algorithm in section 2.4.1 returns the text at that
CP.
Collectively, these algorithms specify relationships among data structures in the file types that are
specified in this documentation. These relationships MUST be maintained. These algorithms are not
examples, but definitions of how to interpret these data structures.
These algorithms can derive significant performance benefits from common programming practices
such as caching the results from previous input.
The following algorithm specifies how to find the text at a particular character position (cp). Negative
character positions are not valid.
2.    All versions of the FIB contain exactly one FibRgFcLcb97, though it can be nested in a larger
      structure. FibRgFcLcb97.fcClx specifies the offset in the Table Stream of a Clx.
      FibRgFcLcb97.lcbClx specifies the size, in bytes, of that Clx. Read the Clx from the Table
      Stream.
                                                                                                 38 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
3.   The Clx contains a Pcdt, and the Pcdt contains a PlcPcd. Find the largest i such that
     PlcPcd.aCp[i] ≤ cp. As with all Plcs, the elements of PlcPcd.aCp are sorted in ascending order.
     Recall from the definition of a Plc that the aCp array has one more element than the aPcd array.
     Thus, if the last element of PlcPcd.aCp is less than or equal to cp, cp is outside the range of valid
     character positions in this document.
This section specifies how to find the beginning and end character positions of the paragraph that
contains a given character position. The character at the end character position of a paragraph MUST
be a paragraph mark, an end-of-section character, a cell mark, or a TTP mark (See Overview of
Tables). Negative character positions are not valid.
To find the character position of the first character in the paragraph that contains a given character
position cp:
1.   Follow the algorithm from Retrieving Text up to and including step 3 to find i. Also remember the
     FibRgFcLcb97 and PlcPcd found in step 1 of Retrieving Text. If the algorithm from Retrieving
     Text specifies that cp is invalid, leave the algorithm.
5.   Find the largest j such that plcbtePapx.aFc[j] ≤ fc. Read a PapxFkp at offset
     aPnBtePapx[j].pn *512 in the WordDocument Stream.
6.   Find the largest k such that PapxFkp.rgfc[k] ≤ fc. If the last element of PapxFkp.rgfc is less
     than or equal to fc, then cp is outside the range of character positions in this document, and is
     not valid. Let fcFirst be PapxFkp.rgfc[k].
7.   If fcFirst is greater than fcPcd, then let dfc be (fcFirst – fcPcd). If Pcd.fc.fCompressed is
     zero, then set dfc to dfc / 2. The first character of the paragraph is at character position
     PlcPcd.aCp[i] + dfc. Leave the algorithm.
8.   If PlcPcd.aCp[i] is 0, then the first character of the paragraph is at character position 0. Leave
     the algorithm.
                                                                                                  39 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
To find the character position of the last character in the paragraph that contains a given character
position cp:
1.   Follow the algorithm from Retrieving Text up to and including step 3 to find i. Also remember the
     FibRgFcLcb97, and PlcPcd found in step 1 of Retrieving Text. If the algorithm from Retrieving
     Text specifies that cp is invalid, leave the algorithm.
3.   Let fcPcd be Pcd.fc.fc. Let fc be fcPcd + 2(cp – PlcPcd.aCp[i]). Let fcMac be fcPcd +
     2(PlcPcd.aCp[i+1] - PlcPcd.aCp[i]). If Pcd.fc.fCompressed is one, set fc to fc/2, set fcPcd to
     fcPcd /2 and set fcMac to fcMac/2.
5.   Find largest k such that PapxFkp.rgfc[k] ≤ fc. If the last element of PapxFkp.rgfc is less than
     or equal to fc, then cp is outside the range of character positions in this document, and is not
     valid. Let fcLim be PapxFkp.rgfc[k+1].
6.   If fcLim ≤ fcMac, then let dfc be (fcLim – fcPcd). If Pcd.fc.fCompressed is zero, then set dfc
     to dfc / 2. The last character of the paragraph is at character position PlcPcd.aCp[i] + dfc – 1.
     Leave the algorithm.
A table cell consists of one or more paragraphs at the same nonzero table depth and, optionally, one
or more tables whose table depth is one greater than that of the containing cell. The last paragraph in
a table cell is terminated by a cell mark. If the table depth is 1, the cell mark MUST be character
Unicode 0x0007. If the table depth is greater than 1, the cell mark MUST be a paragraph mark
(Unicode 0x000D) with sprmPFInnerTableCell applied with a value of 1.
A table row has between 1 and 63 table cells, each at the same table depth, followed by a Table
Terminating Paragraph mark (TTP mark, also called a row mark), also at the same table depth. If the
table depth is 1, then the TTP mark MUST be a character Unicode 0x0007 with sprmPFTtp applied with
a value of 1. If the table depth is greater than 1, then the TTP mark MUST be a paragraph mark
(Unicode 0x000D) with sprmPFInnerTtp applied with a value of 1.
The table depth of a paragraph, table cell, or table row, is derived from the values of sprmPFInTable,
sprmPItap, and sprmPDtap applied as direct paragraph properties to the paragraph mark, cell mark,
or TTP mark. See section 2.4.6.1, Direct Paragraph Formatting for further specifications. Paragraphs
that are not in a table have a table depth of zero.
The following [ABNF] rulelist defines a table at depth N (TableN) in terms of paragraphs at depth N
(ParaN), cell marks at depth N (CellMarkN), TTP marks at depth N (TTPN), and tables at depth N+1
(TableN1). ABNF is specified in [RFC4234].
Two adjacent table rows of the same table depth are considered part of the same table unless they
differ in one of the following properties:
                                                                                                 40 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§   The operand to sprmTIpgp
If neither table row specifies nondefault values for the preceding table position and wrapping
properties, then two adjacent table rows of the same table depth are considered different tables if the
first paragraphs of the first cells of the rows differ in any of the paragraph frame properties specified
by sprmPPc, sprmPDxaAbs, sprmPDyaAbs, sprmPDxaWidth, sprmPWHeightAbs, sprmPDcs, sprmPWr,
sprmPDxaFromText, sprmPDyaFromText, sprmPFLocked, sprmPFNoAllowOverlap, and
sprmPFrameTextFlow.
In addition, two table rows are considered part of different tables if a range-level protection
bookmark is present whose type, as specified by the sdtt member of the corresponding SDTI, is
sdttPara and that bookmark (1) contains content from more than one table cell but does not contain
the entirety of both rows.
The properties of each row mark MUST define the cells for that table row. SprmTDefTable and
sprmTInsert are used to create cell definitions, and sprmTDelete is used to remove them. The number
of cell definitions applied to the row mark MUST be equal to the number of cells in the row. There is no
requirement that each row of a table have the same number of cells.
An application SHOULD<10> use sprmTDefTable to define table cells for applications that do not
process sprmPTableProps, and at the same time use sprmTInsert for applications that do process
sprmPTableProps.
The following diagram shows several elements of a table and gives examples of Sprms that can be
used to modify each. The table in this example includes spacing between cells to demonstrate borders
and shading. It includes a nested table to demonstrate table depth.
                                                                                                  41 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Figure 1: A sample table
To determine which borders are displayed, see the following sections from [ECMA-376] Part 4:
Cells can be vertically merged to create the appearance of a single cell spanning multiple rows. The
cell mark characters for the merged cells MUST still appear in the file. The second and subsequent
cells in the merged group MUST NOT contain any content other than their cell marks. The following
diagram shows a table with vertically merged cells. It uses inside borders to demonstrate that the
vertically merged cells act as one cell.
                                                                                               42 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Figure 2: A table with vertically merged cells
This section describes an algorithm to find the boundaries of the innermost table cell containing a
given character position or to determine that the given character position is not in a table cell. Every
valid character position in a document belongs to a paragraph, so table depth can be computed for
each paragraph. If a paragraph is found to be at depth zero, that paragraph is not in a table cell.
Given character position cp, use the following algorithm to determine if cp is in a table cell.
1.   Follow the procedure from Direct Paragraph Formatting to find the paragraph properties for the
     paragraph that contains cp. Apply the properties, and determine the table depth as specified in
     Overview of Tables. Call this itapOrig.
2.   If itapOrig is 0, then this paragraph is not in a table cell, so the following algorithms do not apply.
     Leave this algorithm. Otherwise, cp is in a table.
3.   If the character at character position cp is not a TTP mark as specified in Overview of Tables, then
     leave this algorithm.
4.   If itapOrig is 1, then the cp is not in a table cell. Leave this algorithm. Otherwise this TTP mark is
     in a cell itself, to determine the boundaries of the containing cell set itapOrig to itapOrig – 1 in
     the following algorithms.
Given a character position cp known to be at table depth itapOrig, follow this procedure to determine
the character position of the last character in the innermost table cell that contains cp.
Given a character position cp that is known to be at table depth itapOrig, follow this procedure to
determine the character position of the first character in the innermost table cell that contains cp.
                                                                                                       43 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.   Determine the character position of the first character in the paragraph that contains cp, as
     specified in Determining Paragraph Boundaries. Let this character position be called cpFirst.
3.   If cpFirst is zero, then this is the desired output. Leave the algorithm. Negative values for cpFirst
     are invalid. If cpFirst is negative, leave the algorithm.
4.   Let cpPrev be cpFirst – 1. Follow the procedure from Direct Paragraph Formatting to find the
     paragraph properties for the paragraph that contains cpPrev. Apply the properties, and determine
     the table depth as specified in Overview of Tables. Call this itapPrev.
5.   If itapPrev is less than itap, then cpFirst is the desired output. Leave the algorithm.
6.   If itapPrev is equal to itap, determine the text at character position cpPrev, as specified in
     Retrieving Text. If this character is a cell mark or a TTP mark, then cpFirst is the desired output.
     Leave the algorithm.
7.   Set cp to cpPrev. Go to step 2.
This section describes an algorithm to find the boundaries of the innermost table row containing a
given character position or to determine that the given character position is not in a table row. Every
valid character position in a document belongs to a paragraph, so table depth can be computed for
each paragraph. If a paragraph is found to be at depth zero, then that paragraph is not in a table row.
This algorithm is the same as Determining Cell Boundaries except that only TTP marks cause a
termination, not cell marks.
Given character position cp, use the following algorithm to determine if cp is in a table.
1.   Follow the procedure from Direct Paragraph Formatting to find the paragraph properties for the
     paragraph that contains cp. Apply the properties and determine the table depth as specified in
     Overview of Tables. Call this itap.
2.   If itap is zero, then this paragraph is not in a table row. Leave the algorithm.
Given a character position cp known to be at table depth itap, which is greater than 0, follow this
procedure to determine the character position of the TTP mark of the row that contains cp.
1.   Determine the character position of the last character in the paragraph that contains cp, as
     specified in Determining Paragraph Boundaries. Let this position be called cpLast.
2.   Follow the procedure from Direct Paragraph Formatting to find the paragraph properties for the
     paragraph that contains cpLast. Apply the properties and determine the table depth as specified
     in Overview of Tables. Call this itap'. It is invalid for itap' to be less than itap. If itap' is less than
     itap, leave the algorithm.
3.   If itap' is equal to itap, determine the text at character position cpLast, as specified in Retrieving
     Text. If this character is a TTP mark as specified in Overview of Tables, then cpLast is the desired
     output. Leave the algorithm.
4.   Let cp be cpLast + 1 and go to step 1.
Given a character position cp known to be at table depth itap, which is greater than 0, follow this
procedure to determine the character position of the first character in the innermost table row that
contains cp.
1.   Determine the character position of the first character in the paragraph that contains cp as
     specified in Determining Paragraph Boundaries. Let this character position be called cpFirst.
2.   If cpFirst is zero, then this is the desired output. Leave the algorithm. Negative values for cpFirst
     are invalid. If cpFirst is negative leave the algorithm.
3.   Let cpPrev be cpFirst – 1. Follow the procedure from Direct Paragraph Formatting to find the
     paragraph properties for the paragraph that contains cpPrev. Apply the properties, and determine
     the table depth as specified in Overview of Tables. Call this itapPrev.
4.   If itapPrev is less than itap, then cpFirst is the desired output. Leave the algorithm.
5.   If itapPrev is equal to itap, determine the text at character position cpPrev, as specified in
     Retrieving Text. If this character is a TTP mark as specified in Overview of Tables, then cpFirst is
     the desired output. Leave the algorithm.
                                                                                                       44 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
6.   Set cp to cpPrev. Go to step 1.
This section specifies algorithms for determining the properties of text, paragraphs, lists, and tables.
The final two subsections (Determining Properties of a Style and Determining Formatting Properties)
specify the order in which the arrays of Prls are combined to compute the final property set. Recall
from section 2.2.5 (Property Storage) that it is valid for multiple Prls to modify the same property. In
this event, the last Prl applied determines the value of that property, unless otherwise specified in the
specification of a particular Sprm. Thus, an application MUST process the arrays of Prls in the order
specified in section 2.4.6.6, Determining Formatting Properties, to arrive at the correct property set.
Recall also from section 2.2.5 (Property Storage) that a Prl MAY<11> be ignored by applications that
do not support the features represented by the Prl.
This section explains how to find the properties applied directly (as opposed to through a style, for
example) to a paragraph, given a character position cp within it. The properties are found as an array
of Prl elements.
1.   Follow the algorithm from Determining Paragraph Boundaries for finding the character position of
     the last character in the paragraph to completion. From step 5, remember the PapxFkp and k.
     From step 4, remember the offset in the WordDocument Stream at which PapxFkp was read. Let
     this offset be called of. From step 2 remember the Pcd. If the algorithm from Determining
     Paragraph Boundaries specifies that cp is invalid, leave the algorithm.
3.   Find a GrpprlAndIstd in the PapxInFkp from step 2. The offset and size of the GrpprlAndIstd
     is instructed by the first byte of the PapxInFkp, as detailed at PapxInFkp.
4.   Find the grpprl within the GrpprlAndIstd. This is an array of Prl elements that specifies the
     direct properties of this paragraph.
5.   Finally Pcd.Prm specifies further property modifications that apply to this paragraph. If Pcd.Prm
     is a Prm0 and the Sprm specified within Prm0 modifies a paragraph property, append to the
     array of Prl elements from the previous step a single Prl made of the Sprm and value in Prm0. if
     Pcd.Prm is a Prm1, append to the array of Prl elements from the previous step any Sprm
     structures that modify paragraph properties within the array of Prl elements specified by Prm1.
This section specifies how to find the properties applied directly to a given character position cp. The
result will be an array of Prl elements that specify the property modifications to be applied.
Additional formatting and properties can affect that cp as well, if a style is applied. To determine the
full set of properties, including those from styles, see section 2.4.6.6 Determining Formatting
Properties.
1.   Follow the algorithm from Retrieving Text. From step 5 or 6, determine the offset in the
     WordDocument Stream where text was found. Call this offset fc. Also remember from step 4, the
     Pcd. If the algorithm from Retrieving Text specifies cp is invalid, leave the algorithm.
                                                                                                  45 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
3.   Find the largest i such that plcbteChpx.aFc[i] ≤ fc. If the last element of plcbteChpx.aFc is less
     than or equal to fc, then cp is outside the range of character positions in this document, and is
     not valid. Read a ChpxFkp at offset aPnBteChpx[i].pn *512 in the WordDocument Stream.
4.   Find the largest j such that ChpxFkp.rgfc[j] ≤ fc. If the last element of ChpxFkp.rgfc is less than
     or equal to fc, then cp is outside the range of character positions in this document, and is not
     valid. Find a Chpx at offset ChpxFkp.rgb[i] in ChpxFkp.
5. The grpprl within the Chpx is an array of Prls that specifies the direct properties of this character.
6.   Additionally, apply Pcd.Prm which specifies additional properties for this text. If Pcd.Prm is a Prm0
     and the Sprm specified within Prm0 modifies a character property (a Sprm with an sgc value of
     2), append a single Prl made of the Sprm and value in that Prm0 to the array of Prls from the
     previous step. If Pcd.Prm is a Prm1, append any Sprms that modify character properties from the
     array of Prls specified by Prm1.
A list in an MS-DOC file consists of one or more paragraphs. Each paragraph in a list has a nonzero
iLfo property (see sprmPIlfo) and an iLvl property (see sprmPIlvl), which are used to determine the
information that is necessary to format the paragraph as a member in a specific list. Paragraphs that
share the same iLfo property, and exist in a range of text that constitutes a Valid Selection, are
considered to be part of the same list. Paragraphs in a list do not need to be consecutive, and a list
can overlap with other lists. This section describes an algorithm to add list formatting to a paragraph
containing a given character position.
Given character position cp, use the following three-part algorithm to add list formatting to the
paragraph containing cp.
Part 1
1.   Follow the procedure for determining formatting properties, as specified in section 2.4.6.6, to find
     the paragraph properties for the paragraph that cp belongs to.
2.   Let iLfoCur and iLvlCur be the iLfo (see sprmPIlfo) and iLvl (see sprmPIlvl) properties of the
     paragraph, respectively. If iLfoCur is zero, the paragraph is not part of a list, and the algorithm
     ends.
3.   Let lfo be the LFO at PlfLfo.rgLfo[iLfoCur -1]. If there is no such LFO, the file is invalid and the
     algorithm ends.
4.   Let lstf be the LSTF in PlfLst.rgLstf such that lstf.lsid equals lfo.lsid. If there is no such LSTF,
     the file is invalid and the algorithm ends.
6.   Let lfolvl be the LFOLVL in lfodata.rgLfoLvl such that lfolvl.iLvl equals iLvlCur, if such an
     LFOLVL exists. If there is no such LFOLVL, go to part 1 step 8.
8.   Let i be 0. For each LSTF in PlfLst.rgLstf prior to lstf, if LSTF.fSimple is zero, let i = i + 9, if
     LSTF.fSimple is nonzero, let i be i + 1.
9. Let i be i + iLvlCur.
                                                                                                      46 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
10. Let lvl be the ith LVL in the array of LVLs appended to PlfLst (see the fcPlfLst field of
    FibRgFcLcb97).
Part 2
After the lstf and lvl are determined, the next step is to determine the number text of the paragraph.
2.   If lvl.lvlf.nfc is not equal to 0x17, go to part 2 step 4. If lvl.lvlf.nfc is equal to 0x17, the
     paragraph is in a bulleted level.
Part 3
After the number text of the paragraphs is determined, the final step is to format the paragraph and
the number text.
The level number of a paragraph is the number in the number sequence of the level that corresponds
to that paragraph, formatted according to an MSONFC (as specified in [MS-OSHARED] section
2.2.1.3). The number sequence of a level begins at a specified value and increments by 1 for each
paragraph in the level. Also, the number sequence of a level can restart when certain other levels are
encountered. See the specification of LVLF for more information. This section describes an algorithm
to determine the level number of a paragraph containing a given character position.
Given character position cp, use the following algorithm to determine the level number of the
paragraph containing cp:
                                                                                                        47 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
1.   Follow steps 1 thru 10 of Determining List Formatting of a Paragraph to get the iLfoCur, iLvlCur,
     lfolvl, and lvl that correspond to the paragraph that cp belongs to.
2.   Let nfcCur be lvl.lvlf.nfc. If nfcCur is equal to 0xFF or 0x17, this level has no number sequence,
     and the level number of the paragraph is an empty string. In this case, let xsLevelNumber be an
     empty string, and the algorithm ends.
3.   If lfolvl exists, and lfolvl.fStartAt is nonzero and lfolvl.fFormatting is zero, let iStartAt be
     lfolvl.iStartAt. Otherwise, let iStartAt be lvl.lvlf.iStartAt.
6.   For each paragraph p that has an iLfo property that is equal to iLfoCur and that is in the same
     Valid Selection as cp, beginning with the paragraph starting at the lowest character position up to
     but not including the paragraph containing cp: If the iLvl property of the paragraph p is less than
     iLvlRestartLim, let numCur be iStartAt. If the iLvl of the paragraph p equals iLvlCur, let numCur
     be numCur + 1.
7.   Let xsLevelNumber be a string containing the number specified by numCur formatted according to
     the MSONFC (as specified in [MS-OSHARED] section 2.2.1.3) specified by nfcCur.
This section specifies an algorithm to determine the set of properties to apply to text, a paragraph, a
table, or a list when a particular style is applied to it. Given an istd, one or more arrays of Prl can be
derived that express the differences from defaults for this style. Depending on its stk, a style can
specify properties for any combination of tables, paragraphs, and characters.
Given an istd:
2.   All versions of the FIB contain exactly one FibRgFcLcb97 though it can be nested in a larger
     structure. Read a STSH from offset FibRgFcLcb97.fcStshf in the Table Stream with size
     FibRgFcLcb97.lcbStshf.
3. The given istd is a zero-based index into STSH.rglpstd. Read an LPStd at STSH.rglpstd[istd].
5.   From the STD.stdf.stdfBase obtain istdBase. If istdBase is any value other than 0x0FFF, then
     this style is based on another style. Recursively apply this algorithm using istdBase as the
     starting istd to obtain one or more arrays of Prls as the properties for tables, paragraphs and
     characters from the base style.
6.   From the STD.stdf.stdfBase obtain stk. For more information, see the description of the cupx
     member of StdfBase. Read an STD.grLPUpxSw. Based on the stk, grLPUpxSw contains one of
     the following structures: StkParaGRLPUPX, StkCharGRLPUPX, StkTableGRLPUPX, StkListGRLPUPX.
7.   Each of the preceding structures contains one or more of the following: LPUpxPapx, LPUpxChpx,
     LPUpxTapx. Each of the latter structures leads to one or more arrays of Prl that specify properties.
                                                                                                   48 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
     For more information, see the sections documenting these structures for how to obtain these
     arrays.
8.   For each array obtained in step 7 that specifies properties of a table, paragraph, or characters,
     append to the beginning of the corresponding array from step 5, if any. The resulting arrays of Prl
     are the desired output. Leave the algorithm.
This section specifies an algorithm for how to combine properties from various sources that influence
the properties of a character position to obtain the final formatting.
Character, paragraph, and table properties of the text at any given character position are specified by
lists of differences from the defaults. Property Storage explains how to determine defaults and how to
apply property differences. This section further specifies which lists of property differences are
applicable and the order in which they apply.
In general, the differences from defaults are specified by one or more styles as well as any directly
applied property modifications. Multiple styles can influence the properties at a given character
position. A table style, for example, can specify paragraph properties that apply to some or all
paragraphs within that table. A paragraph in such a table can itself have a paragraph style, in which
case two different lists of differences modify the properties of said paragraph.
Given character position cp, use the following algorithm to determine the properties of text at cp:
Part 1:
1.       Determine defaults for all properties the application is interested in. For further specification,
     see Property Storage.
2.       Split the properties into three groups based on the objects they apply to: paragraph
     properties, character properties, and table properties as specified by Single Property Modifies.
     These are the set of properties which will be modified throughout the algorithm to arrive at the
     desired properties.
3.       All versions of the FIB contain exactly one FibRgFcLcb97 though it can be nested in a larger
     structure. Read an STSH from offset FibRgFcLcb97.fcStshf in the Table Stream, with size
     FibRgFcLcb97.lcbStshf. From the STSH, obtain an LPStshi and from that obtain an STSHI.
4.      Apply the property modifications specified by the ftcAsci, ftcFE and ftcOther members of the
     STSHI.Stshif along with the ftcBi member of STSHI if specified.
5.      Determine whether cp is in a table or not. For further specification, see Determining Cell
     Boundaries. If cp is not in a table, go to step 1 of part 2.
6. Determine the table style that is applied to the innermost row that contains cp as follows:
     1.           Apply the algorithm from Determining Row Boundaries to obtain the character position
          of the TTP mark of the innermost row that contains cp. Call this cpTtp.
     3.            Apply the array of Prl elements that was obtained to the table row and determine the
          istd of the table style applied to this table row using sprmTIstd. Call it istdTable. If no table
          style is applied, go to step 1 of part 2.
                                                                                                     49 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
8.       Find the position of the innermost cell that contains cp within the innermost table that
     contains cp by applying the algorithm from Determining Row Boundaries and Determining Cell
     Boundaries as appropriate. Specifically, determine if the innermost cell that contains cp belongs to
     the first row, first column, last row, or last column of the innermost table that contains cp. Also,
     determine whether the innermost cell that contains cp is in an even or an odd horizontal band
     based on horizontal banding applied in grpprlTapx with sprmTCHorzBands and, similarly, if it is in
     an even or an odd vertical band based on vertical banding applied in grpprlTapx with
     sprmTCVertBands. Note that if sprmTTlp.grfatl specifies that the top row of the table receives
     special formatting, then the top row of the table and any row with sprmTTableHeader applied with
     a value of 0x01 is not counted when determining odd or even horizontal banding. Similarly, if
     sprmTTlp.grfatl specifies that the logically leftmost column of the table receives special
     formatting, then that column is not counted when determining odd or even vertical banding.
9.        Next, using the array of Prls obtained in step 6, determine if additional property differences
     need to be applied to cp based on its location in the table as specified by sprmTTlp.grfatl. If
     additional property differences need to be applied, look for sprmPCnfs within the grpprlPapx from
     step 7, sprmCCnfs within grpprlChpx from step 7, and sprmTCnfs within grpprlTapx from step 7
     whose CNFC, see CNFOperand.cnfc, matches the position information found in step 8. The
     following table specifies which CNFC values match which position information.
CNFC
Value      Matches …
0x0001     Any cell in the top row or with sprmTTableHeader applied with a value of 0x01 if sprmTTlp.grfatl
           specifies that top row of the table receives special formatting.
0x0002     Any cell in the bottom row if sprmTTlp.grfatl specifies that bottom row of the table receives
           special formatting and the cell does not match CNFC value 0x0001.
0x0004     Any cell in the logically leftmost column if sprmTTlp.grfatl specifies that the logically leftmost
           column receives special formatting.
0x0008     Any cell in the logically rightmost column if sprmTTlp.grfatl specifies that the logically rightmost
           column receives special formatting and the cell does not match CNFC value 0x0004.
0x0010     Any cell in an odd numbered vertical band if sprmTTlp.grfatl specifies that odd numbered vertical
           bands receive special formatting and the cell does not match CNFC values 0x0004 or 0x0008.
0x0020     Any cell in an even numbered vertical band if sprmTTlp.grfatl specifies that even numbered
           vertical bands receive special formatting, and the cell does not match CNFC values 0x0004 or
           0x0008.
0x0040     Any cell in an odd numbered horizontal band if sprmTTlp.grfatl specifies that odd numbered
           horizontal bands receive special formatting, and the cell does not match CNFC values 0x0001 or
           0x0002.
0x0080     Any cell in an even numbered horizontal band if sprmTTlp.grfatl specifies that even numbered
           horizontal bands receive special formatting, and the cell does not match CNFC values 0x0001 or
           0x0002.
0x0100     The logically rightmost cell on the top row of the table if sprmTTlp.grfatl specifies that both the
           top row and the logically rightmost column receive special formatting and the cell does not match
           CNFC value 0x200.
0x0200     The logically leftmost cell on the top row of the table if sprmTTlp.grfatl specifies that both the
           top row and the logically leftmost column receive special formatting.
0x0400     The logically rightmost cell on the bottom row of the table if sprmTTlp.grfatl specifies that both
           the bottom row and the logically rightmost column receive special formatting and the cell does
           not match CNFC value 0x0100, 0x0200, or 0x0800.
0x0800     The logically leftmost cell on the bottom row of the table if sprmTTlp.grfatl specifies that both
           the bottom row and the logically leftmost column receive special formatting and the cell does not
           match CNFC value 0x0100 or 0x0200.
     A single cell position can match multiple CNFC values. For example the logically rightmost cell on
     the top row could match all of these CNFC values: 0x0100, 0x0008, 0x0001. Apply conditional
     formatting in the following order.
                                                                                                           50 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
CNFC Values                                           Conditional Formatting Type
Apply any property modifications specified in a matching sprmCCnf, if one exists, to the character
properties. Apply any property modifications specified in a matching sprmPCnf, if one exists, to
paragraph properties. Apply any property modifications specified in a matching sprmTCnf, if one
exists, to table properties.
Part 2:
1.       Apply the algorithm from Direct Paragraph Formatting up to and including step 4. The
     remaining steps of that algorithm are applied later. Obtain GrpprlAndIstd. Using the algorithm
     from Determining Properties of a Style, obtain any paragraph property modifications that are
     specified by GrpprlAndIstd.istd.
3.       If the paragraph that contains cp belongs to a list, apply any further paragraph property
     modifications specified by the list. For information about how to determine whether a paragraph
     belongs to a list and how to obtain the property modifications specified by the list, see
     Determining List Formatting of a Paragraph. At this point the paragraph properties reflect those of
     the paragraph that contains cp. The remaining steps determine the character properties.
4.       Using the algorithm from Determining Properties of a Style, obtain any character property
     modifications specified by GrpprlAndIstd.istd from step 1 of part 2 or the value of the last
     sprmPIstdPermute if any in GrpprlAndIstd.grpprl. Apply any character property modifications
     obtained from the style to the character properties.
5.      Finally, using the algorithm from Direct Character Formatting, obtain any property
     modifications to be applied to character properties and apply them.
The following algorithm specifies how hyperlink properties, as specified in [MS-OSHARED] section
2.3.3.1.18, are associated with content in a document construct their dwApp field value.
§    If the hyperlink is associated directly with a picture, as opposed to the hyperlink field associated
     with the picture, or an external link to a picture source, the dwApp value MUST be set to an
     FcCompressed structure that specifies the starting offset of the field result in the WordDocument
     Stream associated with the picture. For further specification on field results, see PlcFld.
§    If the hyperlink is associated with any other type of document content, including the hyperlink
     field of a WordArt shape or picture, the dwApp value MUST be set to an unsigned 4-byte integer
     that specifies the index into a PlcFld. The specified PlcFld item corresponds to the field begin
     character of the hyperlink field in the document content associated with the hyperlink property.
     The hyperlink properties that have dwApp set to an index into a PlcFld MUST conform to a
     specific ordering relative to each other when written. They MUST be written within the property
                                                                                                   51 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
      set hyperlink property array VtHyperlinks, as specified in [MS-OSHARED] section 2.3.3.1.21,
      grouped according to the document PlcFld to which the indices apply, in the following order:
             Within these groupings the hyperlink properties MUST be ordered from largest index to
             smallest index.
Example:
             A document contains two hyperlink fields in the Main Document, and two hyperlink fields in
             the Footnote Document. The field indices for the hyperlinks (h1M, and h2M) in the Main
             Document are 1 and 4 respectively. The field indices for the hyperlinks (h1F, and h2F) in the
             Footnote Document are 0 and 3 respectively.
The hyperlink properties in this example MUST be written in the order: h2M, h1M, h2F, h1F.
2.5.1 Fib
The Fib structure contains information about the document and specifies the file pointers to various
portions that make up the document.
The Fib is a variable length structure. With the exception of the base portion which is fixed in size,
every section is preceded with a count field that specifies the size of the next section.
                                           1                                         2                                       3
0    1   2   3   4   5   6   7     8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                         0                                       0
...
...
...
...
... cslw
                                                                                                                                     52 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                              ...
...
...
...
csw (2 bytes): An unsigned integer that specifies the count of 16-bit values corresponding to
   fibRgW that follow. MUST be 0x000E.
cslw (2 bytes): An unsigned integer that specifies the count of 32-bit values corresponding to
   fibRgLw that follow. MUST be 0x0016.
cbRgFcLcb (2 bytes): An unsigned integer that specifies the count of 64-bit values corresponding to
   fibRgFcLcbBlob that follow. This MUST be one of the following values, depending on the value of
   nFib.
cswNew (2 bytes): An unsigned integer that specifies the count of 16-bit values corresponding to
   fibRgCswNew that follow. This MUST be one of the following values, depending on the value of
   nFib.
2.5.2 FibBase
                                                                                                 53 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                            1                                       2                                             3
0   1   2   3   4   5   6    7      8   9       1   2   3   4   5   6   7   8   9       1       2   3     4   5   6   7   8   9       1
                                            0                                       0                                             0
wIdent nFib
unused lid
pnNext A B C D E F G H I J K L M
nFibBack lKey
... envr N O P Q R S
reserved3 reserved4
reserved5
reserved6
wIdent (2 bytes): An unsigned integer that specifies that this is a Word Binary File. This value MUST
   be 0xA5EC.
nFib (2 bytes): An unsigned integer that specifies the version number of the file format used.
   Superseded by FibRgCswNew.nFibNew if it is present. This value SHOULD<12> be 0x00C1.
lid (2 bytes): A LID that specifies the install language of the application that is producing the
     document. If nFib is 0x00D9 or greater, then any East Asian install lid or any install lid with a base
     language of Spanish, German or French MUST be recorded as lidAmerican. If the nFib is 0x0101 or
     greater, then any install lid with a base language of Vietnamese, Thai, or Hindi MUST be recorded
     as lidAmerican.
pnNext (2 bytes): An unsigned integer that specifies the offset in the WordDocument stream of the
   FIB for the document which contains all the AutoText items. If this value is 0, there are no
   AutoText items attached. Otherwise the FIB is found at file location pnNext×512. If fGlsy is 1 or
   fDot is 0, this value MUST be 0. If pnNext is not 0, each FIB MUST share the same values for
   FibRgFcLcb97.fcPlcBteChpx, FibRgFcLcb97.lcbPlcBteChpx, FibRgFcLcb97.fcPlcBtePapx,
   FibRgFcLcb97.lcbPlcBtePapx, and FibRgLw97.cbMac.
B - fGlsy (1 bit): Specifies whether this is a document that contains only AutoText items (see
    FibRgFcLcb97.fcSttbfGlsy, FibRgFcLcb97.fcPlcfGlsy and FibRgFcLcb97.fcSttbGlsyStyle).
C - fComplex (1 bit): Specifies that the last save operation that was performed on this document
    was an incremental save operation.
E - cQuickSaves (4 bits): An unsigned integer. If nFib is less than 0x00D9, then cQuickSaves
    specifies the number of consecutive times this document was incrementally saved. If nFib is
    0x00D9 or greater, then cQuickSaves MUST be 0xF.
                                                                                                                                          54 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
G - fWhichTblStm (1 bit): Specifies the Table stream to which the FIB refers. When this value is set
    to 1, use 1Table; when this value is set to 0, use 0Table.
K - fLoadOverride (1 bit): Specifies whether to override the language information and font that are
    specified in the paragraph style at istd 0 (the normal style) with the defaults that are appropriate
    for the installation language of the application.
L - fFarEast (1 bit): Specifies whether the installation language of the application that created the
    document was an East Asian language.
M - fObfuscated (1 bit): If fEncrypted is 1, this bit specifies whether the document is obfuscated
    by using XOR obfuscation (section 2.2.6.1); otherwise, this bit MUST be ignored.
nFibBack (2 bytes): This value SHOULD<14> be 0x00BF. This value MUST be 0x00BF or 0x00C1.
lKey (4 bytes): If fEncrypted is 1 and fObfuscation is 1, this value specifies the XOR obfuscation
   (section 2.2.6.1) password verifier. If fEncrypted is 1 and fObfuscation is 0, this value specifies
   the size of the EncryptionHeader that is stored at the beginning of the Table stream as
   described in Encryption and Obfuscation. Otherwise, this value MUST be 0.
P - fLoadOverridePage (1 bit): Specifies whether to override the section properties for page size,
    orientation, and margins with the defaults that are appropriate for the installation language of the
    application.
2.5.3 FibRgW97
                                        1                                       2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                       0                                       0
reserved1 reserved2
                                                                                                                                55 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                         reserved3                                                       reserved4
reserved5 reserved6
reserved7 reserved8
reserved9 reserved10
reserved11 reserved12
reserved13 lidFE
lidFE (2 bytes): A LID whose meaning depends on the nFib value, which is one of the following.
2.5.4 FibRgLw97
The FibRgLw97 structure is the third section of the FIB. This contains an array of 4-byte values.
                                         1                                       2                                       3
0   1   2   3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                       0                                       0
cbMac
                                                                                                                                 56 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                         reserved1
reserved2
ccpText
ccpFtn
ccpHdd
reserved3
ccpAtn
ccpEdn
ccpTxbx
ccpHdrTxbx
reserved4
reserved5
reserved6
reserved7
reserved8
reserved9
reserved10
reserved11
reserved12
reserved13
reserved14
cbMac (4 bytes): Specifies the count of bytes of those written to the WordDocument stream of the
   file that have any meaning. All bytes in the WordDocument stream at offset cbMac and greater
   MUST be ignored.
ccpText (4 bytes): A signed integer that specifies the count of CPs in the main document. This value
   MUST be zero, 1, or greater.
                                                                                             57 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
ccpFtn (4 bytes): A signed integer that specifies the count of CPs in the footnote subdocument. This
   value MUST be zero, 1, or greater.
ccpHdd (4 bytes): A signed integer that specifies the count of CPs in the header subdocument. This
   value MUST be zero, 1, or greater.
ccpAtn (4 bytes): A signed integer that specifies the count of CPs in the comment subdocument.
   This value MUST be zero, 1, or greater.
ccpEdn (4 bytes): A signed integer that specifies the count of CPs in the endnote subdocument. This
   value MUST be zero, 1, or greater.
ccpTxbx (4 bytes): A signed integer that specifies the count of CPs in the textbox subdocument of
   the main document. This value MUST be zero, 1, or greater.
ccpHdrTxbx (4 bytes): A signed integer that specifies the count of CPs in the textbox subdocument
   of the header. This value MUST be zero, 1, or greater.
reserved6 (4 bytes): This value MUST be equal or less than the number of data elements in
   PlcBteChpx, as specified by FibRgFcLcb97.fcPlcfBteChpx and
   FibRgFcLcb97.lcbPlcfBteChpx. This value MUST be ignored.
reserved9 (4 bytes): This value MUST be less than or equal to the number of data elements in
   PlcBtePapx, as specified by FibRgFcLcb97.fcPlcfBtePapx and
   FibRgFcLcb97.lcbPlcfBtePapx. This value MUST be ignored.
2.5.5 FibRgFcLcb
The FibRgFcLcb structure specifies the file offsets and byte counts for various portions of the data in
the document. The structure of FibRgFcLcb depends on the value of nFib, which is one of the
following.
Value Meaning
0x00C1 fibRgFcLcb97
0x00D9 fibRgFcLcb2000
0x0101 fibRgFcLcb2002
0x010C fibRgFcLcb2003
0x0112 fibRgFcLcb2007
                                                                                                58 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.5.6 FibRgFcLcb97
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4    5   6     7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                           0                                       0
fcStshfOrig
lcbStshfOrig
fcStshf
lcbStshf
fcPlcffndRef
lcbPlcffndRef
fcPlcffndTxt
lcbPlcffndTxt
fcPlcfandRef
lcbPlcfandRef
fcPlcfandTxt
lcbPlcfandTxt
fcPlcfSed
lcbPlcfSed
fcPlcPad
lcbPlcPad
fcPlcfPhe
lcbPlcfPhe
fcSttbfGlsy
lcbSttbfGlsy
fcPlcfGlsy
lcbPlcfGlsy
fcPlcfHdd
                                                                                                                                    59 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                           lcbPlcfHdd
fcPlcfBteChpx
lcbPlcfBteChpx
fcPlcfBtePapx
lcbPlcfBtePapx
fcPlcfSea
lcbPlcfSea
fcSttbfFfn
lcbSttbfFfn
fcPlcfFldMom
lcbPlcfFldMom
fcPlcfFldHdr
lcbPlcfFldHdr
fcPlcfFldFtn
lcbPlcfFldFtn
fcPlcfFldAtn
lcbPlcfFldAtn
fcPlcfFldMcr
lcbPlcfFldMcr
fcSttbfBkmk
lcbSttbfBkmk
fcPlcfBkf
lcbPlcfBkf
fcPlcfBkl
lcbPlcfBkl
                                                          60 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                              fcCmds
lcbCmds
fcUnused1
lcbUnused1
fcSttbfMcr
lcbSttbfMcr
fcPrDrvr
lcbPrDrvr
fcPrEnvPort
lcbPrEnvPort
fcPrEnvLand
lcbPrEnvLand
fcWss
lcbWss
fcDop
lcbDop
fcSttbfAssoc
lcbSttbfAssoc
fcClx
lcbClx
fcPlcfPgdFtn
lcbPlcfPgdFtn
fcAutosaveSource
lcbAutosaveSource
fcGrpXstAtnOwners
                                                             61 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                         lcbGrpXstAtnOwners
fcSttbfAtnBkmk
lcbSttbfAtnBkmk
fcUnused2
lcbUnused2
fcUnused3
lcbUnused3
fcPlcSpaMom
lcbPlcSpaMom
fcPlcSpaHdr
lcbPlcSpaHdr
fcPlcfAtnBkf
lcbPlcfAtnBkf
fcPlcfAtnBkl
lcbPlcfAtnBkl
fcPms
lcbPms
fcFormFldSttbs
lcbFormFldSttbs
fcPlcfendRef
lcbPlcfendRef
fcPlcfendTxt
lcbPlcfendTxt
fcPlcfFldEdn
lcbPlcfFldEdn
                                                              62 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                             fcUnused4
lcbUnused4
fcDggInfo
lcbDggInfo
fcSttbfRMark
lcbSttbfRMark
fcSttbfCaption
lcbSttbfCaption
fcSttbfAutoCaption
lcbSttbfAutoCaption
fcPlcfWkb
lcbPlcfWkb
fcPlcfSpl
lcbPlcfSpl
fcPlcftxbxTxt
lcbPlcftxbxTxt
fcPlcfFldTxbx
lcbPlcfFldTxbx
fcPlcfHdrtxbxTxt
lcbPlcfHdrtxbxTxt
fcPlcffldHdrTxbx
lcbPlcffldHdrTxbx
fcStwUser
lcbStwUser
fcSttbTtmbd
                                                               63 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                            lcbSttbTtmbd
fcCookieData
lcbCookieData
fcPgdMotherOldOld
lcbPgdMotherOldOld
fcBkdMotherOldOld
lcbBkdMotherOldOld
fcPgdFtnOldOld
lcbPgdFtnOldOld
fcBkdFtnOldOld
lcbBkdFtnOldOld
fcPgdEdnOldOld
lcbPgdEdnOldOld
fcBkdEdnOldOld
lcbBkdEdnOldOld
fcSttbfIntlFld
lcbSttbfIntlFld
fcRouteSlip
lcbRouteSlip
fcSttbSavedBy
lcbSttbSavedBy
fcSttbFnm
lcbSttbFnm
fcPlfLst
lcbPlfLst
                                                              64 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                              fcPlfLfo
lcbPlfLfo
fcPlcfTxbxBkd
lcbPlcfTxbxBkd
fcPlcfTxbxHdrBkd
lcbPlcfTxbxHdrBkd
fcDocUndoWord9
lcbDocUndoWord9
fcRgbUse
lcbRgbUse
fcUsp
lcbUsp
fcUskf
lcbUskf
fcPlcupcRgbUse
lcbPlcupcRgbUse
fcPlcupcUsp
lcbPlcupcUsp
fcSttbGlsyStyle
lcbSttbGlsyStyle
fcPlgosl
lcbPlgosl
fcPlcocx
lcbPlcocx
fcPlcfBteLvc
                                                             65 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                           lcbPlcfBteLvc
dwLowDateTime
dwHighDateTime
fcPlcfLvcPre10
lcbPlcfLvcPre10
fcPlcfAsumy
lcbPlcfAsumy
fcPlcfGram
lcbPlcfGram
fcSttbListNames
lcbSttbListNames
fcSttbfUssr
lcbSttbfUssr
fcStshf (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An STSH that
    specifies the style sheet for this document begins at this offset.
lcbStshf (4 bytes): An unsigned integer that specifies the size, in bytes, of the STSH that begins at
    offset fcStshf in the Table Stream. This MUST be a nonzero value.
fcPlcffndRef (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcffndRef begins at this offset and specifies the locations of footnote references in the Main
    Document, and whether those references use auto-numbering or custom symbols. If
    lcbPlcffndRef is zero, fcPlcffndRef is undefined and MUST be ignored.
lcbPlcffndRef (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcffndRef
    that begins at offset fcPlcffndRef in the Table Stream.
fcPlcffndTxt (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcffndTxt begins at this offset and specifies the locations of each block of footnote text in the
    Footnote Document. If lcbPlcffndTxt is zero, fcPlcffndTxt is undefined and MUST be ignored.
lcbPlcffndTxt (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcffndTxt
    that begins at offset fcPlcffndTxt in the Table Stream.
                                                                                                 66 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fcPlcfandRef (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcfandRef begins at this offset and specifies the dates, user initials, and locations of comments
    in the Main Document. If lcbPlcfandRef is zero, fcPlcfandRef is undefined and MUST be ignored.
lcbPlcfandRef (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfandRef at
    offset fcPlcfandRef in the Table Stream.
fcPlcfandTxt (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcfandTxt begins at this offset and specifies the locations of comment text ranges in the
    Comment Document. If lcbPlcfandTxt is zero, fcPlcfandTxt is undefined, and MUST be ignored.
lcbPlcfandTxt (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfandTxt at
    offset fcPlcfandTxt in the Table Stream.
fcPlcfSed (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfSed
    begins at this offset and specifies the locations of property lists for each section in the Main
    Document. If lcbPlcfSed is zero, fcPlcfSed is undefined and MUST be ignored.
lcbPlcfSed (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfSed that
    begins at offset fcPlcfSed in the Table Stream.
fcPlcfPhe (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A Plc begins
    at this offset and specifies version-specific information about paragraph height. This Plc SHOULD
    NOT<27> be emitted and SHOULD<28> be ignored.
lcbPlcfPhe (4 bytes): An unsigned integer that specifies the size, in bytes, of the Plc at offset
    fcPlcfPhe in the Table Stream.
fcSttbfGlsy (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A SttbfGlsy
    that contains information about the AutoText items that are defined in this document begins at
    this offset.
lcbSttbfGlsy (4 bytes): An unsigned integer that specifies the size, in bytes, of the SttbfGlsy at
    offset fcSttbfGlsy in the Table Stream. If base.fGlsy of the Fib that contains this FibRgFcLcb97
    is zero, this value MUST be zero.
fcPlcfGlsy (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfGlsy
    that contains information about the AutoText items that are defined in this document begins at
    this offset.
lcbPlcfGlsy (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfGlsy at offset
    fcPlcfGlsy in the Table Stream. If base.fGlsy of the Fib that contains this FibRgFcLcb97 is zero,
    this value MUST be zero.
fcPlcfHdd (4 bytes): An unsigned integer that specifies the offset in the Table Stream where a
    Plcfhdd begins. The Plcfhdd specifies the locations of each block of header/footer text in the
    WordDocument Stream. If lcbPlcfHdd is 0, fcPlcfHdd is undefined and MUST be ignored.
lcbPlcfHdd (4 bytes): An unsigned integer that specifies the size, in bytes, of the Plcfhdd at offset
    fcPlcfHdd in the Table Stream. If there is no Plcfhdd, this value MUST be zero. A Plcfhdd MUST
    exist if FibRgLw97.ccpHdd indicates that there are characters in the Header Document (that is,
    if FibRgLw97.ccpHdd is greater than 0). Otherwise, the Plcfhdd MUST NOT exist.
                                                                                                 67 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fcPlcfBteChpx (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcBteChpx begins at the offset. fcPlcfBteChpx MUST be greater than zero, and MUST be a valid
    offset in the Table Stream.
lcbPlcfBteChpx (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcBteChpx
    at offset fcPlcfBteChpx in the Table Stream. lcbPlcfBteChpx MUST be greater than zero.
fcPlcfBtePapx (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcBtePapx begins at the offset. fcPlcfBtePapx MUST be greater than zero, and MUST be a valid
    offset in the Table Stream.
lcbPlcfBtePapx (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcBtePapx
    at offset fcPlcfBtePapx in the Table Stream. lcbPlcfBteChpx MUST be greater than zero.
fcSttbfFfn (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An SttbfFfn
    begins at this offset. This table specifies the fonts that are used in the document. If lcbSttbfFfn is
    0, fcSttbfFfn is undefined and MUST be ignored.
lcbSttbfFfn (4 bytes): An unsigned integer that specifies the size, in bytes, of the SttbfFfn at offset
    fcSttbfFfn in the Table Stream.
fcPlcfFldMom (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcFld
    begins at this offset and specifies the locations of field characters in the Main Document. All CPs in
    this PlcFld MUST be greater than or equal to 0 and less than or equal to FibRgLw97.ccpText. If
    lcbPlcfFldMom is zero, fcPlcfFldMom is undefined and MUST be ignored.
lcbPlcfFldMom (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcFld at
    offset fcPlcfFldMom in the Table Stream.
fcPlcfFldHdr (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcFld
    begins at this offset and specifies the locations of field characters in the Header Document. All CPs
    in this PlcFld are relative to the starting position of the Header Document. All CPs in this PlcFld
    MUST be greater than or equal to zero and less than or equal to FibRgLw97.ccpHdd. If
    lcbPlcfFldHdr is zero, fcPlcfFldHdr is undefined and MUST be ignored.
lcbPlcfFldHdr (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcFld at offset
    fcPlcfFldHdr in the Table Stream.
fcPlcfFldFtn (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcFld
    begins at this offset and specifies the locations of field characters in the Footnote Document. All
    CPs in this PlcFld are relative to the starting position of the Footnote Document. All CPs in this
    PlcFld MUST be greater than or equal to zero and less than or equal to FibRgLw97.ccpFtn. If
    lcbPlcfFldFtn is zero, fcPlcfFldFtn is undefined, and MUST be ignored.
lcbPlcfFldFtn (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcFld at offset
    fcPlcfFldFtn in the Table Stream.
fcPlcfFldAtn (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcFld
    begins at this offset and specifies the locations of field characters in the Comment Document. All
    CPs in this PlcFld are relative to the starting position of the Comment Document. All CPs in this
    PlcFld MUST be greater than or equal to zero and less than or equal to FibRgLw97.ccpAtn. If
    lcbPlcfFldAtn is zero, fcPlcfFldAtn is undefined and MUST be ignored.
lcbPlcfFldAtn (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcFld at offset
    fcPlcfFldAtn in the Table Stream.
                                                                                                  68 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lcbPlcfFldMcr (4 bytes): This value MUST be zero, and MUST be ignored.
fcSttbfBkmk (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
    SttbfBkmk that contains the names of the bookmarks in the document begins at this offset. If
    lcbSttbfBkmk is zero, fcSttbfBkmk is undefined and MUST be ignored.
    This SttbfBkmk is parallel to the PlcfBkf at offset fcPlcfBkf in the Table Stream. Each string
    specifies the name of the bookmark that is associated with the data element which is located at
    the same offset in that PlcfBkf. For this reason, the SttbfBkmk that begins at offset
    fcSttbfBkmk, and the PlcfBkf that begins at offset fcPlcfBkf, MUST contain the same number of
    elements.
lcbSttbfBkmk (4 bytes): An unsigned integer that specifies the size, in bytes, of the SttbfBkmk at
    offset fcSttbfBkmk.
fcPlcfBkf (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfBkf that
    contains information about the standard bookmarks in the document begins at this offset. If
    lcbPlcfBkf is zero, fcPlcfBkf is undefined and MUST be ignored.
    Each data element in the PlcfBkf is associated, in a one-to-one correlation, with a data element in
    the PlcfBkl at offset fcPlcfBkl. For this reason, the PlcfBkf that begins at offset fcPlcfBkf, and
    the PlcfBkl that begins at offset fcPlcfBkl, MUST contain the same number of data elements. This
    PlcfBkf is parallel to the SttbfBkmk at offset fcSttbfBkmk in the Table Stream. Each data
    element in the PlcfBkf specifies information about the bookmark that is associated with the
    element which is located at the same offset in that SttbfBkmk. For this reason, the PlcfBkf that
    begins at offset fcPlcfBkf, and the SttbfBkmk that begins at offset fcSttbfBkmk, MUST contain
    the same number of elements.
    The largest value that a CP marking the start or end of a standard bookmark is allowed to have is
    the CP representing the end of all document parts.
lcbPlcfBkf (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfBkf at offset
    fcPlcfBkf.
fcPlcfBkl (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfBkl that
    contains information about the standard bookmarks in the document begins at this offset. If
    lcbPlcfBkl is zero, fcPlcfBkl is undefined and MUST be ignored.
    Each data element in the PlcfBkl is associated, in a one-to-one correlation, with a data element in
    the PlcfBkf at offset fcPlcfBkf. For this reason, the PlcfBkl that begins at offset fcPlcfBkl, and
    the PlcfBkf that begins at offset fcPlcfBkf, MUST contain the same number of data elements.
    The largest value that a CP marking the start or end of a standard bookmark is allowed to have is
    the value of the CP representing the end of all document parts.
lcbPlcfBkl (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfBkl at offset
    fcPlcfBkl.
fcCmds (4 bytes): An unsigned integer that specifies the offset in the Table Stream of a Tcg that
   specifies command-related customizations. If lcbCmds is zero, fcCmds is undefined and MUST be
   ignored.
lcbCmds (4 bytes): An unsigned integer that specifies the size, in bytes, of the Tcg at offset
    fcCmds.
                                                                                                 69 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lcbSttbfMcr (4 bytes): This value MUST be zero, and MUST be ignored.
fcPrDrvr (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The PrDrvr,
    which contains printer driver information (the names of drivers, port, and so on), begins at this
    offset. If lcbPrDrvr is zero, fcPrDrvr is undefined and MUST be ignored.
lcbPrDrvr (4 bytes): An unsigned integer that specifies the size, in bytes, of the PrDrvr at offset
    fcPrDrvr.
fcPrEnvPort (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
    PrEnvPort that is the print environment in portrait mode begins at this offset. If lcbPrEnvPort is
    zero, fcPrEnvPort is undefined and MUST be ignored.
lcbPrEnvPort (4 bytes): An unsigned integer that specifies the size, in bytes, of the PrEnvPort at
    offset fcPrEnvPort.
fcPrEnvLand (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
    PrEnvLand that is the print environment in landscape mode begins at this offset. If
    lcbPrEnvLand is zero, fcPrEnvLand is undefined and MUST be ignored.
lcbPrEnvLand (4 bytes): An unsigned integer that specifies the size, in bytes, of the PrEnvLand at
    offset fcPrEnvLand.
fcWss (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A Selsf begins at
   this offset and specifies the last selection that was made in the Main Document. If lcbWss is zero,
   fcWss is undefined and MUST be ignored.
lcbWss (4 bytes): An unsigned integer that specifies the size, in bytes, of the Selsf at offset fcWss.
fcDop (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A Dop begins at
   this offset.
lcbDop (4 bytes): An unsigned integer that specifies the size, in bytes, of the Dopat fcDop. This
   value MUST NOT be zero.
fcSttbfAssoc (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
    SttbfAssoc that contains strings that are associated with the document begins at this offset.
lcbSttbfAssoc (4 bytes): An unsigned integer that specifies the size, in bytes, of the SttbfAssoc at
    offset fcSttbfAssoc. This value MUST NOT be zero.
fcClx (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A Clx begins at
    this offset.
lcbClx (4 bytes): An unsigned integer that specifies the size, in bytes, of the Clx at offset fcClx in
    the Table Stream. This value MUST be greater than zero.
fcGrpXstAtnOwners (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
   array of XSTs begins at this offset. The value of cch for all XSTs in this array MUST be less than
   56. The number of entries in this array is limited to 0x7FFF. This array contains the names of
   authors of comments in the document. The names in this array MUST be unique. If no comments
   are defined, lcbGrpXstAtnOwners and fcGrpXstAtnOwners MUST be zero and MUST be
                                                                                                70 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    ignored. If any comments are in the document, fcGrpXstAtnOwners MUST point to a valid array
    of XSTs.
lcbGrpXstAtnOwners (4 bytes): An unsigned integer that specifies the size, in bytes, of the XST
   array at offset fcGrpXstAtnOwners in the Table Stream.
fcSttbfAtnBkmk (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
    SttbfAtnBkmk that contains information about the annotation bookmarks in the document
    begins at this offset. If lcbSttbfAtnBkmk is zero, fcSttbfAtnBkmk is undefined and MUST be
    ignored.
    The SttbfAtnBkmk is parallel to the PlcfBkf at offset fcPlcfAtnBkf in the Table Stream. Each
    element in the SttbfAtnBkmk specifies information about the bookmark which is associated with
    the data element that is located at the same offset in that PlcfBkf, so the SttbfAtnBkmk beginning
    at offset fcSttbfAtnBkmk and the PlcfBkf beginning at offset fcPlcfAtnBkf MUST contain the
    same number of elements. An additional constraint upon the number of elements in the
    SttbfAtnBkmk is specified in the description of fcPlcfAtnBkf.
lcbSttbfAtnBkmk (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    SttbfAtnBkmk at offset fcSttbfAtnBkmk.
fcPlcSpaMom (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfSpa
    begins at this offset. The PlcfSpa contains shape information for the Main Document. All CPs in this
    PlcfSpa are relative to the starting position of the Main Document and MUST be greater than or
    equal to zero and less than or equal to cppText in FibRgLw97. The final CP is undefined and MUST
    be ignored, though it MUST be greater than the previous entry. If there are no shapes in the Main
    Document, lcbPlcSpaMom and fcPlcSpaMom MUST be zero and MUST be ignored. If there are
    shapes in the Main Document, fcPlcSpaMom MUST point to a valid PlcfSpa structure.
lcbPlcSpaMom (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfSpa at
    offset fcPlcSpaMom.
fcPlcSpaHdr (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfSpa
    begins at this offset. The PlcfSpa contains shape information for the Header Document. All CPs in
    this PlcfSpa are relative to the starting position of the Header Document and MUST be greater
    than or equal to zero and less than or equal to ccpHdd in FibRgLw97. The final CP is undefined
    and MUST be ignored, though this value MUST be greater than the previous entry. If there are no
    shapes in the Header Document, lcbPlcSpaHdr and fcPlcSpaHdr MUST both be zero and MUST
    be ignored. If there are shapes in the Header Document, fcPlcSpaHdr MUST point to a valid
    PlcfSpa structure.
lcbPlcSpaHdr (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfSpa at the
    offset fcPlcSpaHdr.
fcPlcfAtnBkf (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfBkf
    that contains information about annotation bookmarks in the document begins at this offset. If
    lcbPlcfAtnBkf is zero, fcPlcfAtnBkf is undefined and MUST be ignored.
    Each data element in the PlcfBkf is associated, in a one-to-one correlation, with a data element in
    the PlcfBkl at offset fcPlcfAtnBkl. For this reason, the PlcfBkf that begins at offset
    fcPlcfAtnBkf, and the PlcfBkl that begins at offset fcPlcfAtnBkl, MUST contain the same
    number of data elements. The PlcfBkf is parallel to the SttbfAtnBkmk at offset fcSttbfAtnBkmk
                                                                                                71 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    in the Table Stream. Each data element in the PlcfBkf specifies information about the bookmark
    which is associated with the element that is located at the same offset in that SttbfAtnBkmk. For
    this reason, the PlcfBkf that begins at offset fcPlcfAtnBkf, and the SttbfAtnBkmk that begins at
    offset fcSttbfAtnBkmk, MUST contain the same number of elements.
lcbPlcfAtnBkf (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfBkf at
    offset fcPlcfAtnBkf.
fcPlcfAtnBkl (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfBkl
    that contains information about annotation bookmarks in the document begins at this offset. If
    lcbPlcfAtnBkl is zero, then fcPlcfAtnBkl is undefined and MUST be ignored.
    Each data element in the PlcfBkl is associated, in a one-to-one correlation, with a data element in
    the PlcfBkf at offset fcPlcfAtnBkf. For this reason, the PlcfBkl that begins at offset
    fcPlcfAtnBkl, and the PlcfBkf that begins at offset fcPlcfAtnBkf, MUST contain the same
    number of data elements.
lcbPlcfAtnBkl (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfBkl at
    offset fcPlcfAtnBkl.
fcPms (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A Pms, which
   contains the current state of a print merge operation, begins at this offset. If lcbPms is zero,
   fcPms is undefined and MUST be ignored.
lcbPms (4 bytes): An unsigned integer which specifies the size, in bytes, of the Pms at offset
    fcPms.
fcPlcfendRef (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcfendRef that begins at this offset specifies the locations of endnote references in the Main
    Document and whether those references use auto-numbering or custom symbols. If
    lcbPlcfendRef is zero, fcPlcfendRef is undefined and MUST be ignored.
lcbPlcfendRef (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfendRef
    that begins at offset fcPlcfendRef in the Table Stream.
fcPlcfendTxt (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcfendTxt begins at this offset and specifies the locations of each block of endnote text in the
    Endnote Document. If lcbPlcfendTxt is zero, fcPlcfendTxt is undefined and MUST be ignored.
lcbPlcfendTxt (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfendTxt
    that begins at offset fcPlcfendTxt in the Table Stream.
fcPlcfFldEdn (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcFld
    begins at this offset and specifies the locations of field characters in the Endnote Document. All
    CPs in this PlcFld are relative to the starting position of the Endnote Document. All CPs in this
    PlcFld MUST be greater than or equal to zero and less than or equal to FibRgLw97.ccpEdn. If
    lcbPlcfFldEdn is zero, fcPlcfFldEdn is undefined and MUST be ignored.
lcbPlcfFldEdn (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcFld at offset
    fcPlcfFldEdn in the Table Stream.
                                                                                                 72 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fcUnused4 (4 bytes): This value is undefined and MUST be ignored.
fcDggInfo (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
   OfficeArtContent that contains information about the drawings in the document begins at this
   offset.
lcbDggInfo (4 bytes): An unsigned integer that specifies the size, in bytes, of the OfficeArtContent
   at the offset fcDggInfo. If lcbDggInfo is zero, there MUST NOT be any drawings in the
   document.
fcSttbfRMark (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
    SttbfRMark that contains the names of authors who have added revision marks or comments to
    the document begins at this offset. If lcbSttbfRMark is zero, fcSttbfRMark is undefined and
    MUST be ignored.
lcbSttbfRMark (4 bytes): An unsigned integer that specifies the size, in bytes, of the SttbfRMark
    at the offset fcSttbfRMark.
fcSttbfCaption (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
    SttbfCaption that contains information about the captions that are defined in this document
    begins at this offset. If lcbSttbfCaption is zero, fcSttbfCaption is undefined and MUST be
    ignored. If this document is not the Normal template, this value MUST be ignored.
lcbSttbfCaption (4 bytes): An unsigned integer that specifies the size, in bytes, of the SttbfCaption
    at offset fcSttbfCaption in the Table Stream. If base.fDot of the Fib that contains this
    FibRgFcLcb97 is zero, this value MUST be zero.
fcSttbfAutoCaption (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    SttbfAutoCaption that contains information about the AutoCaption strings defined in this
    document begins at this offset. If lcbSttbfAutoCaption is zero, fcSttbfAutoCaption is undefined
    and MUST be ignored. If this document is not the Normal template, this value MUST be ignored.
lcbSttbfAutoCaption (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    SttbfAutoCaption at offset fcSttbfAutoCaption in the Table Stream. If base.fDot of the Fib
    that contains this FibRgFcLcb97 is zero, this MUST be zero.
fcPlcfWkb (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfWKB
    that contains information about all master documents and subdocuments begins at this offset.
lcbPlcfWkb (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfWKB at
    offset fcPlcfWkb in the Table Stream. If lcbPlcfWkb is zero, fcPlcfWkb is undefined and MUST
    be ignored.
fcPlcfSpl (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A Plcfspl,
    which specifies the state of the spell checker for each text range, begins at this offset. If
    lcbPlcfSpl is zero, then fcPlcfSpl is undefined and MUST be ignored.
lcbPlcfSpl (4 bytes): An unsigned integer that specifies the size, in bytes, of the Plcfspl that begins
    at offset fcPlcfSpl in the Table Stream.
fcPlcftxbxTxt (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcftxbxTxt begins at this offset and specifies which ranges of text are contained in which
    textboxes. If lcbPlcftxbxTxt is zero, fcPlcftxbxTxt is undefined and MUST be ignored.
lcbPlcftxbxTxt (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcftxbxTxt
    that begins at offset fcPlcftxbxTxt in the Table Stream.
                                                                                                  73 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fcPlcfFldTxbx (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcFld
    begins at this offset and specifies the locations of field characters in the Textbox Document. All
    CPs in this PlcFld are relative to the starting position of the Textbox Document. All CPs in this
    PlcFld MUST be greater than or equal to zero and less than or equal to FibRgLw97.ccpTxbx. If
    lcbPlcfFldTxbx is zero, fcPlcfFldTxbx is undefined and MUST be ignored.
lcbPlcfFldTxbx (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcFld at
    offset fcPlcfFldTxbx in the Table Stream.
fcPlcfHdrtxbxTxt (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcfHdrtxbxTxt begins at this offset and specifies which ranges of text are contained in which
    header textboxes.
lcbPlcfHdrtxbxTxt (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    PlcfHdrtxbxTxt that begins at offset fcPlcfHdrtxbxTxt in the Table Stream.
fcPlcffldHdrTxbx (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcFld begins at this offset and specifies the locations of field characters in the Header Textbox
    Document. All CPs in this PlcFld are relative to the starting position of the Header Textbox
    Document. All CPs in this PlcFld MUST be greater than or equal to zero and less than or equal to
    FibRgLw97.ccpHdrTxbx. If lcbPlcffldHdrTxbx is zero, fcPlcffldHdrTxbx is undefined, and
    MUST be ignored.
lcbPlcffldHdrTxbx (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcFld at
    offset fcPlcffldHdrTxbx in the Table Stream.
fcStwUser (4 bytes): An unsigned integer that specifies an offset into the Table Stream. An
    StwUser that specifies the user-defined variables and VBA digital signature, as specified by
    [MS-OSHARED] section 2.3.2, begins at this offset. If lcbStwUser is zero, fcStwUser is
    undefined and MUST be ignored.
lcbStwUser (4 bytes): An unsigned integer that specifies the size, in bytes, of the StwUser at offset
    fcStwUser.
fcSttbTtmbd (4 bytes): An unsigned integer that specifies an offset into the Table Stream. A
    SttbTtmbd begins at this offset and specifies information about the TrueType fonts that are
    embedded in the document. If lcbSttbTtmbd is zero, fcSttbTtmbd is undefined and MUST be
    ignored.
lcbSttbTtmbd (4 bytes): An unsigned integer that specifies the size, in bytes, of the SttbTtmbd at
    offset fcSttbTtmbd.
fcCookieData (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An RgCdb
   begins at this offset. If lcbCookieData is zero, fcCookieData is undefined and MUST be ignored.
   Otherwise, fcCookieData MAY<29> be ignored.
lcbCookieData (4 bytes): An unsigned integer that specifies the size, in bytes, of the RgCdb at
    offset fcCookieData in the Table Stream.
fcPgdMotherOldOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated document page layout cache begins at this offset. Information SHOULD NOT<30> be
   emitted at this offset and SHOULD<31> be ignored. If lcbPgdMotherOldOld is zero,
   fcPgdMotherOldOld is undefined and MUST be ignored.
lcbPgdMotherOldOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    deprecated document page layout cache at offset fcPgdMotherOldOld in the Table Stream.
                                                                                                74 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fcBkdMotherOldOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
   Deprecated document text flow break cache begins at this offset. Information SHOULD NOT<32>
   be emitted at this offset and SHOULD<33> be ignored. If lcbBkdMotherOldOld is zero,
   fcBkdMotherOldOld is undefined and MUST be ignored.
lcbBkdMotherOldOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the
   deprecated document text flow break cache at offset fcBkdMotherOldOld in the Table Stream.
fcPgdFtnOldOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
   Deprecated footnote layout cache begins at this offset. Information SHOULD NOT<34> be emitted
   at this offset and SHOULD<35> be ignored. If lcbPgdFtnOldOld is zero, fcPgdFtnOldOld is
   undefined and MUST be ignored.
lcbPgdFtnOldOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    footnote layout cache at offset fcPgdFtnOldOld in the Table Stream.
fcBkdFtnOldOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated footnote text flow break cache begins at this offset. Information SHOULD NOT<36> be
   emitted at this offset and SHOULD<37> be ignored. If lcbBkdFtnOldOld is zero,
   fcBkdFtnOldOld is undefined and MUST be ignored.
lcbBkdFtnOldOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
   footnote text flow break cache at offset fcBkdFtnOldOld in the Table Stream.
fcPgdEdnOldOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated endnote layout cache begins at this offset. Information SHOULD NOT<38> be emitted
   at this offset and SHOULD<39> be ignored. If lcbPgdEdnOldOld is zero, fcPgdEdnOldOld is
   undefined and MUST be ignored.
lcbPgdEdnOldOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    endnote layout cache at offset fcPgdEdnOldOld in the Table Stream.
fcBkdEdnOldOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated endnote text flow break cache begins at this offset. Information SHOULD NOT<40> be
   emitted at this offset and SHOULD<41> be ignored. If lcbBkdEdnOldOld is zero,
   fcBkdEdnOldOld is undefined and MUST be ignored.
lcbBkdEdnOldOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
   endnote text flow break cache at offset fcBkdEdnOldOld in the Table Stream.
fcRouteSlip (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
   RouteSlip that specifies the route slip for this document begins at this offset. This value
   SHOULD<42> be ignored.
lcbRouteSlip (4 bytes): An unsigned integer that specifies the size, in bytes, of the RouteSlip at
   offset fcRouteSlip in the Table Stream.
fcSttbSavedBy (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    SttbSavedBy that specifies the save history of this document begins at this offset. This value
    SHOULD<43> be ignored.
lcbSttbSavedBy (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    SttbSavedBy at the offset fcSttbSavedBy. This value SHOULD<44> be zero.
fcSttbFnm (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An SttbFnm
    that contains information about the external files that are referenced by this document begins at
    this offset. If lcbSttbFnm is zero, fcSttbFnm is undefined and MUST be ignored.
                                                                                                 75 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lcbSttbFnm (4 bytes): An unsigned integer that specifies the size, in bytes, of the SttbFnm at the
    offset fcSttbFnm.
fcPlfLst (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlfLst that
    contains list formatting information begins at this offset. An array of LVLs is appended to the
    PlfLst. lcbPlfLst does not account for the array of LVLs. The size of the array of LVLs is specified
    by the LSTFs in PlfLst. For each LSTF whose fSimpleList is set to 0x1, there is one LVL in the
    array of LVLs that specifies the level formatting of the single level in the list which corresponds to
    the LSTF. And, for each LSTF whose fSimpleList is set to 0x0, there are 9 LVLs in the array of
    LVLs that specify the level formatting of the respective levels in the list which corresponds to the
    LSTF. This array of LVLs is in the same respective order as the LSTFs in PlfLst. If lcbPlfLst is 0,
    fcPlfLst is undefined and MUST be ignored.
lcbPlfLst (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlfLst at the offset
    fcPlfLst. This does not include the size of the array of LVLs that are appended to the PlfLst.
fcPlfLfo (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlfLfo that
    contains list formatting override information begins at this offset. If lcbPlfLfo is zero, fcPlfLfo is
    undefined and MUST be ignored.
lcbPlfLfo (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlfLfo at the offset
    fcPlfLfo.
fcPlcfTxbxBkd (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcftxbxBkd begins at this offset and specifies which ranges of text go inside which textboxes.
lcbPlcfTxbxBkd (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcftxbxBkd
    that begins at offset fcPlcfTxbxBkd in the Table Stream.
fcPlcfTxbxHdrBkd (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcfTxbxHdrBkd begins at this offset and specifies which ranges of text are contained inside
    which header textboxes.
lcbPlcfTxbxHdrBkd (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    PlcfTxbxHdrBkd that begins at offset fcPlcfTxbxHdrBkd in the Table Stream.
fcRgbUse (4 bytes): An unsigned integer that specifies an offset in the WordDocument Stream.
   Version-specific undo information begins at this offset. This information SHOULD NOT<47> be
   emitted and SHOULD<48> be ignored.
lcbRgbUse (4 bytes): An unsigned integer that specifies the size, in bytes, of the version-specific
   undo information at offset fcRgbUse in the WordDocument Stream.
fcUsp (4 bytes): An unsigned integer that specifies an offset in the WordDocument Stream. Version-
   specific undo information begins at this offset. This information SHOULD NOT<49> be emitted and
   SHOULD<50> be ignored.
                                                                                                   76 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lcbUsp (4 bytes): An unsigned integer that specifies the size, in bytes, of the version-specific undo
   information at offset fcUsp in the WordDocument Stream.
fcUskf (4 bytes): An unsigned integer that specifies an offset in the Table Stream. Version-specific
   undo information begins at this offset. This information SHOULD NOT<51> be emitted and
   SHOULD<52> be ignored.
lcbUskf (4 bytes): An unsigned integer that specifies the size, in bytes, of the version-specific undo
   information at offset fcUskf in the Table Stream.
fcPlcupcRgbUse (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A Plc
    begins at this offset and contains version-specific undo information. This information SHOULD
    NOT<53> be emitted and SHOULD<54> be ignored.
lcbPlcupcRgbUse (4 bytes): An unsigned integer that specifies the size, in bytes, of the Plc at
    offset fcPlcupcRgbUse in the Table Stream.
fcPlcupcUsp (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A Plc
    begins at this offset and contains version-specific undo information. This information SHOULD
    NOT<55> be emitted and SHOULD<56> be ignored.
lcbPlcupcUsp (4 bytes): An unsigned integer that specifies the size, in bytes, of the Plc at offset
    fcPlcupcUsp in the Table Stream.
fcSttbGlsyStyle (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    SttbGlsyStyle, which contains information about the styles that are used by the AutoText items
    which are defined in this document, begins at this offset.
lcbSttbGlsyStyle (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    SttbGlsyStyle at offset fcSttbGlsyStyle in the Table Stream. If base.fGlsy of the Fib that
    contains this FibRgFcLcb97 is zero, this value MUST be zero.
fcPlgosl (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlfGosl
    begins at the offset. If lcbPlgosl is zero, fcPlgosl is undefined and MUST be ignored.
lcbPlgosl (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlfGosl at offset
    fcPlgosl in the Table Stream.
fcPlcocx (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A RgxOcxInfo
    that specifies information about the OLE controls in the document begins at this offset. When
    there are no OLE controls in the document, fcPlcocx and lcbPlcocx MUST be zero and MUST be
    ignored. If there are any OLE controls in the document, fcPlcocx MUST point to a valid
    RgxOcxInfo.
lcbPlcocx (4 bytes): An unsigned integer that specifies the size, in bytes, of the RgxOcxInfo at the
    offset fcPlcocx.
fcPlcfBteLvc (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    deprecated numbering field cache begins at this offset. This information SHOULD NOT<57> be
    emitted and SHOULD<58> ignored. If lcbPlcBteLvc is zero, fcPlcfBteLvc is undefined and MUST
    be ignored.
lcbPlcfBteLvc (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    numbering field cache at offset fcPlcfBteLvc in the Table Stream. This value SHOULD<59> be
    zero.
                                                                                                77 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fcPlcfLvcPre10 (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
    deprecated list level cache begins at this offset. Information SHOULD NOT<60> be emitted at this
    offset and SHOULD<61> be ignored. If lcbPlcfLvcPre10 is zero, fcPlcfLvcPre10 is undefined
    and MUST be ignored.
lcbPlcfLvcPre10 (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    list level cache at offset fcPlcfLvcPre10 in the Table Stream. This value SHOULD<62> be zero.
fcPlcfAsumy (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcfAsumy begins at the offset. If lcbPlcfAsumy is zero, fcPlcfAsumy is undefined and MUST
    be ignored.
lcbPlcfAsumy (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfAsumy at
    offset fcPlcfAsumy in the Table Stream.
fcPlcfGram (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A Plcfgram,
    which specifies the state of the grammar checker for each text range, begins at this offset. If
    lcbPlcfGram is zero, then fcPlcfGram is undefined and MUST be ignored.
lcbPlcfGram (4 bytes): An unsigned integer that specifies the size, in bytes, of the Plcfgram that
    begins at offset fcPlcfGram in the Table Stream.
fcSttbListNames (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    SttbListNames, which specifies the LISTNUM field names of the lists in the document, begins at
    this offset. If lcbSttbListNames is zero, fcSttbListNames is undefined and MUST be ignored.
lcbSttbListNames (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    SttbListNames at the offset fcSttbListNames.
fcSttbfUssr (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
    deprecated, version-specific undo information begins at this offset. This information SHOULD
    NOT<63> be emitted and SHOULD<64> be ignored.
lcbSttbfUssr (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated,
    version-specific undo information at offset fcSttbfUssr in the Table Stream.
2.5.7 FibRgFcLcb2000
The FibRgFcLcb2000 structure is a variable-sized portion of the Fib. It extends the FibRgFcLcb97.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
...
...
fcPlcfTch
lcbPlcfTch
fcRmdThreading
lcbRmdThreading
                                                                                                                                  78 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                              fcMid
lcbMid
fcSttbRgtplc
lcbSttbRgtplc
fcMsoEnvelope
lcbMsoEnvelope
fcPlcfLad
lcbPlcfLad
fcRgDofr
lcbRgDofr
fcPlcosl
lcbPlcosl
fcPlcfCookieOld
lcbPlcfCookieOld
fcPgdMotherOld
lcbPgdMotherOld
fcBkdMotherOld
lcbBkdMotherOld
fcPgdFtnOld
lcbPgdFtnOld
fcBkdFtnOld
lcbBkdFtnOld
fcPgdEdnOld
lcbPgdEdnOld
fcBkdEdnOld
                                                            79 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                         lcbBkdEdnOld
fcPlcfTch (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfTch
    begins at this offset and specifies a cache of table characters. Information at this offset
    SHOULD<65> be ignored. If lcbPlcfTch is zero, fcPlcfTch is undefined and MUST be ignored.
lcbPlcfTch (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfTch at offset
    fcPlcfTch.
fcRmdThreading (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
   RmdThreading that specifies the data concerning the e-mail messages and their authors in this
   document begins at this offset.
lcbRmdThreading (4 bytes): An unsigned integer that specifies the size, in bytes, of the
   RmdThreading at the offset fcRmdThreading. This value MUST NOT be zero.
fcMid (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A double-byte
   character Unicode string that specifies the message identifier of the document begins at this
   offset. This value MUST be ignored.
lcbMid (4 bytes): An unsigned integer that specifies the size, in bytes, of the double-byte character
   Unicode string at offset fcMid. This value MUST be ignored.
fcSttbRgtplc (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    SttbRgtplc that specifies the styles of lists in the document begins at this offset. If lcbSttbRgtplc
    is zero, fcSttbRgtplc is undefined and MUST be ignored.
lcbSttbRgtplc (4 bytes): An unsigned integer that specifies the size, in bytes, of the SttbRgtplc at
    the offset fcSttbRgtplc.
fcMsoEnvelope (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
   MsoEnvelopeCLSID, which specifies the envelope data as specified by [MS-OSHARED] section
   2.3.8.1, begins at this offset. If lcbMsoEnvelope is zero, fcMsoEnvelope is undefined and MUST
   be ignored.
lcbMsoEnvelope (4 bytes): An unsigned integer that specifies the size, in bytes, of the
   MsoEnvelopeCLSID at the offset fcMsoEnvelope.
fcPlcfLad (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A Plcflad
    begins at this offset and specifies the language auto-detect state of each text range. If lcbPlcfLad
    is zero, fcPlcfLad is undefined and MUST be ignored.
lcbPlcfLad (4 bytes): An unsigned integer that specifies the size, in bytes, of the Plcflad that
    begins at offset fcPlcfLad in the Table Stream.
fcRgDofr (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A variable-
   length array with elements of type Dofrh begins at that offset. The elements of this array are
   records that support the frame set and list style features. If lcbRgDofr is zero, fcRgDofr is
   undefined and MUST be ignored.
lcbRgDofr (4 bytes): An unsigned integer that specifies the size, in bytes, of the array that begins
   at offset fcRgDofr in the Table Stream.
fcPlcosl (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlfCosl begins
    at the offset. If lcbPlcosl is zero, fcPlcosl is undefined and MUST be ignored.
                                                                                                 80 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lcbPlcosl (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlfCosl at offset
    fcPlcosl in the Table Stream.
fcPlcfCookieOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcfcookieOld begins at this offset. If lcbPlcfcookieOld is zero, fcPlcfcookieOld is undefined
    and MUST be ignored. fcPlcfcookieOld MAY<66> be ignored.
lcbPlcfCookieOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    PlcfcookieOld at offset fcPlcfcookieOld in the Table Stream.
fcPgdMotherOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated document page layout cache begins at this offset. Information SHOULD NOT <67> be
   emitted at this offset and SHOULD<68> be ignored. If lcbPgdMotherOld is zero, fcPgdMotherOld
   is undefined and MUST be ignored.
lcbPgdMotherOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    document page layout cache at offset fcPgdMotherOld in the Table Stream.
fcBkdMotherOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated document text flow break cache begins at this offset. Information SHOULD NOT <69> be
   emitted at this offset and SHOULD<70> be ignored. If lcbBkdMotherOld is zero, fcBkdMotherOld
   is undefined and MUST be ignored.
lcbBkdMotherOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
   document text flow break cache at offset fcBkdMotherOld in the Table Stream.
fcPgdFtnOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated footnote layout cache begins at this offset. Information SHOULD NOT <71> be emitted at
   this offset and SHOULD<72> be ignored. If lcbPgdFtnOld is zero, fcPgdFtnOld is undefined and
   MUST be ignored.
lcbPgdFtnOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    footnote layout cache at offset fcPgdFtnOld in the Table Stream.
fcBkdFtnOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated footnote text flow break cache begins at this offset. Information SHOULD NOT <73> be
   emitted at this offset and SHOULD<74> be ignored. If lcbBkdFtnOld is zero, fcBkdFtnOld is
   undefined and MUST be ignored.
lcbBkdFtnOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
   footnote text flow break cache at offset fcBkdFtnOld in the Table Stream.
fcPgdEdnOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated endnote layout cache begins at this offset. Information SHOULD NOT <75> be emitted at
   this offset and SHOULD<76> be ignored. If lcbPgdEdnOld is zero, fcPgdEdnOld is undefined and
   MUST be ignored.
lcbPgdEdnOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    endnote layout cache at offset fcPgdEdnOld in the Table Stream.
fcBkdEdnOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated endnote text flow break cache begins at this offset. Information SHOULD NOT <77> be
   emitted at this offset and SHOULD<78> be ignored. If lcbBkdEdnOld is zero, fcBkdEdnOld is
   undefined and MUST be ignored.
lcbBkdEdnOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
   endnote text flow break cache at offset fcBkdEdnOld in the Table Stream.
                                                                                                81 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.5.8 FibRgFcLcb2002
The FibRgFcLcb2002 structure is a variable-sized portion of the Fib. It extends the FibRgFcLcb2000.
                                        1                                              2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3    4     5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                              0                                       0
...
...
fcUnused1
lcbUnused1
fcPlcfPgp
lcbPlcfPgp
fcPlcfuim
lcbPlcfuim
fcPlfguidUim
lcbPlfguidUim
fcAtrdExtra
lcbAtrdExtra
fcPlrsid
lcbPlrsid
fcSttbfBkmkFactoid
lcbSttbfBkmkFactoid
fcPlcfBkfFactoid
lcbPlcfBkfFactoid
fcPlcfcookie
lcbPlcfcookie
fcPlcfBklFactoid
lcbPlcfBklFactoid
                                                                                                                                       82 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                             fcFactoidData
lcbFactoidData
fcDocUndo
lcbDocUndo
fcSttbfBkmkFcc
lcbSttbfBkmkFcc
fcPlcfBkfFcc
lcbPlcfBkfFcc
fcPlcfBklFcc
lcbPlcfBklFcc
fcSttbfbkmkBPRepairs
lcbSttbfbkmkBPRepairs
fcPlcfbkfBPRepairs
lcbPlcfbkfBPRepairs
fcPlcfbklBPRepairs
lcbPlcfbklBPRepairs
fcPmsNew
lcbPmsNew
fcODSO
lcbODSO
fcPlcfpmiOldXP
lcbPlcfpmiOldXP
fcPlcfpmiNewXP
lcbPlcfpmiNewXP
fcPlcfpmiMixedXP
                                                                 83 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                         lcbPlcfpmiMixedXP
fcUnused2
lcbUnused2
fcPlcffactoid
lcbPlcffactoid
fcPlcflvcOldXP
lcbPlcflvcOldXP
fcPlcflvcNewXP
lcbPlcflvcNewXP
fcPlcflvcMixedXP
lcbPlcflvcMixedXP
fcPlcfPgp (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PGPArray
    begins at this offset. If lcbPlcfPgp is 0, fcPlcfPgp is undefined and MUST be ignored.
lcbPlcfPgp (4 bytes): An unsigned integer that specifies the size, in bytes, of the PGPArray that is
    stored at offset fcPlcfPgp.
fcPlcfuim (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A Plcfuim
    begins at this offset. If lcbPlcfuim is zero, fcPlcfuim is undefined and MUST be ignored.
lcbPlcfuim (4 bytes): An unsigned integer that specifies the size, in bytes, of the Plcfuim at offset
    fcPlcfuim.
fcPlfguidUim (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlfguidUim begins at this offset. If lcbPlfguidUim is zero, fcPlfguidUim is undefined and MUST
    be ignored.
lcbPlfguidUim (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlfguidUim at
    offset fcPlfguidUim.
fcAtrdExtra (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
   AtrdExtra begins at this offset. If lcbAtrdExtra is zero, fcAtrdExtra is undefined and MUST be
   ignored.
lcbAtrdExtra (4 bytes): An unsigned integer that specifies the size, in bytes, of the AtrdExtra at
   offset fcAtrdExtra in the Table Stream.
fcPlrsid (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PLRSID
    begins at this offset. If lcbPlrsid is zero, fcPlrsid is undefined and MUST be ignored.
                                                                                               84 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lcbPlrsid (4 bytes): An unsigned integer that specifies the size, in bytes, of the PLRSID at offset
    fcPlrsid in the Table Stream.
fcSttbfBkmkFactoid (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
    SttbfBkmkFactoid containing information about smart tag bookmarks in the document begins
    at this offset. If lcbSttbfBkmkFactoid is zero, fcSttbfBkmkFactoid is undefined and MUST be
    ignored.
lcbSttbfBkmkFactoid (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    SttbfBkmkFactoid at offset fcSttbfBkmkFactoid.
fcPlcfBkfFactoid (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcfBkfd that contains information about the smart tag bookmarks in the document begins at this
    offset. If lcbPlcfBkfFactoid is zero, fcPlcfBkfFactoid is undefined and MUST be ignored.
    Each data element in the PlcfBkfd is associated, in a one-to-one correlation, with a data element
    in the Plcfbkld at offset fcPlcfBklFactoid. For this reason, the PlcfBkfd that begins at offset
    fcPlcfBkfFactoid, and the Plcfbkld that begins at offset fcPlcfBklFactoid, MUST contain the
    same number of data elements. The PlcfBkfd is parallel to the SttbfBkmkFactoid at offset
    fcSttbfBkmkFactoid in the Table Stream. Each data element in the PlcfBkfd specifies
    information about the bookmark that is associated with the element which is located at the same
    offset in that SttbfBkmkFactoid. For this reason, the PlcfBkfd that begins at offset
    fcPlcfBkfFactoid, and the SttbfBkmkFactoid that begins at offset fcSttbfBkmkFactoid, MUST
    contain the same number of elements.
lcbPlcfBkfFactoid (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfBkfd at
    offset fcPlcfBkfFactoid.
fcPlcfcookie (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    Plcfcookie begins at this offset. If lcbPlcfcookie is zero, fcPlcfcookie is undefined and MUST be
    ignored. fcPlcfcookie MAY<79> be ignored.
lcbPlcfcookie (4 bytes): An unsigned integer that specifies the size, in bytes, of the Plcfcookie at
    offset fcPlcfcookie in the Table Stream.
fcPlcfBklFactoid (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    Plcfbkld that contains information about the smart tag bookmarks in the document begins at this
    offset. If lcbPlcfBklFactoid is zero, fcPlcfBklFactoid is undefined and MUST be ignored.
    Each data element in the Plcfbkld is associated, in a one-to-one correlation, with a data element
    in the PlcfBkfd at offset fcPlcfBkfFactoid. For this reason, the Plcfbkld that begins at offset
    fcPlcfBklFactoid, and the PlcfBkfd that begins at offset fcPlcfBkfFactoid, MUST contain the
    same number of data elements.
lcbPlcfBklFactoid (4 bytes): An unsigned integer that specifies the size, in bytes, of the Plcfbkld at
    offset fcPlcfBklFactoid.
fcFactoidData (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    SmartTagData begins at this offset and specifies information about the smart tag recognizers
    that are used in this document. If lcbFactoidData is zero, fcFactoidData is undefined and MUST
    be ignored.
lcbFactoidData (4 bytes): An unsigned integer that specifies the size, in bytes, of the SmartTagData
    at offset fcFactoidData in the Table Stream.
                                                                                               85 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fcDocUndo (4 bytes): An unsigned integer that specifies an offset in the WordDocument Stream.
   Version-specific undo information begins at this offset. This information SHOULD NOT<80> be
   emitted and SHOULD<81> be ignored.
fcSttbfBkmkFcc (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
    SttbfBkmkFcc that contains information about the format consistency-checker bookmarks in
    the document begins at this offset. If lcbSttbfBkmkFcc is zero, fcSttbfBkmkFcc is undefined
    and MUST be ignored.
    The SttbfBkmkFcc is parallel to the PlcfBkfd at offset fcPlcfBkfFcc in the Table Stream. Each
    element in the SttbfBkmkFcc specifies information about the bookmark that is associated with
    the data element which is located at the same offset in that PlcfBkfd. For this reason, the
    SttbfBkmkFcc that begins at offset fcSttbfBkmkFcc, and the PlcfBkfd that begins at offset
    fcPlcfBkfFcc, MUST contain the same number of elements.
lcbSttbfBkmkFcc (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    SttbfBkmkFcc at offset fcSttbfBkmkFcc.
fcPlcfBkfFcc (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfBkfd
    that contains information about format consistency-checker bookmarks in the document begins at
    this offset. If lcbPlcfBkfFcc is zero, fcPlcfBkfFcc is undefined and MUST be ignored.
    Each data element in the PlcfBkfd is associated, in a one-to-one correlation, with a data element
    in the PlcfBkld at offset fcPlcfBklFcc. For this reason, the PlcfBkfd that begins at offset
    fcPlcfBkfFcc and the PlcfBkld that begins at offset fcPlcfBklFcc MUST contain the same number
    of data elements. The PlcfBkfd is parallel to the SttbfBkmkFcc at offset fcSttbfBkmkFcc in the
    Table Stream. Each data element in the PlcfBkfd specifies information about the bookmark that is
    associated with the element which is located at the same offset in that SttbfBkmkFcc. For this
    reason, the PlcfBkfd that begins at offset fcPlcfBkfFcc and the SttbfBkmkFcc that begins at
    offset fcSttbfBkmkFcc MUST contain the same number of elements.
lcbPlcfBkfFcc (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfBkfd at
    offset fcPlcfBkfFcc.
fcPlcfBklFcc (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfBkld
    that contains information about the format consistency-checker bookmarks in the document
    begins at this offset. If lcbPlcfBklFcc is zero, fcPlcfBklFcc is undefined and MUST be ignored.
    Each data element in the PlcfBkld is associated, in a one-to-one correlation, with a data element
    in the PlcfBkfd at offset fcPlcfBkfFcc. For this reason, the PlcfBkld that begins at offset
    fcPlcfBklFcc, and the PlcfBkfd that begins at offset fcPlcfBkfFcc, MUST contain the same
    number of data elements.
lcbPlcfBklFcc (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfBkld at
    offset fcPlcfBklFcc.
fcSttbfbkmkBPRepairs (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
    An SttbfBkmkBPRepairs that contains information about the repair bookmarks in the
    document begins at this offset. If lcbSttbfBkmkBPRepairs is zero, fcSttbfBkmkBPRepairs is
    undefined and MUST be ignored.
                                                                                               86 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lcbSttbfbkmkBPRepairs (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    SttbfBkmkBPRepairs at offset fcSttbfBkmkBPRepairs.
fcPlcfbkfBPRepairs (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcfBkf that contains information about the repair bookmarks in the document begins at this
    offset. If lcbPlcfBkfBPRepairs is zero, fcPlcfBkfBPRepairs is undefined and MUST be ignored.
    Each data element in the PlcfBkf is associated, in a one-to-one correlation, with a data element in
    the PlcfBkl at offset fcPlcfBklBPRepairs. For this reason, the PlcfBkf that begins at offset
    fcPlcfBkfBPRepairs, and the PlcfBkl that begins at offset fcPlcfBklBPRepairs, MUST contain
    the same number of data elements. The PlcfBkf is parallel to the SttbfBkmkBPRepairs at offset
    fcSttbfBkmkBPRepairs in the Table Stream. Each data element in the PlcfBkf specifies
    information about the bookmark that is associated with the element which is located at the same
    offset in that SttbfBkmkBPRepairs. For this reason, the PlcfBkf that begins at offset
    fcPlcfbkfBPRepairs, and the SttbfBkmkBPRepairs that begins at offset
    fcSttbfBkmkBPRepairs, MUST contain the same number of elements.
    The CPs in this PlcfBkf MUST NOT exceed the CP that represents the end of the Main Document
    part.
lcbPlcfbkfBPRepairs (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfBkf
at offset fcPlcfbkfBPRepairs.
fcPlcfbklBPRepairs (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    PlcfBkl that contains information about the repair bookmarks in the document begins at this
    offset. If lcbPlcfBklBPRepairs is zero, fcPlcfBklBPRepairs is undefined and MUST be ignored.
    Each data element in the PlcfBkl is associated, in a one-to-one correlation, with a data element in
    the PlcfBkf at offset fcPlcfBkfBPRepairs. For this reason, the PlcfBkl that begins at offset
    fcPlcfBklBPRepairs, and the PlcfBkf that begins at offset fcPlcfBkfBPRepairs, MUST contain
    the same number of data elements.
    The CPs that are contained in this PlcfBkl MUST NOT exceed the CP that represents the end of the
    Main Document part.
lcbPlcfbklBPRepairs (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfBkl
    at offset fcPlcfBklBPRepairs.
fcPmsNew (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A new Pms,
   which contains the current state of a print merge operation, begins at this offset. If lcbPmsNew
   is zero, fcPmsNew is undefined and MUST be ignored.
lcbPmsNew (4 bytes): An unsigned integer which specifies the size, in bytes, of the Pms at offset
    fcPmsNew.
fcODSO (4 bytes): An unsigned integer that specifies an offset in the Table Stream. Office Data
   Source Object (ODSO) data that is used to perform mail merge begins at this offset. The data is
   stored in an array of ODSOPropertyBase items. The ODSOPropertyBase items are of variable
   size and are stored contiguously. The complete set of properties that are contained in the array is
   determined by reading each ODSOPropertyBase, until a total of lcbODSO bytes of data are
   read. If lcbODSO is zero, fcODSO is undefined and MUST be ignored.
lcbODSO (4 bytes): An unsigned integer that specifies the size, in bytes, of the Office Data Source
   Object data at offset fcODSO in the Table Stream.
fcPlcfpmiOldXP (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
    deprecated paragraph mark information cache begins at this offset. Information SHOULD
    NOT<82> be emitted at this offset and SHOULD<83> be ignored. If lcbPlcfpmiOldXP is zero,
    fcPlcfpmiOldXP is undefined and MUST be ignored.
                                                                                               87 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lcbPlcfpmiOldXP (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    paragraph mark information cache at offset fcPlcfpmiOldXP in the Table Stream. This value
    SHOULD<84> be zero.
fcPlcfpmiNewXP (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
    deprecated paragraph mark information cache begins at this offset. Information SHOULD
    NOT<85> be emitted at this offset and SHOULD<86> be ignored. If lcbPlcfpmiNewXP is zero,
    fcPlcfpmiNewXP is undefined and MUST be ignored.
lcbPlcfpmiNewXP (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    paragraph mark information cache at offset fcPlcfpmiNewXP in the Table Stream. This value
    SHOULD<87> be zero.
fcPlcfpmiMixedXP (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
    deprecated paragraph mark information cache begins at this offset. Information SHOULD
    NOT<88> be emitted at this offset and SHOULD<89> be ignored. If lcbPlcfpmiMixedXP is zero,
    fcPlcfpmiMixedXP is undefined and MUST be ignored.
lcbPlcfpmiMixedXP (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    deprecated paragraph mark information cache at offset fcPlcfpmiMixedXP in the Table Stream.
    This value SHOULD<90> be zero.
fcPlcffactoid (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    Plcffactoid, which specifies the smart tag recognizer state of each text range, begins at this
    offset. If lcbPlcffactoid is zero, fcPlcffactoid is undefined and MUST be ignored.
lcbPlcffactoid (4 bytes): An unsigned integer that specifies the size, in bytes of the Plcffactoid
    that begins at offset fcPlcffactoid in the Table Stream.
fcPlcflvcOldXP (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
    deprecated listnum field cache begins at this offset. Information SHOULD NOT<91> be emitted at
    this offset and SHOULD<92> be ignored. If lcbPlcflvcOldXP is zero, fcPlcflvcOldXP is undefined
    and MUST be ignored.
lcbPlcflvcOldXP (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    listnum field cache at offset fcPlcflvcOldXP in the Table Stream. This value SHOULD<93> be
    zero.
fcPlcflvcNewXP (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
    deprecated listnum field cache begins at this offset. Information SHOULD NOT<94> be emitted at
    this offset and SHOULD<95> be ignored. If lcbPlcflvcNewXP is zero, fcPlcflvcNewXP is
    undefined and MUST be ignored.
lcbPlcflvcNewXP (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    listnum field cache at offset fcPlcflvcNewXP in the Table Stream. This value SHOULD<96> be
    zero.
fcPlcflvcMixedXP (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
    deprecated listnum field cache begins at this offset. Information SHOULD NOT<97> be emitted at
    this offset and SHOULD<98> be ignored. If lcbPlcflvcMixedXP is zero, fcPlcflvcMixedXP is
    undefined and MUST be ignored.
lcbPlcflvcMixedXP (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    deprecated listnum field cache at offset fcPlcflvcMixedXP in the Table Stream. This value
    SHOULD<99> be zero.
                                                                                                88 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.5.9 FibRgFcLcb2003
The FibRgFcLcb2003 structure is a variable-sized portion of the Fib. It extends the FibRgFcLcb2002.
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                           0                                       0
...
...
fcHplxsdr
lcbHplxsdr
fcSttbfBkmkSdt
lcbSttbfBkmkSdt
fcPlcfBkfSdt
lcbPlcfBkfSdt
fcPlcfBklSdt
lcbPlcfBklSdt
fcCustomXForm
lcbCustomXForm
fcSttbfBkmkProt
lcbSttbfBkmkProt
fcPlcfBkfProt
lcbPlcfBkfProt
fcPlcfBklProt
lcbPlcfBklProt
fcSttbProtUser
lcbSttbProtUser
fcUnused
lcbUnused
                                                                                                                                    89 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                            fcPlcfpmiOld
lcbPlcfpmiOld
fcPlcfpmiOldInline
lcbPlcfpmiOldInline
fcPlcfpmiNew
lcbPlcfpmiNew
fcPlcfpmiNewInline
lcbPlcfpmiNewInline
fcPlcflvcOld
lcbPlcflvcOld
fcPlcflvcOldInline
lcbPlcflvcOldInline
fcPlcflvcNew
lcbPlcflvcNew
fcPlcflvcNewInline
lcbPlcflvcNewInline
fcPgdMother
lcbPgdMother
fcBkdMother
lcbBkdMother
fcAfdMother
lcbAfdMother
fcPgdFtn
lcbPgdFtn
fcBkdFtn
                                                               90 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                         lcbBkdFtn
fcAfdFtn
lcbAfdFtn
fcPgdEdn
lcbPgdEdn
fcBkdEdn
lcbBkdEdn
fcAfdEdn
lcbAfdEdn
fcAfd
lcbAfd
fcHplxsdr (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An Hplxsdr
   structure begins at this offset. This structure specifies information about XML schema definition
   references.
lcbHplxsdr (4 bytes): An unsigned integer that specifies the size, in bytes, of the Hplxsdr structure
   at the offset fcHplxsdr in the Table Stream. If lcbHplxsdr is zero, then fcHplxsdr is undefined
   and MUST be ignored.
fcSttbfBkmkSdt (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
    SttbfBkmkSdt that contains information about the structured document tag bookmarks in
    the document begins at this offset. If lcbSttbfBkmkSdt is zero, then fcSttbfBkmkSdt is
    undefined and MUST be ignored.
    The SttbfBkmkSdt is parallel to the PlcBkfd at offset fcPlcfBkfSdt in the Table Stream. Each
    element in the SttbfBkmkSdt specifies information about the bookmark that is associated with
    the data element which is located at the same offset in that PlcBkfd. For this reason, the
    SttbfBkmkSdt that begins at offset fcSttbfBkmkSdt, and the PlcBkfd that begins at offset
    fcPlcfBkfSdt, MUST contain the same number of elements.
lcbSttbfBkmkSdt (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    SttbfBkmkSdt at offset fcSttbfBkmkSdt.
fcPlcfBkfSdt (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcBkfd
    that contains information about the structured document tag bookmarks in the document begins
    at this offset. If lcbPlcfBkfSdt is zero, fcPlcfBkfSdt is undefined and MUST be ignored.
    Each data element in the PlcBkfd is associated, in a one-to-one correlation, with a data element
    in the PlcBkld at offset fcPlcfBklSdt. For this reason, the PlcBkfd that begins at offset
    fcPlcfBkfSdt, and the PlcBkld that begins at offset fcPlcfBklSdt, MUST contain the same
    number of data elements. The PlcBkfd is parallel to the SttbfBkmkSdt at offset
    fcSttbfBkmkSdt in the Table Stream. Each data element in the PlcBkfd specifies information
                                                                                               91 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    about the bookmark that is associated with the element which is located at the same offset in that
    SttbfBkmkSdt. For this reason, the PlcBkfd that begins at offset fcPlcfBkfSdt, and the
    SttbfBkmkSdt that begins at offset fcSttbfBkmkSdt, MUST contain the same number of
    elements.
lcbPlcfBkfSdt (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcBkfd at
    offset fcPlcfBkfSdt.
fcPlcfBklSdt (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcBkld
    that contains information about the structured document tag bookmarks in the document begins
    at this offset. If lcbPlcfBklSdt is zero, fcPlcfBklSdt is undefined and MUST be ignored.
    Each data element in the PlcBkld is associated, in a one-to-one correlation, with a data element
    in the PlcBkfd at offset fcPlcfBkfSdt. For this reason, the PlcBkld that begins at offset
    fcPlcfBklSdt, and the PlcBkfd that begins at offset fcPlcfBkfSdt MUST contain the same
    number of data elements.
lcbPlcfBklSdt (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcBkld at
    offset fcPlcfBklSdt.
fcCustomXForm (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
   array of 16-bit Unicode characters, which specifies the full path and file name of the XML
   Stylesheet to apply when saving this document in XML format, begins at this offset. If
   lcbCustomXForm is zero, fcCustomXForm is undefined and MUST be ignored.
lcbCustomXForm (4 bytes): An unsigned integer that specifies the size, in bytes, of the array at
    offset fcCustomXForm in the Table Stream. This value MUST be less than or equal to 4168 and
    MUST be evenly divisible by two.
fcSttbfBkmkProt (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An
    SttbfBkmkProt that contains information about range-level protection bookmarks in the
    document begins at this offset. If lcbSttbfBkmkProt is zero, fcSttbfBkmkProt is undefined and
    MUST be ignored.
    The SttbfBkmkProt is parallel to the PlcBkf at offset fcPlcfBkfProt in the Table Stream. Each
    element in the SttbfBkmkProt specifies information about the bookmark that is associated with
    the data element which is located at the same offset in that PlcBkf. For this reason, the
    SttbfBkmkProt that begins at offset fcSttbfBkmkProt, and the PlcBkf that begins at offset
    fcPlcfBkfProt, MUST contain the same number of elements.
lcbSttbfBkmkProt (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    SttbfBkmkProt at offset fcSttbfBkmkProt.
fcPlcfBkfProt (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcBkf
    that contains information about range-level protection bookmarks in the document begins at this
    offset. If lcbPlcfBkfProt is zero, then fcPlcfBkfProt is undefined and MUST be ignored.
    Each data element in the PlcBkf is associated, in a one-to-one correlation, with a data element in
    the PlcBkl at offset fcPlcfBklProt. For this reason, the PlcBkf that begins at offset
    fcPlcfBkfProt, and the PlcBkl that begins at offset fcPlcfBklProt, MUST contain the same
    number of data elements. The PlcBkf is parallel to the SttbfBkmkProt at offset
    fcSttbfBkmkProt in the Table Stream. Each data element in the PlcBkf specifies information
    about the bookmark that is associated with the element which is located at the same offset in that
    SttbfBkmkProt. For this reason, the PlcBkf that begins at offset fcPlcfBkfProt, and the
    SttbfBkmkProt that begins at offset fcSttbfBkmkProt, MUST contain the same number of
    elements.
lcbPlcfBkfProt (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcBkf at
    offset fcPlcfBkfProt.
                                                                                              92 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fcPlcfBklProt (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcBkl
    containing information about range-level protection bookmarks in the document begins at this
    offset. If lcbPlcfBklProt is zero, then fcPlcfBklProt is undefined and MUST be ignored.
    Each data element in the PlcBkl is associated in a one-to-one correlation with a data element in
    the PlcBkf at offset fcPlcfBkfProt, so the PlcBkl beginning at offset fcPlcfBklProt and the
    PlcBkf beginning at offset fcPlcfBkfProt MUST contain the same number of data elements.
lcbPlcfBklProt (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcBkl at
    offset fcPlcfBklProt.
fcSttbProtUser (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A
    SttbProtUser that specifies the usernames that are used for range-level protection begins at
    this offset.
lcbSttbProtUser (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    SttbProtUser at the offset fcSttbProtUser.
fcPlcfpmiOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
    Deprecated paragraph mark information cache begins at this offset. Information SHOULD
    NOT<100> be emitted at this offset and SHOULD<101> be ignored. If lcbPlcfpmiOld is zero,
    then fcPlcfpmiOld is undefined and MUST be ignored.
lcbPlcfpmiOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    paragraph mark information cache at offset fcPlcfpmiOld in the Table Stream. SHOULD<102> be
    zero.
fcPlcfpmiOldInline (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
    Deprecated paragraph mark information cache begins at this offset. Information SHOULD
    NOT<103> be emitted at this offset and SHOULD<104> be ignored. If lcbPlcfpmiOldInline is
    zero, then fcPlcfpmiOldInline is undefined and MUST be ignored.
lcbPlcfpmiOldInline (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    deprecated paragraph mark information cache at offset fcPlcfpmiOldInline in the Table Stream.
    SHOULD<105> be zero.
fcPlcfpmiNew (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
    Deprecated paragraph mark information cache begins at this offset. Information SHOULD
    NOT<106> be emitted at this offset and SHOULD<107> be ignored. If lcbPlcfpmiNew is zero,
    then fcPlcfpmiNew is undefined and MUST be ignored.
lcbPlcfpmiNew (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    paragraph mark information cache at offset fcPlcfpmiNew in the Table Stream. SHOULD<108>
    be zero.
fcPlcfpmiNewInline (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
    Deprecated paragraph mark information cache begins at this offset. Information SHOULD
    NOT<109> be emitted at this offset and SHOULD<110> be ignored. If lcbPlcfpmiNewInline is
    zero, then fcPlcfpmiNewInline is undefined and MUST be ignored.
lcbPlcfpmiNewInline (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    deprecated paragraph mark information cache at offset fcPlcfpmiNewInline in the Table Stream.
    SHOULD<111> be zero.
fcPlcflvcOld (4 bytes): An unsigned integer that specifies an offset in the Table Stream. Deprecated
    listnum field cache begins at this offset. Information SHOULD NOT<112> be emitted at this
                                                                                               93 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    offset and SHOULD<113> be ignored. If lcbPlcflvcOld is zero, then fcPlcflvcOld is undefined
    and MUST be ignored.
lcbPlcflvcOld (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    listnum field cache at offset fcPlcflvcOld in the Table Stream. SHOULD<114> be zero.
fcPlcflvcOldInline (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
    Deprecated listnum field cache begins at this offset. Information SHOULD NOT<115> be emitted
    at this offset and SHOULD<116> be ignored. If lcbPlcflvcOldInline is zero, fcPlcflvcOldInline
    is undefined and MUST be ignored.
lcbPlcflvcOldInline (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    deprecated listnum field cache at offset fcPlcflvcOldInline in the Table Stream. SHOULD<117>
    be zero.
fcPlcflvcNew (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
    Deprecated listnum field cache begins at this offset. Information SHOULD NOT<118> be emitted
    at this offset and SHOULD<119> be ignored. If lcbPlcflvcNew is zero, fcPlcflvcNew is
    undefined and MUST be ignored.
lcbPlcflvcNew (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    listnum field cache at offset fcPlcflvcNew in the Table Stream. SHOULD<120> be zero.
fcPlcflvcNewInline (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
    Deprecated listnum field cache begins at this offset. Information SHOULD NOT<121> be emitted
    at this offset and SHOULD<122> be ignored. If lcbPlcflvcNewInline is zero,
    fcPlcflvcNewInline is undefined and MUST be ignored.
lcbPlcflvcNewInline (4 bytes): An unsigned integer that specifies the size, in bytes, of the
    deprecated listnum field cache at offset fcPlcflvcNewInline in the Table Stream.
    SHOULD<123> be zero.
fcPgdMother (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
   Deprecated document page layout cache begins at this offset. Information SHOULD NOT <124> be
   emitted at this offset and SHOULD<125> be ignored. If lcbPgdMother is zero, fcPgdMother is
   undefined and MUST be ignored.
lcbPgdMother (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    document page layout cache at offset fcPgdMother in the Table Stream.
fcBkdMother (4 bytes): An unsigned integer that specifies an offset in the Table Stream.
   Deprecated document text flow break cache begins at this offset. Information SHOULD NOT <126> be
   emitted at this offset and SHOULD<127> be ignored. If lcbBkdMother is zero, then fcBkdMother is
   undefined and MUST be ignored.
lcbBkdMother (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
   document text flow break cache at offset fcBkdMother in the Table Stream.
fcAfdMother (4 bytes): An unsigned integer that specifies an offset in the Table Stream. Deprecated
    document author filter cache begins at this offset. Information SHOULD NOT <128> be emitted at this
    offset and SHOULD<129> be ignored. If lcbAfdMother is zero, then fcAfdMother is undefined and
    MUST be ignored.
lcbAfdMother (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
   document author filter cache at offset fcAfdMother in the Table Stream.
fcPgdFtn (4 bytes): An unsigned integer that specifies an offset in the Table Stream. Deprecated
   footnote layout cache begins at this offset. Information SHOULD NOT <130> be emitted at this offset
   and SHOULD<131> be ignored. If lcbPgdFtn is zero, then fcPgdFtn is undefined and MUST be
   ignored.
                                                                                               94 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lcbPgdFtn (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    footnote layout cache at offset fcPgdFtn in the Table Stream.
fcBkdFtn (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The deprecated
   footnote text flow break cache begins at this offset. Information SHOULD NOT <132> be emitted at
   this offset and SHOULD<133> be ignored. If lcbBkdFtn is zero, fcBkdFtn is undefined and MUST be
   ignored.
lcbBkdFtn (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
   footnote text flow break cache at offset fcBkdFtn in the Table Stream.
fcAfdFtn (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The deprecated
    footnote author filter cache begins at this offset. Information SHOULD NOT <134> be emitted at this
    offset and SHOULD<135> be ignored. If lcbAfdFtn is zero, fcAfdFtn is undefined and MUST be
    ignored.
lcbAfdFtn (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated footnote
   author filter cache at offset fcAfdFtn in the Table Stream.
fcPgdEdn (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated endnote layout cache begins at this offset. Information SHOULD NOT <136> be emitted at
   this offset and SHOULD<137> be ignored. If lcbPgdEdn is zero, then fcPgdEdn is undefined and
   MUST be ignored.
lcbPgdEdn (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
    endnote layout cache at offset fcPgdEdn in the Table Stream.
fcBkdEdn (4 bytes): An unsigned integer that specifies an offset in the Table Stream. The
   deprecated endnote text flow break cache begins at this offset. Information SHOULD NOT <138> be
   emitted at this offset and SHOULD<139> be ignored. If lcbBkdEdn is zero, fcBkdEdn is undefined
   and MUST be ignored.
lcbBkdEdn (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated
   endnote text flow break cache at offset fcBkdEdn in the Table Stream.
fcAfdEdn (4 bytes): An unsigned integer that specifies an offset in the Table Stream. Deprecated
    endnote author filter cache begins at this offset. Information SHOULD NOT <140> be emitted at this
    offset and SHOULD<141> be ignored. If lcbAfdEdn is zero, then fcAfdEdn is undefined and MUST
    be ignored.
lcbAfdEdn (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated endnote
   author filter cache at offset fcAfdEdn in the Table Stream.
fcAfd (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A deprecated AFD
    structure begins at this offset. Information SHOULD NOT<142> be emitted at this offset and
    SHOULD<143> be ignored. If lcbAfd is zero, fcAfd is undefined and MUST be ignored.
lcbAfd (4 bytes): An unsigned integer that specifies the size, in bytes, of the deprecated AFD
   structure at offset fcAfd in the Table Stream.
2.5.10 FibRgFcLcb2007
The FibRgFcLcb2007 structure is a variable-sized portion of the Fib. It extends the FibRgFcLcb2003.
                                        1                                       2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                       0                                       0
                                                                                                                                95 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                  ...
...
fcPlcfmthd
lcbPlcfmthd
fcSttbfBkmkMoveFrom
lcbSttbfBkmkMoveFrom
fcPlcfBkfMoveFrom
lcbPlcfBkfMoveFrom
fcPlcfBklMoveFrom
lcbPlcfBklMoveFrom
fcSttbfBkmkMoveTo
lcbSttbfBkmkMoveTo
fcPlcfBkfMoveTo
lcbPlcfBkfMoveTo
fcPlcfBklMoveTo
lcbPlcfBklMoveTo
fcUnused1
lcbUnused1
fcUnused2
lcbUnused2
fcUnused3
lcbUnused3
fcSttbfBkmkArto
lcbSttbfBkmkArto
fcPlcfBkfArto
                                                                96 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                             lcbPlcfBkfArto
fcPlcfBklArto
lcbPlcfBklArto
fcArtoData
lcbArtoData
fcUnused4
lcbUnused4
fcUnused5
lcbUnused5
fcUnused6
lcbUnused6
fcOssTheme
lcbOssTheme
fcColorSchemeMapping
lcbColorSchemeMapping
                                                                                97 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fcPlcfBklMoveTo (4 bytes): This value is undefined and MUST be ignored.
2.5.11 FibRgCswNew
The FibRgCswNew structure is an extension to the Fib structure that exists only if Fib.cswNew is
nonzero.
                                        1                                       2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                       0                                       0
                                                                                                                                98 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                               ...
nFibNew (2 bytes): An unsigned integer that specifies the version number of the file format that is
   used. This value MUST be one of the following.
Value
0x00D9
0x0101
0x010C
0x0112
rgCswNewData (variable): Depending on the value of nFibNew this is one of the following.
2.5.12 FibRgCswNewData2000
                                         1                                           2                                        3
0   1   2   3   4    5   6   7   8   9       1   2   3   4     5     6   7   8   9       1    2   3   4   5   6   7   8   9       1
                                         0                                           0                                        0
cQuickSavesNew
cQuickSavesNew (2 bytes): An unsigned integer that specifies the number of times that this
   document was incrementally saved since the last full save. This value MUST be between 0 and
   0x000F, inclusively.
2.5.13 FibRgCswNewData2007
                                         1                                           2                                        3
0   1   2   3   4    5   6   7   8   9       1   2   3   4     5     6   7   8   9       1    2   3   4   5   6   7   8   9       1
                                         0                                           0                                        0
rgCswNewData2000 lidThemeOther
lidThemeFE lidThemeCS
                                                                                                                                      99 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.5.14 Determining the nFib
The nFib value specifies the version number of the file format that is used. The proper nFib value for
the current document is determined in the following way:
The Fib structure is located at offset 0 of the WordDocument Stream. Given the variable size of the
Fib, the proper way to load it is the following:
1.    Set all bytes of the in-memory version of the Fib being used to 0. It is recommended to use the
      largest version of the Fib structure as the in-memory version.
2. Read the entire FibBase, which MUST be present and has fixed size.
3. Read Fib.csw.
4.    Read the minimum of Fib.csw * 2 bytes and the size, in bytes, of the in-memory version of
      FibRgW97 into FibRgW97.
5.    If the application expects fewer bytes than indicated by Fib.csw, advance by the difference
      thereby skipping the unknown portion of FibRgW97.
6. Read Fib.cslw.
7.    Read the minimum of Fib.cslw * 4 bytes and the size, in bytes, of the in-memory version of
      FibRgLw97 into FibRgLw97.
8.    If the application expects fewer bytes than indicated by Fib.cslw, advance by the difference
      thereby skipping the unknown portion of FibRgLw97.
9. Read Fib.cbRgFcLcb.
10. Read the minimum of Fib.cbRgFcLcb * 8 bytes and the size, in bytes, of the in-memory version
    of FibRgFcLcb into FibRgFcLcb.
11. If the application expects fewer bytes than indicated by Fib.cbRgFcLcb, advance by the
    difference, thereby skipping the unknown portion of FibRgFcLcb.
13. Read the minimum of Fib.cswNew * 2 bytes and the size, in bytes, of the in-memory version of
    FibRgCswNew into FibRgCswNew.
For ease of implementation, the Sprms are listed as 16-bit integers rather than structures. The
following formulas specify the relationship between the 16-bit integer representation and the members
of the Sprm structure. The single ampersand (&) represents the bitwise AND operation; all fractions
are rounded down to the previous whole number.
                                                                                               100 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.6.1 Character Properties
The following table specifies the character property modifiers, including the valid sprm values, their
function, and the corresponding operand type and meaning.
                                  §      If sprmCFOle2 is also present and set to "true" and the associated field
                                         does not have grffldEnd.fZombieEmbed set, the operand of
                                         sprmCPicLocation specifies the location of an OLE object storage. If the
                                         file is not encrypted with Office Binary Document RC4 CryptoAPI
                                         Encryption (section 2.2.6.3), the value specifies the name of an OLE
                                         object storage in the ObjectPool of the document.
                                                                                                          101 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                                                                                          102 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                           0x0015 - Applied a date style
                                           0x0016 - Applied a distribution list style
                                           0x0017 - Applied a bullet list style
                                           0x0018 - Applied a column style
                                           0x0019 - Applied a carbon copy style
                                           0x001A - Replaced text with superscript
                                           0x001B - Replaced whitespace galley with tabs
                                           0x001C - Removed leading whitespace
                                           0x001D - Removed manual numbering
                                           0x001E - Replaced two hyphens with long (em) dash
                                           0x001F - Adjusted spaces before: '!', '?', or ';'
                                           0x0020 - Inserted paragraph mark
                                           0x0021 - Replaced leading whitespace to first line indent
                                           0x0022 - Removed space between DBC and SBC to use auto space
                                           0x0023 - Replaced to match to open parenthesis
                                           0x0024 - Replaced double byte to single byte
                                           0x0025 - Replaced single byte to double byte
                                           0x0026 - Replaced manual emphasis
                                           0x0027 - Replaced border characters with borders
                                           0x0028 - Replaced e-mail history characters with indentation
                                           0x0029 - Replaced URL or UNC with hyperlink
                                           0x002A - Replaced Gateway-generated hex characters
                                           0x002B - Applied outline level for document map
                                                                                                          103 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                  are not used as style separators.
sprmCFMathPr             0x1A     A MathPrOperand that specifies the justification of equations in the
      (0xC81A)                    paragraph. This Sprm MUST only be applied to paragraph mark characters or
                                  line break characters (Unicode 0x000B). By default, equations are justified
                                  according to the mathbpjc member of the DOPMTH. MAY<146> be ignored.
sprmCIstd                0x30     An unsigned integer that specifies the istd of a character style to apply.
      (0x4A30)                    To apply the istd:
                                  1.     Reset the character properties of the text to match the results of the
                                         paragraph style (in other words, revert any formatting that is applied on
                                         top of the paragraph style).
                                  2.     Fetch the set of properties from the specified character style. (For
                                         instructions, see Applying Properties.)
                                  3.     Apply those properties to the current text.
                                  During steps 1 and 3, preserve the previous values of the following:
                                  §      Whether the text is formatted as deleted revision mark text (for
                                         example, by sprmCFRMarkDel).
                                  §      Whether the text is formatted with right-to-left layout (for example, by
                                         sprmCFBiDi).
                                  §      Whether the text is displayed right-to-left or is in a South Asian
                                         language. (for example, by sprmCFComplexScripts).
                                  §      Whether the field text is hidden (for example, by sprmCFFldVanish).
                                  §      Whether the text is formatted as inserted revision mark text (for
                                         example, by sprmCFRMarkIns).
                                  §      Whether the text has a special meaning and special display handling (for
                                         example, by sprmCFSpec).
                                  §      Whether the text has associated picture data (for example, by
                                         sprmCFData).
                                  §      Whether the character is a placeholder for an OLE object (for example,
                                         by sprmCFOle2).
                                  §      Whether the text is hidden in Web Layout view (for example, by
                                         sprmCFWebHidden).
                                  §      Whether the text is hidden and the image of a shape is displayed in its
                                         place (for example, by sprmCFObj).
                                  §      The position in the Data Stream of a picture, or the name of an Object
                                         Linking and Embedding (OLE) stream (for example, by
                                         sprmCPicLocation).
                                  §      Whether the text has an associated property revision mark, as well as its
                                         author and date/time (for example, by sprmCPropRMark).
                                  §      Paragraph properties that have been preserved for revision marking (for
                                         example, by sprmCWall).
                                  §      The reason value of the inserted or modified revision mark text (for
                                         example, by sprmCIdslRMark).
                                  §      Whether the text is a symbol and, if it is, the font and character code (for
                                         example, by sprmCSymbol).
                                  §      Any previous operand value of sprmCIdctHint.
                                  §      The highlighting color of the text (for example, from sprmCHighlight).
                                  §      Whether the text is hidden from display when hiding arbitrary XML
                                         delimiters (for example, from sprmCFSdtVanish).
                                  §      The type of font substitution that is needed for the associated text (for
                                         example, from sprmCNeedFontFixup).
                                  §      The revision save ID that is associated with the insertion of text (for
                                         example, from sprmCRsidText).
                                  §      The revision save ID that is associated with character formatting (for
                                         example, from sprmCRsidProp).
                                  §      The revision save ID that is associated with the tracked deletion of text
                                         (for example, by sprmCRsidRMDel).
                                  §      The names of the authors who inserted the text, (for example, by
                                         sprmCIbstRMark).
                                  §      The dates and times at which the text was inserted (for example, by
                                         sprmCDttmRMark).
                                  §      The names of the authors who deleted the text (for example, by
                                         sprmCIbstRMarkDel).
                                                                                                            104 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                  §  The dates and times at which the text was deleted (for example, by
                                     sprmCDttmRMarkDel).
                                  §  The justification of equations in the paragraph (for example, by
                                     sprmCFMathPr).
                                                                                                            105 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                     stream (for example, by sprmCPicLocation).
                                  §  Any previous operand value of sprmCIdctHint.
                                  §  The highlighting color of the text (for example, by sprmCHighlight).
                                  §  The type of font substitution that is needed for the associated text (for
                                     example, by sprmCNeedFontFixup).
                                  §  The revision save ID that is associated with the insertion of text (for
                                     example, by sprmCRsidText).
                                  §  The revision save ID that is associated with character formatting (for
                                     example, by sprmCRsidProp).
                                  §  The revision save ID that is associated with the tracked deletion of text
                                     (for example, by sprmCRsidRMDel).
                                  §  The justification of equations in the paragraph (for example, by
                                     sprmCFMathPr).
sprmCKcd                 0x34     A byte that specifies the kind of emphasis to apply to the text. The operand
      (0x2A34)                    MUST be one of the following values.
0x00 - No emphasis
                                  The operands map to Unicode characters as shown following. The East Asian
                                  language of the text is specified by sprmCRgLid1_80 and sprmCRgLid1. The
                                  default East Asian language is Japanese if sprmCRgLid1_80 or sprmCRgLid1
                                  does not specify Japanese, Korean, Chinese (Taiwan), or Chinese (China).
                                                                                                            106 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                  §  In the Chinese (Taiwan) language, the Unicode character of 0x3002 is
                                     positioned above the text.
                                                                                                           107 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                  sprmCMajority can affect any of the character properties in the following list.
                                  If a character property is affected, that property on the text is then set to the
                                  value of that property in the underlying paragraph style, taking the style
                                  hierarchy into account.
                                  To determine if a given property (from the following list of potentially affected
                                  character properties) is affected, do the following:
                                  1.     Find the property value on the text.
                                  2.     Find the property value as specified in the grpprl member of
                                         CMajorityOperand. If the property value is not specified in the grpprl
                                         member, use the default value.
                                  3.     Compare the two values.
                                  4.     If the values match, the property is affected.
                                                                                                            108 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                  §  The font index that is used to display the text only if the text flow is
                                     right-to-left or if the language for the text is a South Asian language (for
                                     example, by sprmCFtcBi)
                                  §  The size of the text (for example, by sprmCHps)
                                  §  The size of the text, for text that is displayed right-to-left (for example,
                                     by sprmCHpsBi)
                                  §  The vertical position of the text relative to the normal position (for
                                     example, by sprmCHpsPos)
                                  §  The superscript or subscript for text (for example, by sprmCIss)
                                  §  The kind of emphasis to apply to the text (for example, by sprmCKcd)
                                  §  The underlining style of the text (for example, by sprmCKul)
                                  §  The extra space, in twips, between a character and the one to its right
                                     (for example, by sprmCDxaSpace)
                                  §  The color of the text (for example, by sprmCCv)
                                  §  The text effect of the text (for example, by sprmCSfxText)
                                  §  The language of the text, except for East Asian languages (for example,
                                     by sprmCRgLid0)
                                  §  The language of the text, if it is an East Asian language (for example, by
                                     sprmCRgLid1)
                                  §  The language of the text when the text is displayed right-to-left (for
                                     example, by sprmCLidBi)
                                  Any character property that is not in this list MUST NOT be affected by
                                  sprmCMajority.
sprmCIss                 0x48     An 8-bit unsigned integer that specifies superscript or subscript for text. By
      (0x2A48)                    default, text is normal. The value MUST be one of those listed following.
sprmCHpsKern             0x4B     A signed integer that specifies a font size threshold, in half-points, at or
      (0x484B)                    above which kerning is applied to the text. If the operand is 0, no kerning is
                                  applied; otherwise, it MUST be a value between 1 and 3276. By default,
                                  kerning is not applied to any characters.
sprmCHresi               0x4E     An HresiOperand value that specifies the word-breaking behavior for the text.
      (0x484E)                    By default the text uses normal hyphenation.
sprmCRgFtc0              0x4F     A 2-byte signed integer value that is an index into the font table (SttbfFfn).
      (0x4A4F)                    The font that is referenced by this index is used to display the text only if the
                                  conditions for using these fonts do not apply: sprmCRgFtc1, sprmCRgFtc2
                                  and sprmCFtcBi. This value MUST be between 0 and a number that is one
                                  less than the count of entries in SttbfFfn unless there are 0 entries, in which
                                  case this value MUST be 0. By default, the font used under these conditions is
                                  STSH.Stshi.Stshif.ftcAsci.
sprmCRgFtc1              0x50     A 2-byte signed integer value that is an index into the font table (SttbfFfn).
      (0x4A50)                    The font referenced by this index is used only if the language for the text is
                                  an East Asian language. This value MUST be between 0 and a number that is
                                  one less than the count of entries in SttbfFfn unless there are 0 entries, in
                                  which case this value MUST be 0. By default, the font that is used under
                                  these conditions is STSH.Stshi.Stshif.ftcFE.
sprmCRgFtc2              0x51     A 2-byte signed integer that is an index into the font table (SttbfFfn). The
      (0x4A51)                    font that is referenced by this index is used to display text if the character
                                  falls outside the Unicode character range U+0020 to U+007F and the
                                  conditions for using these fonts do not apply: sprmCRgFtc1 and sprmCFtcBi.
                                  This value MUST be between 0 and a number that is one less than the count
                                  of entries in SttbfFfn unless there are 0 entries, in which case this value
                                  MUST be 0. By default, the font that is used under these conditions is
                                  STSH.Stshi.Stshif.ftcOther.
sprmCCharScale           0x52     A 2-byte unsigned integer that specifies the percentage by which to
      (0x4852)                    horizontally scale the text, thereby changing the shape of the characters. The
                                  value MUST be greater than or equal to 1, and less than or equal to 600.
                                  Values that are less than 100 represent the compressing of text. Values that
                                                                                                          109 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                  are greater than 100 represent the expanding of text. By default, text is
                                  neither compressed nor expanded.
sprmCFDStrike            0x53     A ToggleOperand value that specifies whether the text is formatted with the
      (0x2A53)                    double strikethrough effect. By default, text is not struck through.
sprmCFImprint            0x54     A ToggleOperand value that specifies whether the text is formatted with the
      (0x0854)                    imprint effect. By default, text does not have this formatting applied. If
                                  sprmCFEmboss, sprmCFOutline or sprmCFShadow is "true", then
                                  sprmCFImprint MUST be "false".
sprmCFSpec               0x55     A ToggleOperand value that specifies whether the current text has a
      (0x0855)                    meaning that differs or displays differently than the underlying character to
                                  which it is applied. This value SHOULD<147> be applied only to the following
                                  characters.
                                           0x0 - None.
                                           0x1 - Las Vegas Lights. Text is bordered by marquee lights that blink
                                           between the colors red, yellow, green, and blue.
                                           0x2 - Blinking background. Text has a black background that blinks
                                           on and off.
                                           0x3 - Sparkle Text. Text is overlaid with multicolored stars that blink
                                           on and off at regular intervals.
                                           0x4 - Marching Black Ants. Text is surrounded by a black dashed-
                                           line border. The border is animated so that the individual dashes
                                                                                                          110 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                         appear to move clockwise around the text.
                                             0x5 - Marching Red Ants. Text is surrounded by a red dashed-line
                                             border that is animated to appear to move clockwise around the
                                             text.
                                             0x6 - Shimmer. Text is alternately blurred and unblurred at regular
                                             intervals, to give the appearance of shimmering.
sprmCFBiDi               0x5A     A ToggleOperand value that specifies whether the text is formatted with
      (0x085A)                    right-to-left layout. By default, text is displayed from right to left if the
                                  language for the text is a right-to-left language.
sprmCFBoldBi             0x5C     A ToggleOperand value that specifies whether the text is formatted bold
      (0x085C)                    when displayed right-to-left or determined to be complex script. By default,
                                  text is not bold.
sprmCFItalicBi           0x5D     A ToggleOperand value that specifies whether the text is italicized when
      (0x085D)                    displayed right-to-left or determined to be complex script. By default, text is
                                  not italicized.
sprmCFtcBi               0x5E     A 2-byte signed index into the font table (SttbfFfn). The font that is
      (0x4A5E)                    referenced by this index is used to display the text only if the text flow is
                                  right-to-left or if the text is a complex script. This value MUST be a number
                                  that is between 0 and one less than the count of entries in SttbfFfn unless
                                  there are 0 entries, in which case this value MUST be 0. By default, the font
                                  used under these conditions is STSH.Stshi.ftcBi.
sprmCLidBi               0x5F     A LID value that specifies the language of the text when the text is displayed
      (0x485F)                    right-to-left or if the text is complex script. By default, text language is
                                  undefined and text is not checked for spelling, grammar, or hyphenation.
sprmCIcoBi               0x60     An ICO value that specifies the color of text when displayed right-to-left or
      (0x4A60)                    determined to be complex script.<148>
sprmCHpsBi               0x61     An unsigned 2-byte integer value that specifies the size of the text, for text
      (0x4A61)                    that is displayed right-to-left or text that is a complex script. This value is
                                  specified in half-points. The specified value MUST be between 0 and 3276. By
                                  default, text of the following Unicode subranges uses the associated size, in
                                  half points, as specified in [MC-USB].
                                                                                                         111 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                  time when the text is edited. This value MUST be one of the following.
                                                                                                       112 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
0x0022 – Removed space between DBC and SBC to use auto space.
                                           0x00 - default
                                           Use sprmCRgLid0 (or sprmCRgLid0_80) for language. Use
                                           sprmCRgFtc0 for font if the character is between 0x0020 and
                                           0x007F, inclusive. Otherwise, use sprmCRgFtc2. Use sprmCHps for
                                           size, sprmCFBold for bold, and sprmCFItalic for italic.
                                           0x01 - eastAsia
                                           Use sprmCRgLid1 (or sprmCRgLid1_80) for language, sprmCRgFtc1
                                           for font, sprmCHps for size, sprmCFBold for bold, and sprmCFItalic
                                           for italic.
                                           0x02 - cs
                                           Use sprmCLidBi for language, sprmCFtcBi for font, sprmCHpsBi for
                                           size, sprmCFBoldBi for bold, and sprmCFItalicBi for italic.
sprmCCv                  0x70     A COLORREF value that specifies the color of the text. The default text color
      (0x6870)                    is cvAuto.
sprmCShd                 0x71     A SHDOperand value that specifies the background shading for the text. By
                                                                                                           113 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
      (0xCA71)                    default, text is not shaded.
sprmCBrc                 0x72     A BrcOperand value that specifies the border on all four sides of the text.
      (0xCA72)                    The logical left border is hidden if the previous character on the same line has
                                  the same border as this character. The logical right border is hidden if the
                                  next character on the same line has the same border as this character. By
                                  default, text has no border.
                                  Brc.dptSpace MUST be ignored when applied to character borders.
sprmCRgLid0              0x73     A LID value that specifies the language of the text, except for East Asian
      (0x4873)                    languages. East Asian languages are specified by sprmCRgLid1. By default,
                                  the text language is undefined and text is not checked for spelling, grammar,
                                  or hyphenation.
sprmCRgLid1              0x74     A LID value that specifies the language of the text if it is an East Asian
      (0x4874)                    language. Other languages are specified by the sprmCRgLid0. By default, the
                                  text language is undefined and text is not checked for spelling, grammar, or
                                  hyphenation.
sprmCFNoProof            0x75     A ToggleOperand value that specifies whether the text is excluded from the
      (0x0875)                    proofing analysis. By default, text is not excluded from the proofing analysis.
sprmCFitText             0x76     A CFitTextOperand value that specifies a width, in twips, to which text is
      (0xCA76)                    expanded or condensed to fit. By default, text is not modified to fit into a
                                  specific width.
sprmCCvUl                0x77     A COLORREF value that specifies the color of the text underline. The default
      (0x6877)                    underline color is cvAuto.
sprmCFELayout            0x78     A FarEastLayoutOperand value that specifies text layout information for
      (0xCA78)                    East Asian languages. By default, text layout is unchanged by the
                                  sprmCFELayout value.
sprmCLbcCRJ              0x79     An LBCOperand value that specifies that this character is a special character
      (0x2879)                    representing a line break of the given type. The presence of a line break
                                  character means that the line ends at this point and that the rest of the text
                                  continues on another line even though it is part of the same paragraph. This
                                  Sprm MUST NOT be applied to any character other than a line break
                                  character (Unicode 0x000B). By default, text restarts at the beginning of the
                                  next line after a line break character.
sprmCFComplexScripts     0x82     A ToggleOperand value that specifies whether complex script formatting
      (0x0882)                    (for example, see sprmCFBoldBi) is applied to the text regardless of the
                                  Unicode characters themselves.
                                  By default, characters are evaluated to determine whether complex script
                                  formatting is applied.
sprmCWall                0x83     A Bool8 value that specifies whether the values of character properties are
      (0x2A83)                    preserved for revision-marking purposes until the modifications are accepted
                                  or rejected by the user.
                                  A value of 1 specifies that the values of properties are preserved. All
                                  character SPRMs that are encountered before the sprmCWall in the text
                                  property evaluation specify the state of the character properties before
                                  revision marking is enabled, whereas all character SPRMs that follow the
                                  sprmCWall specify the character property modifications that occur after
                                  revision marking is enabled.
                                  A value of 0 specifies that no values have been preserved (overriding any
                                  previously encountered sprmCWall SPRMs that specify the contrary). Neither
                                  SPRMs encountered before the sprmCWall, nor subsequent SPRMs (until
                                  another sprmCWall, if any), are treated in any special way with regard to
                                  revision marking.
                                  By default, values of properties are not preserved.
sprmCCnf                 0x85     A CNFOperand that specifies conditional character formatting for a specific
      (0xCA85)                    condition of a table style. The grpprl member of CNFOperand specifies the
                                  character formatting properties and MUST NOT contain any Sprms that are
                                  disallowed in the grpprlChpx member of UpxChpx.
                                  This sprm MUST only be specified within the grpprlChpx member of a
                                  UpxChpx within a table style definition (LPStd).
                                  By default, a table style definition does not include conditional formatting.
sprmCNeedFontFixup       0x86     An FFM that specifies the type of font substitution that is needed for the
      (0x2A86)                    associated text. Font substitution is needed when certain language characters
                                                                                                         114 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                     ispmd    operand
                                  are not supported by the current font for the text, so it is necessary to pick a
                                  different font that supports the characters. By default, text is not marked as
                                  requiring font substitution.
sprmCPbiIBullet          0x87     A CP value in the Bullet Pictures document that specifies which picture is used
      (0x6887)                    as a bullet character when rendering the bullet. The CP value MUST be
                                  greater than or equal to zero. The Bullet Pictures document is stored within
                                  the main document and marked by a hidden bookmark (1) called
                                  "_PictureBullets."
                                  This Sprm MUST NOT be applied to any character other than a paragraph
                                  mark (Unicode 0x000D), a cell mark (Unicode 0x0007), or a section mark
                                  (Unicode 0x000C). If a picture bullet is used, sprmCPbiGrf MUST be present
                                  to specify the properties of the picture bullet. By default, pictures are not
                                  used for rendering bullets.
sprmCPbiGrf              0x88     A PbiGrfOperand value that specifies whether a picture is used as a bullet
      (0x4888)                    character when rendering the bullet. This value also specifies the properties
                                  of the picture bullet. This Sprm MUST NOT be applied to any character other
                                  than a paragraph mark (Unicode 0x000D). If a picture bullet is used,
                                  sprmCPbiIBullet MUST be present to specify the location of the picture that is
                                  used for the bullet. By default, pictures are not used to render bullets.
sprmCPropRMark           0x89     A PropRMarkOperand value that specifies whether the text has an
      (0xCA89)                    associated property revision mark, as well as its author and the date and
                                  time.
                                  By default, text has no property revision marks.
sprmCFSdtVanish          0x90     A Bool8 value that specifies whether the text is hidden from display when
      (0x2A90)                    the option to hide arbitrary XML delimiters is enabled. This value MUST NOT
                                  be applied to any characters other than '<' (U+003C) or '>' (U+003E) with
                                  sprmCFSpec set to "true". By default, text is not hidden when the option to
                                  hide XML delimiters is enabled.
The following table specifies the paragraph property modifiers, including the valid sprm values, their
function, and the corresponding operand type and meaning.
                                                                                                         115 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                           ispmd     Operand
                                            Section 2.15.1.70.
                                         § Whether the paragraph has an associated property revision
                                            mark, as well as its author and the date and time (for example, by
                                            sprmPPropRMark).
                                         §  The numbering revision mark for the paragraph (for example, by
                                            sprmPNumRM).
                                         §  Whether a numbered list was applied to the paragraph after the
                                            previous revision (for example, by sprmPFNumRMIns).
sprmPIstdPermute               0x01      A SPPOperand value that specifies a potential change in the current
         (0xC601)                        paragraph style (istd).
                                         If the istd is not affected, this Prl MUST be ignored.
                                         If the istd is affected, this sprm is equivalent to sprmPIstd with the
                                         operand being the new istd.
sprmPIncLvl                    0x02      A signed 8-bit integer value. If the paragraph has an istd that is
         (0x2602)                        greater than or equal to 0x0001 and less than or equal to 0x0009, this
                                         value specifies an offset to the istd of the paragraph. If this value
                                         offsets the istd of the paragraph beyond one of the limits 0x0001 or
                                         0x0009, then the istd of the paragraph is set to that limit. See
                                         Determining Formatting Properties for information about how to
                                         determine the istd of the paragraph.
                                         If the istd of the paragraph is not within the range that was specified
                                         earlier, this value specifies an offset to the outline level of the
                                         paragraph, unless the outline level of the paragraph is equal to 0x09,
                                         in which case this value MUST be ignored. If this offset adjusts the
                                         outline level beyond one of the limits 0x00 or 0x09, than the outline
                                         level of the paragraph is set to that limit. See sprmPOutLvl for the
                                         outline level of the paragraph.
sprmPJc80                      0x03      An unsigned 8-bit integer that specifies the physical justification of the
         (0x2403)                        paragraph. This MUST be one of the following values.
                                                                                                           116 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                           ispmd     Operand
                                         on separate pages.
sprmPFPageBreakBefore          0x07      A Bool8 value that specifies whether this paragraph has a page break
         (0x2407)                        before it.
                                         By default, paragraphs do not have page breaks before them.
sprmPIlvl                      0x0A      An unsigned 8-bit integer that specifies the list level of the paragraph.
            (0x260A)                     This value MUST be ignored if this paragraph is not in a list (see
                                         sprmPIlfo). This value MUST be one of the following:
                                                  0x0 - 0x8
                                                  The value specifies the zero-based level of the list that
                                                  contains this paragraph. For example, a value of 0x0 means
                                                  that the paragraph is in the first level of the list.
                                                  0xC
                                                  The list skips this paragraph and does not include it in its
                                                  numbering.
                                         By default, a paragraph is in the first level of the list.
sprmPIlfo                      0x0B      A 16-bit signed integer value that is used to determine which list
            (0x460B)                     contains the paragraph. This value MUST be one of the following:
                                                  0x0000
                                                  This paragraph is not in a list, and any list formatting on the
                                                  paragraph is removed.
                                                  0x0001 - 0x07FE
                                                  The value is a 1-based index into PlfLfo.rgLfo. The LFO at this
                                                  index defines the list that this paragraph is in.
                                                  0xF801
                                                  This paragraph is not in a list.
                                                  0xF802 - 0xFFFF
                                                  The value is the negation of a 1-based index into PlfLfo.rgLfo.
                                                  The LFO at this index defines the list that this paragraph is in.
                                                  The logical left indentation (see sprmPDxaLeft) and the logical
                                                  left first line indentation (see sprmPDxaLeft1) of the
                                                  paragraph MUST be preserved despite any list formatting.
                                                                                                            117 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                           ispmd     Operand
                                         and 0x7BC0, inclusive. When auto spacing is supported and the value
                                         of sprmPFDyaAfterAuto is 1, this property is ignored. By default, the
                                         space after a paragraph is zero twips.
sprmPChgTabs                   0x15      A PChgTabsOperand value that specifies custom tab stops that are
        (0xC615)                         added or ignored. By default, custom tab stops are neither added nor
                                         ignored.
sprmPFInTable                  0x16      A Bool8 value that specifies whether this paragraph is in a table. The
         (0x2416)                        value MUST be 1 any time the table depth is greater than zero. See
                                         section 2.4.3, Overview of Tables. By default, paragraphs are not in
                                         tables.
sprmPFTtp                      0x17      A Bool8 that, when set to 1, specifies that the cell mark it is applied to
         (0x2417)                        is a Table Terminating Paragraph (TTP) mark. The TTP mark MUST be
                                         immediately preceded by a cell mark. See Overview of Tables. By
                                         default, a cell mark is not a Table Terminating Paragraph Mark.
sprmPDxaAbs                    0x18      A XAS_plusOne that specifies the logical left horizontal position
        (0x8418)                         relative to the horizontal anchor of the frame. See sprmPPc for the
                                         frame anchor. If the value is any of the those that follow, the operand
                                         specifies a special descriptive, relative position. The meanings that are
                                         provided correspond to the values that are specified in [ECMA-376]
                                         Part 4, Section 2.18.114 ST_XAlign (Horizontal Alignment Location):
                                                  0x0000 - left
                                                  0xFFFC - center
                                                  0xFFF8 - right
                                                  0xFFF4 - inside
                                                  0xFFF0 - outside
                                                  0x0000 - inline
                                                  0xFFFC - top
                                                  0xFFF8 - center
                                                  0xFFF4 - bottom
                                                  0xFFF0 - inside
                                                  0xFFEC - outside
                                                                                                          118 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                           ispmd     Operand
sprmPWr                        0x23      A 1-byte integer that specifies how text is wrapped around a frame. Its
          (0x2423)                       value MUST be one of those that follow, corresponding to the values of
                                         ST_Wrap that are specified in [ECMA-376] Part 4, Section 2.18.113
                                         ST_Wrap (Text Wrapping around Text Frame type).
                                                  0x00
                                                  ST_Wrap: auto
                                                  This value specifies automatic text wrapping.
                                                  0x01
                                                  ST_Wrap: notBeside
                                                  This value specifies that there is no text wrapping to either
                                                  side of the frame.
                                                  0x02
                                                  ST_Wrap: around
                                                  This value specifies that text is wrapped around the frame.
                                                  0x03
                                                  ST_Wrap: none
                                                  Text is not wrapped around the frame.
                                                  0x04
                                                  ST_Wrap: tight
                                                  This value specifies that text is tightly wrapped around the
                                                  frame.
                                                  0x05
                                                  ST_Wrap: through
                                                  This value specifies that text is wrapped through the frame, to
                                                  the contours of the contents of the frame.
                                                                                                            119 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                           ispmd     Operand
                                         DopBase structure is 1.
sprmPWHeightAbs                0x2B      A WHeightAbs value that specifies the height of the frame. By default,
        (0x442B)                         the height of a frame height is automatically determined based on the
                                         height of its contents.
sprmPDcs                       0x2C      A DCS value that specifies the properties, if any, of the drop cap for
        (0x442C)                         this paragraph. By default, paragraphs do not have a drop cap.
sprmPShd80                     0x2D      A Shd80 structure that specifies the background shading for the
        (0x442D)                         paragraph. By default, paragraphs are not shaded.
sprmPDyaFromText               0x2E      A YAS_nonNeg value that specifies the minimum vertical distance
        (0x842E)                         between the edge of the frame and the edge of main document text
                                         that wraps around the frame. By default, the minimum vertical
                                         distance is 0 twips.
sprmPDxaFromText               0x2F      A XAS_nonNeg value that specifies the minimum horizontal distance
        (0x842F)                         between the edge of the frame and the edge of main document text
                                         that wraps around the frame. By default, the minimum horizontal
                                         distance is 0 twips.
sprmPFLocked                   0x30      A Bool8 value that specifies whether the anchor of the frame which
         (0x2430)                        contains this paragraph is locked to its current location. By default, the
                                         frame anchor is not locked. This Sprm corresponds to the anchorLock
                                         attribute as specified in [ECMA-376] Part 4, Section 2.3.1.11 framePr
                                         (Text Frame Properties)
sprmPFWidowControl             0x31      A Bool8 value that specifies whether widow and orphan control is
         (0x2431)                        enabled for this paragraph. An orphaned line is the first line of a
                                         paragraph when it is displayed by itself at the bottom of a page. A
                                         widowed line is the last line of a paragraph when it is displayed by itself
                                         at the top of a page. When widow and orphan control is enabled, the
                                         application attempts to eliminate widowed and orphaned lines. By
                                         default, widow and orphan control is enabled.
sprmPFKinsoku                  0x33      A Bool8 value that specifies whether this paragraph uses East Asian
         (0x2433)                        typography and line-breaking rules to determine the valid characters
                                         that are allowed to begin and end each line of East Asian text. These
                                         rules are specified in [ECMA-376] Part 4, Section 2.3.1.16 kinsoku
                                         paragraph property. By default, paragraphs use East Asian rules to
                                         determine the allowed values for the first and last characters of each
                                         line of text.
sprmPFWordWrap                 0x34      A Bool8 value that, when equal to 0, specifies a preference to break
        (0x2434)                         Latin text that exceeds text line limits by breaking a word across two
                                         lines (breaking on the character level). If the language used is Korean,
                                         this property affects Korean text instead of Latin text.
                                         By default, the word is placed on the following line (breaking on the
                                         word level).
sprmPFOverflowPunct            0x35      A Bool8 value that, when equal to 0, specifies a preference against
        (0x2435)                         allowing a punctuation character that follows a word at the end of a
                                         line to appear beyond the extent of that line of text.
                                         By default, a single punctuation character that follows a word can
                                         appear beyond the extent of a line.
sprmPFTopLinePunct             0x36      A Bool8 value that specifies a preference to render punctuation
         (0x2436)                        characters at the beginning of a line so that they appear to be closer to
                                         both the beginning of the line and to the next character, regardless of
                                         the amount of whitespace in the glyph as defined by the font.
                                         By default, punctuation is rendered normally.
sprmPFAutoSpaceDE              0x37      A Bool8 value that specifies whether space is automatically inserted
         (0x2437)                        between East Asian and Latin text. By default, this option is enabled.
sprmPFAutoSpaceDN              0x38      A Bool8 value that specifies whether space is automatically inserted
         (0x2438)                        between East Asian text and numbers. By default, this option is
                                         enabled.
                                                                                                          120 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                           ispmd     Operand
sprmPWAlignFont                0x39      A 16-bit unsigned integer that specifies vertical font alignment for East
         (0x4439)                        Asian languages. This Sprm corresponds to the textAlignment
                                         paragraph property that is specified in [ECMA-376] Part 4, Section
                                         2.3.1.39. This value MUST be one of the following, corresponding to
                                         the values of ST_TextAlignment that are specified in [ECMA-376] Part
                                         4, Section 2.18.98.
                                                  0x0000
                                                  ST_TextAlignment: top
                                                  This value specifies that characters are aligned based on the
                                                  top of each character.
                                                  0x0001
                                                  ST_TextAlignment: center
                                                  This value specifies that characters are centered on the line.
                                                  0x0002
                                                  ST_TextAlignment: baseline
                                                  This value specifies that characters are aligned based on their
                                                  baseline. This is how standard Latin text is displayed.
                                                  0x0003
                                                  ST_TextAlignment: bottom
                                                  This value specifies that characters are aligned based on the
                                                  bottom of each character.
                                                  0x0004
                                                  ST_TextAlignment: auto
                                                  This value specifies that alignment is automatically determined
                                                  by the application.
                                                  0x0 - 0x8
                                                  The value is the zero-based outline level that this paragraph is
                                                  in.
                                                  0x9
                                                  The paragraph at any outline level; instead, the paragraph is
                                                  body text.
                                         This MUST be ignored if the paragraph has an istd that is greater than
                                         or equal to 0x1 and less than or equal to 0x9. By default, paragraphs
                                         are body text, and are therefore not in any outline level.
sprmPFBiDi                     0x41      A Bool8 value that specifies whether the paragraph uses right-to-left
         (0x2441)                        layout.
                                         By default, a paragraph does not use right-to-left layout.
sprmPFNumRMIns                 0x43      A Bool8 value that specifies whether a numbered list was applied to
        (0x2443)                         this paragraph after the previous revision. By default, paragraphs do
                                         not have numbered lists applied.
                                                                                                          121 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                           ispmd     Operand
sprmPNumRM                     0x45      A NumRMOperand value that specifies a numbering revision mark for
        (0xC645)                         this paragraph. By default, paragraphs do not have numbering revision
                                         marks.
sprmPHugePapx                  0x46      A 4-byte unsigned integer that specifies a location in the Data Stream.
        (0x6646)                         A PrcData structure begins at this offset and specifies additional
                                         properties for the paragraph. The cbGrpprl member of the referenced
                                         PrcData structure MUST NOT be less than 10. If an application
                                         processes this PrcData, then it MUST NOT process any more Prl
                                         elements in the array that contained the sprmPHugePapx.
                                         If a Prl with a sprm of sprmPHugePapx is in an array of Prl elements
                                         and is not the first element of the array, then that Prl MUST be ignored.
                                         If a Prl with a sprm of sprmPHugePapx is contained in the grpprl
                                         array of a GrpPrlAndIstd structure, then it MUST be the only Prl in that
                                         array and the istd member of that GrpPrlAndIstd structure MUST be
                                         zero.
                                         The sprmPHugePapx and sprmPTableProps values can refer to
                                         PrcDatas containing each other, but the chain MUST eventually
                                         terminate in a PrcData structure does not contain a sprmPHugePapx
                                         value or a sprmPTableProps value.
sprmPFUsePgsuSettings          0x47      A Bool8 value that specifies whether the paragraph adheres to the
         (0x2447)                        vertical components of the document grid. By default, text uses the
                                         document grid if one is defined. (See sprmSClm for more details about
                                         the document grid.)
sprmPFAdjustRight              0x48      A Bool8 value that specifies whether this paragraph is set to
         (0x2448)                        automatically adjust the right indent when a document grid for East
                                         Asian characters is defined. This Sprm is the same as the
                                         adjustRightInd paragraph property specified in [ECMA-376] Part 4,
                                         Section 2.3.1.1. By default, this option is enabled.
sprmPItap                      0x49      An integer value that specifies the table depth of this paragraph. See
            (0x6649)                     the Overview of Tables (section 2.4.3) for the rules that this value
                                         follows. This value, when present, MUST be a non-negative number. By
                                         default, paragraphs are not in tables.
sprmPDtap                      0x4A      A signed integer that specifies an addition or subtraction to the existing
         (0x664A)                        table depth of this paragraph. It provides an alternate way of
                                         specifying table depth to sprmPItap or a way to increment or
                                         decrement any value that was already set by sprmPItap or
                                         sprmPDtap.
                                         The resultant table depth MUST be non-negative and MUST obey the
                                         rules described in Overview of Tables (section 2.4.3).
                                         By default, paragraphs are not in tables.
sprmPFInnerTableCell           0x4B      A Bool8 value that specifies whether this paragraph is the final
         (0x244B)                        paragraph in a nested table cell.
                                         When true, the nesting level of this paragraph MUST be greater than
                                         1, indicating that this paragraph is in a table which is nested within
                                         another table.
                                         When true, this is the last paragraph of a nested table cell and its
                                         paragraph mark is treated as if it were an end of cell mark. By
                                         default, paragraphs are not the last paragraph of a nested table cell.
                                         See the Overview of Tables (section 2.4.3) for more information about
                                         nested tables.
sprmPFInnerTtp                 0x4C      A Bool8 value that specifies whether this paragraph is the final
         (0x244C)                        paragraph in a nested table row. When 1, the table depth of this
                                         paragraph MUST be greater than 1, indicating that this paragraph is in
                                         a table that is nested within another table. When 1, this is the last
                                         paragraph of a nested table row and its paragraph mark is treated as if
                                         it were a TTP mark. By default, paragraphs are not the last paragraph
                                         of a nested table row. See the Overview of Tables for more information
                                         about nested tables.
sprmPShd                       0x4D      A SHDOperand value that specifies the background shading for the
         (0xC64D)                        paragraph. By default, paragraphs are not shaded.
sprmPBrcTop                    0x4E      A BrcOperand value which specifies the top border of the paragraph.
         (0xC64E)                        This border is hidden if the previous paragraph is identical to this one
                                                                                                          122 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                           ispmd     Operand
                                         in terms of its top, bottom, left, and right borders; its left and right
                                         indents; its table depth; and its sprmPIpgp value.
                                         By default, paragraphs have no top border.
sprmPBrcLeft                   0x4F      A BrcOperand value that specifies the logical left border of the
         (0xC64F)                        paragraph. By default, paragraphs have no logical left border.
sprmPBrcBottom                 0x50      A BrcOperand value that specifies the bottom border of the paragraph
         (0xC650)                        This border is hidden if the next paragraph is identical to this one in
                                         terms of its top, bottom, left, and right borders; its left and right
                                         indents; its table depth; and its sprmPIpgp value.
                                         By default, paragraphs have no bottom border.
sprmPBrcRight                  0x51      A BrcOperand value that specifies the logical right border of the
         (0xC651)                        paragraph. By default, paragraphs have no logical right border.
sprmPBrcBetween                0x52      A BrcOperand value that specifies the border between this paragraph
         (0xC652)                        and the next. This border is hidden unless the next paragraph is
                                         identical to this one in terms of its top, bottom, left, and right borders,
                                         left and right indents, table depth, and sprmPIpgp value.
                                         By default, paragraphs have no borders between them.
sprmPBrcBar                    0x53      A BrcOperand value that has no effect.
         (0xC653)
sprmPDxcRight                  0x55      A signed 16-bit integer value that specifies the logical right indent of
         (0x4455)                        the paragraph in hundredths of character units. By default, there is
                                         no right indentation.
sprmPDxcLeft                   0x56      A signed 16-bit integer value that specifies the logical left indent of the
         (0x4456)                        paragraph in hundredths of character units. By default, there is no left
                                         indentation.
sprmPDxcLeft1                  0x57      A signed 16-bit integer value that specifies the logical left indent of the
         (0x4457)                        first line of the paragraph, in hundredths of character units, relative to
                                         the rest of the paragraph. By default, the first line is not indented
                                         relative to the rest of the paragraph.
sprmPDylBefore                 0x58      A signed 16-bit integer value that specifies the spacing before the
         (0x4458)                        paragraph, in 1/100 line units. This value MUST be at least -20 and
                                         MUST NOT exceed 31680. By default, paragraphs do not have spacing
                                         before them.
sprmPDylAfter                  0x59      A signed 16-bit integer that specifies the spacing after the paragraph,
         (0x4459)                        in 1/100 line units. MUST be at least -20 and MUST NOT exceed 31680.
                                         By default, paragraphs do not have spacing after them.
sprmPFOpenTch                  0x5A      A Bool8 value that specifies whether this table cell mark was being
        (0x245A)                         displayed when this file was last saved, even though it immediately
                                         follows a nested table.
sprmPFDyaBeforeAuto            0x5B      A Bool8 value that specifies whether the space displayed before this
        (0x245B)                         paragraph uses auto spacing. A value of 1 specifies that the
                                         sprmPDyaBefore value MUST be ignored when the application supports
                                         auto spacing. By default, auto spacing is disabled for paragraphs.
sprmPFDyaAfterAuto             0x5C      A Bool8 value that specifies whether the space displayed after this
        (0x245C)                         paragraph uses auto spacing. A value of 1 specifies that sprmPDyaAfter
                                         MUST be ignored if the application supports auto spacing. By default,
                                         auto spacing is disabled for paragraphs.
sprmPDxaRight                  0x5D      An XAS value that specifies the logical right indent of the paragraph, in
         (0x845D)                        twips. By default, there is no right indentation.
sprmPDxaLeft                   0x5E      An XAS value that specifies the logical left indent of the paragraph, in
         (0x845E)                        twips. By default, there is no left indentation.
sprmPNest                      0x5F      An XAS value that is added to the sprmPDxaLeft value to determine the
         (0x465F)                        final indent of a paragraph. By default, there is no additional space
                                         added to sprmPDxaLeft to determine the final indent of a paragraph.
                                         When present, this Sprm supersedes any value for sprmPNest80.
sprmPDxaLeft1                  0x60      An XAS value that specifies the logical left indent of the first line of the
        (0x8460)                         paragraph, in twips, relative to the rest of the paragraph. By default,
                                         the first line is not indented relative to the rest of the paragraph.
sprmPJc                        0x61      An unsigned 8-bit integer value that specifies the logical justification of
          (0x2461)                       the paragraph. The value MUST be one of those listed following. Some
                                         of the values also correspond to the ST_Jc enumeration values that
                                                                                                            123 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                           ispmd     Operand
                                         are specified in [ECMA-376] Part 4, Section 2.18.50 ST_Jc (Horizontal
                                         Alignment Type).
                                                   0
                                                   St_Jc: left
                                                   Paragraph is logical left justified
                                                   1
                                                   St_Jc: center
                                                   Paragraph is centered
                                                   2
                                                   St_Jc: right
                                                   Paragraph is logical right justified
                                                   3
                                                   St_Jc: both
                                                   Paragraph is justified to both right and left
                                                   4
                                                   St_Jc:distribute
                                                   Paragraph characters are distributed to fill the entire width of
                                                   the paragraph
                                                   5
                                                   St_Jc: mediumKashida
                                                   If the language is Arabic, the paragraph uses medium-length
                                                   Kashida. In other languages, text is justified with a medium
                                                   character compression ratio.
                                                   6
                                                   Paragraph is indented
                                                   7
                                                   St_Jc: highKashida
                                                   If the language is Arabic, the paragraph uses longer length
                                                   Kashida. In other languages, text is justified with a high
                                                   character compression ratio.
                                                   8
                                                   St_Jc: lowKashida
                                                   If the language is Arabic, the paragraph uses small length
                                                   Kashida. In other languages, text is justified with a high
                                                   character compression ratio.
                                                   9
                                                   St_Jc:thaiDistribute
                                                   If the language of the paragraph is Thai, the text is justified
                                                   with Thai distributed justification. In other languages, text is
                                                   justified with a low character compression ratio.
                                         The default is logical left justification.
sprmPFNoAllowOverlap           0x62      A Bool8 value that specifies whether the frame of this paragraph can
        (0x2462)                         overlap with other frames. A value of 1 specifies that frames MUST
                                         NOT overlap. By default, frames can overlap with other frames.
sprmPWall                      0x64      A Bool8 value that specifies whether the values of paragraph properties
            (0x2664)                     are preserved for revision marking purposes until the modifications are
                                         accepted or rejected by the user.
                                         A value of 1 specifies that the property values were preserved. All
                                         SPRMs that are encountered before the sprmPWall in the property
                                         evaluation of the paragraph specify the state of properties before
                                         revision marking was enabled, whereas all SPRMs following the
                                         sprmPWall specify the property modifications that occur after revision
                                         marking was enabled.
                                         A value of 0 specifies that no values were preserved (overriding any
                                         previously encountered sprmPWall SPRMs that specify the contrary).
                                         Neither SPRMs that were encountered before the sprmPWall, nor
                                         subsequent SPRMs (until another sprmPWall, if any), are treated in any
                                         special way with regard to revision marking.
                                         By default, property values are not preserved.
                                                                                                            124 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                           ispmd     Operand
sprmPIpgp                      0x65      An unsigned integer value that specifies the PGPInfo.ipgpSelf value of
         (0x6465)                        the PGPInfo data that is applied to this paragraph. The table depth of
                                         the paragraph (see Overview of Tables) MUST match PGPInfo.itap
                                         unless the paragraph is a table terminating mark, in which case
                                         PGPInfo.itap MUST be 1 less than the paragraph table depth.
                                         PGPInfo.ipgpSelf values MUST NOT be applied in such a way as to
                                         break the hierarchy that is implied by the PGPInfo structures
                                         themselves. Given that the application of a particular PGPInfo.ipgpSelf
                                         value implies the application of all of the PGPInfo.ipgpParent values
                                         that are encountered by ascending the PGPInfo chain, ensuring that all
                                         occurrences of any PGPInfo.ipgpSelf are on adjacent paragraphs of
                                         the same table depth ensures that the hierarchy is not broken.
                                         By default, a paragraph has no associated PGPInfo.
sprmPCnf                       0x66      A CNFOperand value that specifies conditional paragraph formatting for
            (0xC666)                     a specific condition of a table style. The grpprl member of the
                                         CNFOperand value specifies the paragraph formatting properties and
                                         MUST NOT contain any Sprms that are disallowed in the grpprlPapx
                                         member of UpxPapx.
                                         This sprm MUST only be specified within the grpprlPapx member of a
                                         UpxPapx within a table style definition (LPStd).
                                         By default, a table style definition does not include conditional
                                         formatting.
sprmPRsid                      0x67      An integer value that specifies a revision save ID, as specified in
            (0x6467)                     [ECMA-376] Part 4, Section 2.15.1.70 rsid (Single Session Revision
                                         Save ID), associated with paragraph formatting. If not present, then no
                                         revision save ID is specified for this formatting.
sprmPIstdListPermute           0x69      An SPPOperand value that has no effect and MUST be ignored.
         (0xC669)
sprmPTableProps                0x6B      An unsigned integer value that specifies a location in the Data Stream.
         (0x646B)                        A PrcData structure begins at this offset and specifies additional
                                         properties for the paragraph. The cbGrpprl member of the referenced
                                         PrcData structure MUST NOT be less than 10. If an application
                                         processes this PrcData structure, then it MUST NOT process anymore
                                         Prl elements in the array that contained the sprmPTableProps value.
                                         SprmPHugePapx and sprmPTableProps values can refer to PrcData
                                         structures containing each other, but the chain MUST eventually
                                         terminate in a PrcData that contains neither sprmPHugePapx nor
                                         sprmPTableProps.
sprmPTIstdInfo                 0x6C      A PTIstdInfoOperand value that has no effect and MUST be ignored.
         (0xC66C)
sprmPFContextualSpacing        0x6D      A Bool8 value that specifies whether contextual spacing is enabled for
         (0x246D)                        this paragraph. A value of 0x01 specifies that any space before this
                                         paragraph (sprmPDyaBefore) MUST be ignored if the preceding
                                         paragraph is of the same paragraph style and any space after this
                                         paragraph (sprmPDyaAfter) MUST be ignored if the following paragraph
                                         is of the same paragraph style. By default, paragraphs do not use
                                         contextual spacing.
sprmPPropRMark                 0x6F      A PropRMarkOperand value that specifies whether the paragraph has
         (0xC66F)                        an associated property revision mark, as well as its author and the date
                                         and time. By default, paragraphs have no property revision marks.
sprmPFMirrorIndents            0x70      A Bool8 value that specifies whether the left and right indents that are
         (0x2470)                        set for this paragraph are interpreted as inside and outside margins for
                                         odd and even numbered pages. For specifications of the display
                                         behavior, see [ECMA-376] Part 4, Section 2.3.1.18 mirrorIndents (use
                                         Left/Right Indents as Inside/Outside Indents). By default, paragraph
                                         indents are not swapped.
                                                                                                        125 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                           ispmd     Operand
sprmPTtwo                      0x71      A 1-byte integer that specifies text wrapping options for a text box
         (0x2471)                        when tight wrapping is set for the text box. This option is the same as
                                         [ECMA-376] Part 4, Section 2.3.1.40 textboxTightWrap (Allow
                                         Surrounding Paragraphs to Tight Wrap to Text Box Contents)
                                         The value MUST be one of the following, which correspond to values
                                         specified in [ECMA-376] Part 4, Section 2.18.99 ST_TextboxTightWrap
                                         (Lines To Tight Wrap Within Text Box).
                                                  0x00
                                                  ST_TextboxTightWrap: none
                                                  No lines of the paragraph allow the surrounding text to tightly
                                                  wrap around their edges.
                                                  0x01
                                                  ST_TextboxTightWrap: allLines
                                                  All lines of the paragraph allow the surrounding text to tightly
                                                  wrap to their edges.
                                                  0x02
                                                  ST_TextboxTightWrap: firstAndLastLine
                                                  Only the first and last lines of the paragraph allow the
                                                  surrounding text to tightly wrap around their edges.
                                                  0x03
                                                  ST_TextboxTightWrap: firstLineOnly
                                                  Only the first line of the paragraph allows the surrounding text
                                                  to tightly wrap around its edges.
                                                  0x04
                                                  ST_TextboxTightWrap: lastLineOnly
                                                  Only the last line of the paragraph allows the surrounding text
                                                  to tightly wrap around its edges.
The following table specifies the table property modifiers, including the valid sprm values, their
function, and the corresponding operand type and meaning.
sprmTDxaLeft                0x01     An XAS value that, combined with sprmTDxaGapHalf, specifies the location
       (0x9601)                      of the horizontal origin of the table relative to the logical left margin. That
                                     is, the origin is the logical left margin, indented by this value minus the
                                     value of sprmTDxaGapHalf.
                                     The actual logical left edge of the table can be offset from the origin after
                                                                                                             126 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                        ispmd    Operand
                                     also considering cell spacing, margins, and the line width of the border.
                                     The default logical left indent is 0.
sprmTDxaGapHalf             0x02     An XAS value that specifies the average width, in twips, between the left
       (0x9602)                      and right default cell margins for the first cell in the row. The actual cell
                                     margins are stored in sprmTCellPaddingDefault. This value is not used to
                                     layout cell contents within a cell. Rather, this value is used as an offset to
                                     the value in sprmTDxaLeft when positioning the logical left outer edge of
                                     the table. This value MUST be non-negative.
                                     By default, no offset is applied to sprmTDxaLeft when positioning the
                                     table.
sprmTFCantSplit90           0x03     A Bool8 value. If this property is "true" (0x01) then table rows SHOULD
       (0x3403)                      NOT<151> be split across page breaks. By default, rows can be split
                                     across page breaks. Whenever cells are merged this property
                                     SHOULD<152> be set with a value of 0x01 for each row involved in the
                                     merge.
                                     This property SHOULD<153> be ignored and sprmTFCantSplit
                                     SHOULD<154> be used instead.
sprmTTableHeader            0x04     A Bool8 value that specifies that the current table row is a header row. If
       (0x3404)                      the value is 0x01 but sprmTTableHeader is not applied with a value of
                                     0x01 for a previous row in the same table, then this property MUST be
                                     ignored.
                                     By default, a table row is not a header row.
sprmTTableBorders80         0x05     A TableBordersOperand80 value that specifies border information for the
       (0xD605)                      cells in a table row. By default, table rows have no borders.
sprmTDyaRowHeight           0x07     A YAS value that specifies the height of the row.
       (0x9407)                      If this value is zero, the height of a row is derived from the height of the
                                     contents of the cells that the row contains.
                                     If this value is positive, then the value is treated as "at least", meaning the
                                     row is larger if the contents need more space.
                                     If this value is negative, then the absolute value is used, and the size is
                                     treated as "exact". The row does not grow to accommodate large contents.
                                     By default, table row heights are derived from the heights of the contents
                                     of the cells in the row.
sprmTDefTable               0x08     A TDefTableOperand value that specifies the number of columns in the
       (0xD608)                      table row, the width of each column, border attributes, and a variety of
                                     other settings.
                                     By default, a table row has zero columns. In order for a table to have
                                     columns, the file MUST provide a sprmTDefTable or a sprmTInsert for each
                                     table row.
sprmTDefTableShd80          0x09     A DefTableShd80Operand value that specifies the default shading applied
       (0xD609)                      to each cell in a row. By default, no cells are shaded.
                                     If the nFib value is greater than 0x00D9 and the application can interpret
                                     table styles, then this Sprm MUST be ignored.
sprmTTlp                    0x0A     A TLP structure that specifies the table style options for this table.
        (0x740A)                     By default, tables have no table style associated with them and all optional
                                     table styles are disabled.
sprmTFBiDi                  0x0B     A Bool16 value that specifies whether this table is right-to-left. A table is
       (0x560B)                      right-to-left if either this Sprm or sprmTFBiDi90 is set to "true".
                                     By default, tables are left-to-right.
sprmTDefTableShd3rd         0x0C     A DefTableShdOperand that specifies the default shading for cells 45 to 63
       (0xD60C)                      in the row, or all remaining cells in the row beginning with cell 45 if the
                                     row contains fewer than 63 cells. cb MUST NOT exceed 190 and rgShd
                                     MUST NOT exceed 19 elements. Non-shaded cells in rgShd are set to
                                     ShdAuto. By default, no cells are shaded. Cells 1 – 22 are shaded by
                                     sprmTDefTableShd, and cells 23 – 44 are shaded by
                                     sprmTDefTableShd2nd.
                                     If the nFib value is greater than 0x00D9 and the application can interpret
                                     table styles, then this Sprm MUST be ignored.
sprmTPc                     0x0D     A PositionCodeOperand structure that specifies the origin that is used to
          (0x360D)                   calculate the table position when it is absolutely positioned.
                                                                                                           127 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                        ispmd    Operand
                                     By default, tables are not absolutely positioned. By default, when a table is
                                     absolutely positioned, its position is relative to the top margin of the page,
                                     and to the left edge of the current column.
sprmTDxaAbs                 0x0E     A XAS_plusOne value that specifies the horizontal position of the table
       (0x940E)                      relative to the horizontal anchor of the table. See sprmTPc for the table
                                     anchor.
                                     Except for the reserved values that are listed in the following table, the
                                     sprmTDxaAbs specifies the position of the physical left origin of the table.
                                     It MUST be less than or equal to 31681 (22 inches) and greater than or
                                     equal to -31679 (-22 inches). Furthermore, after accounting for the basis
                                     specified in sprmTPc, the absolute position MUST be greater than or equal
                                     to 0 inches.
                                     Several values of sprmTDxaAbs have special meanings as specified by
                                     [ECMA-376] Part 4, Section 2.18.114. These values are specified as
                                     follows.
                                              0x0000 - inline
                                              0xFFFC - top
                                              0xFFF8 - center
                                              0xFFF4 - bottom
                                              0xFFF0 - inside
                                              0xFFEC - outside
                                                                                                          128 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                        ispmd    Operand
        (0x3615)                     automatically resized to best fit the contents of the whole table. By
                                     default, table column widths are not automatically resized.
sprmTDefTableShd2nd         0x16     A DefTableShdOperand that specifies the default shading for cells 23 – 44
       (0xD616)                      in the row, or all remaining cells in the row beginning with cell 23 if the
                                     row contains fewer than 44 cells. Non-shaded cells in rgShd are set to
                                     ShdAuto. By default, no cells are shaded. Cells 1 – 22 are shaded by
                                     sprmTDefTableShd, and cells 45 – 63 are shaded by
                                     sprmTDefTableShd3rd.
                                     If nFib is greater than 0x00D9 and the application understands table
                                     styles, then this Sprm MUST be ignored.
sprmTWidthBefore            0x17     An FtsWWidth_TablePart structure that specifies the preferred additional
       (0xF617)                      leading indent of the first cell of the row, relative to the leading edge of
                                     the table as a whole.
                                     By default, table rows have no preferred additional leading indent.
sprmTWidthAfter             0x18     An FtsWWidth_TablePart structure that specifies the preferred trailing
       (0xF618)                      indent following the last cell of the row. The indent is inward from the
                                     outer edge of the table as a whole.
                                     By default, table rows have no preferred additional trailing indent.
sprmTFKeepFollow            0x19     A Bool8 value that specifies whether page breaks are avoided between the
       (0x3619)                      rows of this table, if possible. By default, tables are allowed to have page
                                     breaks.
sprmTBrcTopCv               0x1A     A BrcCvOperand value that specifies the color of the top border for each
       (0xD61A)                      cell in a table row. By default, each color is cvAuto.
sprmTBrcLeftCv              0x1B     A BrcCvOperand value that specifies the color of the logical left border for
       (0xD61B)                      each cell in a table row. By default, each color is cvAuto.
sprmTBrcBottomCv            0x1C     A BrcCvOperand value that specifies the color of the bottom border for
    (0xD61C)                         each cell in a table row. By default, each color is cvAuto.
sprmTBrcRightCv             0x1D     A BrcCvOperand value that specifies the color of the logical right border for
       (0xD61D)                      each cell in a table row. By default, each color is cvAuto.
sprmTDxaFromTextRight       0x1E     An XAS_nonNeg value that specifies the minimum horizontal distance
       (0x941E)                      between the physical right edge of the table and the physical left edge of
                                     the text that wraps around the table. By default, the minimum horizontal
                                     distance between a table and wrapping text is 0 twips.
sprmTDyaFromTextBottom      0x1F     A YAS_nonNeg value that specifies the minimum vertical distance between
       (0x941F)                      the bottom edge of the table and the top edge of text that wraps around
                                     the table. By default, the minimum vertical distance between a table and
                                     wrapping text is 0 twips.
sprmTSetBrc80               0x20     A TableBrc80Operand value that specifies the borders of a set of cells in
       (0xD620)                      the table row. By default, cells have no borders.
sprmTInsert                 0x21     A TInsertOperand value that specifies a range of new table cell definitions
        (0x7621)                     to insert into the table row. The new cells have properties that are defined
                                     by the table style of the row.
                                     Each table row MUST specify at least one cell using sprmTInsert or
                                     sprmTDefTable, or a combination thereof.
sprmTDelete                 0x22     An ItcFirstLim value that specifies a range of table cell definitions to delete
       (0x5622)                      from the table row. These cell definitions MUST have been inserted by a
                                     previous application of sprmTInsert or sprmTDefTable. The table row MUST
                                     have at least one cell remaining after the deletion.
sprmTDxaCol                 0x23     A TDxaColOperand value that specifies the width of a range of cells in this
       (0x7623)                      table. By default, the column width is specified when the column is created
                                     in either sprmTInsert or sprmTDefTable.
sprmTMerge                  0x24     An ItcFirstLim structure that specifies a set of cells in the current table row
       (0x5624)                      that are to be merged. The first cell in the range is considered the primary
                                     cell, and its contents and formatting flow into the layout region of the
                                     other cells. The contents and formatting of the other cells are not applied.
                                     By default, cells are not merged.
sprmTSplit                  0x25     An ItcFirstLim structure that specifies a set of cells in the current table row
       (0x5625)                      that are not to be merged. All cells in the specified range render their own
                                     contents and formatting. Neighboring cells that are set to merge do not
                                     flow into these cells.
                                                                                                            129 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                        ispmd    Operand
                                     The function of this Sprm is to undo the effects of sprmTMerge. When
                                     applied to cells that are not merged, nothing is changed. By default, cells
                                     are not merged.
sprmTTextFlow               0x29     A CellRangeTextFlow value that specifies a set of cells in the current table
       (0x7629)                      row and the text flow model for each cell.
                                     By default, the text flow of each cell in the row is grpfTFlrtb.
sprmTVertMerge              0x2B     A VertMergeOperand value that specifies a cell in the current row, and
       (0xD62B)                      whether that cell is vertically merged with the cell above or below it.
                                     By default, cells are not merged with other cells.
sprmTVertAlign              0x2C     A CellRangeVertAlign value that specifies a set of cells in the current table
       (0xD62C)                      row and the vertical alignment of cell contents in each cell.
                                     By default, cell contents are vertically aligned to the top of the cell.
sprmTSetShd                 0x2D     A TableShadeOperand value that specifies a set of cells in a table row and
       (0xD62D)                      the background shading for each cell.
                                     If the nFib value is greater than 0x00D9 and the application can interpret
                                     table styles, this Sprm MUST be ignored.
                                     By default, the background shading of table cells is ShdAuto.
sprmTSetShdOdd              0x2E     A TableShadeOperand value that specifies a set of cells in a table row and
       (0xD62E)                      the background shading for odd numbered cells in that set. That is, if the
                                     set of cells is 0 through 5, then this sets the background shading for cells
                                     0, 2 and 4. To set background shading for even numbered cells, specify a
                                     set of cells starting on the even numbered cell.
                                     If nFib is greater than 0x00D9 and the application can interpret table
                                     styles, then this Sprm MUST be ignored.
                                     By default, the background shading of table cells is ShdAuto.
sprmTSetBrc                 0x2F     A TableBrcOperand value that specifies the border type of a set of cells in
       (0xD62F)                      a table row. By default, the border type is inherited from the table border
                                     properties.
sprmTCellPadding            0x32     A CSSAOperand value that specifies the cell margin for one or more cell
       (0xD632)                      sides. cssa.ftsWidth MUST be ftsNil (0x00) or ftsDxa (0x03). If
                                     cssa.ftsWidth is ftsDxa (0x03), then cssa.wWidth MUST be nonnegative
                                     and MUST NOT exceed 31680. By default, cell margins are specified by
                                     sprmTCellPaddingDefault.
sprmTCellSpacingDefault     0x33     A CSSAOperandthat specifies the cell spacing for each cell in the entire
       (0xD633)                      row. cssa.itc.itcFirst MUST be 0, cssa.itc.itcLim MUST be 1,
                                     cssa.grfbrc MUST be fbrcSidesOnly (0x0F), cssa.ftsWidth MUST be ftsNil
                                     (0x00) or ftsDxa (0x03) or ftsDxaSys (0x13), and cssa.wWidth MUST be
                                     nonnegative and MUST NOT exceed 15840 (11"). By default, cells do not
                                     have cell spacing.
                                                                                                          130 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                        ispmd    Operand
sprmTCellPaddingDefault     0x34     A CSSAOperandthat specifies the cell margin for one or more cell sides for
       (0xD634)                      each cell in the entire row. cssa.itc.itcFirst MUST be 0, cssa.itc.itcLim
                                     MUST be 1, cssa.ftsWidth MUST be ftsNil (0x00) or ftsDxa (0x03), and
                                     cssa.wWidth MUST be nonnegative and MUST NOT exceed 31680.
                                     By default, rows use two sprmTCellPaddingDefault properties: the first to
                                     specify left and right cell margins, and the second to specify top and
                                     bottom cell margins. By default, left and right cell margins use the
                                     following CSSA.
                                              itcFirst: 0
                                              itcLim: 1
                                              grfbrc: fbrcLeft | fbrcRight (0x0A)
                                              ftsWidth: ftsDxa (0x03)
                                              wWidth: 108
By default, top and bottom cell margins use the following CSSA.
                                              itcFirst: 0
                                              itcLim: 1
                                              grfbrc: fbrcTop | fbrcBottom (0x05)
                                              ftsWidth: ftsDxa (0x03)
                                              wWidth: 0
sprmTCellWidth              0x35     A TableCellWidthOperand value that specifies the preferred width of one or
        (0xD635)                     more table cells. By default, table cells do not have a preferred width.
sprmTFitText                0x36     A CellRangeFitText value that specifies a set of cells in a table row and
        (0xF636)                     whether their contents are to be stretched or compressed to exactly fill
                                     their widths.
                                     By default the contents of table cells are not stretched or compressed.
sprmTFCellNoWrap            0x39     A CellRangeNoWrap value that specifies a set of cells in a table row and
       (0xD639)                      whether their contents wrap over multiple lines.
                                     By default, the contents of table cells wrap over multiple lines.
sprmTIstd                   0x3A     An unsigned integer value that specifies the istd value of a table style to
        (0x563A)                     apply.
                                     To apply the istd value, fetch the complete set of table properties from
                                     that style (see Applying Properties for instructions.) Apply those properties
                                     to the current table, while preserving the previous values of the following:
                                     §        Whether the values of table properties have been preserved for
                                         revision marking purposes (for example, by sprmTWall).
                                     §        Whether the table row has an associated property revision
                                         mark, as well as its author and the date and time (for example, by
                                         sprmTPropRMark).
                                     §        Whether this table is right-to-left (for example, by sprmTFBiDi).
                                     §        The revision save ID that is associated with table formatting
                                         (sprmTRsid).
                                     §        The PositionCodeOperand structure that specifies the origin used
                                         to calculate the table position when it is absolutely positioned (for
                                         example, by sprmTPc).
                                     §        The horizontal position of the table relative to the horizontal
                                         anchor of the table (for example, by sprmTDxaAbs).
                                     §        The downward vertical position relative to the vertical anchor of
                                         the tables (for example, by sprmTDyaAbs).
                                     §        The minimum horizontal distance between the physical left edge
                                         of the table and the physical right edge of text that wraps around the
                                         table (for example, by sprmTDxaFromText).
                                     §        The minimum vertical distance between the top edge of the table
                                         and the bottom edge of text that wraps around the table (for example,
                                                                                                         131 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                        ispmd    Operand
                                        by sprmTDyaFromText).
                                     §       The minimum horizontal distance between the physical right edge
                                        of the table and the physical left edge of text that wraps around the
                                        table (for example, by sprmTDxaFromTextRight).
                                     §       The minimum vertical distance between the bottom edge of the
                                        table and the top edge of text that wraps around the table (for
                                        example, by sprmTDyaFromTextBottom).
                                     §       The average width between the left and right default cell margins
                                        for the first cell in the row (for example, by sprmTDxaGapHalf).
                                     §       The height of the row (for example, by sprmTDyaRowHeight).
                                     §       The preferred total width of the table (for example, by
                                        sprmTTableWidth).
                                     §       Whether the table column widths are to be automatically resized
                                        to best fit the contents of the whole table (for example, by
                                        sprmTFAutofit).
                                     §       The grfatl member of the TLP structure that specifies the settings
                                        that are used when the current table row was last auto-formatted (for
                                        example, by sprmTTlp).
                                     This sprm also specifies that the current table has the table style that is
                                     specified by this istd. When computing paragraph or character properties
                                     inside the table, the current table style needs to be taken into account
                                     (see Applying Properties). When sprmTIstd is applied, the paragraph and
                                     character properties of the text within the table need to be recomputed.
                                     If the istd refers to an empty or non-existent style, or a style of a different
                                     type, a later Prl such as sprmTIstd MUST change the istd to a valid value.
                                     Applying an istd value that refers to an empty or nonexistent style, or a
                                     style of a different type, is equivalent to applying a sprmTIstd with an istd
                                     value of 0x000B (the default).
sprmTCellPaddingStyle       0x3E     A CSSAOperand value that specifies the cell margin that is applied to one
       (0xD63E)                      or more cell sides for each cell in the entire row defined by a Table style.
                                     cssa.itc.itcFirst MUST be 0, cssa.itc.itcLim MUST be 1, cssa.ftsWidth
                                     MUST be ftsDxa (0x03) and cssa.wWidth MUST be nonnegative and
                                     MUST NOT exceed 31680. By default, cell margins are set as specified by
                                     sprmTCellPaddingDefault.
sprmTCellFHideMark          0x42     A CellHideMarkOperand that specifies that table cell content is rendered
       (0xD642)                      with no height if all cells in the row are empty; however, cells have a
                                     visible height if they have nonzero cell borders, cell margins, or cell
                                     spacing. By default, cell heights are rendered based on the paragraph and
                                     character properties of the cell, regardless of whether they contain
                                     content.
sprmTSetShdTable            0x60     A SHDOperand value that specifies the background shading for the entire
       (0xD660)                      table. By default, tables are not shaded.
sprmTWidthIndent            0x61     An FtsWWidth_Indent structure that specifies the preferred leading indent
       (0xF661)                      of the table where the row resides.
                                     By default, tables have no preferred indent.
sprmTCellBrcType            0x62     A TCellBrcTypeOperand value that specifies the border type for the first
       (0xD662)                      several consecutive cells in a table row. By default, the border type is
                                     inherited from the table style of the whole table.
sprmTFBiDi90                0x64     A Bool16 value that specifies whether this table is right-to-left. A table is
       (0x5664)                      right-to-left if either this Sprm or sprmTFBiDi is set to true.
                                     By default, tables are left-to-right.
sprmTFNoAllowOverlap        0x65     A Bool8 value that specifies whether the table is allowed to overlap other
       (0x3465)                      tables. A value of 0x01 specifies that the table is not allowed to overlap.
                                     By default, tables are allowed to overlap with other tables.
sprmTFCantSplit             0x66     A Bool8 value. If this property is "true" (1), table rows MUST NOT be split
       (0x3466)                      across page breaks. By default, rows can be split across page breaks.
sprmTPropRMark              0x67     A PropRMarkOperand that specifies whether the table row has an
       (0xD667)                      associated property revision mark, as well as its author and date/time.
                                     By default, table rows have no property revision marks.
sprmTWall                   0x68     A Bool8 value that specifies whether the values of table properties are
                                                                                                           132 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                        ispmd    Operand
        (0x3668)                     preserved for revision marking purposes until the modifications are
                                     accepted or rejected by the user.
                                     A value of 1 specifies that the values of properties are preserved. All
                                     SPRMs encountered before the sprmTWall in the property evaluation of the
                                     table row specify the state of properties before revision marking was
                                     enabled, whereas all SPRMs following the sprmTWall specify the property
                                     modifications that occurred afterwards.
                                     A value of 0 specifies that no values are preserved (overriding any
                                     previously encountered sprmTWall SPRMs that specify the contrary).
                                     Neither SPRMs encountered before the sprmTWall, nor subsequent SPRMs
                                     (until another sprmTWall, if any), are treated in any special way with
                                     regard to revision marking.
                                     By default, property values are not preserved.
sprmTIpgp                   0x69     An unsigned integer value that specifies the PGPInfo.ipgpSelf value of the
       (0x7469)                      PGPInfo data to be applied to this table row. The table depth of the table
                                     row (see Overview of Tables) MUST be 1 greater than PGPInfo.itap.
                                     ipgpSelf values MUST NOT be applied in such a way as to break the
                                     hierarchy that is implied by the PGPInfo structures themselves. Given that
                                     the application of a particular PGPInfo.ipgpSelf value implies the
                                     application of all of the PGPInfo.ipgpParent values encountered ascending
                                     the PGPInfo chain, then ensuring that all occurrences of any
                                     PGPInfo.ipgpSelf are on adjacent rows of the same table depth or
                                     paragraphs of one table depth less than an adjacent row ensures that the
                                     hierarchy is not broken.
                                     There MUST be a corresponding sprmPIpgp with the same
                                     PGPInfo.ipgpSelf value applied to the table terminating mark of this row
                                     (See Overview of Tables).
                                     By default, a table row has no associated PGPInfo.
sprmTCnf                    0x6A     A CNFOperand that specifies conditional table formatting for a specific
       (0xD66A)                      condition of a table style. The grpprl member of CNFOperand specifies the
                                     table/cell/row formatting properties and MUST NOT contain any Sprms
                                     that are disallowed in the grpprlTapx member of UpxTapx, with the
                                     exception of the following Sprms that are allowed:
                                     §   sprmTCellBrcTopStyle
                                     §   sprmTCellBrcBottomStyle
                                     §   sprmTCellBrcLeftStyle
                                     §   sprmTCellBrcRightStyle
                                     §   sprmTCellBrcInsideHStyle
                                     §   sprmTCellBrcInsideVStyle
                                                                                                             133 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                        ispmd    Operand
                                     cell is not shaded. If a cell is set to ShdNil in rgShd, the cell is shaded
                                     according to the table style. By default, cells are shaded according to the
                                     table style. Cells 1 to 22 are shaded by sprmTDefTableShdRaw, and cells
                                     23 to 44 are shaded by sprmTDefTableShdRaw2nd.
sprmTRsid                   0x79     An integer value that specifies a revision save ID, as specified in [ECMA-
       (0x7479)                      376] Part 4, Section 2.15.1.70 rsid (Single Session Revision Save ID),
                                     associated with table formatting. If not present, then no revision save ID is
                                     specified for this formatting.
sprmTCellVertAlignStyle     0x7C     A VerticalAlign value that specifies the vertical alignment of content within
       (0x347C)                      cells as defined by a Table style. By default, the value is vaTop.
sprmTCellNoWrapStyle        0x7D     A Bool8 value that specifies whether content within cells MAY<155> word
       (0x347D)                      wrap. This Sprm is used by table styles and MUST NOT appear outside of
                                     the grpprlTapx array of UpxTapx. If this property is "true" (1), content
                                     SHOULD NOT<156> word wrap. By default, content MAY<157> word
                                     wrap. This property is ignored if the cell has an absolute width set by using
                                     sprmTCellWidth with ftsWidth equal to ftsDxa (0x03)—cell content wraps
                                     if it cannot fit on a single line.
sprmTCellBrcTopStyle        0x7F     A BrcOperand value that specifies the top border for cells that are affected
       (0xD47F)                      by a CNFOperand value. This Sprm MUST NOT appear outside of the
                                     grpprl array of a CNFOperand value. By default, cells have no top border.
sprmTCellBrcBottomStyle     0x80     A BrcOperand value that specifies the bottom border for cells that are
       (0xD680)                      affected by a CNFOperand value. This Sprm MUST NOT appear outside of
                                     the grpprl array of a CNFOperand. By default, cells have no bottom
                                     border.
sprmTCellBrcLeftStyle       0x81     A BrcOperand value that specifies the logical left border for cells that are
       (0xD681)                      affected by a CNFOperand value. This Sprm MUST NOT appear outside of
                                     the grpprl array of a CNFOperand. By default, cells have no logical left
                                     border.
sprmTCellBrcRightStyle      0x82     A BrcOperand value that specifies the logical right border for cells that
       (0xD682)                      are affected by a CNFOperand value. This Sprm MUST NOT appear outside
                                     of the grpprl array of a CNFOperand. By default, cells have no logical right
                                     border.
sprmTCellBrcInsideHStyle    0x83     A BrcOperand value that specifies the border between a table row that is
       (0xD683)                      affected by a CNFOperand value and the following table row. This Sprm
                                     MUST NOT appear outside of the grpprl array of a CNFOperand. By
                                     default, table rows have no borders between them.
sprmTCellBrcInsideVStyle    0x84     A BrcOperand value that specifies the border between cells of a table row
       (0xD684)                      that are affected by a CNFOperand. This Sprm MUST NOT appear outside
                                     of the grpprl array of a CNFOperand. By default, cells have no border
                                     between them.
sprmTCellBrcTL2BRStyle      0x85     A BrcOperand value that specifies a diagonal border from the top, logical
       (0xD685)                      left corner to the bottom, logical right corner of each cell that is affected
                                     by a CNFOperand. This Sprm MUST NOT appear outside of the grpprl
                                     array of a CNFOperand. By default, cells have no diagonal border.
sprmTCellBrcTR2BLStyle      0x86     A BrcOperand value that specifies a diagonal border from the top, logical
       (0xD686)                      right corner to the bottom, logical left corner of each cell that is affected
                                     by a CNFOperand. This Sprm MUST NOT appear outside of the grpprl
                                     array of a CNFOperand. By default, cells have no diagonal border.
sprmTCellShdStyle           0x87     A SHDOperand value that specifies the background shading to be applied
       (0xD687)                      to an entire table defined by a Table style. By default, tables are not
                                     shaded.
sprmTCHorzBands             0x88     An unsigned 8-bit integer value that specifies the number of rows in a
       (0x3488)                      horizontal band that is used for conditional formatting as defined by a
                                     Table style. This value MUST be at least 1 and MUST NOT exceed 3. By
                                     default, tables are not shaded with horizontal bands.
sprmTCVertBands             0x89     An unsigned 8-bit integer value that specifies the number of columns in a
       (0x3489)                      vertical band that is used for conditional formatting as defined by a Table
                                     style. This value MUST be at least 1 and MUST NOT exceed 3. By default,
                                     tables are not shaded with vertical bands.
sprmTJc                     0x8A     An unsigned 16-bit integer value that specifies the logical justification of
          (0x548A)                   the table. The following shows the valid values and their meanings.
                                                                                                         134 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Sprm                         ispmd   Operand
                                            1 - The table is centered
                                            2 - The table is logical right-justified
The following table specifies the section property modifiers, including the valid sprm values, their
function, and the corresponding operand type and meaning.
                                                                                                          135 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                  ispmd    Operand
       (0x300A)                "title page"). A value of 1 indicates that the first page is separate, having its
                               own header and footer. A value of 0 indicates that there is no title page.
                               By default, a section does not have a separate first page.
sprmSCcolumns         0x0B     An unsigned 16-bit integer whose value is one less than the number of columns
     (0x500B)                  in this section. MUST be less than or equal to 43. A value of zero specifies a
                               section with a single column.
                               By default, a section has a single column.
                               If the value is larger than zero, and the columns are not evenly spaced (as
                               instructed by sprmSFEvenlySpaced), then there MUST be the same number of
                               sprmSDxaColWidth as the columns, each specifying the width of a different
                               column.
                               An end-of-column character (0xE) at a particular CP specifies a manual column
                               break at that CP.
sprmSDxaColumns       0x0C     An XAS_nonNeg that specifies the space between columns, in case columns are
     (0x900C)                  evenly spaced (as instructed by sprmSFEvenlySpaced).
                               By default, spacing between columns varies depending on implementation and
                               system settings, so implementations SHOULD<158> write this Sprm out to
                               ensure interoperability even if the value does not differ from the default.
                               The default values are dependent on the installation language of the application.
                               The installation LCID values and their corresponding defaults are shown
                               following.
                                                                                                           136 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                  ispmd    Operand
                               LCID 1060: 708 twips
                               LCID 1061: 708 twips
                               LCID 1062: 720 twips
                               LCID 1063: 1296 twips
                               LCID 1067: 720 twips
                               LCID 1068: 720 twips
                               LCID 1069: 708 twips
                               LCID 1078: 708 twips
                               LCID 1079: 720 twips
                               LCID 1086: 720 twips
                               LCID 1087: 720 twips
                               LCID 1088: 708 twips
                               LCID 1089: 708 twips
                               LCID 1092: 720 twips
                               LCID 1104: 720 twips
                               LCID 2052: 720 twips
                               LCID 2070: 720 twips
                               LCID 2074: 708 twips
sprmSNfcPgn           0x0E     An 8-bit MSONFC (as specified in [MS-OSHARED] section 2.2.1.3) that specifies
     (0x300E)                  the numbering format used for page numbers.
                               An application MAY<159> fall back to a different MSONFC if the format specified
                               by the value is not a counting number format—for example, if it is
                               msonfcBullet.
                               By default, page numbers use the msonfcArabic numbering format.
sprmSFPgnRestart      0x11     A Bool8 value that specifies whether the section starts with a new page number.
     (0x3011)                  A value of 1 indicates that the section starts with a new page number as
                               specified by sprmSPgnStart97 or sprmSPgnStart. A value of 0 indicates that
                               page numbers continue from the previous section (or begin at 1, if this is the
                               first section).
                               By default, page numbers continue from the previous section (or begin at 1, if
                               this is the first section).
sprmSFEndnote         0x12     A Bool8 value that specifies whether endnotes are shown at the end of the
     (0x3012)                  section. This SPRM is only considered when endnotes are set to show at the
                               ends of sections (see DOPBASE.epc).
                               A value of 1 specifies that endnotes are shown at the end of the section.
                               A value of 0 specifies that endnotes are suppressed for the current section, and
                               they are shown at the end of the next section for which endnotes are not
                               suppressed. If such a section does not exist, the endnotes are shown at the end
                               of the last section of the document.
                               By default, endnotes are not suppressed, and they show at the end of a section.
sprmSLnc              0x13     An SLncOperand that specifies the line numbering mode to use in case line
     (0x3013)                  numbers are enabled (see sprmSNLnnMod).
                               By default, line numbers restart every page.
sprmSNLnnMod          0x15     An unsigned 16-bit integer that specifies the distance in the number of lines
     (0x5015)                  between line number labels. For example, a value of 1 indicates that every line
                               displays a line number, whereas a value of 3 indicates that only every third line
                               shows a line number.
                               The value MUST be in the interval [0, 100]. A value of 0 specifies that line
                               numbers are disabled.
                               By default, line numbers are disabled.
sprmSDxaLnn           0x16     An XAS_nonNeg that specifies the distance between line numbers and the lines
     (0x9016)                  of text to which they apply. A value of 0 indicates that the application MUST
                               automatically determine positioning.
                                                                                                        137 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                  ispmd    Operand
                               By default, the positioning of line numbers is automatically determined.
sprmSDyaHdrTop        0x17     A YAS_nonNeg that specifies the header distance, in twips, from the top edge
     (0xB017)                  of the page.
                               Because the default distance is dependent on the implementation and system
                               settings, implementations SHOULD<160> write this Sprm out even if the value
                               does not differ from the default.
                               The default values are dependent on the install language of the application. The
                               installation LCID values and their corresponding defaults are shown following.
                                                                                                       138 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                  ispmd    Operand
                               LCID 1088: 708 twips
                               LCID 1089: 708 twips
                               LCID 1092: 708 twips
                               LCID 1104: 720 twips
                               LCID 2052: 720 twips
                               LCID 2070: 720 twips
                               LCID 2074: 708 twips
sprmSDyaHdrBottom     0x18     An YAS_nonNeg that specifies the footer distance, in twips, from the bottom
     (0xB018)                  edge of the page.
                               Implementations SHOULD<161> write this Sprm out to ensure interoperability
                               because the footer distance from the bottom is dependent on the
                               implementation and system settings.
                               The default values are the same as listed for sprmSDyaHdrTop.
sprmSLBetween         0x19     A Bool8 value that specifies whether lines are drawn between columns of text.
     (0x3019)                  By default, lines are not drawn between columns of text.
sprmSVjc              0x1A     A Vjc value that specifies the vertical justification of the section.
     (0x301A)                  By default, sections are top-aligned (vjcTop).
sprmSLnnMin           0x1B     An unsigned 16-bit integer whose value is one less than the starting value for
     (0x501B)                  line numbers. The value SHOULD<162> be less than or equal to 32766.
                               By default, line numbers begin at 1.
sprmSPgnStart97       0x1C     An unsigned 16-bit integer that specifies the starting value for page numbers
     (0x501C)                  when the section has page number restart enabled (as specified by
                               sprmSFPgnRestart). This value MUST be ignored if the section does not have
                               page number restart enabled.
                               The value of the operand SHOULD<163> be less than or equal to 32766.
                               By default, page numbers restart at 0.
sprmSBOrientation     0x1D     An SBOrientationOperand that specifies the page orientation of the section.
     (0x301D)                  By default, the page orientation is portrait.
sprmSXaPage           0x1F     An unsigned 16-bit integer that specifies the page width of the section in twips.
     (0xB01F)                  The value of the operand MUST be in the interval [144, 31680].
                               By default, the page width is 215.9 mm (8.5 inches, or 12240 twips).
sprmSYaPage           0x20     An unsigned 16-bit integer that specifies the page height of the section, in
     (0xB020)                  twips. The value of the operand MUST be in the interval [144, 31680].
                               By default, the page height is 279.4 mm (11 inches, or 15840 twips).
sprmSDxaLeft          0x21     An XAS_nonNeg that specifies the width, in twips, of the left margin.
     (0xB021)                  By default, the width of the left margin varies depending on the implementation
                               and the system settings, so implementations MUST use this SPRM to specify the
                               left margin of each section.
sprmSDxaRight         0x22     An XAS_nonNeg that specifies the width, in twips, of the right margin.
     (0xB022)                  By default, the width of the right margin varies depending on the
                               implementation and the system settings, so implementations MUST use this
                               SPRM to specify the right margin of each section.
sprmSDyaTop           0x23     A YAS that specifies the height of the top margin, in twips. A positive value
     (0x9023)                  indicates a minimum top margin; this margin MUST be grown to avoid
                               overlapping the space that is occupied by headers. A negative value indicates a
                               fixed margin; the top margin MUST be the absolute value of the value that is
                               specified by this SPRM regardless of the space that is occupied by headers.
                               Each section MUST specify a top margin. The top margin MUST be less than or
                               equal to 31665 and greater than or equal to -31665.
sprmSDyaBottom        0x24     A YAS that specifies the height of the bottom margin, in twips. A positive value
     (0x9024)                  specifies a minimum bottom margin; this margin MUST be grown to avoid
                               overlapping the space that is occupied by footers or footnotes. A negative
                               value specifies a fixed margin; the bottom margin MUST be the absolute value
                               of the value that is specified by this SPRM regardless of the space that is
                               occupied by footers or footnotes.
                                                                                                        139 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                  ispmd    Operand
                               Each section MUST specify a bottom margin. The bottom margin MUST be less
                               than or equal to 31665 and greater than or equal to -31665.
sprmSDzaGutter        0x25     An unsigned 16-bit integer that specifies the size of the gutter margin, in twips.
     (0xB025)                  By default, there is no gutter margin.
sprmSDmPaperReq       0x26     A 16-bit unsigned integer that specifies a tie-breaker value to be used when
     (0x5026)                  more than one available paper format ("Letter Matte", "Letter Gloss", "Letter w/
                               Letterhead", "Letter Pink", and so on) matches the page dimensions as specified
                               by sprmSXaPage and sprmSYaPage. This tie-breaker value MAY<164> be
                               ignored.
                               The determination and interpretation of this value is implementation-specific.
                               The determination of the paper sizes for an application is implementation-
                               specific
sprmSFBiDi            0x28     A Bool8 value that specifies whether the section uses right-to-left layout; that
     (0x3228)                  is, line numbers are displayed on the right side of text and columns are
                               populated from right to left.
                               By default, sections do not use right-to-left layout.
sprmSFRTLGutter       0x2A     A Bool8 value that specifies whether the gutter margin requires right-to-left
     (0x322A)                  layout. A value of 1 indicates a right-to-left gutter margin.
                               By default, gutter margins are not right-to-left.
sprmSBrcTop80         0x2B     A Brc80 that specifies the top page border.
     (0x702B)                  By default, pages have no top border.
sprmSBrcLeft80        0x2C     A Brc80 that specifies the left page border.
     (0x702C)                  By default, pages have no left border.
sprmSBrcBottom80      0x2D     A Brc80 that specifies the bottom page border.
     (0x702D)                  By default, pages have no bottom border.
sprmSBrcRight80       0x2E     A Brc80 that specifies the right page border.
     (0x702E)                  By default, pages have no right border.
sprmSPgbProp          0x2F     An SPgbPropOperand that specifies page border properties.
     (0x522F)                  By default, page borders apply to all pages of the section (pgbAllPages), they
                               are displayed in front of text and other content (pgbAtFront), and their distance
                               is measured from text (pgbFromText).
sprmSDxtCharSpace     0x30     A signed 32-bit integer that specifies the difference between the desired
     (0x7030)                  character pitch for the document grid, if enabled (see sprmSClm), and the
                               pitch of the font that is specified by the Normal style. The resolution of the
                               operand is 4096/pt. That is, a 1-pt difference between the desired character
                               pitch and the font size as specified by the Normal style would affect the operand
                               by 4096. For example, if the Normal style specified a font size of 11 pt, an
                               operand value of 6144 would specify a desired character pitch for document grid
                               of 12.5 pt (because 6144 / 4096 = 1.5 pt, so 11 pt + 1.5 pt = 12.5 pt).
                               By default, there is no difference between the desired character pitch for the
                               document grid and the pitch of the font that is specified by the Normal style.
                               This value MUST be greater than or equal to -670925 and MUST be less than or
                               equal to 6488064.
sprmSDyaLinePitch     0x31     A YAS that specifies, in twips, the line height that is used for document grid, if
     (0x9031)                  enabled (see sprmSClm). This line height does not apply to lines within table
                               cells in case the fDontAdjustLineHeightInTable flag is set in the document
                               Dop2000.
                               If the document grid is enabled (see sprmSClm), a section MUST specify the line
                               height that is used for the document grid.
                               This value MUST be greater than or equal to 1, and MUST be less than or equal
                               to 31680.
sprmSClm              0x32     An SClmOperand that specifies the document grid mode that is in use for the
     (0x5032)                  section.
                               By default, document grid is disabled (clmUseDefault).
sprmSTextFlow         0x33     A MSOTXFL that specifies the text flow of the section, as specified in [MS-
     (0x5033)                  ODRAW] section 2.4.5.
sprmSBrcTop           0x34     A BrcOperand that specifies the top page border.
     (0xD234)                  By default, pages have no top border.
                                                                                                         140 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                  ispmd    Operand
sprmSBrcLeft          0x35     A BrcOperand that specifies the left page border.
     (0xD235)                  By default, pages have no left border.
sprmSBrcBottom        0x36     A BrcOperand that specifies the bottom page border.
     (0xD236)                  By default, pages have no bottom border.
sprmSBrcRight         0x37     A BrcOperand that specifies the right page border.
     (0xD237)                  By default, pages have no right border.
sprmSWall             0x39     A Bool8 value that specifies whether the values of section properties are
     (0x3239)                  preserved for revision marking purposes until the modifications are accepted or
                               rejected by the user.
                               A value of 1 specifies that the values of properties are preserved. All SPRMs that
                               are encountered before the sprmSWall in the property evaluation of the section
                               specify the state of properties before revision marking was enabled, whereas all
                               SPRMs following the sprmSWall specify the property modifications that occurred
                               afterwards.
                               A value of 0 specifies that no values are preserved (overriding any previously
                               encountered sprmSWall SPRMs that specify the contrary). Neither SPRMs
                               encountered before the sprmSWall, nor subsequent SPRMs (until another
                               sprmSWall, if any), are treated in any special way with regard to revision
                               marking.
                               By default, the values of properties are not preserved.
sprmSRsid             0x3A     An integer that specifies a revision save ID, as specified in [ECMA-376] Part 4,
     (0x703A)                  Section 2.15.1.70 rsid (Single Session Revision Save ID), associated with
                               section formatting. If this value is not present, no revision save ID is specified
                               for this formatting.
sprmSFpc              0x3B     An SFpcOperand that specifies the footnote positioning for the section.
     (0x303B)                  By default, footnotes are positioned at the bottom of the page (see
                               fpcBottomPage).
sprmSRncFtn           0x3C     An Rnc that specifies whether and when footnote numbering is restarted. All
     (0x303C)                  possible values of the Rnc enumeration are allowed.
                               By default, footnotes are numbered continuously (see rncCont).
sprmSRncEdn           0x3E     An Rnc value that specifies whether and when endnote numbering is restarted.
     (0x303E)                  The value MUST be either rncCont or rncRstSect, as rncRstPage does not apply
                               to endnotes.
                               By default, endnotes are numbered continuously (see rncCont).
sprmSNFtn             0x3F     An unsigned 16-bit integer that specifies an offset to add to footnote numbers in
     (0x503F)                  this section.
                               If this section has continuous footnote numbering (as specified by
                               sprmSRncFtn), then the value of the sprm minus one MUST be added to every
                               footnote number. (For example, with an offset of 6, a footnote that would have
                               been numbered 2 is now numbered 2+5=7.) The sprm value MUST be less than
                               or equal to 16383. If this section does not have continuous footnote numbering,
                               the value of this sprm MUST be ignored.
                               By default, no offset is added to footnote numbers.
sprmSNfcFtnRef        0x40     A 16-bit MSONFC (as specified in [MS-OSHARED] section 2.2.1.3) that specifies
     (0x5040)                  the numbering format used for footnotes.
                               By default, footnotes use the msonfcArabic numbering format.
sprmSNEdn             0x41     An unsigned 16-bit integer that specifies an offset to add to endnote numbers in
     (0x5041)                  this section.
                               If this section has continuous endnote numbering (as specified by
                               sprmSRncEdn), then every endnote number in this section is offset by the value
                               of this operand minus one. (For example, with an offset of 6, a endnote that
                               would have been numbered 2 is now numbered 2+5=7.) The operand value
                               MUST be less than or equal to 16383. If this section does not have continuous
                               endnote numbering, this operand MUST be ignored.
                               By default, no offset is added to endnote numbers.
sprmSNfcEdnRef        0x42     A 16-bit MSONFC (as specified in [MS-OSHARED] section 2.2.1.3) that specifies
     (0x5042)                  the numbering format used for endnotes.
                               By default, endnotes use the msonfcLCRoman numbering format.
                                                                                                          141 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sprm                   ispmd    Operand
sprmSPropRMark         0x43     A PropRMarkOperand that specifies whether the section has an associated
     (0xD243)                   property revision mark, as well as its author and date/time.
                                By default, sections have no property revision marks.
sprmSPgnStart          0x44     An unsigned 32-bit integer that specifies the starting value for page numbers
     (0x7044)                   when the section has page number restart enabled (as specified by
                                sprmSFPgnRestart). MUST be ignored if the section does not have page number
                                restart enabled.
                                The value of the operand MUST be less than or equal to 2147483646.
                                By default, page numbers restart at 0.
The following table specifies the picture property modifiers, including the valid sprm values, their
function, and the corresponding operand type and meaning.
2.7.1 Dop
The Dop structure contains the document and compatibility settings for the document.
Based on the value of Fib.cswNew, the Dop is a structure from the following table.
Value Meaning
0 Dop97
otherwise Based on the value of FibRgCswNew.nFibNew the Dop is a structure from the following:
                                                                                                        142 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value           Meaning
§ 0x00D9 Dop2000
§ 0x0101 Dop2002
§ 0x010C Dop2003
2.7.2 DopBase
The DopBase structure contains document and compatibility settings that are common to all versions
of the binary document. These settings influence the appearance and behavior of the current
document and store document-level state.
                                                1                                                  2                                            3
0   1   2   3       4   5   6    7      8   9       1   2    3    4    5   6       7   8   9           1   2    3       4   5   6   7   8   9       1
                                                0                                                  0                                            0
G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l
copts60 dxaTab
cpgWebOpt dxaHotZ
cConsecHypLim wSpare2
dttmCreated
dttmRevised
dttmLastPrint
nRevision tmEdited
... cWords
... cCh
... cPg
cParas
m nEdn epc n o p q r s t u
cLines
cWordsWithSubdocs
                                                                                                                                                        143 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          cChWithSubdocs
cPgWithSubdocs cParasWithSubdocs
... cLinesWithSubdocs
... lKeyProtDoc
... v pctWwdSaved w x y
A - fFacingPages (1 bit): A bit that specifies whether even and odd pages have different headers
    and footers as specified in [ECMA-376] Part4, Section 2.10.1 evenAndOddHeaders, where titlePg
    corresponds to the section property sprmSFTitlePage.
C - fPMHMainDoc (1 bit): A bit that specifies whether this document is a mail merge main
    document.
fpc (2 bits): Specifies where footnotes are placed on the page when they are referenced by text in
    the current document for documents that have an nFib value that is less than or equal to 0x00D9.
    This MUST be one of the following values.
Value         Meaning
0             Specifies that all footnotes are placed at the end of the section in which they are
              referenced.
1             Specifies that footnotes are displayed at the bottom margin of the page on which the note
              reference mark appears.
2             Specifies that footnotes are displayed immediately following the last line of text on the
              page on which the note reference mark appears.
F - rncFtn (2 bits): Specifies when all automatic numbering for the footnote reference marks is
    restarted for documents that have an nFib value that is less than or equal to 0x00D9. For those
    documents that rely on rncFtn, when restarted, the next automatically numbered footnote in the
    document restarts to the specified nFtn value. This MUST be one of the following values.
Value         Meaning
0             Specifies that the numbering of footnotes continues from the previous section in the
              document.
1             Specifies that the numbering of footnotes is reset to the starting value for each unique
              section in the document.
2             Specifies that the numbering of footnotes is reset to the starting value for each unique
              page in the document.
nFtn (14 bits): For those documents that have an nFib value that is less than or equal to 0x00D9,
   this element specifies the starting number for the first automatically numbered footnotes in the
   document, and the first automatically numbered footnotes after each restart point that is specified
   by the rncFtn element.
                                                                                                             144 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
G - unused5 (1 bit): This value is undefined and MUST be ignored.
M - fSplAllDone (1 bit): Specifies whether all content in this document was already checked by the
    spelling checker.
N - fSplAllClean (1 bit): Specifies whether all content in this document can be considered to be
    spelled correctly.
O - fSplHideErrors (1 bit): Specifies whether visual cues are not displayed around content
    contained in a document which is flagged as a possible spelling error.
P - fGramHideErrors (1 bit): Specifies whether visual cues are not displayed around content that is
    contained in a document and flagged as a possible grammar error.
Q - fLabelDoc (1 bit): Specifies whether the document is a mail merge labels document.
R - fHyphCapitals (1 bit): Specifies whether words that are composed of all capital letters are
    hyphenated in a given document when fAutoHyphen is set to 1.
T - fFormNoFields (1 bit): Specifies that there are no editable regions in a document that is
    currently protected for form field fill-in (fProtEnabled is 1). This value MUST be 0 if
    fProtEnabled is 0.
U - fLinkStyles (1 bit): Specifies whether the styles of the document are updated to match those of
    the attached template as specified in [ECMA-376] Part4, Section 2.15.1.55 linkStyles, where the
    attachedTemplate value refers to entry 0x01 in SttbfAssoc.
V - fRevMarking (1 bit): Specifies whether edits are tracked as revisions. If the value of fLockRev
    is set to 1, the value of fRevMarking MUST also be set to 1, as specified in [ECMA-376] Part4,
    Section 2.15.1.90 trackRevisions.
Y - fPagHidden (1 bit): Specifies whether text to which sprmCFVanish was applied was displayed
    when the document was last saved.
Z - fPagResults (1 bit): A value of 0 specifies that field codes were displayed at the time the
    document was last saved. A value of 1 specifies that the field results were displayed instead.
                                                                                               145 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
a - fLockAtn (1 bit): Specifies whether protection for comments was applied to the document or, if
    Dop2003.fTreatLockAtnAsReadOnly has a value of 1, whether read-only protection was applied
    to the document. These restrictions are used to prevent unintentional changes to all or part of a
    document. Because this protection does not encrypt the document, malicious applications can
    circumvent its use. This protection is not intended as a security feature and can be ignored. When
    fLockAtn is 1, fLockRev MUST be 0 and fProtEnabled SHOULD<165> be 0. fLockAtn can be
    one of the following.
Value   Meaning
0       Specifies that the edits made to this document are restricted to the following:
        §   The insertion and deletion of comments within the document.
        §   The editing of the regions that are delimited by range permissions matching the editing rights of
            the user account that is being used to perform the editing.
1       Specifies that the edits made to this document are restricted to the following:
        §   The editing of the regions that are delimited by range permissions matching the editing rights of
            the user account that is being used to perform the editing.
b - fMirrorMargins (1 bit): Specifies that the left and right margins that are defined in the section
    properties are swapped on facing pages.
c - fWord97Compat (1 bit): Specifies that this document was in Word97 compatibility mode
     when last saved.
f - fProtEnabled (1 bit): Specifies that the edits that are made to this document are restricted to
     the editing of form fields in sections that are protected (see sprmSFProtected). All other sections
     have no editing restrictions resulting from this setting. When fProtEnabled is 1, both fLockAtn
     and fLockRev SHOULD<166> be 0.
g - fDispFormFldSel (1 bit): If the document is currently protected for form field fill-in
    (fProtEnabled is 1), this bit specifies that the selection was within a display form field (check box
    or list box) the last time that the document was saved.
h - fRMView (1 bit): Specifies whether to show any revision markup that is present in this
    document.
i - fRMPrint (1 bit): Specifies whether to print any revision markup that is present in the document.
     SHOULD<167> be the same value as fRMView.
j - fLockVbaProj (1 bit): Specifies whether the Microsoft Visual Basic project is locked from editing
     and viewing.
k - fLockRev (1 bit): Specifies whether to track all edits made to this document as revisions.
    Additionally specifies that fRevMarking MUST be 1 for the duration that fLockRev is 1. When
    fLockRev is 1, fLockAtn MUST be 0 and fProtEnabled SHOULD<168> be 0.
l - fEmbedFonts (1 bit): Specifies that TrueType fonts are embedded in the document when the
     document is saved as specified in [ECMA-376] Part4, Section 2.8.2.8 embedTrueTypeFonts.
dxaTab (2 bytes): Specifies the default tab stop interval, in twips, to use when generating
   automatic tab stops as specified in [ECMA-376] Part4, Section 2.15.1.24 defaultTabStop.
cpgWebOpt (2 bytes): Specifies the code page to use when saving to HTML.
                                                                                                         146 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
dxaHotZ (2 bytes): Specifies the maximum amount of white space, in twips, allowed at the end of
   the line before attempting to hyphenate the next word as specified in [ECMA-376] Part4, Section
   2.15.1.53 hyphenationZone.
cConsecHypLim (2 bytes): Specifies the maximum number of consecutive lines that can end in a
   hyphenated word before ignoring automatic hyphenation rules for one line as specified in [ECMA-
   376] Part4, Section 2.15.1.21 consecutiveHyphenLimit.
dttmCreated (4 bytes): A DTTM that MAY<169> specify the date and time at which the document
   was created.
dttmRevised (4 bytes): A DTTM that specifies the date and time at which the document was last
   saved.
dttmLastPrint (4 bytes): A DTTM that MAY<170> specify the date and time at which the
   document was last printed.
nRevision (2 bytes): A signed integer that MAY<171> specify the number of times that this
   document was resaved. This MUST be a value between 0 and 0x7FFF.
tmEdited (4 bytes): A signed integer value that MAY<172> specify the time it took, in minutes, for
   the document to be opened for editing and then subsequently saved.
cWords (4 bytes): A signed integer value that specifies the last calculated or the estimated count of
  words in the main document, depending on fExactCWords and fIncludeSubdocsInStats.
cCh (4 bytes): A signed integer value that specifies the last calculated or estimated count of
   characters in the main document, depending on the values of fExactCWords and
   fIncludeSubdocsInStats. The character count excludes whitespace.
cPg (2 bytes): A signed integer value that specifies the last calculated or estimated count of pages
   in the main document, depending on the values of fExactCWords and
   fIncludeSubdocsInStats.
cParas (4 bytes): A signed integer value that specifies the last calculated or estimated count of
   paragraphs in the main document, depending on the values of fExactCWords and
   fIncludeSubdocsInStats.
m - rncEdn (2 bits): Specifies when automatic numbering for the endnote reference marks is reset
   to the beginning number for documents that have an nFib value that is less than or equal to
   0x00D9. For those documents that rely on rncEdn, when restarted, the next automatically
   numbered endnote in the document is reset to the specified nEdn value. This value MUST be one
   of the following.
Value         Meaning
0             Specifies that the numbering of endnotes continues from the previous section in the
              document.
1             Specifies that the numbering of endnotes is reset to its starting value for each unique
              section in the document.
2             Specifies that the numbering of endnotes is reset to its starting value for each unique page
              in the document.
nEdn (14 bits): For those documents that have an nFib value that is less than or equal to 0x00D9,
   this element specifies the starting number for the first automatically numbered endnote in the
   document, and the first automatically numbered endnote after each restart point that is specified
   by the rncEdn element.
                                                                                                         147 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
epc (2 bits): Specifies where endnotes are placed on the page when they are referenced by text in
   the current document. This value MUST be one of the following.
Value         Meaning
0             Specifies that endnotes are placed at the end of the section in which they are referenced.
3             Specifies that all endnotes are placed at the end of the current document, regardless of
              the section within which they are referenced.
p - fPrintFormData (1 bit): Specifies whether to print only form field results, as specified in [ECMA-
    376] Part4, Section 2.15.1.61 printFormsData.
q - fSaveFormData (1 bit): Specifies whether the application SHOULD<173> only save form field
    contents into a comma-delimited text file and ignore all other content in the document as specified
    in [ECMA-376] Part4, Section 2.15.1.73 saveFormsData.
r - fShadeFormData (1 bit): Specifies whether to display visual cues around form fields as specified
     in [ECMA-376] Part4, Section 2.15.1.38 doNotShadeFormData, where the meaning of the
     doNotShadeFormData element is the opposite of fShadeFormData.
s - fShadeMergeFields (1 bit): Specifies whether to display visual cues around mail merge fields.
cLines (4 bytes): A signed integer that specifies the last calculated or estimated count of lines in the
    main document, depending on the values of fExactCWords and fIncludeSubdocsInStats.
cWordsWithSubdocs (4 bytes): A signed integer that specifies the last calculated or estimated
  count of words in the main document, footnotes, endnotes, and text boxes in the main document,
  depending on the values of fExactCWords and fIncludeSubdocsInStats.
cChWithSubdocs (4 bytes): A signed integer that specifies the last calculated or estimated count of
   characters, excluding whitespace, in the main document, footnotes, endnotes, and text boxes in
   the main document, depending on the values of fExactCWords and fIncludeSubdocsInStats.
cPgWithSubdocs (2 bytes): A signed integer that specifies the last calculated or estimated count of
   pages in the main document, footnotes, endnotes, and text boxes that are anchored in the main
   document, depending on the values of fExactCWords and fIncludeSubdocsInStats.
cParasWithSubdocs (4 bytes): A signed integer that specifies the last calculated or estimated
   count of paragraphs in the main document, footnotes, endnotes, and text boxes that are anchored
   in the main document, depending on the values of fExactCWords and
   fIncludeSubdocsInStats.
cLinesWithSubdocs (4 bytes): A signed integer that specifies the last calculated or estimated
    count of lines in the main document, footnotes, endnotes, and text boxes that are anchored in the
    main document, depending on the values of fExactCWords and fIncludeSubdocsInStats.
lKeyProtDoc (4 bytes): A signed integer that specifies the hash of the password that is used with
   document protection (fLockRev, fProtEnabled, fLockAtn and fRevMarking), as specified in
   [ECMA-376] Part4, Section 2.15.1.28 documentProtection.
                                                                                                           148 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
v - wvkoSaved (3 bits): Specifies the viewing mode that was in use when the document was last
    saved. If the viewing mode that was in use cannot be represented by a valid value, an alternate
    view mode is specified. See [ECMA-376] Part4, section 2.15.1.93 view; the values are mapped as
    follows.
pctWwdSaved (9 bits): Specifies the zoom percentage that was in use when the document was
   saved. A value of 0 specifies the default zoom percentage of the application. This value MUST be 0
   or a value between 10 and 500.
w - zkSaved (2 bits): Specifies the zoom type that was in use when the document was saved. See
    [ECMA-376] Part4, Section 2.18.116 ST_Zoom; the values are mapped as follows.
y - iGutterPos (1 bit): Specifies whether the document gutter shall be positioned at the top of the
     pages of the document when the document is displayed. See [ECMA-376] Part4, Section 2.15.1.49
     gutterAtTop, where mirrorMargins corresponds to fMirrorMargins, bookFoldPrinting
     corresponds to Dop2002.fFolioPrint, bookFoldRevPrinting corresponds to
     Dop2002.fReverseFolio and printTwoOnOne corresponds to DopTypography.f2on1.
2.7.3 Dop95
The Dop95 structure contains document and compatibility settings. These settings influence the
appearance and behavior of the current document and store document-level state.
                                         1                                           2                                       3
0   1   2   3   4   5    6   7   8   9       1   2   3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                           0                                       0
...
...
copts80
dopBase (84 bytes): A DopBase structure that specifies document and compatibility settings.
                                                                                                                                     149 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.7.4 Dop97
The Dop97 structure contains document and compatibility settings. These settings influence the
appearance and behavior of the current document and store the document-level state.
                                          1                                           2                                         3
0   1   2   3   4   5   6   7     8   9       1   2   3   4    5     6   7   8   9        1    2    3   4   5   6   7   8   9       1
                                          0                                           0                                         0
...
...
...
...
...
dogrid
...
... A lvlDop B C D E F G H I J K L
unused5 asumyi
...
...
... cChWS
... cChWSWithSubdocs
... grfDocEvents
... M N KeyVirusSession30
...
...
...
cpMaxListCacheMainDoc
                                                                                                                                        150 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
               ilfoLastBulletMain                             ilfoLastNumberMain
cDBC
cDBCWithSubdocs
reserved3a
nfcFtnRef nfcEdnRef
hpsZoomFontPag dywDispPag
dop95 (88 bytes): A Dop95 that specifies document and compatibility settings.
adt (2 bytes): Specifies the document classification as specified in [ECMA-376] Part 4, Section
    2.15.1.29 documentType; the values are mapped as follows.
dogrid (10 bytes): A Dogrid that specifies the draw object grid settings.
lvlDop (4 bits): This value SHOULD<174> specify which outline levels were showing in outline view
    at the time of the last save operation. This MUST be a value between 0 and 9, inclusive, or this
    value MUST be 15.
B - fGramAllDone (1 bit): Specifies whether the grammar of all content in this document was
    checked.
C - fGramAllClean (1 bit): Specifies whether all content in this document can be considered
    grammatically correct.
D - fSubsetFonts (1 bit): Specifies whether to subset fonts when embedding as specified in [ECMA-
    376] Part 4, Section 2.8.2.15 saveSubsetFonts, where embedTrueTypeFonts refers to
    DopBase.fEmbedFonts.
                                                                                            151 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
E - unused2 (1 bit): This value is undefined and MUST be ignored.
G - fDiskLvcInvalid (1 bit): This bit MAY<176> specify whether the saved ListNum field cache
    contains valid information. The ListNum field cache is specified by FibRgFcLcb97.fcPlcfBteLvc.
H - fSnapBorder (1 bit): Specifies whether to align paragraph and table borders with the page
    border, as specified in [ECMA-376] Part 4, Section 2.15.1.2 alignBordersAndEdges.
I - fIncludeHeader (1 bit): Specifies whether to draw the page border so that it includes the
     header area.
J - fIncludeFooter (1 bit): Specifies whether to draw the page border so that it includes the footer
     area.
cChWS (4 bytes): Specifies the last calculated or estimated count of characters in the main
   document depending on the values of fExactCWords and fIncludeSubdocsInStats. The count
   of characters includes whitespace.
cChWSWithSubdocs (4 bytes): Specifies the last calculated or estimated count of characters in the
   main document, footnotes, endnotes, and text boxes that are anchored in the main document,
   depending on fExactCWords and fIncludeSubdocsInStats. The count of characters includes
   whitespace.
grfDocEvents (4 bytes): A bit field that specifies which document events are fired. The individual
   bits and their meanings are as follows.
M - fVirusPrompted (1 bit): Specifies whether the macro security prompt is shown in this session
    for this document.
KeyVirusSession30 (30 bits): A random value to match against the current session key. If they
   match, this is the same session.
                                                                                            152 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cpMaxListCacheMainDoc (4 bytes): This value MAY<177> specify the maximum CP value for
   which the ListNum field cache contains valid information. The ListNum field cache is specified by
   FibRgFcLcb97.fcPlcfBteLvc.
ilfoLastBulletMain (2 bytes): Specifies the index of the last LFOstructure that was used for bullets
    in the document before the save operation. This value MUST be between 0 and a number that is
    one less than the number of entries in FibRgFcLcb97.fcPlfLfo, unless there are 0 entries, in
    which case this value MUST be 0.
ilfoLastNumberMain (2 bytes): Specifies the index of the last LFO structure that was used for list
    numbering in the document before the save operation. This value MUST be between 0 and a
    number that is one less than the number of entries in FibRgFcLcb97.fcPlfLfo, unless there are 0
    entries, in which case this value MUST be 0.
cDBC (4 bytes): Specifies the last calculated or estimated count of double-byte characters in the
   main document, depending on the values of DopBase.fExactCWords and
   DopBase.fIncludeSubdocsInStats. The count of characters includes whitespace.
nfcFtnRef (2 bytes): An MSONFC (as specified in [MS-OSHARED] section 2.2.1.3) that, for those
   documents that have an nFib which is less than or equal to 0x00D9, specifies the numbering
   format code to use for footnotes in the document.
nfcEdnRef (2 bytes): An MSONFC (as specified in [MS-OSHARED] section 2.2.1.3) that, for those
   documents that have an nFib which is less than or equal to 0x00D9, specifies the numbering
   format code to use for endnotes in the document.
hpsZoomFontPag (2 bytes): Specifies the size, in half points, of the maximum font size to be
   enlarged in the view "online layout" at the time the document was last paginated. This value
   SHOULD<178> be ignored.
dywDispPag (2 bytes): Height of the screen, in pixels, at the time that the document was last
   paginated. This value SHOULD<179> be ignored.
2.7.5 Dop2000
A structure that contains document and compatibility settings. These settings influence the
appearance and behavior of the current document and store document-level state.
                                         1                                             2                                       3
0   1   2   3   4    5   6   7   8   9       1   2   3       4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                             0                                       0
...
...
A B C D empty1 E F G H I J K iPixelsPerInch_WebOpt L M N O
                                                                                                                                       153 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                         copts (32 bytes)
...
...
verCompatPre10 P Q R S T U V W X Y Z a b c d e
dop97 (500 bytes): A Dop97 that specifies document and compatibility settings.
ilvlLastBulletMain (1 byte): SHOULD<180> specify the last bullet level applied via the toolbar
     before saving. MUST be between 0 and 9. Default is 0.
ilvlLastNumberMain (1 byte): SHOULD<181> specify the last list numbering level applied via the
     toolbar before saving. MUST be between 0 and 9. Default is 0.
istdClickParaType (2 bytes): Specifies the ISTD of the paragraph style to use for paragraphs that
    are automatically created by the click and type feature to place the cursor where the user clicked.
    Default value is 0 (Normal paragraph style).
A - fLADAllDone (1 bit): Specifies whether language auto-detection has run to completion for the
    document. Default is 0.
B - fEnvelopeVis (1 bit): Specifies whether to show the E-Mail message header as specified in
    [ECMA-376] Part 4, Section 2.15.1.80 showEnvelope. Default is 0.
D - fMaybeFitText (1 bit): If this is 0, then there MUST NOT be any fit text (see sprmCFitText) in
    the document. Default is 0.
E - fFCCAllDone (1 bit): Specifies whether the format consistency checker has run to completion
    for the document. Default is 0.
F - fRelyOnCSS_WebOpt (1 bit): Specifies whether to rely on CSS for font face formatting when
    saving as a Web page as specified in [ECMA-376] Part 4, Section 2.15.2.11 doNotRelyOnCSS,
    where the meaning is the opposite of fRelyOnCSS_WebOpt. The default is 1.
G - fRelyOnVML_WebOpt (1 bit): Specifies whether to use VML when saving as a Web page as
    specified in [ECMA-376] Part 4, Section 2.15.2.34 relyOnVML. The default is 0.
H - fAllowPNG_WebOpt (1 bit): Specifies whether to allow Portable Network Graphics (PNG) format
    as a graphic format when saving as a Web page as specified in [ECMA-376] Part 4, Section
    2.15.2.1 allowPNG. Default value is 0.
I - screenSize_WebOpt (4 bits): Specifies what the target screen size for the Web page is as
    specified in [ECMA-376] Part 4, Section 2.15.2.41 targetScreenSz, where screenSize_WebOpt
    value maps to ST_TargetScreenSz types as follows
                                                                                                             154 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value       ST_TargetScreenSz string
6           1152x900
7           1280x1024
8           1600x1200
9           1800x1440
10          1920x1200
K - fUseLongFileNames_WebOpt (1 bit): Specifies whether to use file names longer than 8.3
    characters when saving as a Web page as specified in [ECMA-376] Part 4, Section 2.15.2.13
    doNotUseLongFileNames, where the meaning is the opposite of fUseLongFileNames_WebOpt.
    The default is 1.
iPixelsPerInch_WebOpt (10 bits): Specifies the pixels per inch for graphics/images when saving as
    a Web page as specified in [ECMA-376] Part 4, Section 2.15.2.33 pixelsPerInch. If
    fWebOptionsInit is 1 then this MUST be between 19 and 480; otherwise, this is ignored. The
    default is 96.
M - fMaybeFEL (1 bit): If this is 0, then there MUST NOT be any Warichu, Tatenakayoko, Ruby,
    Kumimoji or EncloseText in the document. Enclose Text is a layout feature that uses EQ fields
    ([ECMA-376] part 4, section 2.16.5.22) to enclose characters in circles or other characters. The
    default is 0.
N - fCharLineUnits (1 bit): If this is 0, then there MUST NOT be any character unit indents
    (sprmPDxcLeft, sprmPDxcLeft1, sprmPDxcRight) or line units (sprmPDylBefore, sprmPDylAfter) in
    use. The default is 0.
copts (32 bytes): A copts that specifies compatibility options. Components of Copts.copts80 MUST
   be equal to components of Dop97.copts80.
verCompatPre10 (16 bits): A bit field that specifies the desired feature set to use for the document.
   This overrides DopBase.fWord97Compat. Values are composed from the following table:
P - fNoMargPgvwSaved (1 bit): Specifies whether to suppress the display of the header and footer
    area when in print layout view so that the main text area of one page is displayed adjacent to the
    main text area of the next page as specified in [ECMA-376] Part 4, Section 2.15.1.34
    doNotDisplayPageBoundaries. Default is 0.
                                                                                                   155 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
R - unused3 (1 bit): Undefined and MUST be ignored.
T - fBulletProofed (1 bit): Specifies that this document was produced by the Open and Repair
    feature. Default is 0.
V - fSaveUim (1 bit): Specifies whether to save UIM data in the document. Default is 1.
W - fFilterPrivacy (1 bit): Specifies whether to remove personal information from the document
   properties on save as specified in [ECMA-376] Part 4, Section 2.15.1.68
   removePersonalInformation. Default is 0.
Y - fSeenRepairs (1 bit): Specifies whether the user has seen any repairs made by the Open and
    Repair feature. Default is 0.
Z - fHasXML (1 bit): Specifies whether the document has any form of structured document tags
    in it. Default is 0.
b - fValidateXML (1 bit): Specifies whether to validate custom XML markup against any attached
    schemas as specified in [ECMA-376] Part 4, Section 2.15.1.42 doNotValidateAgainstSchema,
    where the meaning is the opposite of fValidateXML. Default is 1
c - fSaveInvalidXML (1 bit): Specifies whether to allow saving the document as an XML file when
     the custom XML markup is invalid with respect to the attached schemas as specified in [ECMA-
     376] Part 4, Section 2.15.1.74 saveInvalidXml. Default is 0.
d - fShowXMLErrors (1 bit): Specifies whether to show a visual indicator for invalid custom XML
    markup as specified in [ECMA-376] Part 4, Section 2.15.1.33 doNotDemarcateInvalidXml, where
    the meaning is the opposite of fShowXMLErrors.
2.7.6 Dop2002
A structure that contains document and compatibility settings. These settings influence the
appearance and behavior of the current document and store document-level state.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
...
...
unused
A B C D E F G H I J K L M N istdTableDflt
                                                                                                                                     156 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                  verCompat                                      grfFmtFilter
iFolioPages cpgText
... cpMinRMText
... cpMinRMFtn
... cpMinRMHdd
... cpMinRMAtn
... cpMinRMEdn
... cpMinRmTxbx
... cpMinRmHdrTxbx
... rsidRoot
...
dop2000 (544 bytes): A Dop2000 that specifies document and compatibility settings.
B - fWordCompat (1 bit): Specifies that features not compatible with the settings specified in
    verCompat will be disabled or removed when saving. Default is 0.
C - fLiveRecover (1 bit): Specifies that this file is a recovered document from after a crash. Default
    is 0.
D - fEmbedFactoids (1 bit): Specifies whether smart tags are to remain in the document when
    saving. Smart tags are to be removed when fEmbedFactoids is set to 0. See [ECMA-376] Part 4,
    Section 2.15.1.35 doNotEmbedSmartTags, where the meaning is the opposite of
    fEmbedFactoids. Default is 1.
E - fFactoidXML (1 bit): Specifies whether to save smart tag data as an XML-based property bag at
    the head of the HTML page when saving as HTML as specified in [ECMA-376] Part 4, Section
    2.15.2.36 saveSmartTagsAsXml. Default is 0.
F - fFactoidAllDone (1 bit): Specifies whether the document has been completely scanned for all
    possible smart tag creations. Default is 0.
G - fFolioPrint (1 bit): Specifies whether to use book fold printing as specified in [ECMA-376] Part 4,
    Section 2.15.1 11 bookFoldPrinting. Default is 0.
H - fReverseFolio (1 bit): Specifies whether to use reverse book fold printing as specified in [ECMA-
    376] Part 4, Section 2.15.1.13 bookFoldRevPrinting. If this is 1 then fFolioPrint MUST be 1.
    Default is 0.
                                                                                              157 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
I - iTextLineEnding (3 bits): Specifies what to end a line of text with when saving as a text file via
     automation. It MUST be one of the values in the following table:
Value       Meaning
0           Carriage return (0x0D) followed by line feed (0x0A).
(default)
1           Carriage return (0x0D).
2           Line feed (0x0A).
3           Line feed (0x0A) followed by carriage return (0x0D).
4           If the code page supports it, Line Separator (U+2028) or Paragraph Separator (U+2029)
            otherwise behave as follows:
            §    If the codepage is CP_JAPANEUC, CP_CHINAEUC, CP_KOREAEUC or CP_TAIWANEUC treat
                 as if the value were 2.
            §    If the code page is greater than or equal to 10000 and less than 20000, then treat as if the
                 value where 1.
            §    If neither of those apply, then treat as if the value were 0.
J - fHideFcc (1 bit): Specifies whether to refrain from showing a visual cue around ranges flagged by
     the format consistency checker as suspect. Default is 0.
L - fAcetateShowAtn (1 bit): Specifies if comments are included when the contents of this
    document are displayed. Default is 1.
M - fAcetateShowInsDel (1 bit): Specifies if revisions to content are included when the contents of
    this document are displayed. Default is 1.
N - fAcetateShowProps (1 bit): Specifies whether property revision marks are included when the
    contents of this document are displayed. Default is 1.
istdTableDflt (16 bits): An istd that specifies the default table style for newly inserted tables.
verCompat (16 bits): A bit field that specifies the desired feature set to use for the document. This
   overrides DopBase.fWord97Compat and Dop2000.verCompatPre10. The bit values are as
   follows:
Value                                                 Meaning
0x0000                                                No restrictions on feature use.
0x0001                                                Use features supported by Microsoft® Internet
                                                      Explorer® 4.0.
0x0002                                                Use features supported by Microsoft® Internet
                                                      Explorer® 5.0.
0x0004                                                Use features supported by Word for Windows 95.
0x0008                                                Use features supported by Word 97.
0x0010                                                Use features supported by the Word HTML format.
0x0020                                                Use features supported by the Word RTF format.
0x0040                                                Use features supported by East Asian versions of
                                                      Word for Windows 95.
0x0080                                                Use features supported by plain text e-mail
                                                      messages.
0x0100                                                Use features supported by Internet Explorer 6.0.
0x0200                                                Use features supported by the Word XML format.
0x0400                                                Use features supported by RTF e-mail messages.
0x0800                                                Do not use features introduced in Microsoft Office
                                                      Word 2007.
0x1000                                                Use features supported by plain text.
                                                                                                           158 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    Default is 0.
grfFmtFilter (2 bytes): Specifies the suggested filtering for the list of document styles as specified in
    [ECMA-376] Part 4, Section 2.15.1.86 stylePaneFormatFilter. Default is 0x5024.
iFolioPages (2 bytes): Specifies the number of pages per booklet as specified in [ECMA-376] Part 4,
    Section 2.15.1.12 bookFoldPrintingSheets, where bookFoldPrinting refers to fFolioPrint and
    bookFoldRevPrinting refers to fReverseFolio. Default is 0.
cpgText (4 bytes): Specifies the code page to use when saving as encoded text. Default is the
   current Windows ANSI code page for the system.
cpMinRMText (4 bytes): A CP in the main document before which there are no revisions. Default is
   0.
cpMinRMFtn (4 bytes): A CP in the footnote document before which there are no revisions. Default
   is 0.
cpMinRMHdd (4 bytes): A CP in the header document before which there are no revisions. Default is
   0.
cpMinRMAtn (4 bytes): A CP in the comment document before which there are no revisions. Default
   is 0.
cpMinRMEdn (4 bytes): A CP in the endnote document before which there are no revisions. Default
   is 0.
cpMinRmTxbx (4 bytes): A CP in the textbox document for the main document before which there
   are no revisions. Default is 0.
cpMinRmHdrTxbx (4 bytes): A CP in the header textbox document before which there are no
   revisions. Default is 0.
rsidRoot (4 bytes): Specifies the original document revision save ID as specified in [ECMA-376] Part
    4, Section 2.15.1.71 rsidRoot. By default the rsidRoot is not that of the currently running session.
2.7.7 Dop2003
The Dop2003 structure contains document and compatibility settings. These settings influence the
appearance and behavior of the current document and store document-level state.
                                          1                                          2                                        3
0   1   2   3   4   5   6   7     8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6    7   8   9       1
                                          0                                          0                                        0
...
...
... A B C D E F G H I J K L M N
... O P Q R S T empty2
dxaPageLock
dyaPageLock
                                                                                                                                      159 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          pctFontLock
dop2002 (594 bytes): A Dop2002 that specifies document and compatibility settings.
B - fStyleLock (1 bit): Specifies whether the styles available to use in the document are restricted to
    those styles with STD.Stdf.StdfBase.GRFSTD.fLocked set to 1 when style lock is enforced
    (fStyleLockEnforced is 1). By default, this value is 0.
D - fRemoveWordML (1 bit): Specifies whether to save only custom XML markup when saving to
    XML as specified in [ECMA-376] Part 4, Section 2.15.1.77 saveXmlDataOnly. By default, this value
    is 0.
E - fApplyCustomXForm (1 bit): Specifies whether to save the document through the custom XML
    transform specified via FibRgFcLcb2003.fcCustomXForm and FibRgFcLcb2003.lcbCustomXForm
    when saving to XML as specified in [ECMA-376] Part 4, Section 2.15.1.92 useXSLTWhenSaving. By
    default, this value is 0.
G - fFakeLockAtn (1 bit): Specifies that the DopBase.fLockAtn setting is to be honored only if the
    application does not support fStyleLock. By default, this value is 0.
H - fIgnoreMixedContent (1 bit): Specifies whether to ignore all text not in leaf nodes of the
    custom XML when validating custom XML markup as specified in [ECMA-376] Part 4, Section
    2.15.1.54 ignoreMixedContent. By default, this value is 0.
K - fWord97Doc (1 bit): Specifies whether to disable UI for features incompatible with the Word
    Binary File Format as specified in [ECMA-376] Part 4, Section 2.15.3.54 uiCompat97To2003. By
    default, this value is 0.
M - fStyleLockQFSet (1 bit): Specifies whether to prevent the replacement of style sets as specified
    in [ECMA-376] Part 4, Section 2.15.1.84 styleLockQFSet. By default, this value is 0.
N - empty1 (19 bits): This value MUST be zero, and MUST be ignored.
                                                                                              160 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    pctFontLock as specified in [ECMA-376] Part 4, Section 2.15.1.66 readModeInkLockDown. By
    default, this value is 0.
P - fAcetateShowInkAtn (1 bit): Specifies whether to include ink annotations when the contents of
    this document are displayed. By default, this value is 1.
Q - fFilterDttm (1 bit): Specifies whether to remove date and time information from annotations as
    specified in [ECMA-376] Part 4, Section 2.15.1.67 removeDateAndTime. By default, this value is 0.
R - fEnforceDocProt (1 bit): Specifies whether to enforce the document protection mode that is
    specified by iDocProtCur. By default, this value is 0.
S - iDocProtCur (3 bits): Specifies the document protection mode that is in effect when
    fEnforceDocProt is set to 1. This MUST be set to one of the following values.
Value       Meaning
0           Track all edits that are made to the document as revisions.
1           Comments are permitted to be inserted or deleted, and regions that are delimited by range
            permissions can be edited if they match the editing rights of the user account which is
            performing the editing. See PRTI.
2           Edits are restricted to the editing of form fields in sections where sprmSFProtected results in a
            value of "true". Edits are not restricted in sections where sprmSFProtected is not present or has
            a value of "false".
3           Edits are restricted to regions delimited by range permissions which match the editing rights of
(Default)   the user account which is performing the editing. See PRTI.
7           There are no editing restrictions.
T - fDispBkSpSaved (1 bit): Specifies whether to display background objects when displaying the
    document in print layout view as specified in [ECMA-376] Part 4, Section 2.15.1.25
    displayBackgroundShape. By default, this value is 0.
dxaPageLock (4 bytes): Specifies the width, in twips, of the virtual pages that are used in this
   document when fReadingModeInkLockDown is 1. By default, this value is 0.
dyaPageLock (4 bytes): Specifies the height, in twips, of the virtual pages that are used in this
   document when fReadingModeInkLockDown is 1. By default, this value is 0.
pctFontLock (4 bytes): Specifies the percentage to which text in the document is scaled before it is
   displayed on a virtual page when fReadingModeInkLockDown is 1. By default, this value is 0.
grfitbid (1 byte): A bit field that specifies what toolbars were shown because of document state
    rather than explicit user action at the moment of saving. This value MUST be composed of the
    following bit values.
Value            Meaning
0x00 (default)   No toolbar was shown because of document state.
0x01             The reviewing toolbar was shown.
0x02             The Web toolbar was shown.
0x04             The mail merge toolbar was shown.
ilfoMacAtCleanup (2 bytes): Specifies the largest ilfo value (index into PlfLfo) such that all PlfLfo
    entries from 0 to ilfoMacAtCleanup are searched for unused values to be pruned as specified in
    [ECMA-376] Part 4, Section 2.9.20 numIdMacAtCleanup. By default, this value is 0.
                                                                                                          161 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.7.8 Dop2007
The Dop2007 structure contains document and compatibility settings. These settings influence the
appearance and behavior of the current document and store document-level state.
                                            1                                              2                                       3
0   1   2   3   4   5   6   7       8   9       1   2    3   4    5      6    7   8   9        1   2   3   4   5   6   7   8   9       1
                                            0                                              0                                       0
...
...
reserved1
A B C D E ssm F G reserved3
empty3
empty4
empty5
empty6
...
...
...
dop2003 (616 bytes): A Dop2003 that specifies document and compatibility settings.
A - fRMTrackFormatting (1 bit): Specifies whether to track format changes when tracking for
    revisions (DopBase.fRevMarking). By default, this value is 1.
B - fRMTrackMoves (1 bit): Specifies whether to track moved text when tracking for revisions
    (DopBase.fRevMarking) instead of tracking for the deletions and insertions that are made. By
    default, this value is 1.
ssm (4 bits): An unsigned integer that specifies the sorting method to use when displaying document
   styles. This value MUST be one of the following.
Value                                                                        Meaning
0                                                                            Styles are sorted by name.
                                                                                                                                           162 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value                                                                    Meaning
1 (default)                                                              Styles are sorted by the default sorting method of
                                                                         the application.
2                                                                        Styles are sorted based on the font that they apply.
3                                                                        Styles are sorted by the style on which they are
                                                                         based.
4                                                                        Styles are sorted by their style types (character,
                                                                         linked, paragraph, and so on).
2.7.9 Dop2010
The Dop2010 structure contains document and compatibility settings. These settings influence the
appearance and behavior of the current document and store document-level state.
                                          1                                           2                                       3
0   1   2   3   4   5   6   7     8   9       1   2    3   4   5     6    7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                           0                                       0
...
...
... docid
... reserved
... A empty
... iImageDPI
...
                                                                                                                                      163 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
dop2007 (674 bytes): A Dop2007 structure (section 2.7.8) that specifies document and
   compatibility settings.
docid (4 bytes): An unsigned integer that specifies an arbitrary identifier for the context of the
   paragraph identifiers in the document, as specified in [MS-DOCX] section 2.6.1.14 (docId). MUST
   be greater than 0 and less than 0x80000000
iImageDPI (4 bytes): An unsigned integer that specifies the resolution at which to save images in
   the document, as specified in [MS-DOCX] section 2.6.1.12 (defaultImageDpi).
2.7.10 Dop2013
The Dop2013 structure contains document and compatibility settings. These settings influence the
appearance and behavior of the current document and store document-level state.
                                          1                                          2                                       3
0   1   2   3   4   5   6   7     8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                          0                                       0
...
...
... A empty
...
dop2010 (690 bytes): A Dop2010 structure (section 2.7.9) that specifies document and
   compatibility settings.
A - fChartTrackingRefBased (1 bit): Specifies how the data point properties and data labels in all
    charts in this document behave, as specified in [MS-DOCX] section 2.5.1.2
    (chartTrackingRefBased).
2.7.11 Copts60
                                          1                                          2                                       3
0   1   2   3   4   5   6   7     8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                          0                                       0
A B C D E F G H I J K L M N O P
                                                                                                                                     164 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
B - fNoSpaceRaiseLower (1 bit): Specified in [ECMA-376] Part 4, Section 2.15.3.36
    noSpaceRaiseLower.
O - fDntULTrlSpc (1 bit): Specified in [ECMA-376] Part 4, Section 2.15.3.55 ulTrailSpace, where the
    meaning of the element is the opposite of fDntULTrlSpc.
2.7.12 Copts80
                                          1                                       2                                       3
0   1   2   3   4   5   6    7   8    9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                       0                                       0
copts60 A B C D E F G H I J K L M N O P
A - fSuppressTopSpacingMac5 (1 bit): Specifies whether the minimum line height for the first line
    on the page is ignored as specified in [ECMA-376] Part 4, Section 2.15.3.48
    suppressSpacingAtTopOfPage, where a spacing element with a lineRule attribute value of
                                                                                                                                  165 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    atLeast refers to sprmPDyaLine with a LSPD.fMultLinespace of 0 and LSPD.dyaline greater
    than 0.
C - fPrintBodyBeforeHdr (1 bit): Specifies whether body text is printed before header and footer
    contents as specified in [ECMA-376] Part 4, Section 2.15.3.38 printBodyTextBeforeHeader.
D - fNoExtLeading (1 bit): Specifies whether leading is not added between lines of text as specified
    in [ECMA-376] Part 4, Section 2.15.3.35 noLeading.
E - fDontMakeSpaceForUL (1 bit): Specifies whether additional space is not added below the
    baseline for underlined East Asian characters as specified in [ECMA-376] Part 4, Section
    2.15.3.43 spaceForUL, where u is sprmCKul and textAlignment with val of baseline is
    sprmPWAlignFont with a value of 2 and the overall meaning is the opposite of
    fDontMakeSpaceForUL.
F - fMWSmallCaps (1 bit): Specifies whether Word 5.x for the Macintosh small caps formatting is to
    be used as specified in [ECMA-376] Part 4, Section 2.15.3.32 mwSmallCaps.
G - f2ptExtLeadingOnly (1 bit): Specifies whether line spacing emulates WordPerfect 5.x line
    spacing as specified in [ECMA-376] Part 4, Section 2.15.3.51 suppressTopSpacingWP.
H - fTruncFontHeight (1 bit): Specifies whether font height calculation emulates WordPerfect 6.x
    font height calculation as specified in [ECMA-376] Part 4, Section 2.15.3.53
    truncateFontHeightsLikeWP6.
I - fSubOnSize (1 bit): Specifies whether the priority of font size is increased during font
     substitution as specified in [ECMA-376] Part 4, Section 2.15.3.46 subFontBySize.
J - fLineWrapLikeWord6 (1 bit): Specifies whether line wrapping emulates Microsoft® Word 6.0
     line wrapping for East Asian characters as specified in [ECMA-376] Part 4, Section 2.15.3.31
     lineWrapLikeWord6.
K - fWW6BorderRules (1 bit): Specifies whether the paragraph borders next to frames are not
    suppressed as specified in [ECMA-376] Part 4, Section 2.15.3.19
    doNotSuppressParagraphBorders.
L - fExactOnTop (1 bit): Specifies whether content on lines with exact line height is not to be
    centered as specified in [ECMA-376] Part 4, Section 2.15.3.34 noExtraLineSpacing, where exact
    line height using the spacing element refers to sprmPDyaLine with LSPD.fMultLinespace of 0
    and LSPD.dyaline is less than 0.
M - fExtraAfter (1 bit): Specifies whether the exact line height for the last line on a page is ignored
    as specified in [ECMA-376] Part 4, Section 2.15.3.47 suppressBottomSpacing, where exact line
    height has using the spacing element refers to sprmPDyaLine with LSPD.fMultLinespace of 0
    and LSPD.dyaline is less than 0.
N - fWPSpace (1 bit): Specifies whether the width of a space emulates WordPerfect 5.x space width
    as specified in [ECMA-376] Part 4, Section 2.15.3.66 wpSpaceWidth.
O - fWPJust (1 bit): Specifies whether paragraph justification emulates WordPerfect 6.x paragraph
    justification as specified in [ECMA-376] Part 4, Section 2.15.3.65 wpJustification, where the val
    attribute value of both on the jc element refers to sprmPJc with a value of 3.
P - fPrintMet (1 bit): Specifies whether printer metrics are used to display documents as specified in
    [ECMA-376] Part 4, Section 2.15.3.61 usePrinterMetrics.
                                                                                               166 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.7.13 Copts
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4    5   6    7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
copts80
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f
g empty1
empty2
empty3
empty4
empty5
empty6
B - fFtnLayoutLikeWW8 (1 bit): Specifies whether to emulate Microsoft® Word 6.0, Word for
    Windows 95, or Word 97 footnote placement. Specified in [ECMA-376] Part 4, 2.15.3.26
    (footnoteLayoutLikeWW8).
D - fDontAdjustLineHeightInTable (1 bit): Prevents lines within tables from having their heights
    adjusted to comply with the document grid. See sprmSDyaLinePitch and [ECMA-376] Part 4,
    2.15.3.1 (adjustLineHeightInTable) where the meaning is the opposite of
    fDontAdjustLineHeightInTable.
E - fForgetLastTabAlign (1 bit): Specifies whether to ignore width of the last tab stop when aligning
    a paragraph if the tab stop is not left aligned. Specified in [ECMA-376] Part 4, 2.15.3.27
    (forgetLastTabAlignment) where jc refers to sprmPJc and the tab element refers to either
    sprmPChgTabs or sprmPChgTabsPapx.
                                                                                                                                  167 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
H - fLayoutRawTableWidth (1 bit): Specifies whether to ignore space before tables when deciding
    if a table wraps a floating object. Specified in [ECMA-376] Part 4, 2.15.3.29
    (layoutRawTableWidth).
I - fLayoutTableRowsApart (1 bit): Specifies whether to allow table rows to wrap inline objects
     independently. Specified in [ECMA-376] Part 4, 2.15.3.30 (layoutTableRowsApart).
L - fDontSnapToGridInCell (1 bit): Specifies whether to not snap to the document grid in table
    cells with objects. Specified in [ECMA-376] Part 4, 2.15.3.17 (doNotSnapToGridInCell) where the
    docGrid element refers to any of sprmSClm, sprmSDyaLinePitch or sprmSDxtCharSpace with a
    nondefault value specified.
M - fDontAllowFieldEndSelect (1 bit): Specifies whether to select an entire field when the first or
    last character of the field is selected. Specified in [ECMA-376] Part 4, 2.15.3.40
    (selectFldWithFirstOrLastChar).
N - fApplyBreakingRules (1 bit): Specifies whether to use legacy Ethiopic and Amharic line
    breaking rules. Specified in [ECMA-376] Part 4, 2.15.3.4 (applyBreakingRules).
R - fGrowAutoFit (1 bit): Specifies whether to allow tables to autofit into the page margins.
    Specified in [ECMA-376] Part 4, 2.15.3.28 (growAutofit).
S - fUseNormalStyleForList (1 bit): Specifies whether to not automatically apply the list paragraph
    style to bulleted or numbered text. Specified in [ECMA-376] Part 4, 2.15.3.60
    (useNormalStyleForList). MAY<183> be ignored.
U - fFELineBreak11 (1 bit): Specifies whether to use an alternate set of East Asian line breaking
    rules. Specified in [ECMA-376] Part 4, 2.15.3.57 (useAltKinsokuLineBreakRules). MAY<185> be
    ignored.
                                                                                                168 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
W - fWW11IndentRules (1 bit): Specifies whether to not ignore floating objects when calculating
   paragraph indentation. Specified in [ECMA-376] Part 4, 2.15.3.18 (doNotSuppressIndentation).
   MAY<187> be ignored.
X - fDontAutofitConstrainedTables (1 bit): Specifies whether to not autofit tables such that they
    fit next to wrapped objects. Specified in [ECMA-376] Part 4, 2.15.3.12
    (doNotAutofitConstrainedTables). MAY<188> be ignored.
Y - fAutofitLikeWW11 (1 bit): Specifies whether to allow table columns to exceed the preferred
    widths of the constituent cells. Specified in [ECMA-376] Part 4, 2.15.3.5
    (autofitToFirstFixedWidthCell). MAY<189> be ignored.
a - fHangulWidthLikeWW11 (1 bit): Specifies whether to use fixed width for Hangul characters.
    Specified in [ECMA-376] Part 4, 2.15.3.11 (displayHangulFixedWidth). MAY<191> be ignored.
f - fWord11KerningPairs (1 bit): Specifies whether to use ANSI kerning pairs from fonts instead of
     the Unicode kerning pair info. Specified in [ECMA-376] Part 4, 2.15.3.58 (useAnsiKerningPairs).
     MAY<196> be ignored.
g - fCachedColBalance (1 bit): Specifies whether to use cached paragraph information for column
    balancing. Specified in [ECMA-376] Part 4, 2.15.3.8 (cachedColBalance). MAY<197> be ignored.
2.7.14 Asumyi
                                                                                             169 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                              1                                         2                                       3
0   1   2       3   4   5   6   7   8     9        1   2   3    4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                              0                                         0                                       0
A B C D reserved wDlgLevel
lHighestLevel
lCurrentLevel
A - fValid (1 bit): Specifies whether the rest of the information in the Asumyi is currently valid.
C - iViewBy (2 bits): Specifies the type of AutoSummary to use. This value MUST be one of the
    following.
Value       Meaning
0           Highlight the text that is to be included in the summary.
1           Hide all text that is not part of the summary
2           Insert the summary at the top of the document.
3           Create a new document that contains the summary.
reserved (11 bits): This value MUST be zero, and MUST be ignored.
wDlgLevel (2 bytes): Specifies the desired size of the summary. This value SHOULD<198> either
   be between 0 and 100, expressing the percentage of the original document size, or be one of the
   following values.
Value           Meaning
0xFFFE          10 sentences.
0xFFFD          20 sentences.
0xFFFC          100 words.
0xFFFB          500 words.
0xFFFA          10 percent of the       original   document     size.
0xFFF9          25 percent of the       original   document     size.
0xFFF8          50 percent of the       original   document     size.
0xFFF7          75 percent of the       original   document     size.
lHighestLevel (4 bytes): If fValid is set to 1, this value MUST be greater than or equal to the
    highest value of ASUMY.lLevel.
lCurrentLevel (4 bytes): If fValid is set to 1, this value MUST be equal to the following.
    If wDlgLevel is between 0xFFF7 and 0xFFFE, the value to use for wDlgLevel is the equivalent
    percentage to maintain the meaning of wDlgLevel. This value is compared to ASUMY.lLevel to
    see if is to be part of the summary. If ASUMY.lLevel is less than or equal to lCurrentLevel, it is
    to be part of the summary.
                                                                                                                                        170 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.7.15 Dogrid
The Dogrid structure specifies parameters for the drawn object properties of the document.
                                                  1                                       2                                         3
0   1       2   3       4   5   6    7   8    9       1   2   3   4   5   6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                                  0                                       0                                         0
xaGrid yaGrid
dxaGrid dyaGrid
dyGridDisplay A dxGridDisplay B
xaGrid (2 bytes): An XAS_nonNeg that specifies horizontal origin point of the drawing grid. See
   [ECMA-376] Part 4, Section 2.15.1.43 (drawingGridHorizontalOrigin), where
   doNotUseMarginsForDrawingGridOrigin has the opposite meaning of fFollowMargins. The
   default value is 1701.
yaGrid (2 bytes): A YAS_nonNeg that specifies the vertical origin point of the drawing grid. See
   [ECMA-376] Part 4, Section 2.15.1.45 (drawingGridVerticalOrigin), where
   doNotUseMarginsForDrawingGridOrigin has the opposite meaning of fFollowMargins. The
   default value is 1984.
dxaGrid (2 bytes): An XAS_nonNeg that specifies the horizontal grid unit size of the drawing grid.
   See [ECMA-376] Part 4, Section 2.15.1.44 (drawingGridHorizontalSpacing). The default value is
   180.
dyaGrid (2 bytes): A YAS_nonNeg that specifies the vertical grid unit size of the drawing grid. See
   [ECMA-376] Part 4, Section 2.15.1.46 (drawingGridVerticalSpacing). The default value is 180.
dyGridDisplay (7 bits): A positive value, in units specified by dyaGrid, that specifies the distance
   between vertical gridlines. See [ECMA-376] Part 4, Section 2.15.1.27
   (displayVerticalDrawingGridEvery) where drawingGridVerticalSpacing refers to dyaGrid. The
   default value is 1.
dxGridDisplay (7 bits): A positive value, in units specified by dxaGrid, that specifies the distance
   between horizontal gridlines. See [ECMA-376] Part 4, Section 2.15.1.26.
   (displayHorizontalDrawingGridEvery) where drawingGridHorizontalSpacing refers to dxaGrid. The
   default value is 1.
B - fFollowMargins (1 bit): A value that specifies whether to use margins for drawing grid origin.
    See [ECMA-376] Part 4, Section 2.15.1.41 (doNotUseMarginsForDrawingGridOrigin), where the
    meaning is the opposite of fFollowMargins. The default is 1.
2.7.16 DopTypography
                                                  1                                       2                                         3
0   1       2   3       4   5   6    7   8    9       1   2   3   4   5   6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                                  0                                       0                                         0
A B C D E F G reserved cchFollowingPunct
                                                                                                                                            171 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                               ...
...
...
...
...
...
Value         Meaning
0 (default)   doNotCompress
1             compressPunctuation
2             compressPunctuationAndJapaneseKana
C - iLevelOfKinsoku (2 bits): This value MAY<199> specify which set of line breaking rules to use
    for East Asian characters. This value MUST be one of the following.
Value          Meaning
0 (default)    Chinese (Simplified)
               1. Cannot start a line:
                   !%),.:;>?]}¢¨°·ˇˉ―‖’"…‰′″›℃∶、。〃〉》」』】〕〗〞︶︺︾﹀﹄﹚﹜﹞!"%'),.:;?]`|}~¢
               2. Cannot end a line:$([{£¥·‘"〈《「『【〔〖〝﹙﹛﹝$(.[{£¥
               Chinese (Traditional)
               1. Cannot start a line:
                   !),.:;?]}¢·–—’"•‥…‧′╴、。〉》」』】〕〞︰︱︳︴︶︸︺︼︾﹀﹂﹄﹏﹐﹑﹒﹔﹕﹖﹗﹚﹜﹞!),.:;?]|}、
               2. Cannot end a line:
                   ([{£¥‘"‵〈《「『【〔〝︵︷︹︻︽︿﹁﹃﹙﹛﹝({
               Japanese
               1. Cannot start a line:
                   !%),.:;?]}¢°’"‰′″℃、。々〉》」』】〕゛゜ゝゞ・ヽヾ!%),.:;?]}。」、・゙     ゚
                                                                         ¢
               2. Cannot end a line:
                   $([\{£¥‘"〈《「『【〔$([{「£¥
               Korean
               1. Cannot start a line:
                   !%),.:;?]}¢°’"′″℃〉》」』】〕!%),.:;?]}¢
               2. Cannot end a line:
                   $([\{£¥‘"〈《「『【〔$([{£¥₩
                                                                                            172 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value                       Meaning
                            $([\{£¥‘"〈《「『【〔$([{「£¥
2                           The characters that are forbidden to be used for starting or ending a line are specified by
                            rgxchFPunct and rgxchLPunct.
D - f2on1 (1 bit): Specifies whether to print two pages per sheet, as specified in [ECMA-376] Part 4,
    Section 2.15.1.64 printTwoOnOne.
F - iCustomKsu (3 bits): This value specifies for what language the characters in rgxchFPunct are
     kinsoku overrides<200>. All other languages act according to the description of
     iLevelOfKinsoku with a value of 0. This MUST be one of the following values.
G - fJapaneseUseLevel2 (1 bit): This value specifies that line breaking rules for Japanese acts
    according to the description of iLevelOfKinsoku with a value of 1<201>. The default value is 0.
rgxchFPunct (202 bytes): An array of cchFollowingPunct Unicode characters that cannot start a
   line if the language of the text matches the language specified in iCustomKsu. If iCustomKsu
   has a value of 0, this array has no effect on the document.
rgxchLPunct (102 bytes): An array of cchLeadingPunct Unicode characters that cannot end a line
   if the language of the text matches the language specified in iCustomKsu. If iCustomKsu has a
   value of 0, this array has no effect on the document.
2.7.17 DopMth
                                                      1                                       2                                         3
0       1   2       3   4     5   6    7      8   9       1   2   3   4   5   6   7   8   9        1    2   3   4   5   6   7   8   9       1
                                                      0                                       0                                         0
A B C D E F G H I reserved2
ftcMath dxaLeftMargin
... dxaRightMargin
                                                                                                                                                173 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                       ...                                                 empty1
... empty2
... empty3
... empty4
... dxaIndentWrapped
...
A - mthbrk (2 bits): Specifies how to break on binary operators as specified in [ECMA-376] Part 4,
    Section 7.1.2.16 brkBin. This MUST be one of the following values.
Value       Meaning
0           Before.
(default)   In line wrapping, breaks occur on binary operators, so the binary operator appears before the
            break.
1           After.
            In line wrapping, breaks occur on binary operators, so the binary operator appears after the
            break.
2           Repeat.
            In line wrapping, breaks occur on binary operators, so the binary operator appears on both sides
            of the break.
B - mthbrkSub (2 bits): Specifies how to break on binary subtraction when mthbrk is 2 as specified
    in [ECMA-376] Part 4, Section 7.1.2.17 brkBinSub. This value MUST be one of the following.
Value       Meaning
0           Minus Minus.
(default)   Repetition of a subtraction sign after a line-wrapping break is minus on the first and second
            lines.
1           Plus Minus.
            Repetition of a subtraction sign after a line-wrapping break is plus on the first line and minus on
            the second line.
2           Minus Plus.
            Repetition of a subtraction sign after a line-wrapping break is minus on the first line and plus on
            the second line.
C - mthbpjc (3 bits): Specifies the default justification of math as specified in [ECMA-376] Part 4,
    Section 7.1.2.25 defJc. This MUST be one of the following values.
Value       Meaning
1           Centered as Group.
(default)   Justifies equations with respect to each other and centers the group of equations with respect to
            the page.
2           Center.
            Centers each equation individually with respect to margins.
3           Left.
            Left justification of the paragraph containing only math.
4           Right.
            Right justification of the paragraph containing only math.
                                                                                                           174 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
D - reserved1 (1 bit): This value is undefined and MUST be ignored.
E - fMathSmallFrac (1 bit): Specifies whether to use a reduced fraction size when displaying math
    that contains fractions as specified in [ECMA-376] Part 4, Section 7.1.2.98 smallFrac. By default,
    this value is 0.
F - fMathIntLimUndOvr (1 bit): Specifies that the default placement of integral limits when
    converting from a linear format is directly above and below the base as opposed to on the side of
    the base as specified in [ECMA-376] Part 4, Section 7.1.2.49 intLim. By default, this value is 0.
G - fMathNaryLimUndOvr (1 bit): Specifies that the default placement of n-ary limits other than
    integrals is directly above and below the base, as opposed to on the side of the base, as specified
    in [ECMA-376] Part 4, Section 7.1.2.71 naryLim. By default, this value is 0.
H - fMathWrapAlignLeft (1 bit): Specifies the left justification of the wrapped line of an equation as
    opposed to right justification of the wrapped line of an equation as specified in [ECMA-376] Part 4,
    Section 7.1.2.121 wrapRight where the meaning is the opposite of fMathWrapAlignLeft. By
    default, this value is 1.
reserved2 (19 bits): This value MUST be zero, and MUST be ignored.
ftcMath (2 bytes): An index into an SttbfFfn structure that specifies the font to use for new
    equations in the document. The default font is Cambria Math.
dxaLeftMargin (4 bytes): A signed integer, in twips, that specifies the left margin for math. MUST
   be greater than or equal to 0 and less than or equal to 31680 as specified in [ECMA-376] Part 4,
   Section 7.1.2.59 lMargin. By default, this value is 0.
dxaRightMargin (4 bytes): A signed integer in twips that specifies the right margin for math. This
   value MUST be greater than or equal to 0 and less than or equal to 31680, as specified in [ECMA-
   376] Part 4, Section 7.1.2.90 rMargin. By default, this value is 0.
dxaIndentWrapped (4 bytes): A signed integer, in twips, that specifies the indentation of the
   wrapped line of an equation. This value MUST be greater than or equal to 0 and less than or equal
   to 31680 as specified in [ECMA-376] Part 4, Section 7.1.2.120 wrapIndent. By default, this value
   is 1440.
2.8 PLCs
2.8.1 Plcbkf
The Plcbkf structure is a PLC whose data elements are BKF structures (6 bytes each). Each CP in the
PLCBKF, with the exception of the last CP, represents the character position of the start of a
bookmark in a Document Part. For every PLCBKF, there is a corresponding PLCBKL. Each data
element in the PLCBKF is associated in a one-to-one correlation with a data element in that PLCBKL,
whose corresponding CP represents the character position of the end of the same bookmark.
Constraints on the CPs inside a PLCBKF as they relate to the CPs in its corresponding PLCBKL can be
                                                                                                175 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
found in the description of PLCFBKF, which shares the same constraints in relation to its corresponding
PLCFBKL.
The only type of bookmark found in a PLCBKF is a range-level protection bookmark. The largest
valid value for a CP marking the start or end of a range-level protection bookmark is the CP
representing the end of all document parts.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aBKF (variable)
...
aCP (variable): An array of CPs. Each CP in the array specifies the start of a bookmark in the
   document.
aBKF (variable): An array of BKFs (6 bytes each), each of which specifies additional information
   about the bookmark starting at the corresponding CP in aCP.
2.8.2 Plcbkfd
The Plcbkfd structure is a PLC whose data elements are BKFD structures (10 bytes each). Each CP in
the PLCBKFD that is not the last CP represents the character position of the start of a bookmark in a
Document Part. For every PLCBKFD, there is a corresponding PLCBKLD. Each data element in the
PLCBKFD is associated in a one-to-one correlation with a data element in the corresponding PLCBKLD.
The CP corresponding to the data element in the PLCBKLD represents the character position of the end
of the same bookmark. Constraints upon the CPs inside a PLCBKFD as they relate to the CPs in its
corresponding PLCBKLD can be found with the description of PLCFBKF, which shares the same
constraints in relation to its corresponding PLCFBKL.
The only type of bookmark found in a PLCBKFD is a structured document tag bookmark. When a
structured document tag bookmark is created, a character demarcating the start of an arbitrary XML
range (see sprmCFSpec) is inserted into the CP stream at the start of the bookmark range. The CP
defining the start of a structured document tag bookmark MUST be the offset of that character. As a
result, the start CPs of structured document tag bookmarks MUST be unique within their containing
PLC.
When a structured document tag bookmark is created, a character demarcating the end of an
arbitrary XML range (see sprmCFSpec) is inserted into the CP stream at the end of the bookmark
range. The CP defining the limit of a structured document tag bookmark MUST be 1 greater than the
CP of that character. As a result, the limit CPs of structured document tag bookmarks MUST be unique
within their containing PLC, and the CP specifying the start of a structured document tag bookmark
MUST be less than the CP specifying the end of the bookmark by at least 2.
If the range of text spanned by a structured document tag bookmark’s CPs contains the CP defining
the start or end of another structured document tag bookmark, then it MUST contain the entire range
of text spanned by that other bookmark. If the range of text spanned by a structured document tag
bookmark’s CPs contains content from inside a table and content from outside that table, then it MUST
contain the entire table, with possible omission of the table’s final end of cell mark and TTP mark. In
such case, the final end of cell and TTP mark MUST be omitted if and only if the structured document
tag bookmark’s range does not include text following the table’s final TTP mark.
                                                                                                                                   176 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
The largest value that a CP marking the start or end of a structured document tag bookmark is
allowed to have is the CP representing the end of all document parts.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aBKFD (variable)
...
aCP (variable): An array of CPs, each indicating the start of a bookmark in the document.
aBKFD (variable): An array of BKFDs (10 bytes each), each of which specifies additional information
   about the bookmark starting at the corresponding CP in aCP.
2.8.3 Plcbkl
A PLCBKL is a PLC that contains only CPs and no additional data. It is thus equivalent to a PlcfBkl.
Each CP in the PLCBKL that is not the last CP represents the character position marking the first
character beyond the end of a bookmark in a Document Part. Additional constraints upon the CPs
inside a PLCBKL can be found in the specification of PLCBKF.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aCP (variable): An array of CPs, each indicating the first character beyond the end of a bookmark in
   the document.
2.8.4 Plcbkld
A PLCBKLD is a PLC whose data elements are BKLD structures (8 bytes each). Each CP in the
PLCBKLD, with the exception of the last CP, represents the character position of the first character
following the end of a bookmark in a Document Part. Additional constraints on the CPs inside a
PLCBKLD can be found in the description of PLCBKFD.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aBKLD (variable)
...
                                                                                                                                   177 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
aCP (variable): An array of CPs. Each CP in the array indicates the first character following the end
   of a bookmark in the document.
aBKLD (variable): An array of BKLDs (8 bytes each), each of which specifies additional information
   about the bookmark ending at the corresponding CP in aCP.
2.8.5 PlcBteChpx
The PlcBteChpx structure is a PLC that maps the offsets of text in the WordDocument stream to the
character properties of that text. Where most PLCs map CPs to data, the PlcBteChpx maps stream
offsets to data instead. A PlcBteChpx MUST NOT contain duplicate stream offsets.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4   5       6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
aFC (variable)
...
aPnBteChpx (variable)
...
aFC (variable): An array of unsigned integers. Each element in this array specifies an offset in the
   WordDocument stream where text begins. The end of each range is the beginning of the next
   range. As with all PLCs, the elements of aFC MUST be sorted in ascending order.
aPnBteChpx (variable): An array of PnFkpChpx (4 bytes each). Each element of this array specifies
   the location in the WordDocument stream of a ChpxFkp. That ChpxFkp contains the character
   properties for the text at the corresponding offset in aFC.
2.8.6 PlcBtePapx
The PlcBtePapx structure is a PLC that specifies paragraph, table row, or table cell properties as
described later. Where most PLCs map CPs to data, the PlcBtePapx maps stream offsets to data
instead. The offsets in aFC partition a portion of the WordDocument stream into adjacent ranges.
Consider the collection of paragraphs, table rows, and table cells whose last character occurs at an
offset in the WordDocument stream larger than or equal to aFC[i] but smaller than aFC[i+1]. Then,
aPnBtePapx[i] specifies the properties of these paragraphs, table rows, or table cells.
A PlcBtePapx MUST NOT contain duplicate stream offsets. Each data element of PlcBtePapx is 4
bytes long.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aFC (variable)
aPnBtePapx (variable)
                                                                                                                                     178 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
aFC (variable): An array of unsigned integers. Each element in this array specifies an offset in the
   WordDocument stream. The elements of aFC MUST be sorted in ascending order, and there MUST
   NOT be any duplicate entries.
aPnBtePapx (variable): An array of PnFkpPapx. The ith entry in aPnBtePapx is a PnFkpPapx that
   specifies the properties of all paragraphs, table rows, and table cells whose last character occurs
   at an offset in the WordDocument stream larger than or equal to aFC[i] but smaller than
   aFC[i+1]; aPnBtePapx MUST contain one less entry than aFC.
2.8.7 PlcfandRef
The PlcfandRef structure is a PLC whose data elements are ATRDPre10 structures (30 bytes each).
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aATRDPre10 (variable)
...
aCP (variable): An array of CPs, all but the last of which specify the location of comment references
   in the main document. All but the last CP MUST be greater than or equal to zero and less than
   FibRgLw97.ccpText. Each position in the main document specified by one of these CPs MUST be
   character 0x05 and have sprmCFSpec applied with a value of 1. The last CP MUST be ignored. A
   PlcfandRef MUST NOT contain duplicate CPs.
aATRDPre10 (variable): An array of ATRDPre10 structures (30 bytes each) that associate data with
   a comment located at the corresponding CP. Each ATRDPre10 structure contains the initials of the
   user who made the comment, an index into a string table of authors, and a bookmark index. See
   ATRDPre10 and ATRDPost10 for more information about data associated with comments.
2.8.8 PlcfandTxt
The PlcfandTxt structure is a PLC that contains only CPs and no additional data. This means that the
size of the data is 0 bytes.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aCP (variable): An array of CPs that specifies positions in the comment document. Each CP except
   the last two specifies the beginning of a range of text to appear in a comment indicated by the
   corresponding PlcfandRef CPs. The range of text MUST begin with character 0x0005 with
   sprmCFSpec applied with a value of 1, and MUST end with a paragraph mark (Unicode 0x000D)
   at table depth zero immediately before the next CP. Each range MUST be a valid selection. Except
   for the last CPs, each CP MUST be greater than or equal to zero and less than
   FibRgLw97.ccpAtn. The second-to-last CP only ends the last text range and MUST be equal to
                                                                                                                                   179 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
     FibRgLw97.ccpAtn decremented by 1. The last CP is undefined and MUST be ignored. A
     PlcfandTxt MUST NOT contain duplicate CPs.
2.8.9 PlcfAsumy
The PlcfAsumy structure is a PLC whose data elements are ASUMY (4 bytes each).
                                         1                                         2                                       3
0    1   2   3   4   5   6   7   8   9   0   1   2   3    4   5    6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aASUMY(variable)
aCP (variable): An array of CPs. CPs are positions in the set of all document parts. CPs are relative
   to the start of the main document, but can extend into any of the document parts.
     Each CP specifies the beginning of a range of text to which the corresponding ASUMY structure
     applies. The range of text ends immediately prior to the next CP. A PlcfAsumy MUST NOT contain
     duplicate CPs.
The last CP does not begin a new text range; it only terminates the previous one.
aASUMY (variable): An array of ASUMY that indicates the priority of the corresponding text range
   for purposes of AutoSummary.
2.8.10 Plcfbkf
A PLCFBKF is a PLC whose data elements are FBKF structures (4 bytes each). Each CP in the PLCFBKF
that is not the last CP represents the character position of the start of a bookmark in a document
part. For every PLCFBKF, there is a corresponding PLCFBKL. Each data element in the PLCFBKF is
associated in a one-to-one correlation with a data element in that PLCFBKL, whose corresponding CP
represents the character position of the end of the same bookmark.
The last CP in a bookmark PLC MUST have a value that is one greater than the largest CP that a
bookmark of the type associated with the PLC is allowed to have and MUST be ignored. Unless
otherwise specified by a particular type of bookmark, bookmark PLCs can contain duplicate CPs
because bookmarks can overlap. The CP defining the start of a bookmark MUST be less than or equal
in value to the CP defining the limit of the bookmark. The range of text spanned by a bookmark’s (1)
CPs MUST obey all constraints, excluding those concerning tables, upon valid selections defined in
section 2.2.3. The following constraints reference entities defined in section 2.4.3 Overview of Tables.
For bookmark types whose BKC.fCol MUST be 0, the following rule 1 MUST apply. Otherwise, the
following rule 2 MUST apply:
1.   If the range of text spanned by a bookmark’s (1) CPs contains a table cell mark, then its start CP
     MUST be less than or equal to the CP of the beginning of the cell in question and its limit CP MUST
     either be one less than the CP of a cell mark in that table, one greater than the CP of a TTP mark
     in that table, or outside the table. If the range of text spanned by a bookmark’s (1) CPs contains a
     TTP mark in a table, then its start CP MUST be outside the table, or the first character of a row in
     the table. If the range of text spanned by a bookmark’s (1) CPs contains a TTP mark in a table,
                                                                                                                                   180 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
     then its limit CP MUST be outside the table, or two less than the CP of a TTP mark in the table, or
     one greater than the CP of a TTP mark in the table.
2.   If the range of text spanned by a bookmark’s (1) CPs contains content from a cell in a table and
     content from outside that table, then it MUST contain only whole rows of the table containing that
     cell. If the range of text spanned by a bookmark’s (1) CPs contains a table cell mark or TTP mark,
     then it MUST NOT span partial rows of the table containing that cell or TTP.
                                         1                                          2                                       3
0    1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aFBKF (variable)
...
aCP (variable): An array of CPs, each indicating the start of a bookmark (1) in the document.
aFBKF (variable): An array of FBKFs (4 bytes each), each of which specifies additional information
   about the bookmark starting at the corresponding CP in aCP.
2.8.11 Plcfbkfd
The Plcfbkfd structure is a PLC whose data elements are FBKFD structures (6 bytes each). Each CP in
the PLCFBKFD, with the exception of the last CP, represents the character position of the start of a
bookmark in a document part. For every PLCFBKFD, there is a corresponding PLCFBKLD. Each data
element in the PLCFBKFD is associated in a one-to-one correlation with a data element in that
PLCFBKLD, whose corresponding CP represents the character position of the end of the same
bookmark. Constraints on the CPs inside a PLCFBKFD as they relate to the CPs in its corresponding
PLCFBKLD can be found in the description of PLCFBKF, which shares the same constraints in relation
to its corresponding PLCFBKL.
The only types of bookmark found in a PLCFBKFD are format consistency-checker bookmarks and
smart tag bookmarks. The largest value that a CP marking the start or end of a format consistency-
checker bookmark or a smart tag bookmark is allowed to have is the CP representing the end of all
document parts.
                                         1                                          2                                       3
0    1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aFBKFD (variable)
...
aCP (variable): An array of CPs. Each CP in the array indicates the start of a bookmark in the
   document.
aFBKFD (variable): An array of FBKFDs (6 bytes each), each of which specifies additional
   information about the bookmark starting at the corresponding CP in aCP.
                                                                                                                                    181 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.8.12 Plcfbkl
The Plcfbkl structure is a PLC that contains only CPs and no additional data. Thus, a Plcfbkl is
equivalent to a PlcBkl. Each CP in the PLCFBKL, with the exception of the last CP, represents the
character position marking the first character following the end of a bookmark in a document part.
Further constraints on the CPs inside a PLCFBKL can be found in the description of PLCFBKF.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aCP (variable): An array of CPs. Each CP in the array indicates the first character following the end
   of a bookmark in the document.
2.8.13 Plcfbkld
The Plcfbkld structure is a PLC whose data elements are FBKLD structures (4 bytes each). Each CP in
the PLCFBKLD that is not the last CP represents the character position of the first character following
the end of a bookmark in a document part. Further constraints on the CPs inside a PLCFBKLD can be
found in the description of PLCFBKFD.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aFBKLD (variable)
...
aCP (variable): An array of CPs. Each CP in the array indicates the first character following the end
   of a bookmark in the document.
aFBKLD (variable): An array of FBKLDs (4 bytes each), each of which specifies additional
   information about the bookmark ending at the corresponding CP in aCP.
2.8.14 Plcfcookie
The Plcfcookie structure is a PLC whose data elements are FCKS structures (10 bytes).
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aFCKS (variable)
                                                                                                                                     182 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                               …
aCP (variable): An array of CPs specifying the starting points of text ranges associated with
   grammar checker cookie data. The last CP in the array MUST be ignored. CPs are positions in
   the set of all document parts. CPs are relative to the start of the main document, but can extend
   into any of the document parts. A Plcfcookie MAY contain duplicate CP values if the
   corresponding grammar checker chose to store more than one grammar checker cookie at the
   same CP.
aFCKS (variable): An array of FCKS structures (10 bytes each). Each FCKS specifies information
   about a grammar checker cookie which applies to text starting at the corresponding CP value.
2.8.15 PlcfcookieOld
The PlcfcookieOld structure is a PLC whose data elements are FCKSOLD structures (16 bytes).
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2    3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aFCKSOLD (variable)
aCP (variable): An array of CPs specifying the starting points of text ranges associated with
   grammar checker cookie data. The last CP in the array MUST be ignored. CPs are positions in
   the set of all document parts. CPs are relative to the start of the main document, but can extend
   into any of the document parts. A PlcfcookieOld MAY contain duplicate CP values if the
   corresponding grammar checker chose to store more than one grammar checker cookie at the
   same CP.
aFCKSOLD (variable): An array of FCKSOLD structures (16 bytes each). Each FCKSOLD specifies
   information about a grammar checker cookie which applies to text starting at the corresponding
   CP value.
2.8.16 PlcfendRef
The PlcfendRef is a PLC whose data elements are integers of 2 bytes each.
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2    3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aEndIdx (variable)
...
                                                                                                                                    183 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
aCP (variable): An array of CPs, all but the last of which specify the location of endnote references in
   the main document. All but the last CP MUST be greater than or equal to zero and less than
   FibRgLw97.ccpText. The last CP MUST be ignored. A PlcfendRef MUST NOT contain duplicate
   CPs.
aEndIdx (variable): An array of 2-byte integers that specifies whether each endnote is automatically
   numbered or uses a custom symbol. If equal to zero, the endnote reference uses a custom
   symbol; otherwise, it is automatically numbered. If the endnote reference is automatically
   numbered, the character in the main document at the position specified by the corresponding CP
   MUST equal 0x02 and have sprmCFSpec applied with a value of 1. See sprmCSymbol for more
   information about custom symbols and sprmSRncEdn, sprmSNEdn, and sprmSNfcEdnRef for more
   information about automatically numbered endnotes.
2.8.17 PlcfendTxt
The PlcfendTxt structure is a PLC that contains only CPs and no additional data. The data thus has a
size of zero bytes.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aCP (variable): An array of CPs that specifies offsets into the endnote document. Each CP except the
   last two specifies the beginning of a range of text to appear in an endnote. The range of text
   MUST end in character 0x0D immediately before the next CP. Except for the last CP, each CP
   MUST be greater than or equal to zero and less than FibRgLw97.ccpEdn. The second-to-last CP
   only ends the last text range and MUST be equal to FibRgLw97.ccpEdn – 1. The last CP is
   undefined and MUST be ignored. A PlcfendTxt MUST NOT contain duplicate CPs.
2.8.18 Plcffactoid
The Plcffactoid structure is a PLC structure where the data elements are FactoidSpls structures of 2
bytes each.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aFactoidSpls (variable)
aCP (variable): An array of CPs. CPs are positions in the set of all document parts. CPs are relative
   to the start of the main document, but can extend into any of the document parts.
    Each CP specifies the beginning of a range of text where the state in the corresponding
    FactoidSpls structure applies. The range of text ends immediately prior to the next CP.
    A Plcffactoid can contain duplicate CPs. Duplicate CPs specify an insertion point or a deletion
    point at that CP and the corresponding FactoidSpls state applies to that point.
                                                                                                                                   184 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    The last CP does not begin a new text range; it only terminates the previous one.
2.8.19 PlcffndRef
The PlcffndRef structure is a PLC whose data elements are integers of 2 bytes each.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5   6     7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aFtnIdx (variable)
...
aCP (variable): An array of CPs, all but the last of which specify the location of footnote references in
   the main document. All but the last CP MUST be greater than or equal to zero and less than
   FibRgLw97.ccpText. The last CP MUST be ignored. A PlcffndRef MUST NOT contain duplicate
   CPs.
aFtnIdx (variable): An array of 2-byte integers that specifies whether each footnote is automatically
   numbered or uses a custom symbol. If equal to zero, the footnote reference uses a custom
   symbol; otherwise, it is automatically numbered. If the footnote reference is automatically
   numbered, the character in the main document at the position specified by the corresponding CP
   MUST equal 0x02 and have sprmCFSpec applied with a value of 1. See sprmCSymbol for more
   information about custom symbols and sprmSRncFtn, sprmSNFtn, and sprmSNfcFtnRef for more
   information about automatically numbered footnotes.
2.8.20 PlcffndTxt
The PlcffndTxt structure is a PLC that contains only CPs and no additional data. The data thus has a
size of 0 bytes.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5   6     7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aCP (variable): An array of CPs that specifies offsets into the footnote document. Each CP except the
   last two specifies the beginning of a range of text to appear in a footnote. The range of text MUST
   end in character 0x0D immediately before the next CP. Except for the last CP, each CP MUST be
   greater than or equal to zero and less than FibRgLw97.ccpFtn. The second-to-last CP only ends
   the last text range and MUST be equal to FibRgLw97.ccpFtn – 1. The last CP is undefined and
   MUST be ignored. A PlcffndTxt MUST NOT contain duplicate CPs.
                                                                                                                              185 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.8.21 Plcfgram
The Plcfgram structure is a PLC structure where the data elements are GrammarSpls structures (2
bytes each).
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aGrammarSpls (variable)
aCP (variable): An array of CPs. CPs are positions in the set of all document parts. CPs are relative
   to the start of the main document but can extend into any of the document parts.
    Each CP specifies the beginning of a range of text where the state in the corresponding
    GrammarSpls structure applies. The range of text ends immediately prior to the next CP.
    A Plcfgram can contain duplicate CPs. Duplicate CPs specify an insertion point or a deletion
    point at that CP and the corresponding GrammarSpls state applies to that point.
The last CP does not begin a new text range; it only terminates the previous one.
2.8.22 Plcfhdd
The Plcfhdd structure is a PLC that contains only CPs and no additional data. It specifies where
header document stories begin and end.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aCP (variable): An array of CPs. Each CP except the last two specifies the beginning of a story in the
   header document. Each story ends immediately prior to the next CP. If the next CP in Plcfhdd has
   the same value as a CP specifying the beginning of a story, then the story is considered empty.
    Except for the last CP, each CP of Plcfhdd MUST be greater than or equal to 0 and less than
    FibRgLw97.ccpHdd. The second-to-last CP only ends the last story and MUST be equal to
    FibRgLw97.ccpHdd minus 1. The last CP is undefined and MUST be ignored.
2.8.23 PlcfHdrtxbxTxt
The PlcfHdrtxbxTxt structure is a PLC structure in which the data elements are FTXBXS structures
(22 bytes each).
                                                                                                                                   186 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5    6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aFTXBXS (variable)
aCP (variable): An array of CPs. CPs are positions in the header textboxes document.
    Each CP specifies the beginning of a range of text to appear in a text box indicated by the
    corresponding FTXBXS structure. The range of text ends immediately prior to the next CP. The last
    CP does not begin a new text range; it only terminates the previous one.
    A PlcfHdrtxbxTxt MUST NOT contain duplicate CPs. The text ranges for each FTXBXS structure
    are separated by 0x0D characters that MUST be the last character in each range. The last text
    range is an exception. The text in the last range is ignored, and the 0x0D character is not
    required.
aFTXBXS (variable): An array of FTXBXS (22 bytes each) structures that associate the text ranges
   with shape objects.
2.8.24 Plcflad
The Plcflad structure is a PLC structure where the data elements are LadSpls structures (2 bytes
each).
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5    6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aLadSpls (variable)
aCP (variable): An array of CPs. CPs are positions in the set of all document parts. CPs are relative
   to the start of the main document, but can extend into any of the document parts.
    Each CP specifies the beginning of a range of text where the state in the corresponding LadSpls
    structure applies. The range of text ends immediately prior to the next CP.
    A Plcflad can contain duplicate CPs. Duplicate CPs specify an insertion point or a deletion
    point at that CP and the corresponding LadSpls state applies to that point.
The last CP does not begin a new text range; it only terminates the previous one.
aLadSpls (variable): An array of 2-byte LadSpls structures. Each LadSpls structure contains the
   state of language auto-detection for the corresponding text range.
                                                                                                                                  187 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.8.25 Plcfld
The Plcfld structure is a PLC whose data elements are Flds (2 bytes each). It specifies the location of
fields in the document.
A field consists of two parts: field instructions and, optionally, a result. All fields MUST begin with
Unicode character 0x0013 with sprmCFSpec applied with a value of 1. This is the field begin
character. All fields MUST end with a Unicode character 0x0015 with sprmCFSpec applied with a value
of 1. This is the field end character. If the field has a result, then there MUST be a Unicode character
0x0014 with sprmCFSpec applied with a value of 1 somewhere between the field begin character and
the field end character. This is the field separator. The field result is the content between the field
separator and the field end character. The field instructions are the content between the field begin
character and the field separator, if one is present, or between the field begin character and the field
end character if no separator is present. The field begin character, field end character, and field
separator are collectively referred to as field characters.
The field instructions and field result MUST each be a valid selection.
The CPs of a PlcFld specify the location of the field characters. A PlcFld MUST NOT contain duplicate
CPs. Each document part has its own PlcFld, with CPs relative to the start of that document part.
The last CP in aCP does not specify the location of a field character. Because a PlcFld is a PLC, aCP
MUST be sorted. Because aCP MUST NOT contain duplicate CPs, the last CP MUST be the largest in
aCP. Other than those constraints, the last CP in aCP is undefined and MUST be ignored.
The Flds MUST be arranged such that the sequence of Fld.fldch.ch is a valid FieldList according to the
following Augmented Backus-Naur Form (ABNF) rulelist. ABNF is specified in [RFC4234].
Begin        =       0x13
Sep          =       0x14
End          =       0x15
Field        =       <Begin>      *<Field>        [Sep]     *<Field>          <End>
FieldList    =       *<Field>
Additionally, the field characters of the following five field types MUST NOT appear in aFld.
                                          1                                           2                                       3
0    1   2   3   4    5   6   7   8   9       1   2   3    4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                           0                                       0
aCP (variable)
...
aFld (variable)
...
                                                                                                                                      188 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
aCP (variable): An array of CPs. Specifies the positions of field characters in the document.
aFld (variable): An array of Fld. Specifies properties for the field character at the corresponding CP.
   Fldch.ch of each Fld MUST be equal to the character at the corresponding CP.
2.8.26 PlcfSed
The PlcfSed structure is a PLC structure where the data elements are Sed structures (12 bytes
each).
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5    6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aSed (variable)
aCP (variable): An array of CPs. Each CP specifies the beginning of a range of text in the main
   document that constitutes a section. The range of text ends immediately prior to the next CP. A
   PlcfSed MUST NOT contain duplicate CPs. There MUST also be an end-of-section character (0x0C)
   as the final character in the text range of all but the last section. An end-of-section character
   (0x0C) which occurs at a CP and which is not the last character in a section specifies a manual
   page break.
    The last CP does not begin a new section. It MUST be at or beyond the end of the main document.
    Sections only contain text from the main document, so even when the last CP comes after text in
    other document parts, that text is not part of the last section.
aSed (variable): An array of 12-byte Sed structures. Each Sed structure contains the location of
   properties pertaining to the section that begins at the corresponding CP.
2.8.27 PlcfSpa
The PlcfSpa structure is a PLC structure in which the data elements are SPA structures (26 bytes
each).
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5    6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aSpa (variable)
aCP (variable): An array of CPs. Each CP specifies the position in the document part of the anchor
   for a shape. This array MUST NOT contain duplicate CPs. The characters at all but the last CP
   MUST be 0x08 and MUST have sprmCFSpec applied with a value of 1. See sprmCFSpec for more
   information.
                                                                                                                                  189 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
aSpa (variable): An array of SPAs (26 bytes each) that specify properties for the shape at the
   corresponding CP.
2.8.28 Plcfspl
The Plcfspl structure is a Plc structure whose data elements are SpellingSpls structures (2 bytes
each).
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aSpellingSpls (variable)
aCP (variable): An array of CPs. CPs are positions in the set of all document parts. CPs are relative
   to the start of the main document but can extend into any of the document parts.
    Each CP specifies the beginning of a range of text where the state in the corresponding
    SpellingSpls structure applies. The range of text ends immediately prior to the next CP.
    A Plcfspl can contain duplicate CPs. Duplicate CPs specify an insertion point or a deletion
    point at that CP and the corresponding SpellingSpls state applies to that point.
The last CP does not begin a new text range; it only terminates the previous one.
2.8.29 PlcfTch
The PlcfTch structure is a PLC whose data elements are Tch structures (4 bytes each). The count of
CPs MUST be equal to one more than the count of Tch. Each pair of CPs represents a range of text in
the main document described by the corresponding Tch.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aTCH (variable)
...
This information is a deprecated cache of table characters that SHOULD<202> be ignored. The
following three CPs and the following two Tch structures SHOULD<203> be written to specify that this
cache is undefined.
                                                                                                                                     190 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
CP
FibRgLw97.ccpText
FibRgLw97.ccpText + 2
The following specifies the values for the fields of the first Tch structure.
Field Value
fUnk 0
fUnused 0
The following specifies the values for the fields of the second Tch structure.
Field Value
fUnk 1
fUnused 0
aCP (variable): An array of CPs. Each CP specifies the beginning of a range of text where a table
character cache is stored. The last CP denotes the end of the last range of text. The range of text ends
immediately prior to the next CP. MUST NOT contain duplicate CPs.
aTCH (variable): An array of Tch structures (4 bytes each) that each specifies a table character
   cache at the corresponding CP in aCP.
2.8.30 PlcfTxbxBkd
The PlcfTxbxBkd structure is a PLC structure where the data elements are Tbkd structures (6 bytes
each).
                                         1                                         2                                       3
0    1   2   3   4   5   6   7   8   9   0   1   2   3    4   5    6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aTbkd (variable)
aCP (variable): An array of CPs. CPs are positions in the textboxes document.
     Each CP specifies the beginning of a range of text to appear in a textbox specified in the
     corresponding Tbkd structure. The range of text ends immediately prior to the next CP. The last
     CP does not begin a new text range; it only terminates the previous one.
aTbkd (variable): An array of 6-byte Tbkd structures that associate the text ranges with FTXBXS
   objects from PlcftxbxTxt.
                                                                                                                                   191 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.8.31 PlcfTxbxHdrBkd
The PlcfTxbxHdrBkd structure is a PLC structure where the data elements are Tbkd structures (6
bytes each).
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5    6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aTbkd (variable)
aCP (variable): An array of CPs. CPs are positions in the header textboxes document.
    Each CP specifies the beginning of a range of text to appear in a textbox specified in the
    corresponding Tbkd structure. The range of text ends immediately prior to the next CP. The last
    CP does not begin a new text range; it only terminates the previous one.
aTbkd (variable): An array of 6-byte Tbkd structures that associates the text ranges with FTXBXS
   objects from PlcfHdrtxbxTxt.
2.8.32 PlcftxbxTxt
The PlcftxbxTxt structure is a PLC structure where the data elements are FTXBXS structures (22
bytes each).
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5    6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aFTXBXS (variable)
aCP (variable): An array of CPs. CPs are positions in the textboxes document.
    Each CP specifies the beginning of a range of text to appear in a textbox indicated by the
    corresponding FTXBXS structure. The range of text ends immediately prior to the next CP. The last
    CP does not begin a new text range. It only terminates the previous one.
    A PlcftxbxTxt MUST NOT contain duplicate CPs. The text ranges for each FTXBXS structure are
    separated by 0x0D characters that MUST be the last character in each range. The last text range
    is an exception. The text in the last range is ignored, and the 0x0D character is not required.
aFTXBXS (variable): An array of FTXBXS structures (22-bytes each) that associates the text ranges
   with shape objects.
                                                                                                                                  192 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.8.33 Plcfuim
A Plcfuim structure is a PLC whose data elements are UIMs (20 bytes each), with the exception that
the elements are not sorted according to their CPs.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aUIM (variable)
aCP (variable): An array of CPs. CPs are positions in the set of all document parts. CPs are relative
   to the start of the main document but can extend into any of the document parts. Each CP in the
   Plcfuim, except the last one, represents the starting position of a range of text specified in the
   corresponding UIM. The last CP is undefined and MUST be ignored. Duplicate CPs are valid in a
   Plcfuim.
2.8.34 PlcfWKB
The PlcfWKB is a PLC whose data elements are WKB structures (12 bytes each). Each subdocument
is assigned one WKB structure.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3    4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
...
aWKB (variable)
...
aCP (variable): An array of CPs. CPs are relative to the start of the main document. Each CP in the
   PlcfWKB, except the last, specifies the location in the main document where a subdocument
   begins. The CPs, except for the last, MUST be unique, greater than or equal to zero, and less than
   FibBase.ccpText. The last CP MUST be FibBase.ccpText incremented by 2.
aWKB (variable): An array of WKBs. Each WKB contains information about a subdocument.
2.8.35 PlcPcd
The PlcPcd structure is a PLC whose data elements are Pcds (8 bytes each). A PlcPcd MUST NOT
contain duplicate CPs.
                                                                                                                                     193 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                        1                                          2                                        3
0   1   2   3   4   5   6   7   8   9       1   2   3    4   5     6   7   8   9        1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                        0
aCP (variable)
...
aPcd (variable)
...
aCP (variable): An array of CPs that specifies the starting points of text ranges. The end of each
   range is the beginning of the next range. All CPs MUST be greater than or equal to zero. If any of
   the fields ccpFtn, ccpHdd, ccpMcr, ccpAtn, ccpEdn, ccpTxbx, or ccpHdrTxbx from FibRgLw97
   are nonzero, then the last CP MUST be equal to the sum of those fields plus ccpText+1.
   Otherwise, the last CP MUST be equal to ccpText.
aPcd (variable): An array of Pcds (8 bytes each) that specify the location of text in the
   WordDocument stream and any additional properties of the text. If aPcd[i].fc.fCompressed is 1,
   then the byte offset of the last character of the text referenced by aPcd[i] is given by the
   following.
      Otherwise, the byte offset of the last character of the text referenced by aPcd[i] is given by the
      following.
      Because aCP MUST be sorted in ascending order and MUST NOT contain duplicate CPs,
      (aCP[i+1]-aCP[i])>0, for all valid indexes i of aPcd. Because a PLC MUST contain one more CP
      than a data element, i+1 is a valid index of aCP if i is a valid index of aPcd.
2.9.1 Acd
                                        1                                          2                                        3
0   1   2   3   4   5   6   7   8   9       1   2   3    4   5     6   7   8   9        1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                        0
ibst fciBasedOn A B C
ibst (2 bytes): Index in the Command String Table (TcgSttbf.sttbf) where a string representation of
    the argument to the allocated command is specified.
fciBasedOn (13 bits): An Fci that identifies the allocated command. MUST be one of the following Fci
    values. Each item specifies what the value of the argument as specified by ibst is.
                                                                                                                                    194 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§   ApplyStyleName. The argument specifies the style to apply. The argument MUST be at least 2
    characters long. The 16-bit value of the first character MUST be either 0x0001 or 0x0002.
§   If the 16-bit value of the first character is 0x0001, then the argument MUST be exactly 3
    characters long. The second and third characters specify the sti of the style to apply (see
    StdfBase.sti). The sti is given by (c2 & 0x00FF) * 256 + (c3 & 0x00FF) where c2 and c3 represent
    the character codes of the second and third characters. The sti value MUST be less than 267.
§   If the 16-bit value of the first character is 0x0002, then the remaining characters in the argument
    specify the name of the style to apply.
§ ApplyFontName. The argument is the name of the font to apply when this command is executed.
§   ApplyAutoTextName. The argument is the name of the AutoText entry to insert when this
    command is executed.
§   Columns. The argument specifies the number of columns to apply. The number of columns is the
    character code of the first character in the string.
§   Condensed. The argument specifies the amount to condense by. The amount is specified in twips
    and is given by (c1 & 0x00FF) * 256 + (c2 & 0x00FF) where c1 and c2 represent the character
    codes of the first and second characters in the argument string.
§   Expanded. The argument specifies the amount to expand by. The amount is specified in twips and
    is given by (c1 & 0x00FF) * 256 + (c2 & 0x00FF) where c1 and c2 represent the character codes of
    the first and second characters in the argument string.
§   FontSize. The argument specifies the font size. The amount is specified in half points and is given
    by (c1 & 0x00FF) * 256 + (c2 & 0x00FF) where c1 and c2 represent the 16-bit values of the first
    and second characters in the argument string.
§   Lowered. The argument specifies the amount to lower the text by. The amount is specified in half
    points and is given by (c1 & 0x00FF) * 256 + (c2 & 0x00FF) where c1 and c2 represent the 16-bit
    values of the first and second characters in the argument string.
§   Raised. The argument specifies the amount to raise the text by. The amount is specified in half
    points and is given by (c1 & 0x00FF) * 256 + (c2 & 0x00FF) where c1 and c2 represent the 16-bit
    values codes of the first and second characters in the argument string.
§   Shading. The argument specifies which shading pattern to apply. The 16-bit value of the first
    character of the argument is an IPat.
§   Borders. The argument specifies which border to apply. The 16-bit value of the first character of
    the argument MUST be one of the following values, and specifies which border to apply.
Value   Meaning
0       Clear all borders.
1       Apply top border.
2       Apply bottom border.
3       Apply left border.
4       Apply right border.
5       Apply inside borders.
6       Apply box borders.
7       Apply grid borders.
    The weight and style of the border applied is that of the last border applied by the user during the
    editing session, or a single, black border if no border has been applied in this session.
                                                                                               195 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§   Color. The argument specifies the color to apply. The 16-bit value of the first character of the
    argument is an Ico.
§   Symbol. The argument specifies the symbol character and font to insert. The first character of the
    argument is the symbol character to insert. If there are more characters in the argument, they
    form the name of the font to apply to the newly inserted character. If the character set of the
    font to use is the SYMBOL_CHARSET then the symbol character to insert is given by (c1 & 0x00FF).
B - fFree (1 bit): Specifies whether the current Acd is an unused slot in PlfAcd.rgacd. A value of 1
    specifies that the current Acd is unused. A value of 0 specifies that the current Acd is valid and
    used.
C - fRef (1 bit): Specifies whether the current Acd is being referenced by a command. If fFree is 1,
    fRef MUST be 0; if fFree is 0, fRef MUST be 1.
2.9.2 Afd
The AFD structure is an array of indices into the author list that specifies whose revisions and
comments were being hidden when this document was last saved.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
iMac
AuthorArray (variable)
...
iMac (4 bytes): A signed integer that specifies the number of elements in AuthorArray. This value
   MUST be a non-negative number.
AuthorArray (variable): An array of 16-bit integers that specifies the indexes in SttbfRMark of
   authors whose revisions and comments were being hidden from view when this document was last
   saved.
2.9.3 ASUMY
The ASUMY structure indicates the priority of a text range for AutoSummary.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
lLevel
lLevel (4 bytes): An integer that specifies the priority of the corresponding text range for
    AutoSummary. A smaller number implies greater importance of a text range to the summary.
    lLevel MUST be greater than 0, and MUST be less than or equal to the asumyi.lHighestLevel
    field of the Dop97.
2.9.4 ATNBE
The ATNBE structure contains information about an annotation bookmark in the document.
                                                                                                                                   196 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          1                                          2                                         3
0   1   2   3   4   5   6   7     8   9       1   2   3   4   5      6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                          0                                          0                                         0
bmc lTag
... lTagOld
...
bmc (2 bytes): An unsigned integer specifying the bookmark (1) class that MUST be 0x0100, for
  annotation.
lTag (4 bytes): An unsigned integer that specifies a unique value used by the lTagBkmk member of
   ATRDPre10 structures inside the PlcfandRef at offset fcPlcfandRef in lTag’s nearest parent
   FibRgFcLcb97 to reference the annotation associated with this ATNBE. This MUST be unique for all
   ATNBEs inside a given SttbfAtnBkmk.
lTagOld (4 bytes): Unused. This value MUST be -1, and MUST be ignored.
2.9.5 AtrdExtra
The AtrdExtra structure is an array of information about comments that are kept parallel to the array
of ATRDPre10s in the PlcfandRef specified by fcPlcfandRef in FibRgFcLcb97.
                                          1                                          2                                         3
0   1   2   3   4   5   6   7     8   9       1   2   3   4   5      6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                          0                                          0                                         0
commentTree (variable)
...
commentTree (variable): An array of ATRDPost10s. The number of elements in this array MUST be
   equal to the number of ATRDPre10s in the PlcfandRef referenced by the fcPlcfandRef member of
   FibRgFcLcb97. This array is a tree that contains information about the comments in the document.
   The order of the comments in this array is determined by a pre-order traversal of the comment
   tree. A comment is considered a parent of a second comment if the second is a comment on the
   first. The depth of the comment in the tree is specified by cDepth in ATRDPost10. The location of
   the parent comment is specified by diatrdParent in ATRDPost10.
2.9.6 ATRDPost10
The ATRDPost10 structure represents information about a comment that includes a date and time
stamp, information about whether the comment was inked, and the tree structure of the comments.
See the description of AtrdExtra for more about the tree layout. The location of the comment about
which an ATRDPost10 contains information is specified by the CP corresponding to the ATRDPre10 in
the PlcfandRef specified by fcPlcfandRef in FibRgFcLcb97 with the same index as the ATRDPost10.
                                          1                                          2                                         3
0   1   2   3   4   5   6   7     8   9       1   2   3   4   5      6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                          0                                          0                                         0
dttm
padding1 cDepth
                                                                                                                                       197 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                            ...                                                              diatrdParent
... A B padding2
...
dttm (4 bytes): A DTTM specifying the date and time on which this comment was last created or
   modified.
padding1 (16 bits): This value MUST be zero, and MUST be ignored.
cDepth (4 bytes): The depth of this comment in the tree. If cDepth is 0, this comment has no
   parent and diatrdParent MUST be equal to zero. If this comment has a parent then cDepth
   MUST be equal to the cDepth value of the parent incremented by 1.
diatrdParent (4 bytes): The offset in the Table Stream of the parent of this comment in the tree.
    The parent is located 18*diatrdParent bytes from the position of this comment. If diatrdParent
    is negative, the parent is located earlier in the stream; if diatrdParent is positive, the parent is
    located later in the stream. If diatrdParent is 0, this comment has no parent and cDepth MUST
    be equal to zero.
padding2 (30 bits): This value MUST be zero, and MUST be ignored.
2.9.7 ATRDPre10
The ATRDPre10 structure contains information about a comment in the document including the
initials of the author, an index to a string table with the name of the author, and a bookmark (1)
identifier. More information about the comment can be specified in a corresponding ATRDPost10 in
the AtrdExtra at position fcAtrdExtra.
                                          1                                          2                                       3
0   1   2   3   4   5   6   7     8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                          0                                       0
...
...
ibst bitsNotUsed
grfNotused lTagBkmk
...
xstUsrInitl (20 bytes): An LPXCharBuffer9 containing the initials of the user who left the
   annotation.
ibst (2 bytes): An index into the string table of comment author names. MUST be greater than or
    equal to zero, and MUST be less than the number of XSTs at position fcGrpXstAtnOwners.
                                                                                                                                     198 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
bitsNotUsed (2 bytes): This value MUST be zero, and MUST be ignored.
lTagBkmk (4 bytes): A 4-byte value that identifies a bookmark (1) identifier. This value MUST be
   equal to -1 if and only if this comment is on a length zero text range in the Main Document.
   Otherwise MUST be equal to the lTag of one of the ATNBE structures in the SttbfAtnBkmk
   structure at position fcSttbfAtnBkmk.
2.9.8 BKC
The BKC structure contains information about how a bookmark interacts with tables.
                                        1                                        2                                       3
0   1   2   3   4   5   6   7   8   9       1    2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                        0                                       0
itcFirst A itcLim B C
itcFirst (7 bits): If fCol is zero, this value MUST be ignored. Otherwise, this value is an unsigned
    integer specifying the zero-based index of the table column that is the start of the table column
    range associated with the bookmark described by this BKC. See itcLim for additional constraints
    on the value of itcFirst.
itcLim (6 bits): If fCol is zero, this value MUST be ignored. Otherwise, this value is an unsigned
    integer specifying the zero-based index of the first column beyond the end of the table column
    range associated with the bookmark described by this BKC.
For all bookmark types, itcFirst MUST be less than itcLim if fCol is not zero.
For range-level protection bookmarks, itcLim MUST be exactly 1 greater than itcFirst if fCol is not
zero.
B - fNative (1 bit): A bit flag that specifies whether an application is expected to include the
    bookmark described by this BKC when saving its file as RTF (Rich text Format), HTML, or XML. If
    fNative is zero, the bookmark is no longer needed and is a disposable item that was generated by
    the application to act as a temporary placeholder at run time. The bookmark is not expected to be
    included if the file is saved as RTF, HTML, or XML.
C - fCol (1 bit): For structured document tag bookmarks and annotation bookmarks, fCol
    MUST be zero. Otherwise, if the lowest table depth within the span of text defined by the CPs of a
    bookmark is greater than zero, and the span of text defined by the CPs of that bookmark contains
    a table cell mark from that table and nothing outside that table, then the fCol member of the
    bookmark’s (1) BKC MUST be 1. Otherwise, it MUST be zero. If the fCol member of the BKC of a
    range-level protection bookmark is set to 1, the span of text that is defined by the CPs of that
    bookmark MUST NOT include more than one table terminating paragraph mark. Further
    constraints upon the span of text defined by the CPs of a bookmark can be found in section
    PlcfBkf.
2.9.9 BKF
                                                                                                                                 199 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                           1                                       2                                        3
0    1   2   3   4   5   6   7     8   9       1   2   3   4   5   6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                           0                                       0                                        0
ibkl
bkc
ibkl (4 bytes): An unsigned integer that specifies a zero-based index into the PlcBkl or PlcBkld that is
    paired with the PlcBkf or PlcBkfd containing this BKF. The entry found at that index specifies the
    location of the end of the bookmark that is associated with this BKF. Ibkl MUST be unique for all
    BKFs in a given PlcBkf or PlcBkfd.
bkc (2 bytes): A BKC that specifies further information about the bookmark.
2.9.10 BKFD
The BKFD structure is a BKF with additional information used for structured document tag
bookmarks.
                                           1                                       2                                        3
0    1   2   3   4   5   6   7     8   9       1   2   3   4   5   6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                           0                                       0                                        0
bkf
... cDepth
...
cDepth (4 bytes): An integer specifying the number of bookmarks in the document of the same type
   as the bookmark associated with this BKFD, the ranges of which overlap the beginning of the
   range of this bookmark. To increment the count, a bookmark MUST meet the following
   constraints:
1. The BKFD of the bookmark occupies the PlcBkfd containing this BKFD
2.   The start CP (cpS) and limit CP (cpL) of the bookmark, as defined in the prose for that PlcBkfd and
     the PlcBkld it is paired with, satisfy the following in relation to the CP (cpCur) marking the
     beginning of the bookmark of this BKFD: cpS == cpCur == cpL || cpS <= cpCur < cpL
     Because BKFD is associated only with structured document tag bookmarks, cDepth can be
     rephrased more simply as the one-based count of other structured document tag bookmarks in
     the file that contain the bookmark associated with this BKFD.
2.9.11 BKL
The BKL structure links the end of a bookmark to the beginning of the same bookmark.
                                           1                                       2                                        3
0    1   2   3   4   5   6   7     8   9       1   2   3   4   5   6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                           0                                       0                                        0
ibkf
                                                                                                                                    200 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
ibkf (4 bytes): An unsigned integer that specifies a zero-based index into the PlcBkfd that is paired
    with the PlcBkld containing this BKL. The entry found at this index specifies the location of the
    beginning of the bookmark associated with this BKL. Ibkf MUST be unique for all BKLs in a given
    PlcBkld.
2.9.12 BKLD
The BKLD structure is a BKL with additional information used for structured document tag
bookmarks.
                                           1                                        2                                       3
0    1   2   3   4   5   6    7   8    9       1   2   3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                        0                                       0
bkl
cDepth
cDepth (4 bytes): An integer specifying the number of bookmarks in the document of the same
   type as the bookmark associated with this BKLD, the ranges of which overlap the limit of this
   bookmark range. To increment the count, a bookmark MUST meet the following constraints:
2.   The bookmark limit CP (cpL) and start CP (cpS), as defined in the specification of that PlcBkld and
     the PlcBkfd it is paired with, satisfy the following in relation to the CP (cpCur) marking the limit of
     the bookmark of this BKLD
     Because BKLD is only associated with structured document tag bookmarks, cDepth can be
     rephrased more simply as the zero-based count of other structured document tag bookmarks in
     the file that contain the bookmark associated with this BKLD.
2.9.13 BlockSel
The BlockSel structure is used by Selsf to specify the left and right boundaries of a text block
selection. The values are pixels at the zoom level in which the selection was made.
                                           1                                        2                                       3
0    1   2   3   4   5   6    7   8    9       1   2   3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                        0                                       0
zpFirst zpLim
zpFirst (2 bytes): A signed integer that specifies the physical left boundary of the selection, in
   pixels. The physical left page margin is at pixel zero.
zpLim (2 bytes): A signed integer that specifies the physical right boundary of the selection, in
   pixels. zpLim MUST be greater than or equal to zpFirst.
                                                                                                                                    201 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.14 Bool16
The Bool16 structure is a 16-bit unsigned integer. This value MUST be either 0x0000 ("false") or
0x0001 ("true").
2.9.15 Bool8
The Bool8 structure is an 8-bit unsigned integer. This value MUST be either 0x00 ("false") or 0x01
("true").
2.9.16 Brc
                                         1                                          2                                        3
0   1    2   3   4   5   6   7   8   9        1   2    3   4   5    6   7   8   9       1   2   3   4   5    6   7   8   9       1
                                         0                                          0                                        0
cv
dptLineWidth (8 bits): Specifies the width of the border. Different meanings based on brcType.
brcType Meaning
brcType < 0x40                                         An unsigned integer that specifies the width of the border in 1/8-
                                                       point increments. Values of less than 2 are considered to be
                                                       equivalent to 2.
brcType >= 0x40                                        An unsigned integer that specifies the width of the border in 1-point
                                                       increments. This value MUST be less than 32.
dptSpace (5 bits): An unsigned integer that specifies the distance from the text to the border, in
   points. For page borders, sprmSPgbProp can specify that this value shall specify the distance from
   the edge of the page to the border.
A - fShadow (1 bit): If this bit is set, the border has an additional shadow effect. For top, logical
    left, and between borders, this has no visual effect.
B - fFrame (1 bit): If this bit is set, then the border has a three-dimensional effect. For top, logical
    left, and between borders, this has no visual effect. For visually symmetric border types, this has
    no visual effect.
2.9.17 Brc80
                                                                                                                                     202 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          1                                            2                                        3
0   1    2   3    4   5   6   7   8   9        1   2    3   4   5     6   7    8   9       1    2   3   4   5   6   7   8   9       1
                                          0                                            0                                        0
dptLineWidth (8 bits): An unsigned integer that specifies the width of the border in 1/8-point
   increments. Values of less than 2 are considered to be equivalent to 2.
brcType (1 byte): A BrcType that specifies the type of this border. This value MUST not be 0x1A or
   0x1B.
dptSpace (5 bits): An unsigned integer that specifies the distance from the text to the border, in
   points.
A - fShadow (1 bit): If this bit is set, the border has an additional shadow effect. For top and
    logical left borders, this bit has no visual effect.
B - fFrame (1 bit): Specifies whether the specified border is modified to create a frame effect by
    reversing the appearance of the border from the edge nearest the text to the edge furthest from
    the text. The frame effect shall only be applied to right and bottom borders.
2.9.18 Brc80MayBeNil
The Brc80MayBeNil structure is a Brc80 structure. When all bits are set (0xFFFFFFFF when
interpreted as a 4-byte unsigned integer), this structure specifies that the region in question has no
border.
2.9.19 BrcCvOperand
                                          1                                            2                                        3
0   1    2   3    4   5   6   7   8   9        1   2    3   4   5     6   7    8   9       1    2   3   4   5   6   7   8   9       1
                                          0                                            0                                        0
cb rgcv (variable)
...
cb (1 byte): An unsigned integer value that specifies the size, in bytes, of rgcv. This value MUST be
    4*n, where n is the number of cells in the table row.
rgcv (variable): An array of COLORREF. Each COLORREF specifies the color of the border for the
   corresponding cell in the table row, starting from the logical, left-most cell. If any of the
   COLORREFs in this array have the following value, it specifies that there is no corresponding
   border.
Member           Value
Red              0xFF
Green            0xFF
Blue             0xFF
fAuto            0xFF
                                                                                                                                        203 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.20 BrcMayBeNil
The BrcMayBeNil structure is either a NilBrc or Brc structure, depending on the value of the last
four bytes of the structure.
If the last four bytes are 0xFFFFFFFF, the BrcMayBeNil is a NilBrc that specifies that the table cells
in question have no border. Otherwise, it is a Brc structure that specifies the border type of table
cells.
2.9.21 BrcOperand
The BrcOperand structure is the operand to several SPRMs that control borders.
                                          1                                         2                                        3
0   1   2   3     4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7    8   9       1
                                          0                                         0                                        0
cb brc
...
...
cb (1 byte): An unsigned integer value that specifies the size of this BrcOperand, not including this
    byte. The cb MUST be 8.
2.9.22 BrcType
brcType (8 bits): An unsigned integer that specifies the type of border. Values that are larger than
0x1B are not valid unless they describe a page border, in which case they can be a value in the range
of 0x40 to 0xE3, inclusive.
Values MUST be from the following table. The reference column specifies for each brcType value the
ST_Border enumeration value in [ECMA-376] part 4, section 2.18.4, that further specifies the meaning
of the border type.
0x07 A dashed border with large gaps between the dashes. dashed
0x09 A border of alternating sets of two dots and one dash. dotDotDash
0x0B            A thin outer border and a thick inner border with a small gap between                       thinThickSmallGap
                them.
                                                                                                                                     204 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value     Meaning                                                                      Reference
0x0C      A thin outer border and thick inner border with a small gap between          thickThinSmallGap
          them.
0x0D      A thin outer border, a thick middle border, and a thin inner border with a   thinThickThinSmallGap
          small gap between them.
0x0E      A thin outer border and a thick inner border with a medium gap between       thinThickMediumGap
          them.
0x0F      A thin outer border and a thick inner border and a medium gap between        thickThinMediumGap
          them.
0x10      A thin outer border, a thick middle border, and a thin inner border with a   thinThickThinMediumGap
          medium gaps between them.
0x11      A thick outer border and a thin inner border with a large gap between        thinThickLargeGap
          them.
0x12      A thin outer border and a thick inner border with a large gap between        thickThinLargeGap
          them.
0x13      A thin outer border, a thick middle border, and a thin inner border with     thinThickThinLargeGap
          large gaps between them.
0x16 A dashed border with small gaps between the dashes. dashSmallGap
0x17 A border consisting of alternating groups of 5 and 1 thin diagonal lines. dashDotStroked
0x18      A thin light gray outer border, a thick medium gray middle border, and a     threeDEmboss
          thin black inner border with no gaps between them.
0x19      A thin black outer border, a thick medium gray middle border, and a thin     threeDEngrave
          light gray inner border with no gaps between them.
0x1A      A thin light gray outer border and a thin medium gray inner border with      outset
          a large gap between them.
0x1B      A thin medium gray outer border and a thin light gray inner border with      inset
          a large gap between them.
                                                                                                           205 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value     Meaning                        Reference
                                                              206 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value     Meaning                        Reference
                                                             207 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value     Meaning                        Reference
                                                           208 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value     Meaning                        Reference
                                                          209 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.23 BxPap
                                                     1                                               2                                         3
0       1   2    3      4       5    6   7   8   9       1   2    3   4   5     6       7   8    9         1   2   3   4   5   6   7   8   9       1
                                                     0                                               0                                         0
bOffset reserved
...
...
...
bOffset (1 byte): An unsigned integer that specifies the offset of a PapxInFkp in a PapxFkp. The
   offset of the PapxInFkp is bOffset*2. If bOffset is 0 then there is no PapxInFkp for this
   paragraph and this paragraph has the default properties as specified in section 2.6.2.
reserved (12 bytes): Specifies version-specific paragraph height information. This value
   SHOULD<204> be 0 and SHOULD<205> be ignored.
2.9.24 CAPI
                                                     1                                               2                                         3
0       1   2    3      4       5    6   7   8   9       1   2    3   4   5     6       7   8    9         1   2   3   4   5   6   7   8   9       1
                                                     0                                               0                                         0
A B C unused1 D nfc
xchSeparator
A - iLocation (2 bits): An unsigned integer that specifies the insert location for the caption. This
    MUST be one of the following values.
Value                   Meaning
0x0                     Insert the caption below the selected item.
0x1                     Insert the caption above the selected item.
B - fChapNum (1 bit): A bit that specifies whether or not to include a chapter number in the caption.
C - iHeading (4 bits): An unsigned integer that specifies which heading style marks the beginning
    of a new chapter for the purpose of chapter numbering in this caption. This value MUST be one
    of the following.
    Value                            Meaning
    0x1                              Heading 1   marks   the     beginning    of    a   new     chapter.
    0x2                              Heading 2   marks   the     beginning    of    a   new     chapter.
    0x3                              Heading 3   marks   the     beginning    of    a   new     chapter.
    0x4                              Heading 4   marks   the     beginning    of    a   new     chapter.
    0x5                              Heading 5   marks   the     beginning    of    a   new     chapter.
    0x6                              Heading 6   marks   the     beginning    of    a   new     chapter.
                                                                                                                                                       210 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    Value                 Meaning
    0x7                   Heading 7 marks the beginning of a new chapter.
    0x8                   Heading 8 marks the beginning of a new chapter.
    0x9                   Heading 9 marks the beginning of a new chapter.
D - fNoLabel (1 bit): A bit that specifies whether or not to include the label in the caption. This bit
    MAY<206> be ignored.
nfc (2 bytes): An MSONFC, as specified in [MS-OSHARED] section 2.2.1.3, that specifies the
    formatting of the caption number.
xchSeparator (2 bytes): A Unicode character that specifies the character that separates the
   chapter number and caption number of the caption. This value MUST be one of the following.
    Value                     Meaning
    0x001E                    A hyphen (-) separates the chapter number and caption number.
    0x002E                    A period (.) separates the chapter number and the caption number.
    0x003A                    A colon (:) separates the chapter number and the caption number.
    0x2013                    An en-dash (–) separates the chapter number and the caption number.
    0x2014                    An em-dash (—) separates the chapter number and the caption number.
2.9.25 CDB
The CDB structure contains implementation-specific binary data that represents a grammar checker
cookie that is stored by the given grammar checker.
                                           1                                           2                                       3
0    1   2   3    4   5   6    7   8   9       1   2   3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                           0                                       0
cbData
rgbCookieData (variable)
...
cbData (4 bytes): An unsigned integer value that specifies the length of rgbCookieData, in bytes.
2.9.26 CellHideMarkOperand
                                           1                                           2                                       3
0    1   2   3    4   5   6    7   8   9       1   2   3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                           0                                       0
cb itc bArg
cb (1 byte): An unsigned integer that specifies the size of this operand in bytes, not including cb.
    cb MUST be 3.
                                                                                                                                       211 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
itc (2 bytes): An ItcFirstLim that specifies which cells this CellHideMarkOperand applies to.
bArg (1 byte): A Bool8 that specifies whether cells itc.itcFirst through itc.itcLim, decremented by
   1, are rendered with no height if all cells in the row are empty.
2.9.27 CellRangeFitText
The CellRangeFitText structure is an operand that is used by sprmTFitText. This operand specifies a
set of cells in a table row, and whether their contents stretch or compress to fill their widths.
                                           1                                          2                                              3
0   1   2   3    4   5   6   7     8   9       1   2   3   4   5     6   7   8    9         1   2   3        4   5   6   7   8   9       1
                                           0                                          0                                              0
itc fFitText
itc (2 bytes): A ItcFirstLim structure that specifies a cell range in the table row.
fFitText (1 byte): A Bool8. When set, the contents of each table cell only line wrap at the end of a
    paragraph, or at a line break character. Furthermore, the application SHOULD apply other
    properties as necessary to cause the contents of the first line in each cell to stretch or compress
    such that they exactly fill the width of the table cell.
2.9.28 CellRangeNoWrap
                                           1                                          2                                              3
0   1   2   3    4   5   6   7     8   9       1   2   3   4   5     6   7   8    9         1   2   3        4   5   6   7   8   9       1
                                           0                                          0                                              0
cb itc fNoWrap
cb (1 byte): An unsigned integer that specifies the size in bytes of the remainder of this structure.
    MUST be 3.
itc (2 bytes): A ItcFirstLim structure that specifies a cell range to which fNoWrap applies.
fNoWrap (1 byte): A Bool8. When set, the preferred layout of the contents of each cell is a single
   line. This preference is ignored when the preferred width of the cell is set to ftsDxa.
2.9.29 CellRangeTextFlow
The CellRangeTextFlow structure specifies a range of cells in a table row, and the text flow model of
the cell contents.
                                           1                                          2                                              3
0   1   2   3    4   5   6   7     8   9       1   2   3   4   5     6   7   8    9         1   2   3        4   5   6   7   8   9       1
                                           0                                          0                                              0
itc tf
itc (2 bytes): An ItcFirstLim that specifies a cell range in the table row.
tf (2 bytes): A TextFlow that specifies how contents in each cell flow, and how text is rotated.
                                                                                                                                             212 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.30 CellRangeVertAlign
The CellRangeVertAlign structure specifies a range of cells in a table row, and the vertical alignment
of the cell contents.
                                          1                                         2                                        3
0   1   2   3     4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8    9       1
                                          0                                         0                                        0
cb itc valign
cb (1 byte): Specifies the byte count of the remainder of this structure. The value MUST be 3.
itc (2 bytes): An ItcFirstLim that specifies a cell range in the table row.
valign (1 byte): A VerticalAlign that specifies how contents inside each cell in the range are aligned.
2.9.31 CFitTextOperand
The CFitTextOperand structure is an operand that is used by sprmCFitText to specify how text runs
are formatted to fit a particular width.
                                          1                                         2                                        3
0   1   2   3     4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8    9       1
                                          0                                         0                                        0
cb dxaFitText
... FitTextID
...
cb (1 byte): The number of bytes that this operand occupies. This value MUST be 0x08.
dxaFitText (4 bytes): A 32-bit signed integer value that specifies, in twips, the size of the space in
   which to fit the text. Text that would occupy a smaller width than specified has space added
   between characters. Text that would occupy a greater width than specified is compressed
   proportionally. A value of zero specifies that the Sprm is ignored. A value representing a width
   that is too large for the text run is also ignored. A negative value or a value representing a width
   that is too small for the text run specifies the minimum width.
FitTextID (4 bytes): A 32-bit signed integer that uniquely identifies a fit text region across multiple
    character runs and instances of sprmCFitText. Contiguous character runs that share a common
    FitTextID are part of the same fit text region. If the runs are not contiguous, the FitTextID is
    ignored and they are not linked.
2.9.32 Chpx
                                          1                                         2                                        3
0   1   2   3     4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8    9       1
                                          0                                         0                                        0
cb grpprl (variable)
...
                                                                                                                                     213 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
grpprl (variable): An array of Prl. Specifies the properties. This array MUST contain a whole number
   of Prls.
2.9.33 ChpxFkp
The ChpxFkp structure maps text to its character properties. A ChpxFkp structure is 512 bytes in
size, with crun in the last byte. The elements of rgb point to Chpxs that start at offsets between crun
and the end of rgb.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4   5      6    7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
rgfc (variable)
...
rgb (variable)
...
crun
rgfc (variable): An array of 4-byte unsigned integers. Each element of this array specifies an offset
    in the WordDocument Stream where a run of text begins. This array MUST be sorted in ascending
    order and MUST NOT contain duplicates. Each run ends at the beginning of the next run. This
    array contains crun+1 elements, where the last element specifies the end of the last run.
rgb (variable): An array of 1-byte unsigned integers, followed by an array of Chpx structures. The
   elements of this array, which has crun elements and parallels rgfc, each specify the offset of one
   of the Chpxs within this ChpxFkp. The offset is computed by multiplying the value of the byte by
   2.
    For each i from 0 to crun, rgb[i]×2 MUST either specify an offset, in bytes, between the end of
    the array and crun, or be equal to zero, which specifies that there is no Chpx associated with this
    element of rgb.
    Each Chpx specifies the character properties for the run of text that is indicated by the
    corresponding element of rgfc.
crun (1 byte): An unsigned integer that specifies the number of runs of text this ChpxFkp describes.
   Crun is the last byte of the ChpxFkp. Crun MUST be at least 0x01, and MUST NOT exceed 0x65,
   as that would cause rgfc and rgb to grow too large for the ChpxFkp to be 512 bytes.
2.9.34 Cid
The Cid structure is a command identifier—a 4-byte structure that specifies a command. This element
is used in other structures to identify a particular command to be executed.
The 3 least significant bits of the first byte of the structure together form a Cmt value which specifies
the command type; the whole structure MUST be interpreted according to this command type, as
follows.
Value                                                                   Meaning
cmtFci                                                                  This structure is a CidFci.
cmtMacro                                                                This structure is a CidMacro.
cmtAllocated                                                            This structure is a CidAllocated.
cmtNil                                                                  Specifies that the command identifier is empty and
                                                                                                                                     214 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value                                                                   Meaning
                                                                        does not specify a command. If the first 3 bits of
                                                                        this command identifier are cmtNil, the value of the
                                                                        entire command identifier MUST be 0xFFFFFFFF.
2.9.35 CidAllocated
                                            1                                        2                                       3
0    1    2   3   4   5   6   7   8   9         1   2   3   4   5   6    7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                        0                                       0
cmt (3 bits): A Cmt value that specifies the command type. This value MUST be cmtAllocated.
iacd (2 bytes): An unsigned integer that is an index of the Acd structure in PlfAcd.rgacd and that
    specifies the allocated command to be executed.
2.9.36 CidFci
                                            1                                        2                                       3
0    1    2   3   4   5   6   7   8   9         1   2   3   4   5   6    7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                        0                                       0
cmt (3 bits): A Cmt value that specifies the command type. MUST be cmtFci.
fci (13 bits): An unsigned integer that specifies the command. The integer MUST be either a valid Fci
     value, or 0x0193. The value also MUST be one of the following:
                                                                                                                                     215 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§   If the intended command is any of the following, fci MUST be 0x0193 AND the intended command
    MUST be in swArg:
§ ToolsWordCountList
§ OutlineLevel
§ ShowLevel
§   If the intended command is ToolsFixHHC then fci MUST be MenuFormatBackground AND swArg
    MUST be ToolsFixHHC.
§   If the intended command is any of the following, fci MUST be ToolsTranslateChinese AND the
    intended command MUST be in swArg.
§ FileNewContext
§ LineSpacing
§ AcceptChangesSelected
§ RejectChangesSelected
§ InsertNewComment
§ ToolsWordCountList
§ OutlineLevel
§ ShowLevel
§ OfficeDrawingCommand
§ FileNewContext
§ LineSpacing
§ AcceptChangesSelected
§ RejectChangesSelected
§ InsertNewComment
§ ToolsFixHHC
AND the intended command is a valid Fci value AND it is NOT one of the following:
§   If the value of fci is FileAOCEAddMailer and the value of swArg is not 0, the CidFci SHOULD<207>
    have the same meaning as if fci were OfficeDrawingCommand.
                                                                                            216 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§   If the value of fci is either 0x0193, MenuFormatBackground, ToolsTranslateChinese, or Bold, and
    the value of swArg is a valid Fci value that is not allowed in fci, the CidFci SHOULD<208> have
    the same meaning as if fci was the Fci specified in swArg and the value of swArg is 0.
§   If the value of fci is 0x0193, then swArg is an Fci value that specifies the command. It MUST be
    either ToolsWordCountList, OutlineLevel, or ShowLevel.
§   If the value of fci is FormatDrawingObject, then swArg is an unsigned integer that specifies which
    tab of the Format Object dialog is selected by default. The value of swArg MUST be one of the
    following:
§ 0x0000 – no preference.
    §   0x03E8 (not valid for UnderlineStyle) – only the portion that contains "Automatic" or "No
        Color" / "No Fill".
    §   0x03E9 (not valid for UnderlineStyle) – only the portion that contains a grid of pre-defined
        colors.
    §   0x03EA (not valid for Highlight) – only the portion that contains "More Colors" or "More
        Underlines".
§   If the value of fci is FileMru, then swArg is an unsigned integer that specifies the 0-based index
    in the "Most Recently Used" list of the file to be open.
§   If the value of fci is ToolsAutoManager, then swArg is an unsigned integer that specifies which
    variant of the Auto options dialog is needed. It MUST be one of the following:
                                                                                                   217 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§     If the value of fci is FormatObjectCore, then swArg is an unsigned integer that specifies whether
      the intention of the command is formatting the borders of the object. It MUST be either of the
      following:
      §       If the value of fci is RunToggle, then swArg is a signed integer that MUST be either of the
              following:
      §       Greater than 0 – specifies a 1-based index of a keyboard layout to switch to. The availability
              of keyboard layouts is implementation-specific.
§     If the value of fci is ToolbarLabel, then swArg specifies the toolbar control identifier (TCID) of
      the label. A list of possible values can be found in [MS-CTDOC] section 2.2.
2.9.37 CidMacro
The CidMacro structure is a command identifier that specifies a command based on a macro.
                                           1                                           2                                       3
0    1    2    3   4   5   6   7   8   9       1   2   3    4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                           0                                       0
ibst (2 bytes): An unsigned integer that specifies the name of the macro to be executed. The macro
    name is specified by MacroName.xstz of the MacroName entry in the MacroNames such that
    MacroName.ibst equals ibst. MacroNames MUST contain such an entry.
2.9.38 Clx
                                           1                                           2                                       3
0    1    2    3   4   5   6   7   8   9       1   2   3    4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                           0                                       0
RgPrc (variable)
...
Pcdt (variable)
...
RgPrc (variable): An array of Prc. If this array is empty, the first byte of the Clx MUST be 0x02.
   0x02 is invalid as the first byte of a Prc, but required for the Pcdt.
                                                                                                                                       218 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Pcdt (variable): A Pcdt.
2.9.39 CMajorityOperand
                                         1                                         2                                       3
0   1   2   3    4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                         0                                       0
cb grpprl (variable)
...
cb (1 byte): An unsigned 8-bit integer that specifies the size, in bytes, of grpprl.
grpprl (variable): An array of Prl. Specifies character property Sprms which, when combined with
   default values for non-specified properties, give a set of character properties to compare against.
   For a specific set of properties, if the properties of the current text match those of the combined
   set, the value for the property is set to that of the current paragraph style (taking style hierarchy
   into account.) Details and exceptions are specified in sprmCMajority.
2.9.40 Cmt
The Cmt enumeration provides an unsigned 3-bit integer that specifies the type of a command; see
Cid for more details. The valid values are as follows.
2.9.41 CNFOperand
                                         1                                         2                                       3
0   1   2   3    4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                         0                                       0
...
cb (1 byte): An unsigned integer that specifies the size, in bytes, of this CNFOperand, excluding the
    cb member.
cnfc (2 bytes): A signed integer that specifies the condition for which the formatting in grpprl
   applies.
Value       Meaning
0x0001      Header row.
0x0002      Footer row.
0x0004      First column.
                                                                                                                                   219 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value       Meaning
0x0008      Last column.
0x0010      Banded columns.
0x0020      Even column banding.
0x0040      Banded rows.
0x0080      Even row banding.
0x0100      Top right cell.
0x0200      Top left cell.
0x0400      Bottom right cell.
0x0800      Bottom left cell.
grpprl (variable): An array of Prl. Specifies the formatting to apply (on top of the non-conditional
   formatting specified in the table style) when the condition is satisfied (see section 2.4.6 Applying
   Properties).
2.9.42 CNS
The CNS enumeration provides an unsigned 8-bit integer that specifies the separator character to be
used between the chapter number and the page number when chapter numbering is enabled in
page number fields.
2.9.43 COLORREF
The COLORREF structure specifies a color in terms of its red, green, and blue components.
                                          1                                       2                                       3
0   1   2   3   4   5   6   7     8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                       0                                       0
red (1 byte): An unsigned integer that specifies the intensity of the color red. A value of zero
   specifies that there is no red. Larger numbers specify a more intense red than smaller numbers.
green (1 byte): An unsigned integer that specifies the intensity of the color green. A value of zero
   specifies that there is no green. Larger numbers specify a more intense green than smaller
   numbers.
blue (1 byte): An unsigned integer that specifies the intensity of the color blue. A value of zero
   specifies that there is no blue. Larger numbers specify a more intense blue than smaller numbers.
fAuto (1 byte): An unsigned integer whose value MUST be either 0xFF or 0x00. If the value is 0xFF,
   the values of red, green, and blue in this COLORREF SHOULD<209> all be 0x00. If fAuto is 0xFF,
   this COLORREF designates the default color for the application. An application MAY<210> use
   different default colors based on context. This documentation refers to the COLORREF with fAuto
   set to 0xFF as cvAuto.
                                                                                                                                  220 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.44 COSL
The COSL structure specifies the option set to use for a grammar checker implementing the NLCheck
interface, as well as information to identify the corresponding grammar checker.
                                            1                                       2                                              3
0   1   2   3   4   5   6    7      8   9       1   2   3   4   5   6   7   8   9        1   2   3      4   5   6    7   8     9       1
                                            0                                       0                                              0
cos lid
dwVersion
ceid
cos (2 bytes): An unsigned integer that specifies a NLCheck option set, which is implementation-
   specific to the grammar checker that is identified by lid, dwVersion, and ceid.
    The cos values for English, Spanish, French, German and Japanese MUST be one of the following
    values.
lid (2 bytes): A LID that specifies the language of the associated grammar checker.
dwVersion (4 bytes): An unsigned integer value that is the version number of the associated
  grammar checker, as specified through NLCheck.
ceid (2 bytes): An unsigned integer value that is the company identifier of the associated grammar
    checker, as specified through NLCheck.
2.9.45 CSSA
The CSSA structure specifies a cell spacing SPRM argument used by many Table SPRMs to define table
cell margins and cell spacing.
                                            1                                       2                                              3
0   1   2   3   4   5   6    7      8   9       1   2   3   4   5   6   7   8   9        1   2   3      4   5   6    7   8     9       1
                                            0                                       0                                              0
wWidth
                                                                                                                                           221 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
itc (2 bytes): An ItcFirstLim that specifies which cells this CSSA structure applies to.
grfbrc (1 byte): A bit field that specifies which cell sides this cell margin or cell spacing applies to.
    The bit values and their meanings are as follows.
Setting all four side bits results in fBrcSidesOnly (0x0F). All other bits MUST be 0.
wWidth (2 bytes): An unsigned integer value that specifies the cell margin or cell spacing that is
  applied to cells itc.itcFirst through itc.itcLim – 1. The interpretation of this value depends on the
  value of ftsWidth. If ftsWidth is ftsNil (0x00), then wWidth MUST be zero.
2.9.46 CSSAOperand
The CSSAOperand structure is an operand that is used by several Table SPRMs to specify a table cell
margin or cell spacing.
                                           1                                         2                                       3
0   1   2   3    4   5   6   7     8   9       1     2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                         0                                       0
cb cssa
...
cb (1 byte): An unsigned integer value that specifies the size of this operand in bytes, not including
    cb. The cb MUST be 6.
cssa (6 bytes): A CSSA that specifies the cell margin or cell spacing to apply.
2.9.47 CSymbolOperand
                                           1                                         2                                       3
0   1   2   3    4   5   6   7     8   9       1     2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                         0                                       0
ftc xchar
ftc (2 bytes): A 16-bit unsigned integer that is an index into the font table SttbfFfn and that
    specifies the font for this symbol.
xchar (2 bytes): A 16-bit unsigned integer that specifies the Unicode character code of the specified
   font.
2.9.48 CTB
                                                                                                                                     222 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                        1                                          2                                        3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5      6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                        0                                          0                                        0
name (variable)
...
cbTBData
tb (variable)
...
...
...
iWCTB
reserved unused
cCtls
rTBC (variable)
...
name (variable): A structure of type Xst that specifies the name of this custom toolbar.
cbTBData (4 bytes): A signed integer value that specifies the size, in bytes, of this structure
   excluding the name, cCtls, and rTBC fields. The value is given by the following formula.
tb (variable): A structure of type TB, as specified in [MS-OSHARED]. This structure contains toolbar
    data.
                                                                                                                                    223 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Array index of structure                Meaning of TBVisualData
                                        application is in Hyperlink view<211>.
iWCTB (4 bytes): A signed integer that specifies the zero-based index of the Customization structure
   that contains this structure in the rCustomizations array that contains the Customization
   structure that contains this structure. The value MUST be greater or equal to 0x00000000 and
   MUST be less than the value of the cCust field of the CTBWRAPPER structure that contains the
   rCustomizations array that contains the Customization structure that contains this structure.
cCtls (4 bytes): A signed integer that specifies the number of toolbar controls in this toolbar.
rTBC (variable): A zero-based index array of TBC structures. The number of elements in this array
   MUST equal cCtls.
2.9.49 CTBWRAPPER
The CTBWRAPPER structure is a custom toolbar wrapper. This structure contains the custom
toolbars and toolbar deltas that are saved to the file.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1    2   3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
reserved4 reserved5
cbTBD cCust
cbDTBC
rtbdc (variable)
...
rCustomizations (variable)
...
cbTBD (2 bytes): A signed integer that specifies the size, in bytes, of a TBDelta structure. This value
   MUST be 0x0012.
                                                                                                                                     224 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cCust (2 bytes): A signed integer that specifies the number of elements in the rCustomizations
   array. This value MUST be greater than 0x0000.
cbDTBC (4 bytes): A signed integer that specifies the size, in bytes, of the rtbdc array. This value
   MUST be greater or equal to 0x00000000.
rtbdc (variable): An array of TBC structures. The total size of this array, in bytes, MUST be equal to
   the value of cbDTBC. The TBC structures in this array specify toolbar controls that are
   associated with TBDelta structures.
2.9.50 Customization
The Customization structure specifies either a custom toolbar or toolbar delta values.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
tbidForTBD
reserved1 ctbds
customizationData (variable)
...
ctbds (2 bytes): A signed integer that specifies, if tbidForTBD is not equal to 0x00000000, the
   number of TBDelta structures that are contained in the customizationData array. This MUST be
   0x0000 if tbidForTBD equals 0x00000000.
customizationData (variable): The type of this structure depends on the value of tbidForTBD. The
   types of this structure are shown following.
Value of
tbidForTBD                  Type of customizationData
0x00000000                  CTB
not 0x00000000              A zero-based index array of TBDelta structures. The number of elements in the array
                            MUST be equal to ctbds.
2.9.51 DCS
The DCS structure specifies the drop cap properties for a paragraph.
                                                                                                                                  225 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                              1                                         2                                       3
0    1     2   3    4   5    6    7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                              0                                         0                                       0
fdct cl reserved
fdct (3 bits): An integer that specifies the drop cap type. This MUST be one of the following values.
      Value                      Meaning
      1                          Regular drop cap, which is a single letter beginning at the leading edge of
                                 the paragraph.
      2                          A drop cap which is in the margin of the page, outside of the paragraph.
cl (5 bits): An unsigned integer that specifies the number of lines to drop. This determines the size
    of the drop cap letter. The value MUST be between 1 and 10, inclusive.
2.9.52 DefTableShd80Operand
The DefTableSdh800Operand structure is an operand that is used by several Table Sprms to specify
each style of background shading that is applied to each of the cells in a single row.
                                              1                                         2                                       3
0    1     2   3    4   5    6    7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                              0                                         0                                       0
cb rgShd80 (variable)
...
cb (1 byte): An unsigned integer that specifies the size in bytes of this operand, not including cb.
    cb MUST be a multiple of 2 (the size of Shd80).
rgShd80 (variable): An array of Shd80. The number of elements is equal to cb divided by 2 and
   MUST NOT exceed the number of cells in the row. Each Shd80 structure is applied sequentially to
   each cell in the row, beginning with the first cell.
2.9.53 DefTableShdOperand
The DefTableShdOperand structure is an operand that is used by several Table Sprms to specify
each style of background shading that is applied to each of the cells in a single row.
                                              1                                         2                                       3
0    1     2   3    4   5    6    7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                              0                                         0                                       0
cb rgShd (variable)
...
cb (1 byte): An unsigned integer that specifies the size in bytes of this operand, not including cb.
    The cb value MUST be a multiple of 10, the size of Shd, and MUST NOT exceed 220.
rgShd (variable): An array of Shd. The number of elements is equal to cb / 10 and MUST NOT
   exceed 22. Each Shd structure is applied sequentially to each cell in the row. The first cell rgShd
   applies to is either 1, 23, or 45, depending on which Table Sprm is applying this operand. rgShd
                                                                                                                                        226 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    only contains elements necessary to define all shaded cells in the row. Non-shaded cells that
    follow the last shaded cell in the row are omitted from the array. Non-shaded cells that precede
    the last shaded cell in the row are set to ShdAuto or ShdNil, depending on which Table Sprm is
    applying this operand.
2.9.54 DispFldRmOperand
                                         1                                               2                                       3
0   1   2   3    4   5   6   7   8   9       1       2   3    4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                               0                                       0
cb f ibstshort
dttm
...
...
cb (1 byte): An unsigned integer that specifies the size, in bytes, of the remainder of this structure.
    This value MUST be 39.
f (1 byte): An unsigned integer that specifies whether there is a revision in the result of this LISTNUM
    display field. Any nonzero value specifies that there is a revision. A value of zero specifies that
    there are no revisions in the result of this field.
ibstshort (2 bytes): An unsigned integer that specifies the index into SttbfRMark. The value in the
    string table at index istbshort specifies the author who made this revision.
xst (32 bytes): A 15-character XST that specifies the previous result of this LISTNUM display field.
2.9.55 Dofr
The Dofr structure is a type that wraps a different data type for each type of record specified by
Dofrh.dofrt. When Dofrh.dofrt specifies dofrtFs, this type is not applicable, and MUST be left out.
Value Meaning
                                                                                                                                         227 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.56 DofrFsn
The DofrFsn structure specifies the properties of a frame. There can be multiple DofrFsn records for
a particular frame. If fsnk is fsnkFrame, this record introduces a new frame. Otherwise this record
applies to the frame that is associated with the previous DofrFsn with fsnk equal to fsnkFrame,
unless it appears before the first DofrFsn with fsnk equal to fsnkFrame. In that case, this record
applies to the outermost frame.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
fssd
...
tCols
fsnk
dxMargin
dyMargin
iidsScroll
A B fUnused1
fUnused2
fssd (8 bytes): An Fssd that specifies the position of the divider. If fsnk is not fsnkFrame, this
    value MUST be ignored.
tCols (4 bytes): A signed integer value that specifies whether the child frames are displayed
   horizontally or vertically This field MUST contain one of the following values.
Value                       Meaning
0xFFFFFFFF                  No child frames
0x00000000                  Arrange child frames into rows
0x00000001                  Arrange child frames into columns
fsnk (4 bytes): A Fsnk that specifies the type of DofrFsn that contains this field.
dxMargin (4 bytes): A signed integer that specifies the left and right margins, in pixels, for this
   frame.
dyMargin (4 bytes): A signed integer that specifies the top and bottom margins, in pixels, for this
   frame.
iidsScroll (4 bytes): An IScrollType that specifies the scroll bar behavior for this frame.
B - fNoResize (1 bit): Specifies whether the size of the frame is locked and cannot be changed.
                                                                                                                                   228 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fUnused2 (32 bits): This value is undefined and MUST be ignored.
2.9.57 DofrFsnFnm
The DofrFsnFnm structure is an Xstz that specifies the file name of the file that is loaded into the
frame. DofrFsnFnm applies to the frame that is associated with the most recently read DofrFsn
record.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
xstzFilename (variable)
...
xstzFilename (variable): An Xstz that specifies the file name and path of the frame. The string
   MUST be between 0 and 258 characters in length.
2.9.58 DofrFsnName
The DofrFsnName structure is a type that specifies the name of the frame. DofrFsnName applies to
the frame that is associated with the most recently read DofrFsn record.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
xstzFilename (variable)
...
xstzFilename (variable): An Xstz that specifies the name of the frame. The name MUST be
   between 0 and 255 characters in length.
2.9.59 DofrFsnp
The DofrFsnp structure marks the beginning or end of a group of child frames. In the first marker,
fPush is set to "true"; in the ending marker, fPush is set to "false". The enclosed child frames belong
to the frame associated with the record that appears immediately before the DofrFsnp, with fPush
set to "true".
DofrFsnp records can be nested. While loading the child nodes of frame A there appears another
DofrFsnp with fPush set to "true". This means that the most recently loaded child record B does
have child nodes. All the nodes between that DofrFsnp and the corresponding DofrFsnp with fPush
set to "false" are the child nodes of frame B. This is how frame records support an arbitrary level of
nesting within the frame set.
DofrFsnp records MUST be equally matched. There MUST be as many records with fPush set to
"false" as there are records with fPush set to "true".
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
A fUnused
                                                                                                                                   229 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
A - fPush (1 bit): Specifies if this marker indicates the beginning or end of a group of frames. A
    value of 1 specifies the beginning of a set of child frames. A value of 0 specifies the end of the
    child frames.
2.9.60 DofrFsnSpbd
The DofrFsnSpbd structure specifies borders and divider (splitter bar) properties for the entire frame
set.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
dzaSpb
cvSpb
A B fUnused
dzaSpb (4 bytes): A signed integer that specifies the width, in twips, of the borders and dividers.
   This value MUST be between 0 and 31,680. If this value is 0, the default border size is used.
cvSpb (4 bytes): A COLORREF that specifies the color of the borders and dividers.
A - fNoBorder (1 bit): Specifies whether the frame set has visible borders. If this value is zero, it
    displays borders. If this value is 1, it does not.
B - f3DBorder (1 bit): Specifies whether the frame set border uses a raised style.
fUnused (30 bits): This value MUST be zero and MUST be ignored.
2.9.61 Dofrh
The Dofrh structure is the general record header that wraps each record type specified in the section
Dofr. Every record begins with this header.
Records that specify a frame set MUST begin with a record containing a dofrt equal to dofrtFs,
followed by any number of records of other types, according to the rules defined in the section for
each record type. Each frame MUST have one or more records that specify the attributes of the frame.
Similarly, an array of list specifications MUST begin with a record containing a dofrt equal to
dofrtRglstsf, followed by any number of list records.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
cb
dofrt
dofr (variable)
...
                                                                                                                                     230 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cb (4 bytes): An unsigned integer that specifies the size of the Dofrh, including all contained variable
    or optional data such as the dofr.
dofrt (4 bytes): A Dofrt that specifies the type of data contained in dofr.
dofr (variable): A Dofr that contains data for each record type. If dofrt is dofrtFs, this field MUST
   NOT exist. For all other records, this field MUST exist.
2.9.62 DofrRglstsf
The DofrRglstsf structure specifies the list styles that are used in the document.
                                           1                                          2                                       3
0   1   2   3   4   5    6   7     8   9       1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                          0                                       0
clstsf
rglstsf (variable)
...
clstsf (4 bytes): A signed integer that specifies the count of the items in rglstsf.
rglstsf (variable): An array of Lstsf that specifies the list styles used in the document.
2.9.63 Dofrt
The Dofrt enumeration provides a 32-bit unsigned integer that specifies the type of record contained
in a Dofrh. A field of this type MUST contain one of the following values.
2.9.64 DPCID
The DPCID structure contains information about a format consistency-checker bookmark in the
document.
                                           1                                          2                                       3
0   1   2   3   4   5    6   7     8   9       1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                          0                                       0
padding1 A B C fUnused
... idpci
                                                                                                                                      231 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                            ...                                                                   idata
... fcct id
... padding2
padding1 (2 bytes): Two bytes that are used for padding. This MUST be ignored.
A - fSquiggle (1 bit): A bit flag that specifies whether an application is expected to display a
    squiggle under the region of text denoted by the bookmark associated with this DPCID. If the
    region of text is inside the Main Document Part, fSquiggle MUST be 0.
B - fIgnored (1 bit): A bit flag that specifies whether the user requested that the flagging of the
    region of text by the format consistency checker that is denoted by the bookmark associated
    with this DPCID be ignored. If the region of text is inside the Main Document Part, fIgnored
    MUST be 1.
C - fSquiggleChanged (1 bit): A bit flag that specifies whether the squiggle under the region of text
    denoted by the bookmark associated with this DPCID has recently been changed. If the region of
    text is inside the Main Document Part, fSquiggleChanged MUST be 1.
idpci (4 bytes): An IDPCI that specifies the kind of formatting that the format consistency checker
   flagged, within the range of text that is covered by the format consistency-checker bookmark
   associated with this DPCID. If the range of text is inside the Main Document Part, idpci MUST be
   idpciFmt, idpciPapc, or idpciLvl.
fcct (1 byte): An FCCT that contains further information about the format consistency-checker
    bookmark associated with this DPCID.
id (4 bytes): An unsigned integer that specifies a unique value used to reference the format
    consistency-checker bookmark associated with this DPCID. This value MUST be unique for all
    DPCIDs inside a given SttbfBkmkFcc.
2.9.65 DTTM
                                          1                                           2                                              3
0   1   2   3   4   5   6   7     8   9       1     2    3    4   5   6   7   8   9       1   2   3   4    5   6   7        8   9         1
                                          0                                           0                                              0
mint (6 bits): An unsigned integer that specifies the minute. This value MUST be less than or equal
   to 0x3B.
hr (5 bits): An unsigned integer that specifies the hour. This value MUST be less than or equal to
    0x17.
dom (5 bits): An unsigned integer that specifies the day of the month. This value MUST be less than
   or equal to 0x1F. If this value is equal to zero, this DTTM MUST be ignored.
                                                                                                                                              232 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
mon (4 bits): An unsigned integer that specifies the month. The values 0x1 through 0xC specify the
  months January through December, respectively. This value MUST be less than or equal to 0xC. If
  this value is equal to zero, this DTTM MUST be ignored.
yr (9 bits): An unsigned integer that specifies the year, offset from 1900.
wdy (3 bits): An unsigned integer that specifies the day of the week, starting from Sunday (0x0).
  This value MUST be less than or equal to 0x6.
2.9.66 FACTOIDINFO
The FACTOIDINFO structure contains information about a smart tag bookmark in the document.
                                        1                                       2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                       0                                       0
dwId
A fUnused fto
pfpb
dwId (4 bytes): An unsigned integer that specifies a unique value this is used to reference the smart
   tag bookmark associated with this FACTOIDINFO. This MUST be unique for all FACTOIDINFO
   structures in all Document Parts.
A - fSubEntity (1 bit): A bit flag that specifies whether the factoid that is marked by the smart tag
    bookmark associated with this FACTOIDINFO structure is a sub-entity of a larger smart tag from
    the grammar checker.
fto (2 bytes): An FTO specifying further information about the smart tag bookmark that is associated
    with this FACTOIDINFO.
2.9.67 FactoidSpls
The FactoidSpls structure is an SPLS structure that specifies the state of the smart tag recognizer
over a range of text. Some states that are possible in a generic SPLS are not allowed in a FactoidSpls
structure.
                                        1                                       2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                       0                                       0
spls
The spls.fError, spls.fExtend, and spls.fTypo fields are not used and MUST be zero.
§ splfPending
§ splfMaybeDirty
                                                                                                                                233 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§   splfDirty
§ splfEdit
§ splfClean
2.9.68 FarEastLayoutOperand
The FarEastLayoutOperand structure specifies layout information for text in East Asian
languages, as well as the text that is considered part of the same layout unit.
                                         1                                         2                                       3
0   1   2   3    4   5   6   7   8   9       1     2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                         0                                       0
cb ufel lFELayoutID
...
cb (1 byte): The size of this structure, in bytes, not including this byte. cb MUST be 0x06.
lFELayoutID (4 bytes): An integer that specifies whether the corresponding text is in the same
    layout unit as other text. If two adjacent text runs have the same lFELayoutID value applied to
    them, they are laid out together.
2.9.69 Fatl
The Fatl structure is a bit field that SHOULD<212> specify which optional formats from a table style
or table auto-format are enabled.
Not all formatting categories are available for every table style or table auto-format.
                                         1                                         2                                       3
0   1   2   3    4   5   6   7   8   9       1     2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                         0                                       0
A B C D E F G H I J K padding
A - fatlBorders (1 bit): This bit MAY<213> specify that the border formats of a table auto-format
    were applied by the last table auto-format.
B - fatlShading (1 bit): This bit MAY<214> specify that the background shading formats of a table
    auto-format were applied by the last table auto-format.
C - fatlFont (1 bit): This bit MAY<215> specify that the text font formats of a table auto-format
    were applied by the last table auto-format.
D - fatlColor (1 bit): This bit MAY<216> specify that a color variant of a table auto-format was
    applied by the last table auto-format. When this bit is not set, the monochrome variant was
    applied.
E - fatlBestFit (1 bit): This bit MAY<217> specify that the columns of the table were resized to best
    fit their contents during the last table auto-format.
F - fatlHdrRows (1 bit): This bit SHOULD<218> specify that the top row of the table receives
    special formatting.
                                                                                                                                   234 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
G - fatlLastRow (1 bit): This bit SHOULD<219> specify that the bottom row of the table receives
    special formatting.
H - fatlHdrCols (1 bit): This bit SHOULD<220> specify that the logically leftmost column receives
    special formatting.
I - fatlLastCol (1 bit): This bit SHOULD<221> specify that the logically rightmost column receives
     special formatting.
J - fatlNoRowBands (1 bit): This bit SHOULD<222> specify that odd numbered rows do not
     receive different formatting than even numbered rows.
K - fatlNoColBands (1 bit): This bit SHOULD<223> specify that odd numbered columns do not
    receive different formatting than even numbered columns.
2.9.70 FBKF
                                         1                                       2                                       3
0   1   2   3   4   5   6    7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                       0                                       0
ibkl bkc
ibkl (2 bytes): An unsigned integer that specifies a zero-based index into the PlcfBkl or PlcfBkld that
    is paired with the PlcfBkf or PlcfBkfd containing this FBKF. The entry that is found at such an index
    specifies the location of the end of the bookmark associated with this FBKF. Ibkl MUST be unique
    for all FBKFs inside a given PlcfBkf or PlcfBkfd.
bkc (2 bytes): A BKC that specifies further information about the bookmark associated with this
   FBKF.
2.9.71 FBKFD
                                         1                                       2                                       3
0   1   2   3   4   5   6    7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                       0                                       0
fbkf
cDepth
cDepth (2 bytes): An integer value that specifies the number of bookmarks in the document of the
   same type as the bookmark associated with this FBKFD, the ranges of which overlap the
   beginning of the range of this bookmark. To increment the count, a bookmark MUST meet the
   following constraints:
§ The FBKFD of the bookmark occupies the PlcfBkfd containing this FBKLD.
§   The starting CP (cpS) and limit CP (cpL) of the bookmark, as defined in the specification of that
    PlcfBkfd and the PlcfBkld it is paired with, satisfy the following in relation to the CP (cpCur) that
    marks the beginning of the bookmark of this FBKFD.
                                                                                                                                 235 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.72 FBKLD
                                         1                                        2                                        3
0   1   2    3   4   5   6   7   8   9       1   2   3   4    5   6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                         0                                        0                                        0
ibkf cDepth
ibkf (2 bytes): An unsigned integer that specifies a zero-based index into the PlcfBkfd that is paired
    with the PlcfBkld containing this FBKLD. The entry that is found at the index specifies the location
    of the start of the bookmark. Ibkf MUST be unique for all FBKLDs in a given PlcfBkld.
cDepth (2 bytes): An integer that specifies the number of bookmarks in the document of the same
   type as the bookmark associated with this FBKLD, the ranges of which overlap the limit of the
   range of this bookmark. To increment the count, a bookmark MUST meet the following
   constraints:
§ The FBKLD of the bookmark occupies the PlcfBkld containing this FBKLD.
    §                The limit CP (cpL) and the start CP (cpS) of the bookmark, as specified in the PlcfBkld
            and the PlcfBkfd it is paired with, satisfy the following in relation to the CP (cpCur) that marks
            the limit of the bookmark of this FBKLD.
2.9.73 FcCompressed
The FcCompressed structure specifies the location of text in the WordDocument Stream.
                                         1                                        2                                        3
0   1   2    3   4   5   6   7   8   9       1   2   3   4    5   6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                         0                                        0                                        0
fc A B
fc (30 bits): An unsigned integer that specifies an offset in the WordDocument Stream where the
    text starts. If fCompressed is zero, the text is an array of 16-bit Unicode characters starting at
    offset fc. If fCompressed is 1, the text starts at offset fc/2 and is an array of 8-bit Unicode
    characters, except for the values which are mapped to Unicode characters as follows.
                                                                                                                                   236 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Byte    Unicode Character
0x82    0x201A
0x83    0x0192
0x84    0x201E
0x85    0x2026
0x86    0x2020
0x87    0x2021
0x88    0x02C6
0x89    0x2030
0x8A    0x0160
0x8B    0x2039
0x8C    0x0152
0x91    0x2018
0x92    0x2019
0x93    0x201C
0x94    0x201D
0x95    0x2022
0x96    0x2013
0x97    0x2014
0x98    0x02DC
0x99    0x2122
0x9A    0x0161
0x9B    0x203A
0x9C    0x0153
0x9F    0x0178
2.9.74 FCCT
                                            1                                       2                                       3
0   1   2   3   4   5       6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                       0                                       0
A B C D E
A - fcctChp (1 bit): A bit field specifying that the character properties associated with the region of
    text were flagged as inconsistent with those in other regions of text in the file.
B - fcctPap (1 bit): A bit field specifying that paragraph properties associated with the region of text
    were flagged as inconsistent with those in other regions of text in the file. This bit field MUST be 0.
C - fcctTap (1 bit): A bit field specifying that table properties associated with the region of text were
    flagged as inconsistent with those in other regions of text in the file.
D - fcctSep (1 bit): A bit field specifying that line-separation properties associated with the region of
    text were flagged as inconsistent with those in other regions of text in the file.
2.9.75 Fci
The Fci enumeration provides a 13-bit unsigned integer that specifies a built-in command.
                                                                                                                                    237 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                 238 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
UnlinkFields 0x0021 Permanently replaces the field codes with the results.
Indent 0x0026 Moves the .logical left. indent to the next tab stop.
                                                                                                 239 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
WW2_PrintMerge 0x005A Performs mail merge using header and data files.
WW2_PrintMergeSelection 0x005E Sets mail merge options for mail merges using
                                                                                                 240 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
FileMru 0x0064 Opens a file from the list of most-recently used files.
                                                                                                  241 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
TableMergeCells 0x0088 Merges the selected table cells into a single cell.
ViewFieldCodes 0x0096 Shows the field codes or results for all fields (toggle).
                                                                                                    242 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                     243 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                 244 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
ShowAllHeadings 0x0104 Displays all of the heading levels and the body text.
                                                                                                 245 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
DoFieldClick 0x011A Executes the action associated with the button fields.
SelectCurSpacing 0x0120 Selects all paragraphs with the same line spacing.
                                                                                                   246 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
FilePrintDefault 0x012E Prints the active document using the current defaults.
ViewZoomPageWidth 0x0130 Scales the editing view to see the width of the page.
                                                                                                  247 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                 248 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                 249 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
DrawSendBehindText 0x01D4 Sends the selected drawing objects back one layer.
                                                                                                 250 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
layer.
                                                                                                    251 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
ToolsShrinkToFit 0x01F8 Attempts to make the document fit on one less page.
GrowFontOnePoint 0x0201 Increases the font size of the selection by one point.
ShrinkFontOnePoint 0x0202 Decreases the font size of the selection by one point.
                                                                                                  252 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
DrawFlipHorizontal 0x022F Flips the selected drawing objects from left to right.
                                                                                                  253 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                    254 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                 255 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
picture.
                                                                                                256 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
DrawNudgeDownPixel 0x02BD Moves the selected drawing objects down one pixel.
                                                                                                  257 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                 258 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                 259 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                 260 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
UnlinkFieldsVBA 0x0373 Permanently replaces the field codes with the results.
                                                                                                  261 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                               262 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
BorderAll 0x03D1 Changes all the borders of the selected table cells.
                                                                                                   263 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
FormatBackgroundMoreColors 0x03ED Provides more color choices for the background color.
BoldRun 0x0424 Makes the current run in the selection bold (toggle).
ItalicRun 0x0425 Makes the current run in the selection italic (toggle).
                                                                                                    264 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                265 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                             266 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                    267 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                268 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                269 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
ResetFormField 0x0531 Resets the selected form field to its default value.
                                                                                                 270 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
UIMCorrectionUI 0x0548 Brings up the correction UI for the Tablet Input Panel.
LicenseVerification 0x0561 Displays the dialog box for activating the product.
                                                                                                271 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
MyPermission 0x059D Displays the DRM usage permissions for the user.
                                                                                                 272 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
ReadingModeGrowFont 0x05B9 Increases the font size for full screen reading.
ReadingModeShrinkFont 0x05BA Decreases the font size for full screen reading.
                                                                                                 273 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                    274 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
UpdateStyle 0x079D Updates the current style based on the selected text.
                                                                                                    275 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                 276 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                277 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
MailMergeSetDocTypeFormLetter 0x081F Sets the Mail Merge document type to Form Letter.
                                                                                                278 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
ToolsLineNumOff 0x0831 Turns off line numbering for the current document.
ToolsLineNumContinuous 0x0832 Turns off line numbering for the current document.
ToolsLineNumRestPage 0x0833 Turns off line numbering for the current document.
ToolsLineNumResetSection 0x0834 Turns off line numbering for the current document.
ToolsLineNumSuppress 0x0835 Turns off line numbering for the current document.
NavForward 0x083E Jump forward to the next page in full screen reading.
                                                                                                 279 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
OutlookInsertFile 0x0869 Launches the Insert file attachment dialog for e-mail.
                                                                                                 280 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
ApplyQuickFormat 0x0887 Applies the selected style from the Quick Style set.
                                                                                                281 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
JustifyFlyout 0x08A5 Displays the Justify menu for East Asian languages.
                                                                                                    282 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
SaveCoverPageBlock 0x08E4 Saves the current cover page as a new building block.
                                                                                               283 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
ReadingModeToPrintView 0x0902 Switch from full screen reading mode to print view.
                                                                                               284 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                   285 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
StylePaneNewStyle 0x094E Creates a new style out of the currently selected text.
                                                                                                     286 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                              287 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
ReadModeMarkupFinal 0x098E Menu item for showing final view in reading mode.
CharLeft 0x0FA0 Moves the insertion point to the left one character.
CharRight 0x0FA1 Moves the insertion point to the right one character.
                                                                                                   288 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
WordLeft 0x0FA2 Moves the insertion point to the left one word.
WordRight 0x0FA3 Moves the insertion point to the right one word.
                                                                                                 289 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
EndOfLineExtend 0x0FBF Extends the selection to the end of the current line.
                                                                                                    290 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                               291 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                              292 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                 293 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                               294 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
                                                                                                295 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                                     Value    Meaning
2.9.76 FCKS
The FCKS structure contains information about a grammar checker cookie. The grammar checker
cookie itself is contained within the data that corresponds to the fcCookieData member of
FibRgFcLcb97.
                                                                                                296 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                           1                                       2                                         3
0   1   2   3   4   5   6   7     8   9        1   2   3   4   5   6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                           0                                       0                                         0
dcp dcpSent
icdb
dcp (2 bytes): An integer that specifies the number of characters that are spanned by the text
   corresponding to the given grammar checker cookie. If fHeader is equal to 0x01, this value MUST
   be ignored.
dcpSent (2 bytes): An integer that specifies the number of characters between the start of the text
   that corresponds to the given grammar checker cookie and the start of the sentence which
   contains the text. If fHeader is equal to 0x01, this value MUST be ignored.
icdb (4 bytes): An unsigned integer that specifies the byte offset within the RgCdb that is specified
    by the fcCookieData member of FibRgFcLcb97, at which the data corresponding to this grammar
    checker cookie is located.
cet (2 bits): The error type that corresponds to the grammar checker cookie. The error types are
    interpreted as follows.
Value       Meaning
0x0         Default (not typo, homonym, or consistency)
0x1         Typo
0x2         Homonym
0x3         Consistency
A - fError (1 bit): A bit that indicates whether the grammar checker cookie corresponds to a
    grammar checker error that is displayed to the user. If fHeader is equal to 0x1, this value
    MUST be ignored.
lidSub (5 bits): The 10th through 14th least significant bits of the language ID component of the LCID
    of the grammar checker which created the given grammar checker cookie, as specified in [MS-
    LCID].
lidPrimary (7 bits): The 7 least significant bits of the language ID component of the LCID of the
    grammar checker which created the given grammar checker cookie, as specified in [MS-LCID].
B - fHeader (1 bit): A bit indicating whether this is a special entry containing implementation-specific
    data for the grammar checker which created this grammar checker cookie. There MUST be only
    one entry with fHeader set to 0x1 by a given grammar checker in a document.
2.9.77 FCKSOLD
The FCKSOLD structure contains information about a grammar checker cookie. The grammar
checker cookie itself is contained within the data that corresponds to the fcCookieData member of
FibRgFcLcb97.
                                           1                                       2                                         3
0   1   2   3   4   5   6   7     8   9        1   2   3   4   5   6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                           0                                       0                                         0
lid dcp
                                                                                                                                     297 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                            dcpSent                                                             padding1
icdb
lid (2 bytes): A LID that corresponds to the grammar checker that created the given grammar
     checker cookie.
dcp (2 bytes): An integer that specifies the number of characters that are spanned by the text
   corresponding to the given grammar checker cookie. This value MUST be greater than or equal to
   zero.
dcpSent (2 bytes): An integer that specifies the number of characters between the start of the text
   that corresponds to the given grammar checker cookie and the start of the sentence that contains
   the text. This value MUST be less than or equal to zero.
cet (2 bits): An error type that corresponds to the grammar checker cookie. The error types are
    interpreted as follows.
Value                                                                     Meaning
0x0                                                                       Default (not typo, homonym, or consistency)
0x1                                                                       Typo
0x2                                                                       Homonym
0x3                                                                       Consistency
A - fError (1 bit): A bit that indicates whether the grammar checker cookie corresponds to a
    grammar checker error that is intended to be displayed to the user.
icdb (4 bytes): An unsigned integer that specifies the byte offset within the RgCdb that is specified
    by the fcCookieData member of FibRgFcLcb97 at which the data corresponding to this grammar
    checker cookie is located.
2.9.78 FFData
The FFData structure specifies form field data for a text box, check box, or drop-down list box.
                                          1                                            2                                        3
0   1   2   3   4   5   6    7   8    9       1   2   3   4    5      6    7   8   9        1   2   3   4   5   6   7   8   9       1
                                          0                                            0                                        0
version
bits cch
...
                                                                                                                                        298 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                         xstzTextDef (variable)
...
...
xstzHelpText (variable)
...
xstzStatText (variable)
...
xstzEntryMcr (variable)
...
xstzExitMcr (variable)
...
hsttbDropList (variable)
...
bits (2 bytes): An FFDataBits that specifies the type and state of this form field.
cch (2 bytes): An unsigned integer that specifies the maximum length, in characters, of the value of
   the textbox. This value MUST NOT exceed 32767. A value of 0 means there is no maximum length
   of the value of the textbox. If bits.iType is not iTypeText (0), this value MUST be 0.
hps (2 bytes): An unsigned integer. If bits.iType is iTypeChck (1), hps specifies the size, in half-
   points, of the checkbox and MUST be between 2 and 3168, inclusive. If bits.iType is not
   iTypeChck (1), hps is undefined and MUST be ignored.
xstzName (variable): An Xstz that specifies the name of this form field. xstzName.cch MUST NOT
   exceed 20.
xstzTextDef (variable): An optional Xstz that specifies the default text of this textbox. This structure
   MUST exist if and only if bits.iType is iTypeTxt (0). xstzTextDef.cch MUST NOT exceed 255. If
   bits.iTypeTxt is either iTypeTxtCurDate (3) or iTypeTxtCurTime (4), xstzTextDef MUST be an
   empty string. If bits.iTypeTxt is iTypeTxtCalc (5), xstzTextDef specifies an expression to
   calculate.
wDef (2 bytes): An optional unsigned integer that specifies the default state of the checkbox or
  dropdown list box. This value MUST exist if and only if bits.iType is iTypeChck (1) or iTypeDrop
  (2). If bits.iType is iTypeChck (1), wDef MUST be 0 or 1 and specify the default state of the
  checkbox as unchecked or checked, respectively. If bits.iType is iTypeDrop (2), wDef MUST be
  less than the number of items in the dropdown list box and specify the default item selected (zero-
  based index).
                                                                                                299 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
xstzTextFormat (variable): An Xstz that specifies the string format of the textbox.
   xstzTextFormat MUST be an empty string if bits.iType is not iTypeTxt (0).
   xstzTextFormat.cch MUST NOT exceed 64. Valid formatting strings are specified in [ECMA-376]
   part 4, section 2.16.22 format (Text Box Form Field Formatting).
xstzHelpText (variable): An Xstz that specifies the help text for the form field. The value of
   xstzHelpText.cch MUST NOT exceed 255.
xstzStatText (variable): An Xstz that specifies the status bar text for the form field. The value of
   xstzStatText.cch MUST NOT exceed 138.
xstzEntryMcr (variable): An Xstz that specifies a macro to run on entry of the form field. The value
   of xstzEntryMcr.cch MUST NOT exceed 32.
xstzExitMcr (variable): An Xstz that specifies a macro to run after the value of the form field
   changes. The value of xstzExitMcr.cch MUST NOT exceed 32.
hsttbDropList (variable): An optional STTB that specifies the entries in the dropdown list box. This
    MUST exist if and only if bits.iType is iTypeDrop (2). The entries are Unicode strings and do not
    have extra data. This MUST NOT exceed 25 elements.
2.9.79 FFDataBits
The FFDataBits structure specifies the type and properties for a form field that is specified by a
FFData.
                                               1                                       2                                       3
0       1   2   3    4     5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                               0                                       0                                       0
A iRes B C D E F G H
A - iType (2 bits): An unsigned integer that specifies the type of the form field. This value MUST be
    one of the following.
iRes (5 bits): An unsigned integer. If iType is iTypeText (0), then iRes MUST be 0. If iType is
   iTypeChck (1), iRes specifies the state of the checkbox and MUST be 0 (unchecked), 1 (checked),
   or 25 (undefined). Undefined checkboxes are treated as unchecked. If iType is iTypeDrop (2),
   iRes specifies the current selected list box item. A value of 25 specifies the selection is undefined.
   Otherwise, iRes is a zero-based index into FFData.hsttbDropList.
B - fOwnHelp (1 bit): A bit that specifies whether the form field has custom help text in
    FFData.xstzHelpText. If fOwnHelp is 0, FFData.xstzHelpText contains an empty or auto-
    generated string.
C - fOwnStat (1 bit): A bit that specifies whether the form field has custom status bar text in
    FFData.xstzStatText. If fOwnStat is 0, FFData.xstzStatText contains an empty or auto-
    generated string.
D - fProt (1 bit): A bit that specifies whether the form field is protected and its value cannot be
    changed.
                                                                                                                                       300 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
E - iSize (1 bit): A bit that specifies whether the size of a checkbox is automatically determined by
    the text size where the checkbox is located. This value MUST be 0 if iType is not iTypeChck (1).
F - iTypeTxt (3 bits): An unsigned integer that specifies the type of the textbox. This MUST be one
2    of theiTypeTxtDate
             following values. Specifies that the textbox value is a date or time.
3            iTypeTxtCurDate              Specifies that the      textbox value is the current date.
4            iTypeTxtCurTime              Specifies that the      textbox value is the current time.
5            iTypeTxtCalc                 Specifies that the      textbox value is calculated from an expression.
                                          The expression is       given by FFData.xstzTextDef.
                                          1                                        2                                       3
0    1   2   3   4   5    6   7   8   9       1   2   3   4   5    6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                        0                                       0
prq A B ff C
prq (2 bits): A 2-bit field that specifies character pitch. This MUST contain one of the following
   values.
    Value            Meaning
    0x00             Default pitch.
    0x01             Fixed pitch.
    0x02             Variable pitch.
A - fTrueType (1 bit): A bit that specifies whether the font is a TrueType font.
ff (3 bits): A bit field that specifies the font family type as described in [MSDN-FONTS]. This field
    MUST contain one of the following values.
    Value            Meaning
    0x00             Font family is unspecified for this font.
    0x01             Roman (Serif).
    0x02             Swiss (Sans-serif).
    0x03             Modern (Monospace).
    0x04             Script (Cursive).
    0x05             Decorative (Fantasy).
2.9.81 FFM
The FFM enumeration specifies the type of font substitution that is needed for the associated text.
Font substitution is needed when certain language characters are not supported by the current font for
the text, so a different font needs to be picked that supports the characters.
                                                                                                                                   301 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                Value        Meaning
ffmUILang 0x02 Substitute a font using the best font for the language of the text.
                                 Substitute a font using the same font that the user interface text is displayed in, if
ffmUIDialog         0x04
                                 appropriate.
2.9.82 FFN
The FFN structure specifies information about a font that is used in the document. This information
MUST be complete for each font. In addition to specifying a specific named font, this information is
intended for the purpose of font substitution when that named font is not available.
                                          1                                            2                                       3
0   1   2   3   4   5    6   7    8   9       1     2   3   4   5     6   7   8    9       1   2   3   4   5   6   7   8   9       1
                                          0                                            0                                       0
ixchSzAlt panose
...
...
...
...
xszAlt (variable)
...
wWeight (2 bytes): A signed integer that specifies the visual weight of the font. This value MUST be
  between 0 and 1000. A value of 700 corresponds to bold text. A value of 400 corresponds to
  normal text.
chs (1 byte): An unsigned integer that specifies the character set that is used by the font. This
   MUST be one of the following values.
Value                   Meaning
0                       ANSI_CHARSET
1                       DEFAULT_CHARSET
2                       SYMBOL_CHARSET
128                     SHIFTJIS_CHARSET
129                     HANGEUL_CHARSET
129                     HANGUL_CHARSET
134                     GB2312_CHARSET
                                                                                                                                       302 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value                   Meaning
136                     CHINESEBIG5_CHARSET
255                     OEM_CHARSET
130                     JOHAB_CHARSET
177                     HEBREW_CHARSET
178                     ARABIC_CHARSET
161                     GREEK_CHARSET
162                     TURKISH_CHARSET
163                     VIETNAMESE_CHARSET
222                     THAI_CHARSET
238                     EASTEUROPE_CHARSET
204                     RUSSIAN_CHARSET
77                      MAC_CHARSET
186                     BALTIC_CHARSET
ixchSzAlt (1 byte): An unsigned integer that specifies the zero-based index into the xszFfn. If
    nonzero, this value specifies the location within xszFfn where xszAlt begins.
panose (10 bytes): A Panose that specifies font attributes for TrueType fonts.
xszFfn (variable): A null-terminated Unicode string that MUST contain the name of the font.
xszAlt (variable): A null-terminated Unicode string that specifies the name of an alternative font,
   intended for font substitution if the font specified by xszFfn is not available. This field, if it exists,
   begins immediately after the terminating null character of xszFfn. If ixchSzAlt is nonzero, this
   string MUST exist, otherwise it MUST NOT exist.
2.9.83 FieldMapBase
The FieldMapBase structure contains a FieldMap which is followed by a marker that specifies where
the FieldMap ends (FieldMapLast). A FieldMapBase MUST correspond with one of 30 standard mail
merge address fields, which are defined for ODSOPropertyBase.OdsoProp when ODSOPropertyBase.id
is equal to 0x0016.
                                         1                                         2                                       3
0   1   2   3   4   5    6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                         0                                       0
FieldMap (variable)
...
FieldMapLast
FieldMap (variable): An array of FieldMapDataItem. Data that specifies the mapping between one of
    30 standard mail merge address fields and a column in the data source.
FieldMapLast (4 bytes): Contains a FieldMapTerminator that specifies that there is no further data
    to read for the current FieldMap.
                                                                                                                                   303 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.84 FieldMapDataItem
The FieldMapDataItem structure contains information about a mail merge field mapping. All
FieldMapDataItems that apply to a particular field mapping are grouped together. When a
FieldMapTerminator is encountered, there is no further data about this field mapping, and any
subsequent FieldMapDataItem structures are associated with subsequent field mappings.
                                         1                                            2                                          3
0   1   2   3   4   5   6    7   8   9        1   2   3   4    5      6   7   8   9       1    2    3   4    5   6   7   8   9       1
                                         0                                            0                                          0
FieldMapDataId cbFieldMapData
Data (variable)
...
FieldMapDataId (2 bytes): An unsigned integer that specifies the type of this FieldMapDataItem.
    This value MUST be 0x0001, 0x0002, 0x0003, or 0x0004.
cbFieldMapData (2 bytes): An unsigned integer that specifies the size, in bytes, of the following
   Data element.
Data (variable): Contains the actual data for this FieldMapDataItem. The meaning of the data
   depends on the preceding FieldMapDataId and is specified as follows.
FieldMapDataId              Data
0x0001                      An unsigned integer that specifies the mail merge field is being mapped to a data
                            source column. This value MUST be 0x00000001.
0x0002                      A Unicode string that specifies the name of the data source column to which this
                            merge field is being mapped. The string is not null-terminated.
0x0003                      A Unicode string that specifies the name of the standard mail merge field to which
                            the data source column is being mapped. The string is not null-terminated. This
                            string MUST be ignored.
0x0004                      An unsigned integer that specifies the zero-based index of the data source column to
                            which this merge field is being mapped. If the value is 0xFFFFFFFF, this
                            FieldMapDataItem MUST be ignored.
2.9.85 FieldMapInfo
The FieldMapInfo structure specifies information about how fields from a mail merge data source are
mapped to standard mail merge address fields, which are defined for ODSOPropertyBase.OdsoProp
when ODSOPropertyBase.id is equal to 0x0016.
                                         1                                            2                                          3
0   1   2   3   4   5   6    7   8   9        1   2   3   4    5      6   7   8   9       1    2    3   4    5   6   7   8   9       1
                                         0                                            0                                          0
countMarker cbCount
cFields
FieldMapListSizeMarker cbFieldMapList
cbFieldMapListOverflow (optional)
FieldMappings (variable)
                                                                                                                                         304 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                               ...
countMarker (2 bytes): An unsigned integer that specifies that the count of FieldMappings
   follows. This value MUST be zero.
cbCount (2 bytes): An unsigned integer that specifies the size, in bytes, of the following mapped
   field count. This value MUST be 0x0004.
cFields (4 bytes): An unsigned integer that specifies the number of elements in the FieldMappings
    array. This value MUST be 30.
FieldMapListSizeMarker (2 bytes): An unsigned integer that specifies that the size of the
    FieldMappings array that follows. This value MUST be 0x0001.
cbFieldMapList (2 bytes): An unsigned integer that specifies the size, in bytes, of the
   FieldMappings array. If the size is greater than 0xFFFE, this value MUST be 0xFFFF.
cbFieldMapListOverflow (4 bytes): An unsigned integer that specifies the size in bytes of the
   FieldMappings array. This value is only present if cbFieldMapList is set to 0xFFFF.
FieldMappings (variable): An array of FieldMapBase. Each FieldMapBase element in this array maps
    a column in the mail merge data source to a corresponding standard mail merge address field.
    There are 30 standard mail merge address fields, which are defined for
    ODSOPropertyBase.OdsoProp when ODSOPropertyBase.id is equal to 0x0016.
2.9.86 FieldMapTerminator
The FieldMapTerminator structure marks the end of the FieldMapDataItem structures that apply
to an element of the FieldMap field of a FieldMapBase.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
FieldMapDataId CbFieldMapData
FieldMapDataId (2 bytes): An unsigned integer that specifies there is no further data to read for
    the current FieldMap. This value MUST be zero.
2.9.87 FilterDataItem
The FilterDataItem structure contains data that is used to filter a list of mail merge recipients.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
cbItem
iColumn
iComparisonOperator
iCondition
                                                                                                                                     305 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                      rgwchFilter (variable)
...
cbItem (4 bytes): An unsigned integer that specifies the size, in bytes, of this FilterDataItem.
iColumn (4 bytes): An unsigned integer that specifies the zero-based index of the database column
    to which this filter applies. This value MUST be greater than or equal to zero and MUST be less
    than or equal to 254.
Value                        Meaning
0x00000000                   Equal.
0x00000001                   Not equal.
0x00000002                   Less than.
0x00000003                   Greater than.
0x00000004                   Less than or equal.
0x00000005                   Greater than or equal.
0x00000006                   Empty.
0x00000007                   Not empty.
iCondition (4 bytes): An unsigned integer that specifies how this comparison is combined with other
   comparisons in the filter. This value MUST be zero (logical AND) or 1 (logical OR).
rgwchFilter (variable): A Unicode string that specifies the value to be used as the basis for the
   comparison. The string is null-terminated and MUST contain no more than 212 characters.
2.9.88 Fld
                                         1                                           2                                       3
0   1   2   3    4   5   6   7   8   9       1   2     3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                           0                                       0
fldch grffld
fldch (1 byte): An fldch whose ch member controls the interpretation of grffld. This value MUST be
    0x13, 0x14, or 0x15.
grffld (1 byte): The meaning of this field is dependent on the value of fldch, as defined following.
fldch.ch Meaning
0x13            grffld is an unsigned integer that indicates the kind of field this was the last time that an
                application parsed it. The values are specified in flt.
                                                                                                                                     306 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.89 fldch
                                           1                                       2                                       3
0   1   2    3    4   5   6   7   8   9        1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                       0                                       0
ch A
ch (5 bits): An unsigned integer whose value MUST be either 0x13, 0x14, or 0x15. This value
    controls the interpretation of the grffld member of the containing Fld.
2.9.90 flt
The flt enumeration is an index to a field type. Most of the field type indices that are listed in the
following table are mapped to entries in [ECMA-376] part 4, section 2.16.5. Values that are not
specified following MUST NOT be used.
0x02         Not Named                    Specifies that the field represents a REF field where the keyword has been
                                          omitted.
                                          The REF field is specified in [ECMA-376] part 4, section 2.16.5.58.
0x05         FTNREF                       This field is identical to NOTEREF specified in [ECMA-376] part 4, section
                                          2.16.5.47.
                                                                                                                                   307 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value    Name                Meaning
0x1A     NUMPAGES            Specified in [ECMA-376] part 4, section 2.16.5.49.
0x24     INCLUDE             This field is identical to INCLUDETEXT specified in [ECMA-376] part 4, section
                             2.16.5.34.
0x2F     GLOSSARY            This field is identical to AUTOTEXT specified in [ECMA-376] part 4, section
                             2.16.5.8.
0x37     IMPORT              Identical to the INCLUDEPICTURE field specified in [ECMA-376] part 4, section
                             2.16.5.33.
0x3A EMBED Specifies that the field represents an embedded OLE object.
                                                                                                       308 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value    Name                Meaning
0x3C     USERNAME            Specified in [ECMA-376] part 4, section 2.16.5.78.
0x51 ADDIN Specifies that the field contains data created by an add-in.
0x5F     SHAPE               This field is identical to QUOTE specified in [ECMA-376] part 4, section
                             2.16.5.56.
2.9.91 FNFB
The FNFB structure describes the file systems for which a given path is valid.
                                                                                                        309 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                            1                                        2                                       3
0   1   2   3   4   5       6   7   8   9       1   2   3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                        0                                       0
A B C D E F G
A - fFAT (1 bit): A bit that specifies whether the path is valid on FAT file systems. If fNonFileSys is
    nonzero, this value MUST be zero.
D - fNTFS (1 bit): A bit that specifies whether the path is valid on NTFS file systems. If
    fNonFileSys is nonzero, this MUST be zero.
E - fNonFileSys (1 bit): A bit that specifies whether the path is not a native file system path. If this
    value is nonzero, the path is not a native file system path, and therefore requires an external file
    I/O protocol. If this value is zero, the path is native and can be used by the native Windows file
    I/O API.
2.9.92 FNIF
The FNIF structure contains information about a file name (see SttbFnm) so that the path, type, and
file system of the file can be determined.
                                            1                                        2                                       3
0   1   2   3   4   5       6   7   8   9       1   2   3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                        0                                       0
unused
fnpi (2 bytes): An FNPI that specifies the type and the identifier of the file name, which is unique
   within the scope of fnpi.fnpt. This is used to define these values, not to reference a file name.
ichRelative (1 byte): An unsigned integer that specifies a character offset into the file name string.
   The segment of the file name string that starts at this character offset specifies the path of the file
   relative to the folder that contains the document. If the file name does not contain such a path,
   this value MUST be 0xFF.
fnfb (1 byte): An FNFB that specifies on what file systems the file name is valid.
2.9.93 FNPI
The FNPI structure contains a type and an identifier for a file name. This structure can be used to
define the type and identifier of a file name in SttbFnm, or it can be used to reference the file name in
SttbFnm that has an identical fnpi in the appended FNIF. The definition of each FNPI specifies how it
is used.
                                                                                                                                     310 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                            1                                       2                                       3
0       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                       0                                       0
fnpt fnpd
fnpt (4 bits): A signed integer that specifies the type of a file name. This MUST be one of the
   following values.
    Value           Meaning
    3               The file name refers to a mail merge data source file. This document MUST be a mail
                    merge document.
    5               The file name refers to a subdocument. This document MUST be a master document.
fnpd (12 bits): A signed integer that specifies an identifier for a file name. This value MUST NOT be
   0xFFF.
2.9.94 FOBJH
The FOBJH structure specifies size and compression information about the OLE object storage that
immediately follows it in the Data stream of a file that is encrypted with Office Binary Document RC4
CryptoAPI Encryption (section 2.2.6.3). Every OLE object storage in the Data stream MUST be
preceded by an FOBJH.
If fCompressed is 1, the bytes of the OLE object storage are compressed by the algorithm specified
in [RFC1950].
                                            1                                       2                                       3
0       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                       0                                       0
cbHeader A unused
cbObj
cbHeader (2 bytes): A signed integer that specifies the size, in bytes, of the FOBJH. This value
   MUST be 8.
A - fCompressed (1 bit): Specifies whether the OLE object storage that follows this FOBJH is
    compressed.
cbObj (4 bytes): A signed integer that specifies the size, in bytes, of the FOBJH and the OLE object
   storage that follows it.
2.9.95 FrameTextFlowOperand
The FrameTextFlowOperand structure specifies the direction of text flow for a frame.
                                            1                                       2                                       3
0       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                       0                                       0
A B C reserved
A - fVertical (1 bit): A bit that specifies that text flows vertically instead of horizontally.
                                                                                                                                    311 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
B - fBackwards (1 bit): A bit that specifies that vertical text flow is from bottom to top. If this bit is
    set, fVertical MUST also be set.
C - fRotateFont (1 bit): A bit that specifies that non-Latin text flow is rotated 90 degrees counter-
    clockwise.
                                                                                                 312 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
reserved (13 bits): This value MUST be zero and MUST be ignored.
2.9.96 FSDAP
The FSDAP structure specifies information about an attribute on a structured document tag in the
document.
                                         1                                          2                                       3
0   1   2   3   4   5    6   7   8   9       1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                          0                                       0
tiq
...
...
tiq (8 bytes): A TIQ that specifies further information about the attribute represented by this FSDAP.
cch (2 bytes): An unsigned integer that specifies the count of characters in rgValue, not including its
   null terminator.
rgValue (variable): A null-terminated sequence of Unicode characters that specifies the value of
   the attribute represented by this FSDAP.
2.9.97 Fsnk
The Fsnk enumeration provides a 32-bit integer that specifies what kind of DofrFsn a record is. A
field of this type MUST contain one of the following values.
                                         A record that has this fsnk value applies to the most recent DofrFsn record with
                                         fsnk equal to fsnkFrame, unless it appears before the first DofrFsn record with
fsnkFrameset            0x00000001
                                         fsnk equal to fsnkFrame, in which case it applies to the outermost frame. This
                                         record type supplies more details about how that frame handles its child frames.
                                         This record contains basic specifications for a frame. Records that have this fsnk
fsnkFrame               0x00000002
                                         value MUST appear before any other records that describe that frame.
2.9.98 Fssd
The Fssd structure specifies the position and units of a frame divider position.
                                         1                                          2                                       3
0   1   2   3   4   5    6   7   8   9       1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                          0                                       0
Units
Val
                                                                                                                                    313 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Val (4 bytes): The position of the divider. This value can be interpreted in several ways, as specified
    by Units. If Units is set to iFssUnitsNil, this value MUST be ignored.
2.9.99 FssUnits
The FssUnits enumerated type specifies the units in an Fssd. A field of this type MUST contain one of
the following values.
iFssUnitsPct 0x00000002 The value is a percentage of the size of the parent frame.
                              The value is a relative position. The actual position is a fraction of the parent
iFssUnitsRel   0x00000003     frame size with this value as the numerator and the sum of all relative sizes for
                              this row or column as the denominator.
                                                                                                         314 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.100               FTO
The FTO enumerated type identifies the feature that is responsible to create a given smart tag in a
document.
2.9.101 Fts
The Fts enumeration specifies how the preferred width for a table, table indent, table cell, cell
margin, or cell spacing is defined. Any Table SPRM that specifies a preferred table width, table
indent, cell width, cell margin, or cell spacing MUST also specify an Fts value to determine how the
size is defined. Some Fts values are disallowed for some Sprms.
ftsAuto          0x01        The width is derived from other table measurements where a preferred size is specified, as
                             well as from the size of the table contents, and the constraining size of the container of
                             the table.
                             The preferred width is measured in units of 1/50th of a percent (that is, a value of 50
                             translates to 1 percent).
                             When specifying the preferred width of a portion of a table, such as a cell, spacing or
                             indent, the percentage is relative to the width of the entire table.
ftsPercent       0x02
                             When specifying the preferred width of an entire table, the percentage is relative to the
                             width of the page, less any margin or gutter space. Alternatively, if the table is nested
                             inside another table, the percentage is relative to the width of the cell in the containing
                             table, less cell margins.
                             The preferred width of the table, indent, cell, cell margin, or cell spacing is an absolute
ftsDxa           0x03
                             width measured in twips.
                             The preferred cell spacing is an absolute width measured in twips. ftsDxaSys is used when
ftsDxaSys        0x13
                             cell spacing is applied as a result of applying a table border.
2.9.102 FtsWWidth_Indent
The FtsWWidth_Indent structure specifies the preferred width of indentation for a table.
                                         1                                        2                                       3
0   1    2   3   4   5   6   7   8   9       1   2   3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                        0                                       0
ftsWidth wWidth
ftsWidth (1 byte): A value from the Fts enumeration that specifies the units of measurement for
   the wWidth value. ftsWidth MUST NOT be ftsPercent. ftsWidth MUST NOT be ftsDxaSys.
wWidth (2 bytes): An integer that specifies the preferred size of the indent. The size is evaluated
  differently depending on the value of ftsWidth.
                                                                                                                                  315 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
ftsWidth value                   wWidth meaning
ftsNil                           wWidth is not used and MUST be zero.
ftsAuto                          wWidth is not used and MUST be zero.
ftsPercent                       This value of ftsWidth is not allowed.
ftsDxa                           wWidth is measured in twips. It MUST be greater than or equal to -31,560 (-21
                                 11
                                   /12 inches). It MUST be less than or equal to 31,680 (22 inches), less the width
                                 of the table. That is, the logical right edge of the table, calculated as the sum of
                                 this indentation and the width of the table (or the sum of the widths of the cells),
                                 MUST be less than or equal to 31,680 (22 inches).
2.9.103 FtsWWidth_Table
                                            1                                        2                                       3
0   1    2   3   4   5   6   7     8   9        1   2   3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                        0                                       0
ftsWidth wWidth
ftsWidth (1 byte): A value from the Fts enumeration that specifies the units of measurement for
   the wWidth value. The ftsWidth value MUST NOT be ftsDxaSys.
wWidth (2 bytes): An integer that specifies the preferred width. The size is evaluated differently
  depending on the value of ftsWidth.
2.9.104 FtsWWidth_TablePart
The FtsWWidth_TablePart structure specifies the preferred horizontal width of an internal part of a
table.
                                            1                                        2                                       3
0   1    2   3   4   5   6   7     8   9        1   2   3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                        0                                       0
ftsWidth wWidth
ftsWidth (1 byte): A value from the Fts enumeration that specifies the units of measurement for the
   wWidth value. The ftsWidth value MUST NOT be ftsDxaSys.
wWidth (2 bytes): An integer that specifies the preferred width. The size is evaluated differently
  depending on the value of ftsWidth.
                                                                                                                                     316 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.105             FTXBXNonReusable
The FTXBXNonReusable structure is used within the FTXBXS structure when that structure
describes a real textbox. A real textbox is any shape object into which text is added, and that is the
first or only shape in a linked chain.
                                          1                                          2                                         3
0   1   2   3   4   5   6   7     8   9       1   2   3   4   5      6   7   8   9       1   2   3     4   5   6   7   8   9       1
                                          0                                          0                                         0
cTxbx
cTxbxEdit
cTxbx (4 bytes): An integer that specifies how many shapes are in the chain into which the textbox
   text can flow. This number MUST be greater than zero and MUST match the length of the chain
   starting with the shape that is identified by the lid field in the FTXBXS structure and continuing
   through each linked shape.
2.9.106 FTXBXS
The FTXBXS structure is used by PlcftxbxTxt and by PlcfHdrtxbxTxt to associate ranges of text from
the Textboxes Document and the Header Textboxes Document, respectively, with shape objects. In
addition to the actual textboxes, there are 1 or more extra FTXBXS structures that can be reused by
the application when creating new actual textboxes. The last FTXBXS in the PLC MUST be a reusable
structure rather than an actual textbox. Additional reusable FTXBXS structures can occur at any index
in the PLC.
                                          1                                          2                                         3
0   1   2   3   4   5   6   7     8   9       1   2   3   4   5      6   7   8   9       1   2   3     4   5   6   7   8   9       1
                                          0                                          0                                         0
ftxbxsunion
...
fReusable itxbxsDest
... lid
... txidUndo
...
fReusable (2 bytes): An integer that specifies whether this structure describes an actual textbox or
   an extra structure that is available for reuse by the application. fReusable MUST be either zero
   ("false"), or it MUST have the 0x0001 bit set. When nonzero ("true"), bits other than 0x0001
   MUST be ignored.
                                                                                                                                       317 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    When fReusable is zero, this FTXBXS structure describes an actual textbox. The bounding CPs in
    PlcftxbxTxt or PlcfHdrtxbxTxt MUST be more than one character position apart, except when this is
    the last FTXBXS structure in the PLC. In that case there is no restriction on the character range
    specified by the bounding CPs in PlcftxbxTxt or PlcfHdrtxbxTxt. Text within this CP range MUST be
    ignored.
    When fReusable is nonzero, this FTXBXS structure describes a reusable spare textbox structure.
    The bounding CPs in PlcftxbxTxt or PlcfHdrtxbxTxt MUST be one character position apart. When
    this is the last FTXBXS structure in the PLC, fReusable MUST be ignored and treated as if it were
    set to 0x0001 for the purposes of ftxbxsunion and lid.
lid (4 bytes): An integer that specifies which shape object the textbox text begins in. When
     fReusable is "true", lid MUST be zero and MUST be ignored.
    When fReusable is "false", lid MUST match the OfficeArtFSP.spid shape identifier in an
    OfficeArtSpContainer structure as specified by [MS-ODRAW] section 2.2.14. Furthermore, the
    MSOPSText_lTxid property of the OfficeArtSpContainer, as specified in [MS-ODRAW] section
    2.3.21.1, MUST be a 4-byte integer where the high 2 bytes divided by 0x10000 gives the 1-based
    index of this FTXBXS structure in its PLC, and where the low 2 bytes are 0x0000.
2.9.107 FTXBXSReusable
The FTXBXSReusable structure is used within the FTXBXS structure when it describes a spare
structure that can be reused by the application and converted into an actual textbox. An FTXBXS
structure can become reusable when the shape is deleted or linked after another shape in a chain.
Additionally, the final FTXBXS structure in a PLC is reusable. All reusable FTXBXS structures in a
PLC are part of a single chain, with the last FTXBXS structure in a PLC being the first item in the
chain.
                                        1                                       2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                       0                                       0
iNextReuse
cReusable
iNextReuse (4 bytes): An integer that specifies the index of the next reusable item in the chain. If
   this is the last FTXBXS structure in the chain, this value MUST be -1. Otherwise, this value MUST
   be non-negative, and MUST be less than the number of FTXBXS structures in the PLC.
   Furthermore, the FTXBXS structure at that index MUST be flagged as reusable, and MUST have a
   cReusable value that is 1 less than the cReusable value from this structure.
cReusable (4 bytes): An integer that specifies how many reusable FTXBXS structures are in the
   chain after this one. If this is the last FTXBXS structure in the chain, this value MUST be zero.
   Otherwise, it MUST be greater than zero, and MUST be less than the number of FTXBXS
   structures in the PLC.
2.9.108 GOSL
The GOSL structure specifies the option set for a grammar checker implementing the CGAPI
interface, as well as information to identify the corresponding grammar checker.
                                                                                                                                318 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                         1                                       2                                         3
0   1   2   3   4   5    6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3     4   5   6   7   8   9       1
                                         0                                       0                                         0
gos lid
ver geid
gos (2 bytes): An unsigned integer that specifies a CGAPI option set. gos is implementation-specific
   to the grammar checker identified by lid, ver, and ceid. By default, the value is 0x0001.
lid (2 bytes): A LID that specifies the language of the associated grammar checker.
ver (2 bytes): An unsigned integer that is the version number of the associated grammar checker, as
    it is specified through CGAPI.
geid (2 bytes): An unsigned integer that is the company identifier of the associated grammar
   checker, as it is specified through CGAPI.
2.9.109 GrammarSpls
The GrammarSpls structure is an SPLS structure that specifies the state of the grammar checker
over a range of text. Some states that are possible in a generic SPLS are not allowed in a
GrammarSpls structure.
                                         1                                       2                                         3
0   1   2   3   4   5    6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3     4   5   6   7   8   9       1
                                         0                                       0                                         0
spls
spls (2 bytes): An SPLS structure. The spls.fExtend field MUST be zero if the spls.fError field is
    zero. The spls.splf field MUST be one of the following:
§ splfMaybeDirty
§ splfDirty
§ splfEdit
§ splfForeign
§ splfClean
§ splfErrorMin
§ splfRepeatWord
§ splfUnknownWord
2.9.110 grffldEnd
                                         1                                       2                                         3
0   1   2   3   4   5    6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3     4   5   6   7   8   9       1
                                         0                                       0                                         0
A B C D E F G H
                                                                                                                                   319 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
A - fDiffer (1 bit): If this bit is set, the field shows results if the document-level setting is to show
    field instructions, and shows instructions if the document-level setting is to show field results.
B - fZombieEmbed (1 bit): If this bit is set, the field result contains an OLE object, but the field
    type is not able to generate OLE objects.
C - fResultsDirty (1 bit): If this bit is set, the field results were either edited or formatted since the
    last time that an application calculated the field.
D - fResultsEdited (1 bit): If this bit is set, the field results were edited since the last time that an
    application calculated the field.
E - fLocked (1 bit): If this bit is set, this field does not recalculate.
F - fPrivateResult (1 bit): If this bit is set, the field result is not intended to be visible to the user.
G - fNested (1 bit): This bit MUST be set if this field is contained in another field.
H - fHasSep (1 bit): This bit MUST be set if this field has a separator.
2.9.111 grfhic
The grfhic structure is a set of HTML incompatibility flags that specify the HTML incompatibilities of a
list structure. The values specify possible incompatibilities between an LVL or LVLF and HTML lists. The
values do not define list properties.
                                         1                                       2                                       3
0   1   2   3   4   5    6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                       0                                       0
A B C D E F G H
A - fhicChecked (1 bit): A bit that specifies whether the list structure that contains this grfhic
    structure is checked for HTML incompatibilities.
B - fhicFormat (1 bit): A bit that specifies whether the numbering sequence or format of an LVL is
unsupported by HTML at the time of the most recent HTML compatibility check. The numbering
sequence or format of an LVL is unsupported by HTML if one or more of the following conditions are
"true".
§ LVL.lvlf.fLegal is nonzero
§ LVL.lvlf.fNoRestart is nonzero
§ LVL.lvlf.ixchFollow is nonzero
    If fhicChecked is zero, this MUST be ignored. If the structure that contains this grfhic is not an
    LVLF, this MUST be ignored.
C - fhicListText (1 bit): A bit that specifies whether the string specified by LVL.xst was not of the
    standard form "#." (a level number placeholder followed by a period) at the time of the most
    recent HTML compatibility check. If fhicChecked is zero, this MUST be ignored. If the structure
    that contains this grfhic is not an LVLF, this MUST be ignored.
D - fhicPeriod (1 bit): A bit that specifies whether something other than a period was the last
    character of the number text specified by LVL.xst at the time of the most recent HTML
                                                                                                                                 320 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    compatibility check. If fhicChecked is zero, this MUST be ignored. If the structure that contains
    this grfhic is not an LVLF, this MUST be ignored.
E - fhicLeft1 (1 bit): A bit that specifies whether the indents specified by LVL.grpprlPapx were
    different than the standard HTML indents at the time of the most recent HTML compatibility check.
    The indents that are specified by LVL.grpprlPapx are different than the standard HTML indents if
    one or more of the conditions in the following list are "true":
§   The logical left indent of the first line of the paragraph properties that are specified by
    LVL.grpprlPapx (see sprmPDxaLeft1) is not equal to -360.
§   The logical left indent of the paragraph properties that are specified by LVL.grpprlPapx (see
    sprmPDxaLeft) is not equal to 720 * (iLvl + 1), where iLvl is the zero-based level of the list that
    LVL corresponds to.
    If fhicChecked is zero, this MUST be ignored. If the structure that contains this grfhic is not a
    LVLF, this MUST be ignored.
F - fhicListTab (1 bit): A bit that specifies whether the first added custom tab stop of the paragraph
    properties specified by LVL.grpprlPapx (see sprmPChgTabs and sprmPChgTabsPapx) was not
    equal to the logical left indent of the paragraph properties specified by LVL.grpprlPapx (see
    sprmPDxaLeft) at the time of the most recent HTML compatibility check. If LVL.grpprlPapx does
    not add any custom tabs, this MUST be zero. If fhicChecked is zero, this MUST be ignored. If the
    structure that contains this grfhic is not an LVLF, this MUST be ignored.
H - fhicBullet (1 bit): A bit that specifies whether the level used bullets instead of numbers at the
    time of the most recent HTML compatibility check. A level uses bullets if LVL.lvlf.nfc is equal to
    0x17. If fhicChecked is zero, this MUST be ignored. If the structure that contains this grfhic is
    not an LVLF, this MUST be ignored.
2.9.112 GRFSTD
                                         1                                       2                                       3
0   1   2   3   4   5    6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                       0                                       0
A B C D E F G H I J K L M N
A - fAutoRedef (1 bit): Specifies whether user formatting modifications are automatically merged
    into the paragraph style definition, as specified in [ECMA-376] part 4, section 2.7.3.2
    (autoRedefine).
B - fHidden (1 bit): Specifies whether this style is not shown in the application UI, as specified in
    [ECMA-376] part 4, section 2.7.3.4 (hidden).
D - fCopyLang (1 bit): If f97LidsSet is 1, this value specifies whether the applied compatibility
    sprmCRgLid0_80 or sprmCRgLid1_80 specified an actual language or a special LID value (0x0400)
    signifying that no proofing is needed for the text. This MUST be ignored if f97LidsSet is 0.
                                                                                                                                 321 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
E - fPersonalCompose (1 bit): Specifies whether this character style can be used to automatically
    format the new message text in a new e-mail, as specified in [ECMA-376] part 4, section 2.7.3.12
    (personalCompose). This MUST be ignored if this is not a character style.
F - fPersonalReply (1 bit): Specifies whether this character style can be used to automatically
    format the new message text when replying to an e-mail, as specified in [ECMA-376] part 4,
    section 2.7.3.13 (personalReply). This MUST be ignored if this is not a character style.
G - fPersonal (1 bit): Specifies whether this character style was applied to format all message text
    from one or more users in an e-mail, as specified in [ECMA-376] part 4, section 2.7.3.11
    (personal). This MUST be ignored if this is not a character style.
I - fSemiHidden (1 bit): Specifies whether this style is not shown in the simplified main styles UI of
     the application, as specified in [ECMA-376] part 4, section 2.7.3.16 (semiHidden).
J - fLocked (1 bit): Specifies whether this style is prevented from being applied by using the
     application UI, as specified in [ECMA-376] part 4, section 2.7.3.7 (locked).
M - fQFormat (1 bit): Specifies whether this style is shown in the Ribbon Style gallery, as specified
    in [ECMA-376] part 4, section 2.7.3.14 (qFormat).
2.9.113 GrLPUpxSw
The GrLPUpxSw structure is an array of variable-size structures that specify the formatting of the
style.
The content of the GrLPUpxSw structure depends on the type of the style (the stk member of
StdfBase); see the following.
Value Meaning
2.9.114 GrpPrlAndIstd
The GrpPrlAndIstd structure specifies the style and properties that are applied to a paragraph, a
table row, or a table cell.
                                          1                                         2                                       3
0   1     2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                         0                                       0
...
                                                                                                                                    322 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
istd (2 bytes): An integer that specifies the style that is applied to this paragraph, cell marker or
    table row marker. See Applying Properties for more details about how to interpret this value.
grpprl (variable): An array of Prl elements. Specifies the properties of this paragraph, table row, or
   table cell. This array MUST contain a whole number of Prl elements.
                                                                                                323 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.115               HFD
The HFD structure specifies hyperlink field data including how to handle the hyperlink when it is
traversed and a location in this document or an external document or webpage.
                                          1                                          2                                       3
0   1   2   3     4   5   6   7   8   9       1   2   3   4   5     6    7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                          0                                       0
...
...
...
bits (1 byte): An HFDBits that specifies how to handle the hyperlink when it is traversed.
clsid (16 bytes): A CLSID that specifies the COM component that is used to create the hyperlink.
hyperlink (variable): A Hyperlink Object as specified in [MS-OSHARED] section 2.3.7.1. This object
   specifies a location in this document or an external document or webpage.
2.9.116 HFDBits
                                          1                                          2                                       3
0   1   2   3     4   5   6   7   8   9       1   2   3   4   5     6    7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                          0                                       0
A B C D E F
A - fNew (1 bit): A bit that specifies if the hyperlink is to be opened in a new window.
B - fNoHist (1 bit): A bit that specifies if the navigation history is preserved when traversing this
    hyperlink. This value is 1 if the navigation history is not preserved and 0 if the navigation history
    is preserved.
C - fImageMap (1 bit): A bit that specifies if the hyperlink is a location in an HTML image map.
D - fLocation (1 bit): A bit that specifies if the hyperlink contains a specific location in the target
    document.
E - fTooltip (1 bit): A bit that specifies if the hyperlink contains a ScreenTip string.
                                                                                                                                     324 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.117               Hplxsdr
The Hplxsdr structure contains the schema definition references of the document. Each individual
reference consists of a Uniform Resource Identifier (URI), manifest location, table of elements,
and table of attributes.
                                         1                                           2                                       3
0   1   2   3   4    5   6   7   8   9        1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                           0                                       0
cXSDR
rgxsdr (variable)
...
cXSDR (4 bytes): A signed integer that specifies the number of schema definition references. The
   minimum value is 0.
2.9.118 HresiOperand
                                         1                                           2                                       3
0   1   2   3   4    5   6   7   8   9        1   2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                           0                                       0
Hres ChHres
Hres (1 byte): An unsigned integer that specifies the word-breaking method. This property MUST
   specify one of the following values. By default, normal word-breaking is used.
ChHres (1 byte): An unsigned integer that specifies the ASCII character to be added to the text in
   addition to the hyphen. If Hres is set to hresNormal, ChHres MUST be 0x00; otherwise it MUST
   be a valid character.
2.9.119 Ico
The Ico structure specifies an entry in the color palette that is listed in the following table.
                                                                                                                                     325 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          1                                        2                                       3
0   1   2   3   4   5    6    7   8   9       1   2   3   4   5   6   7    8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                        0                                       0
value
value (1 byte): An unsigned integer which maps to a COLORREF according to the following. The
   value MUST be less than 0x11.
                                                                          COLORREF
Value                        Red                      Green                    Blue                        fAuto
0x00                         0x00                     0x00                     0x00                        0xFF
0x01                         0x00                     0x00                     0x00                        0x00
0x02                         0x00                     0x00                     0xFF                        0x00
0x03                         0x00                     0xFF                     0xFF                        0x00
0x04                         0x00                     0xFF                     0x00                        0x00
0x05                         0xFF                     0x00                     0xFF                        0x00
0x06                         0xFF                     0x00                     0x00                        0x00
0x07                         0xFF                     0xFF                     0x00                        0x00
0x08                         0xFF                     0xFF                     0xFF                        0x00
0x09                         0x00                     0x00                     0x80                        0x00
0x0A                         0x00                     0x80                     0x80                        0x00
0x0B                         0x00                     0x80                     0x00                        0x00
0x0C                         0x80                     0x00                     0x80                        0x00
0x0D                         0x80                     0x00                     0x80                        0x00
0x0E                         0x80                     0x80                     0x00                        0x00
0x0F                         0x80                     0x80                     0x80                        0x00
0x10                         0xC0                     0xC0                     0xC0                        0x00
2.9.120 IDPCI
The IDPCI structure specifies the kind of formatting that the format consistency checker flagged
within a region of text in the document. The possible values are showing following.
idpciStyTable 0x00000006 Table style in the region is identical to a table style elsewhere in the document.
idpciRevTable 0x00000009 (Revised Table) Tables in the region were changed while revision marking was
                                                                                                                                   326 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name             Value          Meaning
on.
                                (Revised Section) Sections in the region were changed while revision marking
idpciRevSect     0x0000000A
                                was on.
                                A picture defined inline in the region has been combined, to save space, with an
idpciImage       0x0000000B
                                identical picture defined elsewhere in the document.
2.9.121 Ipat
The Ipat enumeration is an index to a shading pattern. Most pattern indices listed in the following
table are mapped to entries of ST_Shd, as specified in [ECMA-376] part 4, section 2.18.85 ST_Shd
(Shading Patterns). All pattern indices that are not mapped to an ST_Shd value are not supported by
the [ECMA-376] format and are lost if converted from the MS-DOC format to the [ECMA-376] format;
these pattern values SHOULD NOT<226> be used.
                                                                                                        327 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                Value     Meaning
                              Specifies that the pattern used for the current shaded region shall be a 2.5% fill
                              pattern, as follows:
ipatPctNew2 0x0023
                              Specifies that the pattern used for the current shaded region shall be a 7.5% fill
                              pattern, as follows:
ipatPctNew7 0x0024
                              Specifies that the pattern used for the current shaded region shall be a 17.5% fill
                              pattern, as follows:
ipatPctNew17 0x0027
                              Specifies that the pattern used for the current shaded region shall be a 22.5% fill
                              pattern, as follows:
ipatPctNew22 0x0028
                              Specifies that the pattern used for the current shaded region shall be a 27.5% fill
                              pattern, as follows:
ipatPctNew27 0x0029
                              Specifies that the pattern used for the current shaded region shall be a 32.5% fill
                              pattern, as follows:
ipatPctNew32 0x002A
ipatPctNew42        0x002D    Specifies that the pattern used for the current shaded region shall be a 42.5% fill
                              pattern, as follows:
                                                                                                         328 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                Value     Meaning
                              Specifies that the pattern used for the current shaded region shall be a 47.5% fill
                              pattern, as follows:
ipatPctNew47 0x002F
                              Specifies that the pattern used for the current shaded region shall be a 52.5% fill
                              pattern, as follows:
ipatPctNew52 0x0030
                              Specifies that the pattern used for the current shaded region shall be a 57.5% fill
                              pattern, as follows:
ipatPctNew57 0x0032
                              Specifies that the pattern used for the current shaded region shall be a 67.5% fill
                              pattern, as follows:
ipatPctNew67 0x0035
                              Specifies that the pattern used for the current shaded region shall be a 72.5% fill
                              pattern, as follows:
ipatPctNew72 0x0036
ipatPctNew77        0x0037    Specifies that the pattern used for the current shaded region shall be a 77.5% fill
                              pattern, as follows:
                                                                                                         329 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                  Value     Meaning
                                Specifies that the pattern used for the current shaded region shall be an 82.5%
                                fill pattern, as follows:
ipatPctNew82 0x0038
                                Specifies that the pattern used for the current shaded region shall be a 92.5% fill
                                pattern, as follows:
ipatPctNew92 0x003B
                                Specifies that the pattern used for the current shaded region shall be a 97.5% fill
                                pattern, as follows:
ipatPctNew97 0x003D
2.9.122 IScrollType
The IScrollType enumerated type specifies the scrollbar behavior for a frame. A field of this type
MUST contain one of the following values.
2.9.123 ItcFirstLim
The ItcFirstLim structure specifies a range of cells in a table row. The range is inclusive of the first
index, and exclusive of the second. The first cell in a row is at index 0. The maximum number of cells
in a row is 63.
                                                                                                           330 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                            1                                        2                                       3
0   1    2    3   4     5   6   7   8   9       1   2    3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                        0                                       0
itcFirst itcLim
itcFirst (8 bits): An integer value that specifies the index of the first cell in a contiguous range. The
    cell at this index is inside the range. This value MUST be non-negative and MUST be less than the
    number of cells in the row.
itcLim (8 bits): An integer value that specifies the index of the first cell beyond the contiguous
    range. The cell at this index is outside the range. This value MUST be greater than or equal to
    itcFirst and MUST be less than or equal to the number of cells in the row. When itcLim is equal
    to itcFirst, the range contains zero cells.
2.9.124 Kcm
The Kcm structure specifies a shortcut key combination through a virtual key code and modifiers.
kt                param
ktCid             A Cid that specifies a command to be executed.
ktChar            A 4-byte unsigned integer that specifies a single character to be inserted. This value MUST be
                  between 0 and 65535.
ktMask            This MUST be ignored.
                                                                                                                                     331 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name        Value       Meaning
ktMask 0x0003 Perform the default action (as if the key combination is unassigned).
2.9.127 Kul
2.9.128 LadSpls
The LadSpls structure is an SPLS structure that specifies the state of the language auto-detection
over a range of text. Some states that are possible in a generic SPLS are not allowed in a LadSpls
structure.
                                        1                                        2                                       3
0   1   2   3   4   5   6   7   8   9        1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                        0                                       0
spls
spls (2 bytes): An SPLS structure. The spls.fExtend and spls.fTypo fields are not used and MUST
    be zero. The spls.splf field MUST be one of the following:
§ splfMaybeDirty
§ splfDirty
                                                                                                                                 332 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§     splfEdit
§ splfForeign
§ splfClean
§ splfNoLAD
2.9.129 LBCOperand
The LBCOperand enumeration specifies where text continues after a line break. When a line is
shortened or broken into multiple text regions by the presence of a picture, shape, or another object,
the operand specifies the location at which the text continues. If a line is not broken by an object, the
following values have no effect and the text simply continues on the next line.
                          Text continues in the next available region of the current line, in logical reading order, or on
lbrNone          0x00
                          the next line if no more regions are left.
                          If the line break is located to the logical left of the object, text restarts in the next
                          available region of the current line, in logical reading order, or on the next line if no
                          more regions are left.
lbrLeft          0x01
                          If the line break is located to the logical right of the object, text restarts on the next
                          available line that is not broken by an object. In this case, the use of this value has
                          the same result as the use of the value lbrBoth.
                          If the line break is located to the logical right of the object, text restarts in the next
                          available region of the current line, in logical reading order, or on the next line if no
                          more regions are left.
lbrRight         0x02
                          If the line break is located to the logical left of the object, text restarts on the next
                          available line that is not broken by an object. In this case, the use of this value has
                          the same result as the use of the value lbrBoth.
                          Text restarts on the next available line that is not broken by the presence of a picture,
lbrBoth          0x03
                          shape, or another object.
2.9.130 LEGOXTR_V11
                                          1                                       2                                       3
0    1   2   3    4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                       0                                       0
flego (1 byte): An unsigned integer that specifies the type of an AutoText item. This MUST be one of
    the following values.
    Value         Meaning
    0x00          The item is a named AutoText item.
    0x0A          The item is a formatted text AutoCorrect item.
                                                                                                                                  333 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
ibst (2 bytes): A signed integer that specifies a zero-based index into SttbGlsyStyle. The string at
    this index is the name of the style that is used by the AutoText item. If this integer is equal to
    0xFFFF, there is no style used by the AutoText item. If flego is nonzero, this MUST be equal to
    0xFFFF.
2.9.131 LFO
The LFO structure specifies the LSTF element that corresponds to a list that contains a paragraph. An
LFO can also specify formatting information that overrides the LSTF element to which it corresponds.
                                          1                                       2                                          3
0   1   2    3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9        1   2   3   4   5   6    7   8    9       1
                                          0                                       0                                          0
lsid
unused1
unused2
lsid (4 bytes): A signed integer that specifies the list identifier of an LSTF. This LFO corresponds to
    the LSTF in PlfLst.rgLstf that has an lsid whose value is equal to this value.
clfolvl (1 byte): An unsigned integer that specifies the count of LFOLVL elements that are stored in
    the rgLfoLvl field of the LFOData element that corresponds to this LFO structure.
ibstFltAutoNum (1 byte): An unsigned integer that specifies the field that this LFO represents.
    This MUST be one of the following values.
Value Meaning
0x00 This LFO is not used for any field. The fAutoNum of the related LSTF MUST be set to 0.
0xFC          This LFO is used for the AUTONUMLGL field (see AUTONUMLGL in flt). The fAutoNum of the
              related LSTF MUST be set to 1.
0xFD          This LFO is used for the AUTONUMOUT field (see AUTONUMOUT in flt). The fAutoNum of
              the related LSTF MUST be set to 1.
0xFE          This LFO is used for the AUTONUM field (see AUTONUM in flt). The fAutoNum of the related
              LSTF MUST be set to 1.
0xFF This LFO is not used for any field. The fAutoNum of the related LSTF MUST be set to 0.
                                                                                                                                     334 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.132         LFOData
The LFOData structure contains the Main Document CP of the corresponding LFO, as well as an array
of LVL override data.
                                                                                         335 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cp (4 bytes): A CP that specifies the position of the first paragraph in the Main Document whose
iLfo property (see sprmPIlfo) specifies the corresponding LFO. If this is equal to 0xFFFFFFFF, this
MUST be ignored.
rgLfoLvl (variable): An array of LFOLVL. The cLfolvl field of the corresponding LFO specifies the
count of elements in this array.
2.9.133 LFOLVL
The LFOLVL structure contains information that is used to override the formatting information of a
corresponding LVL.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9        1   2   3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
iStartAt
lvl (variable)
...
iStartAt (4 bytes): If fStartAt is set to 0x1, this is a signed integer that specifies the start-at value
    that overrides lvlf.iStartAt of the corresponding LVL. This value MUST be less than or equal to
    0x7FFF and MUST be greater than or equal to zero. If both fStartAt and fFormatting are set to
    0x1, or if fStartAt is set to 0x0, this value is undefined and MUST be ignored.
iLvl (4 bits): An unsigned integer that specifies the zero-based level of the list that this overrides.
    This LFOLVL overrides the LVL that specifies the level formatting of this level of the LSTF that is
    specified by the lsid field of the LFO to which this LFOLVL corresponds. This value MUST be less
    than or equal to 0x08.
A - fStartAt (1 bit): A bit that specifies whether this LFOLVL overrides the start-at value of the level.
B - fFormatting (1 bit): A bit that specifies whether lvl is an LVL that overrides the corresponding
    LVL.
grfhic (8 bits): A grfhic that specifies the HTML incompatibilities of the overriding level formatting.
lvl (variable): If fFormatting is set to 0x1, this is an LVL that completely overrides the LVL to which
     this LFOLVL corresponds. If fFormatting is not set to 0x1, this does not exist.
2.9.134 LID
The LID structure is an unsigned 16-bit integer that specifies a language code, as specified in [ECMA-
376] part 4, section 2.18.52 ST_LangCode (Two Digit Hexadecimal Language Code).
2.9.135 LPStd
                                                                                                                                     336 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          1                                         2                                          3
0   1   2   3   4   5   6    7   8    9       1   2   3   4   5     6   7   8   9       1     2   3   4   5    6   7   8   9       1
                                          0                                         0                                          0
...
cbStd (2 bytes): A signed integer that specifies the size, in bytes, of std. This value MUST NOT be
   less than 0. LPStd structures are stored on even-byte boundaries, but this length MUST NOT
   include this padding.
2.9.136 LPStshi
                                          1                                         2                                          3
0   1   2   3   4   5   6    7   8    9       1   2   3   4   5     6   7   8   9       1     2   3   4   5    6   7   8   9       1
                                          0                                         0                                          0
...
cbStshi (2 bytes): An unsigned integer that specifies the size, in bytes, of stshi.
2.9.137 LPStshiGrpPrl
                                          1                                         2                                          3
0   1   2   3   4   5   6    7   8    9       1   2   3   4   5     6   7   8   9       1     2   3   4   5    6   7   8   9       1
                                          0                                         0                                          0
cbGrpprl
grpprl (variable)
...
cbGrpprl (4 bytes): A signed 32-bit integer that specifies the size, in bytes, of grpprl.
2.9.138 LPUpxChpx
The LPUpxChpx structure specifies character formatting properties. This structure is padded to an
even length, but the length in cbUpx MUST NOT include this padding.
                                                                                                                                       337 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
...
cbUpx (2 bytes): An unsigned integer that specifies the size, in bytes, of CHPX. This value does not
   include the padding.
2.9.139 LPUpxChpxRM
The LPUpxChpxRM structure that specifies character formatting properties for revision-marked style
formatting.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
...
cbUpx (2 bytes): An unsigned integer that specifies the length, in bytes, of CHPX. This value MUST
   not include padding.
2.9.140 LPUpxPapx
The structure is padded to an even length, but the length in cbUpx MUST NOT include this padding.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
...
cbUpx (2 bytes): An unsigned integer that specifies the size, in bytes, of PAPX, not including the
   (potential) padding.
2.9.141 LPUpxPapxRM
The LPUpxPapxRM structure specifies the paragraph formatting properties that are used for revision-
marked style formatting.
                                                                                                                                  338 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
The structure is padded to be an even length, but the length in cbUpx MUST NOT include this
padding.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
...
cbUpx (2 bytes): An unsigned 16-bit integer that specifies the size, in bytes, of PAPX. This value
   does not include any specified padding.
2.9.142 LPUpxRm
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
cbUpx RM
...
cbUpx (2 bytes): An unsigned 16-bit integer that specifies the size, in bytes, of RM. This value MUST
   be 0x0006.
2.9.143 LPUpxTapx
The LPUpxTapx structure specifies table formatting properties. This structure is padded to an even
length, but the length in cbUpx MUST NOT include this padding.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
...
cbUpx (2 bytes): An unsigned integer that specifies the size, in bytes, of TAPX. This value does not
   include padding.
2.9.144 LPXCharBuffer9
The LPXCharBuffer9 structure is a length-prefixed buffer for up to 9 Unicode characters. The text is
not null-terminated.
                                                                                                                                  339 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                           1                                           2                                        3
0   1   2   3   4   5   6    7   8     9         1   2   3   4   5     6   7   8   9       1    2   3   4   5   6   7   8   9       1
                                           0                                           0                                        0
...
...
...
cch (2 bytes): An unsigned integer that specifies the number of characters from the buffer that are
   actually used. This value MUST be less than or equal to 9.
xcharArray (18 bytes): An array of 16-bit Unicode characters. The first cch characters make a
   Unicode string. The remaining characters MUST be ignored.
2.9.145 LSD
The LSD structure specifies the properties to be used for latent application-defined styles (see
StshiLsd) when they are created.
                                           1                                           2                                        3
0   1   2   3   4   5   6    7   8     9         1   2   3   4   5     6   7   8   9       1    2   3   4   5   6   7   8   9       1
                                           0                                           0                                        0
A B C D iPriority fReserved
A - fLocked (1 bit): Specifies the value that the fLocked field of GRFSTD is set to when this latent
    style is instantiated.
B - fSemiHidden (1 bit): Specifies the value that the fSemiHidden field of GRFSTD is set to when
    this latent style is instantiated.
C - fUnhideWhenUsed (1 bit): Specifies the value that the fUnhideWhenUsed field of GRFSTD is
    set to when this latent style is instantiated.
D - fQFormat (1 bit): Specifies the value that the fQFormat field of GRFSTD is set to when this
    latent style is instantiated.
iPriority (12 bits): An unsigned integer that specifies the value that the iPriority field of
    StdfPost2000 is set to when this latent style is instantiated. This MUST be a value between 0x0000
    and 0x0063, inclusive.
2.9.146 LSPD
                                           1                                           2                                        3
0   1   2   3   4   5   6    7   8     9         1   2   3   4   5     6   7   8   9       1    2   3   4   5   6   7   8   9       1
                                           0                                           0                                        0
dyaLine fMultLinespace
dyaLine (16 bits): An integer that specifies the spacing between lines, based on the following rules:
                                                                                                                                        340 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§   dyaLine MUST either be between 0x0000 and 0x7BC0 or between 0x8440 and 0xFFFF.
§   When dyaLine is between 0x8440 and 0xFFFF, the line spacing, in twips, is exactly 0x10000
    minus dyaLine.
§   When fMultLinespace is 0x0001 and dyaLine is between 0x0000 and 0x7BC0, a spacing
    multiplier is used to determine line spacing for this paragraph. The spacing multiplier is
    dyaLine/240. For example, a spacing multiplier value of 1 specifies single spacing; a spacing
    multiplier value of 2 specifies double spacing; and so on. The actual line spacing, in twips, is the
    spacing multiplier times the font size, in twips.
§   When fMultLinespace is 0x0000 and dyaLine is between 0x0000 and 0x7BC0, the line spacing,
    in twips, is dyaLine or the number of twips necessary for single spacing, whichever value is
    greater.
2.9.147 LSTF
The LSTF structure contains formatting properties that apply to an entire list.
                                          1                                          2                                        3
0   1   2   3   4   5   6   7     8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8    9       1
                                          0                                          0                                        0
lsid
tplc
...
...
... A B C D E F grfhic
lsid (4 bytes): A signed integer that specifies the list identifier. This MUST be unique for each LSTF.
    This value MUST not be 0xFFFFFFFF.
tplc (4 bytes): A Tplc that specifies a unique identifier for this LSTF that MAY<227> be used for user
    interface purposes. If fHybrid is nonzero, this MUST be ignored.
rgistdPara (18 bytes): An array of nine 16-bit signed integers. Each element of rgistdPara
    specifies the ISTD of the style that is linked to the corresponding level in the list. If no style is
    linked to a given level, the value of the corresponding element of rgistdPara MUST be 0x0FFF.
A - fSimpleList (1 bit): A bit that, when set to 0x1, specifies that this LSTF represents a simple
    (one-level) list that has one corresponding LVL (see the fcPlfLst field of FibRgFcLcb97).
    Otherwise, this LSTF represents a multi-level list that has nine corresponding LVLs.
C - fAutoNum (1 bit): A bit that specifies whether the list that this LSTF represents is used for the
    AUTONUMOUT, AUTONUMLGL, and AUTONUM fields (see AUTONUMOUT, AUTONUMLGL, and
    AUTONUM in flt).
                                                                                                                                      341 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
E - fHybrid (1 bit): A bit that specifies whether the list this LSTF defines is a hybrid list.
grfhic (1 byte): A grfhic that specifies the HTML incompatibilities of the list.
2.9.148 Lstsf
                                        1                                            2                                          3
0   1   2   3   4   5   6   7   8   9       1   2    3    4   5      6   7   8   9        1   2     3   4   5   6   7   8   9       1
                                        0                                            0                                          0
ilst istdList A B
ilst (2 bytes): An unsigned integer that specifies a zero-based index into the Plflst.
istdList (12 bits): An unsigned integer that specifies the ISTD for the list style. To determine the
    text properties, see Determining Properties of a Style (section 2.4.6.5).
A - fStyleDef (1 bit): A bit flag that specifies the type of this list definition. If fStyleDef is "true",
    this Lstsf is a list style definition, meaning that a custom numbered or bulleted list style was
    defined. In this case, ilst specifies which custom list style is to be used. If fStyleDef is "false", it
    means that a standard list style is used. In this case, istdList specifies which standard style to
    use.
2.9.149 LVL
The LVL structure contains formatting information about a specific level in a list. When a paragraph is
formatted as part of this level, each placeholder in xst is replaced with the inherited level number of
the most recent or current paragraph in the same list that is in the zero-based level specified by that
placeholder. The level number that replaces a placeholder is formatted according to the lvlf.nfc of the
LVL structure that corresponds to the level that the placeholder specifies, unless the lvlf.fLegal of
this LVL structure is nonzero.
                                        1                                            2                                          3
0   1   2   3   4   5   6   7   8   9       1   2    3    4   5      6   7   8   9        1   2     3   4   5   6   7   8   9       1
                                        0                                            0                                          0
...
...
grpprlPapx (variable)
...
grpprlChpx (variable)
...
xst (variable)
                                                                                                                                        342 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                                    ...
lvlf (28 bytes): An LVLF structure that specifies formatting information for this level.
grpprlPapx (variable): An array of Prl elements that specifies the paragraph formatting of a
   paragraph in this level. The size of grpprlPapx is specified by lvlf.cbGrpprlPapx.
grpprlChpx (variable): An array of Prl elements that specifies the character formatting of the
   number text that begins each paragraph in this level. The size of grpprlChpx is specified by
   lvlf.cbGrpprlChpx.
xst (variable): An Xst that specifies the number text that begins each paragraph in this level. This
    can contain placeholders for level numbers that are inherited from the other paragraphs in the list.
    Any element in the rgtchar field of this Xst can be a placeholder. Each placeholder is an unsigned
    2-byte integer that specifies the zero-based level that the placeholder is for. Each placeholder
    MUST have a value that is less than or equal to the zero-based level of the list that this LVL
    represents. The indexes of the placeholders are specified by lvlf.rgbxchNums. Placeholders that
    correspond to levels that do not have a number sequence (see lvlf.nfc) MUST be ignored. If this
    level uses bullets (see lvlf.nfc), the cch field of this Xst MUST be equal to 0x0001, and this MUST
    NOT contain any placeholders.
2.9.150 LVLF
The LVLF structure contains formatting properties for an individual level in a list.
                                           1                                               2                                        3
0   1    2   3   4   5   6   7   8    9        1     2   3    4    5      6   7    8   9       1   2   3   4   5   6   7   8    9       1
                                           0                                               0                                        0
iStartAt
nfc jc A B C D E F rgbxchNums
...
... ixchFollow
dxaIndentSav
unused2
iStartAt (4 bytes): A signed integer that specifies the beginning number for the number sequence
    belonging to this level. This value MUST be less than or equal to 0x7FFF and MUST be greater than
    or equal to zero. If this level does not have a number sequence (see nfc), this MUST be ignored.
nfc (1 byte): An MSONFC, as specified in [MS-OSHARED] section 2.2.1.3, that specifies the format
    of the level numbers that replace the placeholders for this level in the xst fields of the LVLs in this
    list. This value MUST not be equal to 0x08, 0x09, 0x0F, or 0x13. If this is equal to 0xFF or 0x17,
    this level does not have a number sequence and therefore has no number formatting. If this is
    equal to 0x17, the level uses bullets.
                                                                                                                                            343 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
jc (2 bits): An unsigned integer that specifies the justification of this level. This MUST be one of the
    following values.
Value Meaning
A - fLegal (1 bit): A bit that specifies whether this level overrides the nfc of all inherited level
    numbers. If the original nfc of a level number is msonfcArabicLZ, it is preserved. Otherwise, the
    nfc of the level number is overridden by msonfcArabic.
B - fNoRestart (1 bit): A bit that specifies whether the number sequence of the level does not
    restart after a level is encountered that is more significant than the level to which this LVLF
    corresponds. If this is nonzero, ilvlRestartLim specifies the levels after which the number
    sequence of this level restarts. Otherwise, this number sequence of this level restarts when a
    more significant level is encountered. If this level does not have a number sequence (see nfc),
    this MUST be ignored.
C - fIndentSav (1 bit): A bit that specifies whether the level indented the text it was applied to and
    that the indent needs to be removed when numbering is removed. The indent to be removed is
    stored in dxaIndentSav.
D - fConverted (1 bit): A bit that specifies whether the nfc of this LVLF structure was previously a
    temporary value used for bidirectional compatibility that was converted into a standard
    MSONFC, as specified in [MS-OSHARED] section 2.2.1.3.
F - fTentative (1 bit): A bit that specifies whether the format of the level is tentative. This is used to
    describe the levels of a hybrid list that are not in use or displayed. If the fHybrid bit of the LSTF
    of the list is zero, this MUST be ignored.
rgbxchNums (9 bytes): An array of 8-bit integers. Each integer specifies a one-based character
   offset to a level placeholder in the xst.rgtchar of the LVL that contains this LVLF. This array is
   zero-terminated, unless it is full. The count of elements in this array, before to the first
   terminating zero, MUST be less than or equal to the one-based level of the list to which this LVL
   corresponds. The integers in this array, before the first terminating zero, MUST be in ascending
   order, and MUST be unique.
ixchFollow (1 byte): An unsigned integer that specifies the character that follows the number text.
    This MUST be one of the following values.
Value Meaning
dxaIndentSav (4 bytes): If fIndentSav is nonzero, this is a signed integer that specifies the size,
   in twips, of the indent that needs to be removed when the numbering is removed. This MUST be
   less than or equal to 0x00007BC0 or greater than or equal to 0xFFFF8440. If fIndentSav is zero,
   this MUST be ignored.
                                                                                                 344 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
unused2 (4 bytes): This field MUST be ignored.
cbGrpprlChpx (1 byte): An unsigned integer that specifies the size, in bytes, of the grpprlChpx in
the LVL that contains this LVLF.
cbGrpprlPapx (1 byte): An unsigned integer that specifies the size, in bytes, of the grpprlPapx in
   the LVL that contains this LVLF.
ilvlRestartLim (1 byte): An unsigned integer that specifies the first (most-significant) zero-based
    level after which the number sequence of this level does not restart. The number sequence of this
    level does restart after any level that is more significant than the specified level. This MUST be
    less than or equal to the zero-based level of the list to which this LVLF corresponds. If
    fNoRestart is zero, this MUST be ignored. If this level does not have a number sequence (see
    nfc), this MUST be ignored.
grfhic (1 byte): A grfhic that specifies the HTML incompatibilities of the level.
2.9.151 MacroName
The MacroName structure specifies a single entry in the macro name table, as defined in
MacroNames.
                                         1                                          2                                         3
0   1   2   3    4   5   6   7   8   9       1   2   3   4   5      6   7   8   9       1    2   3   4   5    6   7   8   9       1
                                         0                                          0                                         0
...
ibst (2 bytes): An unsigned integer that specifies the index of the current entry in the macro name
    table. This MUST NOT be the same as the index of any other entry.
xstz (variable): An Xstz structure that specifies the name of the macro. The length of the string,
   excluding the terminating null character, MUST NOT exceed 255 characters.
2.9.152 MacroNames
The MacroNames structure specifies the macro name table. This structure is used in a sequence of
structures that specify command-related customizations. For more information, see the Tcg255
structure.
                                         1                                          2                                         3
0   1   2   3    4   5   6   7   8   9       1   2   3   4   5      6   7   8   9       1    2   3   4   5    6   7   8   9       1
                                         0                                          0                                         0
...
ch (1 byte): An unsigned integer that identifies this structure as a MacroNames structure. This
    value MUST be 17.
iMac (2 bytes): An unsigned integer that specifies the number of MacroName structures in
   rgNames.
                                                                                                                                      345 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.153              MathPrOperand
                                         1                                       2                                       3
0   1   2   3    4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                       0                                       0
cb A unused
cb (1 byte): The size of this structure, in bytes, not including this byte. This value MUST be 0x02.
A - jcMath (3 bits): Specifies the justification. The valid values and their meanings are specified in
    the mthbpjc member of DOPMTH.
2.9.154 Mcd
                                         1                                       2                                       3
0   1   2   3    4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                       0                                       0
ibstName reserved3
reserved4
reserved5
reserved6
reserved7
ibst (2 bytes): An unsigned integer that specifies the name of the macro. The macro name is
    specified by MacroName.xstz of the MacroName entry in the MacroNames, such that
    MacroName.ibst equals ibst. MacroNames MUST contain such an entry.
ibstName (2 bytes): An unsigned integer that specifies the index into the Command String Table
    (TcgSttbf.sttbf) where the name and arguments of the macro are specified.
                                                                                                                                 346 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.155             MDP
The MDP structure contains information that is needed to display information about an e-mail
message and its author.
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4    5   6     7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                           0                                       0
dttm
reserved1 ibstAuthor
dttm (4 bytes): A DTTM structure that specifies the date and time at which an e-mail message was
   created.
ibstAuthor (2 bytes): A signed integer that specifies the index into the SttbfRMark structure of the
    author of the message.
2.9.156 MFPF
The MFPF structure specifies the type of picture data that is stored.
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4    5   6     7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                           0                                       0
mm xExt
yExt swHMF
mm (2 bytes): A signed integer that specifies the format of the picture data. This MUST be one of the
  following values.
2.9.157 NilBrc
The NilBrc structure is a special value of a Brc structure that specifies that the region in question has
no border. It is one possible value of the BrcMayBeNil structure. It is defined as its own type because
the values it contains are not valid for Brc structures in general.
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4    5   6     7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                           0                                       0
colorref
                                                                                                                                    347 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                             nilBrc
2.9.158 NilPICFAndBinData
The NilPICFAndBinData structure that holds header information and binary data for a hyperlink,
form field, or add-in field. The NilPICFAndBinData structure MUST be stored in the Data Stream.
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9       1    2   3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                           0                                       0
lcb
...
...
...
binData (variable)
...
lcb (4 bytes): A signed integer that specifies the size, in bytes, of this structure.
cbHeader (2 bytes): An unsigned integer that specifies the number of bytes from the beginning of
   this structure to the beginning of binData. This value MUST be 0x44.
binData (variable): The interpretation of the binData element depends on the field type of the
   field containing the picture character and is given by the following.
                                        Data Type
Field Type
REF
                                        HFD
PAGEREF
                                        HFD
FORMTEXT
                                        FFData
FORMCHECKBOX
                                        FFData
NOTEREF
                                        HFD
PRIVATE
                                        Custom binary data that is specified by the
                                        add-in that inserted this field.
ADDIN
                                        Custom binary data that is specified by the
                                                                                                                                    348 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                            Data Type
Field Type
    The NilPICFAndBinData structure is invalid if it describes a picture character that is not inside a
    field or is inside a field with a field type other than those specified in the preceding table. The size
    of binData is lcb –cbHeader. The data MAY<228> be invalid. If the data is invalid, it MUST be
    ignored.
2.9.159 NumRM
The NumRM structure is a numbering revision mark that specifies information about a numbering
revision for a paragraph.
                                            1                                           2                                         3
0   1   2   3     4   5   6   7     8   9       1    2   3    4   5     6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                            0                                           0                                         0
dttmNumRM
rgbxchNums
...
... rgnfc
...
... ignored
...
...
...
...
fNumRM (1 byte): A Bool8 value that specifies whether the paragraph was already numbered when
   revision mark tracking was turned on.
ibstNumRM (2 bytes): An integer that specifies an index for the numbering revision in the revision
    mark author array that is contained in the SttbfRMark structure.
                                                                                                                                          349 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
dttmNumRM (4 bytes): A DTTM structure that specifies the date and time at which the numbering
   revision occurred.
rgbxchNums (9 bytes): An array of BYTE elements. Each unsigned integer in the array specifies an
   index into xst. The index is the location of a paragraph number placeholder for the numbering
   level that corresponds to the index. For example, xst[rgbxchNums[0]] is the location in xst of
   the first level placeholder. The text to display at the location depends on the numeric value of the
   level of the paragraph, as specified by pnbr[0] and the numbering format at rgnfc[0]. A value of
   zero specifies that the numbering level at the corresponding index is not in use.
rgnfc (9 bytes): An array of 8-bit MSONFC elements, as specified in [MS-OSHARED] section 2.2.1.3.
   Each MSONFC element that is contained in the array specifies the format of the numeric value for
   the corresponding level placeholder in xst. For example, for the second numbering level, the value
   of rgnfc[1] specifies the format of pnbr[1], which is inserted into xst at the level placeholder
   location that is specified by rgbxchNums[1].
pnbr (36 bytes): An array of LONG elements. Each unsigned integer in the array specifies the
   numeric value for the corresponding level placeholder in xst.
xst (64 bytes): An array of USHORT elements. A string that specifies the format of the numbering
    for the paragraph. The first position in the array is an integer that specifies the length of the
    format string. The format string begins at the second position and contains level placeholders for
    the numbering level text to be inserted. The locations of level placeholders are specified by
    rgbxchNums. To create the final display string, the text is specified by rgnfc, and pnbr is
    inserted at the corresponding location in xst.
                                                                                               350 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.160               NumRMOperand
The NumRMOperand structure is the operand for the sprmPNumRM value that contains information
about a numbering revision mark.
                                           1                                          2                                       3
0   1   2   3     4   5   6    7   8   9       1   2   3   4    5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                          0                                       0
...
...
...
cb (1 byte): An unsigned integer that specifies the size, in bytes, of the NumRM structure. This
    value MUST be 128.
numRM (128 bytes): A NumRM that specifies the properties of the numbering revision mark.
2.9.161 OcxInfo
The OcxInfo structure specifies an OLE control (such as a checkbox, radio button, and so on) in the
document. The data that is contained in OcxInfo structures SHOULD<229> be ignored.
                                           1                                          2                                       3
0   1   2   3     4   5   6    7   8   9       1   2   3   4    5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                          0                                       0
dwCookie
ifld
hAccel
cAccel A B C D E F G H
idoc reserved
dwCookie (4 bytes): An integer value that specifies the index location of this OcxInfo in the
  RgxOcxInfo array. This value MUST be unique for all OcxInfo structures in the document.
ifld (4 bytes): An unsigned integer value that specifies an index location in the PlcFld structure. The
     value MUST be a valid FLD index in the correct PlcFld structure.
The PlcFld that is used is dependent on the value of idoc, as specified following.
    Valu          Location
    e
    1             The     Main Document (FibRgFcLcb97.fcPlcfFldMom).
    2             The     Header Document (FibRgFcLcb97.fcPlcfFldHdr).
    3             The     Footnote Document (FibRgFcLcb97.fcPlcfFldFtn).
    4             The     Textbox Document (FibRgFcLcb97.fcPlcfFldTxbx).
    6             The     Endnote Document (FibRgFcLcb97.fcPlcfFldEdn).
    7             The     Comment Document (FibRgFcLcb97.fcPlcfFldAtn).
                                                                                                                                      351 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    Valu        Location
    e
    8           The Header Textbox Document (FibRgFcLcb97.fcPlcfHdrtxbxTxt).
cAccel (2 bytes): An unsigned integer that specifies the number of entries in the accelerator key
   table of this control.
B - fEatsReturn (1 bit): Specifies whether this control is a sink for the ENTER key.
C - fEatsEscape (1 bit): Specifies whether this control is a sink for the ESC key.
E - fCancelButton (1 bit): Specifies whether this control is the default CANCEL button.
F - fFailedLoad (1 bit): Specifies whether an error occurred during the loading of this control. A
    value of 1 specifies that this control MUST be ignored.
G - fRTL (1 bit): Specifies whether this control has special display handling for right-to-left
    languages.
H - fCorrupt (1 bit): Specifies whether this control is corrupted. A value of 1 specifies that this
    control MUST be ignored.
idoc (2 bytes): An integer that specifies where ifld can be found. The value MUST be one of the
   following.
    Value               Location
    1                   The Main Document.
    2                   The Header Document.
    3                   The Footnote Document.
    4                   The Textbox Document.
    6                   The Endnote Document.
    7                   The Comment Document.
    8                   The Header Textbox Document.
2.9.162 ODSOPropertyBase
The ODSOPropertyBase structure contains an Office Data Source Object property type (id), size
(cb), and value (OdsoProp). An Office Data Source Object is used to perform the mail merge.
                                         1                                        2                                        3
0   1   2   3   4   5   6   7    8   9       1   2    3   4   5   6   7   8   9       1   2   3    4   5   6   7   8   9       1
                                         0                                        0                                        0
id cb
OdsoProp (variable)
                                                                                                                                   352 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                 ...
id (2 bytes): An unsigned integer that specifies the type of the Office Data Source Object property
    (OdsoProp). This MUST be one of the following values: 0x0000, 0x0001, 0x0002, 0x0010,
    0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, or 0x0017.
cb (2 bytes): An unsigned integer that specifies the size, in bytes, of the OdsoProp value or, if the
    size is greater than 0xFFFE, this value MUST be 0xFFFF.
                                                                                                        353 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
id               Meaning of data in OdsoProp
                 26. Spouse Nickname
                 27. Phonetic Guide for First Name
                 28. Phonetic Guide for Last Name
                 29. Address 3
                 30. Department
0x0017           A 2-byte unsigned integer that specifies which step of the mail merge wizard the application
                 last displayed. This MUST be a value between 1 and 6.
2.9.163 ODSOPropertyLarge
The ODSOPropertyLarge structure contains an ODSO property that is at least 0xFFFF bytes in size.
See specifications of the ODSO property types under ODSOPropertyBase.id.
                                          1                                         2                                            3
0    1   2   3    4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3        4   5   6   7   8   9       1
                                          0                                         0                                            0
dwb
OdsoPropLrg (variable)
...
dwb (4 bytes): An unsigned integer that specifies the size, in bytes, of the OdsoPropLrg element.
2.9.164 ODSOPropertyStandard
The ODSOPropertyStandard structure contains an ODSO property that is less than 0xFFFF bytes in
size. See descriptions of the ODSO property types under ODSOPropertyBase.id.
                                          1                                         2                                            3
0    1   2   3    4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3        4   5   6   7   8   9       1
                                          0                                         0                                            0
OdsoPropStd (variable)
...
2.9.165 ODT
The ODT structure stores information about an OLE object. Each OLE object in a Word Binary file is
stored in a storage within the ObjectPool storage. Each of these storages has an ObjInfo stream which
contains an ODT structure.
                                          1                                         2                                            3
0    1   2   3    4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3        4   5   6   7   8   9       1
                                          0                                         0                                            0
ODTPersist1 cf
                                                                                                                                         354 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                ODTPersist2 (optional)
ODTPersist1 (2 bytes): An ODTPersist1 structure that specifies information about the OLE object.
cf (2 bytes): An unsigned integer that specifies the format this OLE object uses to transmit data to
    the host application. Valid values and their meanings are:
Value               Meaning
0x0001              Rich Text Format
0x0004 Bitmap
ODTPersist2 (2 bytes): An ODTPersist2 structure that specifies additional information about the
  OLE object. This member does not exist if the ObjInfo stream containing this ODT structure is not
  large enough to accommodate it.
2.9.166 ODTPersist1
The ODTPersist1 structure is a collection of bits that specify information about an OLE object.
                                          1                                       2                                       3
0   1   2   3   4    5    6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                       0                                       0
A B C D E F G H I J K L M N O P
B - fDefHandler (1 bit): If this bit is 1, then the application MUST assume that this OLE object’s
    class identifier (CLSID) is {00020907-0000-0000-C000-000000000046}.
E - fLink (1 bit): A bit that specifies whether this OLE object is a link.
G - fIcon (1 bit): A bit that specifies whether this OLE object is being represented by an icon.
H - fIsOle1 (1 bit): A bit that specifies whether this OLE object is only compatible with OLE 1. If this
    bit is zero, then the object is compatible with OLE 2.
I - fManual (1 bit): A bit that specifies whether the user has requested that this OLE object only be
     updated in response to a user action. If fManual is zero, then the user has requested that this
     OLE object update automatically. If fLink is zero, then fManual is undefined and MUST be
     ignored.
                                                                                                                                  355 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
J - fRecomposeOnResize (1 bit): A bit that specifies whether this OLE object has requested to be
     notified when it is resized by its container.
M - fOCX (1 bit): A bit that specifies whether this object is an OLE control.
N - fStream (1 bit): If fOCX is zero, then this bit MUST be zero. If fOCX is 1, then fStream is a bit
    that specifies whether this OLE control stores its data in a single stream instead of a storage. If
    fStream is 1, then the data for the OLE control is in a stream called "\003OCXDATA" where \003
    is the character with value 0x0003, not the string literal "\003".
                                                                                               356 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
O - reserved7 (1 bit): Undefined and MUST be ignored.
P - fViewObject (1 bit): A bit that specifies whether this OLE object supports the IViewObject
    interface.
2.9.167 ODTPersist2
The ODTPersist2 structure is a collection of bits that specify information about an OLE object.
                                         1                                         2                                       3
0   1   2   3   4   5    6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                         0                                       0
A B C D E F reserved4
A - fEMF (1 bit): A bit that specifies that the presentation of this OLE object in the document is in the
    Enhanced Metafile format. This is different from fStoredAsEMF in the case of an object being
    represented as an icon. For icons, the icon can be an Enhanced Metafile even if the OLE object
    does not support the Enhanced Metafile format.
C - fQueriedEMF (1 bit): A bit that specifies whether the application that saved this Word Binary file
    had queried this OLE object to determine whether it supported the Enhanced Metafile format.
D - fStoredAsEMF (1 bit): A bit that specifies that this OLE object supports the Enhanced Metafile
    format.
2.9.168 OfficeArtClientAnchor
                                         1                                         2                                       3
0   1   2   3   4   5    6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                         0                                       0
rh
...
clientanchor
clientanchor (4 bytes): A 4-byte integer that specifies a valid index into the aCP field of the
    corresponding PlcfSpa. The CP at this index is the location of the drawing. A value of -1 specifies
    an invalid value.
                                                                                                                                   357 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.169             OfficeArtClientData
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
rh
...
clientdata
2.9.170 OfficeArtClientTextbox
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
rh
...
clienttextbox
clienttextbox (4 bytes): A 4-byte unsigned integer that specifies the text identifier of the shape, as
    specified in [MS-ODRAW] section 2.3.21.1. This value specifies the location of the text for the
    textbox in the following manner: Dividing the high 2 bytes by 0x10000 specifies a 1-based index
    into PlcfTxbxTxt of the FTXBXS structure where the text for this textbox is located. The low 2
    bytes specify the zero-based index in the textbox chain that the textbox occupies.
2.9.171 OfficeArtContent
The OfficeArtContent structure specifies information about a drawing in the document. The delay
stream that is referenced in [MS-ODRAW] is the WordDocument stream.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
DrawingGroupData (variable)
...
                                                                                                                                   358 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                      Drawings (variable)
...
2.9.172 OfficeArtWordDrawing
The OfficeArtWordDrawing structure specifies information about the drawings in the document. The
delay stream that is referenced in [MS-ODRAW] is the WordDocument stream.
                                         1                                              2                                        3
0   1   2    3   4   5   6   7   8   9        1   2    3   4   5      6    7   8    9        1   2   3   4   5   6   7   8   9       1
                                         0                                              0                                        0
...
dgglbl (1 byte): An unsigned integer that specifies where container is located. A value of 0x00
   specifies that container is in the Main Document. A value of 0x01 specifies that container is in
   the Header Document.
2.9.173 PANOSE
The PANOSE structure defines the PANOSE font classification values for a TrueType font, as
specified in [PANOSE]. These characteristics are used to associate the font with other fonts of similar
appearance but different names.
                                         1                                              2                                        3
0   1   2    3   4   5   6   7   8   9        1   2    3   4   5      6    7   8    9        1   2   3   4   5   6   7   8   9       1
                                         0                                              0                                        0
bMidline bHeight
bFamilyType (1 byte):
For Latin fonts, this field MUST have one of the following values.
Value                                                          Meaning
PAN_ANY (0)                                                    Any.
PAN_NO_FIT (1)                                                 No fit.
PAN_FAMILY_TEXT_DISPLAY (2)                                    Text and display.
PAN_FAMILY_SCRIPT (3)                                          Script.
PAN_FAMILY_DECORATIVE (4)                                      Decorative.
                                                                                                                                         359 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value                                       Meaning
PAN_FAMILY_PICTORIAL (5)                    Pictorial.
bSerifStyle (1 byte): Specifies the serif style. For Latin fonts, this field MUST have one of the
   following values.
Value                                                    Meaning
PAN_ANY (0)                                              Any.
bWeight (1 byte): For Latin fonts, this field MUST have one of the following values.
Value                                                    Meaning
PAN_ANY (0)                                              Any.
                                                                                                360 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
bProportion (1 byte): For Latin fonts, this field MUST have one of the following values.
Value                                                 Meaning
PAN_ANY (0)                                           Any.
bContrast (1 byte): For Latin fonts, this field MUST have one of the following values.
Value                                                 Meaning
PAN_ANY (0)                                           Any.
bStrokeVariation (1 byte): For Latin fonts, this field MUST have one of the following values.
Value                    Meaning
PAN_ANY (0)              Any.
2 No Variation.
3 Gradual/diagonal.
4 Gradual/transitional.
5 Gradual/vertical.
6 Gradual/horizontal.
7 Rapid/vertical.
8 Rapid/horizontal.
9 Instant/Vertical.
                                                                                            361 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value                    Meaning
10 Instant/Horizontal.
bArmStyle (1 byte): For Latin fonts, this field MUST have one of the following values.
Value                                                 Meaning
PAN_ANY (0)                                           Any.
bLetterform (1 byte): For Latin fonts, this field MUST have one of the following values.
Value                                                 Meaning
PAN_ANY (0)                                           Any.
                                                                                           362 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
bMidline (1 byte): For Latin fonts, this field MUST have one of the following values.
Value                                                                         Meaning
PAN_ANY (0)                                                                   Any.
bHeight (1 byte): For Latin fonts, this field MUST have one of the following values.
Value                                                                         Meaning
PAN_ANY (0)                                                                   Any.
2.9.174 PapxFkp
The PapxFkp structure maps paragraphs, table rows, and table cells to their properties. A PapxFkp
structure is 512 bytes in size, with cpara in the last byte. The elements of rgbx specify the locations
of PapxInFkp structures that start at offsets between the end of rgbx and cpara within this
PapxFkp structure.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4   5   6   7    8     9        1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
rgfc (variable)
                                                                                                                                     363 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                                ...
rgbx (variable)
...
cpara
rgfc (variable): An array of 4-byte unsigned integers. Each element of this array specifies an offset
    in the WordDocument Stream where a paragraph of text begins, or where an end of row mark
    exists. This array MUST be sorted in ascending order and MUST NOT contain duplicates. Each
    paragraph begins immediately after the end of the previous paragraph. The count of elements that
    this array contains is cpara incremented by 1. The last element does not specify the beginning of
    a paragraph; instead it specifies the end of the last paragraph.
rgbx (variable): An array of BxPap, followed by PapxInFkp structures. The elements of this array,
   which has cpara elements and parallels rgfc, each specify the offset of one of the PapxInFkp
   structures in this PapxFkp structure.
    Each PapxInFkp specifies the paragraph properties for the paragraph at the corresponding offset
    in rgfc or the table properties for the table row whose end of row mark is located at the
    corresponding offset in rgfc.
cpara (1 byte): An unsigned integer that specifies the total number of paragraphs, table rows, or
   table cells for which this PapxFkp structure specifies formatting. This field occupies the last byte
   of the PapxFkp structure The value of this field MUST be at least 0x01, and MUST NOT exceed
   0x1D because that would cause rgfc and rgb to expand and PapxFkp to exceed 512 bytes.
2.9.175 PapxInFkp
                                          1                                           2                                       3
0   1   2   3     4   5   6   7   8   9       1   2   3     4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                           0                                       0
cb grpprlInPapx (variable)
...
cb (1 byte): An unsigned integer that specifies the size of the grpprlInPapx. If this value is not 0,
    the grpprlInPapx is 2×cb-1 bytes long. If this value is 0, the size is specified by the first byte of
    grpprlInPapx.
2.9.176 PbiGrfOperand
                                                                                                                                      364 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                              1                                         2                                            3
0   1   2   3     4   5   6   7     8    9        1   2   3   4   5     6   7   8   9       1   2   3        4   5   6   7   8   9       1
                                              0                                         0                                            0
A B fUnused
B - fNoAutoSize (1 bit): Specifies whether the size of the picture changes automatically to match
    the size of the text that follows the bullet.
2.9.177 Pcd
The Pcd structure specifies the location of text in the WordDocument Stream and additional properties
for this text. A Pcd structure is an element of a PlcPcd structure.
                                              1                                         2                                            3
0   1   2   3     4   5   6   7     8    9        1   2   3   4   5     6   7   8   9       1   2   3        4   5   6   7   8   9       1
                                              0                                         0                                            0
A B C fR2 fc
... prm
A - fNoParaLast (1 bit): If this bit is 1, the text MUST NOT contain a paragraph mark.
fc (4 bytes): An FcCompressed structure that specifies the location of the text in the
    WordDocument Stream.
prm (2 bytes): A Prm structure that specifies additional properties for this text. These properties
   are used as part of the algorithms in sections 2.4.6.1 (Direct Paragraph Formatting) and 2.4.6.2
   (Direct Character Formatting).
2.9.178 Pcdt
The Pcdt structure contains a PlcPcd structure and specifies its size.
                                              1                                         2                                            3
0   1   2   3     4   5   6   7     8    9        1   2   3   4   5     6   7   8   9       1   2   3        4   5   6   7   8   9       1
                                              0                                         0                                            0
clxt lcb
...
lcb (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcPcd structure.
                                                                                                                                             365 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
PlcPcd (variable): A PlcPcd structure. As with all Plc elements, the size that is specified by lcb
   MUST result in a whole number of Pcd structures in this PlcPcd structure.
2.9.179 PChgTabsAdd
The PChgTabsAdd structure specifies the locations and properties of custom tab stops.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6    7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
...
rgtbdAdd (variable)
...
cTabs (1 byte): An unsigned integer that specifies the number of records in rgdxaAdd and
   rgtbdAdd. This value MUST be less than or equal to 64.
rgdxaAdd (variable): An array of XAS integer values. The number of records is specified by cTabs.
   The values in this array MUST be in ascending order. Each XAS value specifies a location at which
   to add a custom tab stop.
rgtbdAdd (variable): An array of TBD structures. The number of records is specified by cTabs. Each
   TBD specifies the alignment and leader attributes of the custom tab stop at the location that is
   specified at the corresponding index in rgdxaAdd.
2.9.180 PChgTabsDel
The PChgTabsDel structure specifies the locations at which custom tab stops are ignored.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6    7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
...
cTabs (1 byte): An unsigned integer that specifies the number of records in rgdxaDel. This value
   MUST be less than or equal to 64.
rgdxaDel (variable): An array of XAS. The number of records is specified by cTabs. The elements
   contained in the array MUST be in ascending order. Each XAS specifies a location at which to
   ignore any custom tab stop within 25 twips.
2.9.181 PChgTabsDelClose
The PChgTabsDelClose structure specifies the locations at which custom tab stops are ignored.
                                                                                                                                   366 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          1                                          2                                       3
0   1   2   3     4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                          0                                       0
...
rgdxaClose (variable)
...
cTabs (1 byte): An unsigned integer that specifies the number of records in rgdxaDel and
   rgdxaClose. This value MUST be greater than or equal to 0, and less than or equal to 64.
rgdxaDel (variable): An array of 16-bit integers. The number of records is specified by cTabs. The
   integers contained in the array MUST be in ascending order. Each integer SHOULD<231> be
   greater than or equal to -31680. Each integer MUST be less than or equal to 31680. Each integer
   specifies a location at which to ignore any custom tab stop within 25 twips.
2.9.182 PChgTabsOperand
The PChgTabsOperand structure is used by sprmPChgTabs to specify a list of custom tab stops to
add and another list of custom tab stops to ignore.
                                          1                                          2                                       3
0   1   2   3     4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                          0                                       0
cb PChgTabsDelClose (variable)
...
PChgTabsAdd (variable)
...
cb (1 byte): An unsigned integer that specifies the size of the operand. This value MUST be greater
    than or equal to 2 and less than or equal to 255. A value that is less than 255 specifies the size of
    the operand in bytes, not including cb. A value of 255 specifies that this instance of
    sprmPChgTabs MAY<232> be ignored and that the size of the remainder of this operand, in bytes,
    is calculated by using the following formula:
PChgTabsDelClose (variable): A PchgTabsDelClose that specifies the locations of custom tab stops
   to ignore.
PChgTabsAdd (variable): A PChgTabsAdd that specifies the locations and properties of custom tab
   stops to add.
                                                                                                                                     367 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.183               PChgTabsPapxOperand
                                            1                                         2                                       3
0   1   2   3    4    5    6    7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                         0                                       0
cb PChgTabsDel (variable)
...
PChgTabsAdd (variable)
...
cb (1 byte): An unsigned integer that specifies the size of the operand in bytes, not including cb. This
    value MUST be greater than or equal to 2 and less than or equal to 255.
PChgTabsDel (variable): A PChgTabsDel structure that specifies the locations at which custom tab
   stops are ignored.
PChgTabsAdd (variable): A PChgTabsAdd structure that specifies the locations and properties of
   custom tab stops to be added.
2.9.184 PgbApplyTo
The PgbApplyTo enumeration is used to specify the pages to which a page border applies.
pgbAllPages 0x0 The page border applies to all pages in the section.
pgbFirstPage 0x1 The page border applies only to the first page of the section.
pgbAllButFirst 0x2 The page border applies to all but the first page of the section.
2.9.185 PgbOffsetFrom
The PgbOffsetFrom enumeration is used to specify the location from which the offset of a page
border is measured.
pgbFromText 0x0 The offset of the page border is measured from the text.
pgbFromEdge 0x1 The offset of the page border is measured from the edge of the page.
2.9.186 PgbPageDepth
The PgbPageDepth enumeration is used to specify the "depth" of a page border in relation to other
page elements.
pgbAtFront 0x0 The page border is positioned in front of the text and other content.
pgbAtBack 0x1 The page border is positioned behind the text and other content.
                                                                                                                                      368 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.187             PGPArray
                                         1                                           2                                        3
0   1   2   3   4   5    6   7   8   9       1   2   3   4    5      6   7   8   9        1   2   3   4   5   6   7   8   9       1
                                         0                                           0                                        0
...
pgpInfoArray (variable): An array of PGPInfo structures. This array contains cpgp elements.
2.9.188 PGPInfo
The PGPInfo structure describes the border and margin properties that can be applied to a
contiguous range of paragraphs.
                                         1                                           2                                        3
0   1   2   3   4   5    6   7   8   9       1   2   3   4    5      6   7   8   9        1   2   3   4   5   6   7   8   9       1
                                         0                                           0                                        0
ipgpSelf
ipgpParent
itap
...
ipgpSelf (4 bytes): A unique 4-byte value that is used to identify this entry. This value MUST NOT
   be 0.
ipgpParent (4 bytes): This is the identifier of the immediate parent PGPInfo structure. A value of 0
   indicates that there is no parent and that, therefore, this is an outermost PGPInfo.
itap (4 bytes): The table depth to which this PGPInfo structure is applied. PGPInfo structures can
    be applied to paragraphs that are within a table cell.
grfElements (2 bytes): A bit field that describes how to read in the variable length pgpOptions.
    The meanings of the bits are as follows.
    Bit                 Meaning
    value
    0x0001              PGPOptions.dxaLeft is present.
    0x0002              PGPOptions.dxaRight is present.
    0x0004              PGPOptions.dyaBefore is present.
    0x0008              PGPOptions.dyaAfter is present.
    0x0010              PGPOptions.brcLeft is present.
                                                                                                                                      369 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    Bit                 Meaning
    value
    0x0020              PGPOptions.brcRight is present.
    0x0040              PGPOptions.brcTop is present.
    0x0080              PGPOptions.brcBottom is present.
    0x0100              PGPOptions.type is present.
pgpOptions (variable): A PGPOptions structure that describes all the relevant paragraph properties
   that are different than the defaults.
2.9.189 PGPOptions
The PGPOptions structure is a variable-sized container of the PGPInfo properties that are to be
changed from their default values. The members that are present in the file are indicated by
PGPInfo.grfElements.
                                           1                                         2                                          3
0   1   2   3   4   5    6   7     8   9       1   2   3   4   5     6   7   8   9        1    2   3   4   5    6   7   8   9       1
                                           0                                         0                                          0
...
...
...
...
cbOption (2 bytes): If PGPInfo.grfElements is nonzero, this is the byte size of the remaining
   PGPOptions data in the file.
dxaLeft (4 bytes): If PGPInfo.grfElements & 0x0001 is nonzero, this is the size of the left margin
   to apply, measured in 1/20 point increments. Otherwise, the default value of 0 is used.
                                                                                                                                        370 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
dxaRight (4 bytes): If PGPInfo.grfElements & 0x0002 is nonzero, this is the size of the right
   margin to apply, measured in 1/20 point increments. Otherwise, the default value of 0 is used.
dyaBefore (4 bytes): If PGPInfo.grfElements & 0x0004 is nonzero, this is the size of the top
   margin to apply, measured in 1/20 point increments. Otherwise, the default of 0 is used.
dyaAfter (4 bytes): If PGPInfo.grfElements & 0x0008 is nonzero, this is the size of the bottom
   margin to apply, measured in 1/20 point increments. Otherwise, the default value of 0 is used.
brcLeft (8 bytes): If PGPInfo.grfElements & 0x0010 is nonzero, this is the Brc that describes the
   left border of the PGPInfo. Otherwise, there is no left border.
brcRight (8 bytes): If PGPInfo.grfElements & 0x0020 is nonzero, this is the Brc that describes
   the right border of the PGPInfo. Otherwise, there is no right border.
brcTop (8 bytes): If PGPInfo.grfElements & 0x0040 is nonzero, this is the Brc that describes the
   top border of the PGPInfo. Otherwise, there is no top border.
brcBottom (8 bytes): If PGPInfo.grfElements & 0x0080 is nonzero, this is the Brc that describes
   the bottom border of the PGPInfo. Otherwise, there is no bottom border.
type (2 bytes): If PGPInfo.grfElements & 0x0100 is nonzero, this value MUST be 0, 1 or 2. If this
   value is 1, this PGPInfo is represented as a <BLOCKQUOTE> element when saved as HTML. If
   this value is 2, this PGPInfo is represented as a <BODY> element, provided that it is applied at a
   point where the <BODY> element is legal in HTML. If this value is not present or is 0, it is
   assumed that this PGPInfo represents a <DIV> element.
2.9.190 PICF
The PICF structure specifies the type of a picture, as well as the size of the picture and information
about its border.
                                          1                                         2                                        3
0   1   2   3   4   5   6   7     8   9       1   2   3   4   5     6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                          0                                         0                                        0
lcb
cbHeader mfpf
...
...
...
...
...
...
... cProps
                                                                                                                                     371 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lcb (4 bytes): A signed integer that specifies the size, in bytes, of this PICF structure and the
    subsequent data.
cbHeader (2 bytes): An unsigned integer that specifies the size, in bytes, of this PICF structure.
   This value MUST be 0x44.
mfpf (8 bytes): An MFPF structure that specifies the storage format of the picture.
innerHeader (14 bytes): A PICF_Shape structure that specifies additional header information.
picmid (38 bytes): A PICMID structure that specifies the size and border information of the picture.
2.9.191 PICF_Shape
The PICF_Shape structure specifies additional header information for pictures of type MM_SHAPE or
MM_SHAPEFILE.
                                           1                                           2                                       3
0   1   2   3   4   5   6   7      8   9       1   2   3    4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                           0                                       0
grf
padding1
mmPM padding2
...
2.9.192 PICFAndOfficeArtData
The PICFAndOfficeArtData structure specifies header information and binary data for a picture.
These structures MUST be stored in the Data Stream at locations that are specified by the
sprmCPicLocation value. The range of text that is described by the Chpx structure which contains the
sprmCPicLocation value MUST contain the picture character (U+0001).
                                           1                                           2                                       3
0   1   2   3   4   5   6   7      8   9       1   2   3    4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                           0                                       0
...
...
                                                                                                                                       372 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cchPicName (optional)                                                      stPicName (variable)
...
picture (variable)
...
picf (68 bytes): A PICF structure that specifies the type of the picture, as well as the picture size
    and border information.
cchPicName (1 byte): An optional unsigned integer that specifies the size of stPicName. This value
   MUST exist if and only if picf.mfpf.mm is MM_SHAPEFILE (0x0066).
stPicName (variable): An optional string of ANSI characters that specifies the full path and file
    name of the picture. This value MUST exist if and only if picf.mfpf.mm is MM_SHAPEFILE
    (0x0066). The length of the string is equal to cchPicName and is not null-terminated.
2.9.193 PICMID
The PICMID structure specifies the size and border information for a picture.
                                             1                                          2                                          3
0   1   2   3   4   5    6    7      8   9       1   2   3   4   5     6    7   8   9       1    2    3   4    5   6   7   8   9       1
                                             0                                          0                                          0
dxaGoal dyaGoal
mx my
dxaReserved1 dyaReserved1
dxaReserved2 dyaReserved2
... brcLeft80
... brcBottom80
... brcRight80
... dxaReserved3
dyaReserved3
dxaGoal (2 bytes): A signed integer that specifies the initial width of the picture, in twips, before
   cropping or scaling occurs. This value MUST be greater than zero.
                                                                                                                                           373 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
dyaGoal (2 bytes): A signed integer that specifies the initial height of the picture, in twips, before
   cropping or scaling occurs. This value MUST be greater than zero.
mx (2 bytes): An unsigned integer that specifies the ratio, measured in tenths of a percent, between
   the final display width and the initial picture width that is specified by dxaGoal. If the picture is
   not cropped, mx values that are greater than 1000 cause the picture to stretch in width, while
   values that are less than 1000 cause the picture to shrink in width.
    If the picture is horizontally cropped and the mx value is not adjusted accordingly, the picture is
    scaled. To counteract the new dimensions of a cropped image and avoid scaling, set mx to the
    value of ((dxaGoal – (left-crop + right-crop)) / dxaGoal.
    The final display width MUST be at least 15 twips and MUST not exceed 31680 twips (22 inches)
    after cropping and scaling.
my (2 bytes): An unsigned integer that specifies the ratio, measured in tenths of a percent, between
   the final display height and the initial picture height that was specified by dyaGoal. If the picture
   is not cropped, my values that are greater than 1000 cause the picture to stretch in height, while
   values of less than 1000 cause the picture to shrink.
    If the picture is vertically cropped and the my value is not adjusted accordingly, the picture is
    scaled. To counteract the new dimensions of a cropped image and avoid scaling, set the my value
    to the value of ((dyaGoal – (top-crop + bottom-crop)) / dyaGoal.
    The final display height MUST be at least 15 twips and MUST not exceed 31680 twips (22 inches)
    after cropping and scaling.
brcTop80 (4 bytes): A Brc80 structure that specifies what border to render above the picture.
brcLeft80 (4 bytes): A Brc80 structure that specifies what border to render to the left of the
   picture.
brcBottom80 (4 bytes): A Brc80 structure that specifies what border to render below the picture.
brcRight80 (4 bytes): A Brc80 structure that specifies what border to render to the right of the
   picture.
2.9.194 PlcfGlsy
The PlcfGlsy structure is a PLC that contains only CPs and no additional data. The count of CPs in a
PlcfGlsy structure MUST be equal to a number that represents the count of strings in the
corresponding SttbfGlsy incremented by 2. A PlcfGlsy MUST NOT contain duplicate CPs.
                                                                                                374 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          1                                            2                                       3
0   1   2   3     4   5   6   7   8   9   0   1   2   3    4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
aCP (variable)
aCP (variable): An array of CP. Each CP is an offset into the main document. Each CP MUST be
greater than or equal to zero, and MUST be less than FibRgLw97.ccpText. Each CP specifies the
beginning of a range of text that constitutes the contents of an AutoText item. Each AutoText item
corresponds to its respective entry in the parallel AutoText item string table SttbfGlsy. The range of
text ends immediately before the next CP. The last CP MUST be ignored, and the second to last CP
does not begin a new text range; it only terminates the text range that started with the previous CP.
2.9.195 PlfAcd
                                          1                                            2                                       3
0   1   2   3     4   5   6   7   8   9       1   2   3    4   5       6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                            0                                       0
ch iMac
...
ch (1 byte): An unsigned integer value that identifies this structure as PlfAcd. This value MUST be 2.
iMac (4 bytes): A signed integer value that specifies the number of allocated command descriptor
   structures, as specified in Acd, in rgacd. This value MUST be greater than or equal to 0.
rgacd (variable): An array of Acd structures. The number of structures that are contained in this
   array is specified by iMac.
2.9.196 PlfCosl
The PlfCosl structure is a list of COSL that is specified as an array and its associated count of
elements. Each element specifies the option set to use for a grammar checker that implements the
NLCheck interface. An option set specifies a value for each grammar option.
                                          1                                            2                                       3
0   1   2   3     4   5   6   7   8   9       1   2   3    4   5       6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                            0                                       0
iMac
rgcosl (variable)
...
iMac (4 bytes): A signed integer that specifies the number of entries in rgcosl. This value MUST be
   greater than or equal to zero.
                                                                                                                                       375 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.197               PlfGosl
The PlfGosl structure is a list of GOSL structures that are specified as an array, and its associated
count of elements. Each element specifies the option set to use for a grammar checker that
implements the CGAPI interface. An option set specifies a value for each grammar option.
                                          1                                           2                                       3
0   1   2   3     4   5   6   7   8   9       1   2    3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                           0                                       0
iMac
rggosl (variable)
...
iMac (4 bytes): A signed integer that represents the count of entries in rgcosl. This value MUST be
   greater than or equal to zero.
2.9.198 PlfguidUim
The PlfguidUim structure specifies an array of GUIDs which are referenced by the UIM structures of
PlcfUim.
                                          1                                           2                                       3
0   1   2   3     4   5   6   7   8   9       1   2    3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                           0                                       0
iMac
rgguidUim (variable)
...
iMac (4 bytes): An unsigned integer that specifies the number of GUIDs in rgguidUim.
rgguidUim (variable): An array of 16-byte GUIDs that specify the service category or CLSID of the
   service providing data referenced by a UIM structure.
2.9.199 PlfKme
The PlfKme structure specifies keyboard mappings. This structure is used in the sequence of
structures that specify command-related customizations. For more information, see the Tcg255
structure.
                                          1                                           2                                       3
0   1   2   3     4   5   6   7   8   9       1   2    3   4   5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                           0                                       0
ch iMac
...
                                                                                                                                      376 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
ch (1 byte): An unsigned integer that identifies this structure as PlfKme. This value MUST be either
    3 or 4. A value of 3 indicates regular keyboard key map entries. A value of 4 indicates invalid
    keyboard key map entries. For more information, see the Tcg255.rgtcgData field.
iMac (4 bytes): A signed integer that specifies the number of keyboard key map entries, as specified
   in Kme, in rgkme. This value MUST be greater than or equal to 0.
rgkme (variable): An array of Kme structures. The number of structures is specified by iMac.
2.9.200 PlfLfo
The PlfLfo structure contains the list format override data for the document.
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4    5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                           0                                       0
lfoMac
rgLfo (variable)
...
rgLfoData (variable)
...
lfoMac (4 bytes): An unsigned integer that specifies the count of elements in both the rgLfo and
rgLfoData arrays.
rgLfo (variable): An array of LFO structures. The number of elements in this array is specified by
lfoMac.
rgLfoData (variable): An array of LFOData that is parallel to rgLfo. The number of elements that
are contained in this array is specified by lfoMac.
2.9.201 PlfLst
The PlfLst structure contains the list formatting information for the document.
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4    5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                           0                                       0
...
cLst (2 bytes): A signed integer that specifies the count of LSTF structures that are contained in
rgLstf.
rgLstf (variable): An array of LSTF. The number of elements that are contained in this array is
specified by cLst.
                                                                                                                                    377 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.202               PlfMcd
The PlfMcd structure specifies macro commands. This structure is used in the sequence of structures
that specify command-related customizations. For more information, see Tcg255.
                                          1                                           2                                       3
0   1   2   3     4   5   6   7   8   9       1   2   3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                           0                                       0
ch iMac
...
ch (1 byte): An unsigned integer that identifies this structure as PlfMcd. This value MUST be 1.
iMac (4 bytes): A signed integer that specifies the number of macro command descriptor structures,
   as specified by the Mcd structure, to follow this structure. This value MUST be greater than or
   equal to 0.
rgmcd (variable): An array of Mcd structures. The number of structures that are contained in the
   array is specified by iMac.
2.9.203 PLRSID
The PLRSID structure is an array of revision-save identifiers (RSIDs), as specified in [ECMA-376] part
4, section 2.15.1.70.
                                          1                                           2                                       3
0   1   2   3     4   5   6   7   8   9       1   2   3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                           0                                       0
irsidMac
cbRsidInFile
cbHeadExtraInFile
reserved1
reserved2
reserved3
rgrsid (variable)
...
irsidMac (4 bytes): An unsigned integer value that specifies the count of RSIDs that are contained
    in rgrsid.
cbRsidInFile (4 bytes): An unsigned integer value that specifies the size, in bytes, of an RSID. This
   value MUST be 4.
                                                                                                                                      378 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cbHeadExtraInFile (4 bytes): An unsigned integer value that MUST be 8.
reserved2 (4 bytes): An unsigned integer value that MUST be less than "32". This value MUST be
   ignored.
2.9.204 Pmfs
The Pmfs structure specifies the mail merge data source connection properties.
                                            1                                        2                                         3
0   1   2    3   4    5     6   7   8   9       1   2    3   4   5   6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                            0                                        0                                         0
tkRec fnpi
ipfnpmf (8 bits): An unsigned integer value that specifies the type of data source for the mail merge.
    This MUST be one of the following values.
0x04 ODBC.
A - fLinkToFnm (1 bit): If the data source is not a data file, this bit MUST be ignored. ,When the
    data source is a data file, this bit specifies whether the file MUST exist as specified in fnpi.
B - fLinkToConn (1 bit): Specifies whether an extra string is appended to the DDE initial connection
    string. This extra string is stored in the SttbfRfs structure in the Pms structure.
C - fNoPromptQT (1 bit): Specifies whether the user was already asked about whether to use
    Microsoft Query to edit ODBC.
D - fQuery (1 bit): Specifies whether the mail merge uses a query (such as "SELECT * FROM x") to
    obtain the data. If this value is set to zero, the mail merge reads the data file directly.
tkField (2 bytes): A signed integer that specifies the token to separate fields in the data file. If
    ipfnpmf is not 0x00 (data file), this value is undefined and MUST be ignored. Otherwise it MUST
    be one of the following tokens.
                                                                                                                                       379 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value               Token
0x00 (none)
0x02 (enter)
0x06 (Tab)
0x0A ,
0x0B .
0x0C !
0x0D #
0x0E $
0x0F %
0x10 &
0x11 (
0x12 )
0x13 *
0x14 +
0x15 -
0x16 /
0x17 :
0x18 ;
0x19 <
0x1A =
0x1B >
0x1C ?
0x1D @
0x1E [
0x1F ]
0x21 ^
0x22 _
0x23 `
                                         380 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value                       Token
0x24 {
0x25 }
0x26 |
0x27 ~
tkRec (2 bytes): A signed integer that specifies the token to separate records in the data file. If
   ipfnpmf is not 0x00 (data file), this value is undefined and MUST be ignored. Otherwise, it MUST
   be one of the tokens shown in the table for tkField, MUST NOT be 0x00 (none) and MUST be
   different from tkField.
fnpi (2 bytes): An FNPI that specifies the type and identifier of a data file. The fnpt inside this fnpi
   MUST be 0x3 for mail merge type. The string in the SttbFnm structure that has an appended
   FNIF structure with an fnpi that is identical to this one is the file name of this data file for mail
   merge.
2.9.205 Pms
The Pms data structure contains the print merge or mail merge state information.
                                            1                                            2                                        3
0   1   2   3   4   5   6       7   8   9       1   2   3   4    5      6   7   8    9        1   2   3   4   5   6   7   8   9       1
                                            0                                            0                                        0
iRecCur
...
...
rfs
...
sttbfRfs (variable)
...
                                                                                                                                          381 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                     wpmsdt (optional)
ipmfMF (1 byte): An unsigned integer that specifies the index in the array rgpmfs and MUST be 0 or
   1. This value is used for the mail merge header field source from which the mail merge column
   names are obtained.
ipmfFetch (1 byte): An unsigned integer that specifies the index in the array rgpmfs and MUST be
   0 or 1. This value is used for the mail merge data fetch source from which the mail merge data is
   obtained.
iRecCur (4 bytes): An unsigned integer that specifies the index of the current mail merge record.
   This value MUST be between 0 and 0xFFFFFFF0 as the record index, or it MUST be 0xFFFFFFFF as
   a nil value.
rfs (4 bytes): The mail merge record filtering information. See Rfs.
cblszSqlStr (2 bytes): An unsigned integer that specifies the length, in bytes, of the string
    lxszSqlStr. Because lxszSqlStr is in Unicode, cblszSqlStr MUST be an even number. If
    cblszSqlStr is zero, lxszSqlStr does not exist; otherwise this value MUST be greater than 2 but
    MUST NOT exceed 512 bytes.
lxszSqlStr (variable): The null-terminated Unicode SQL Query string. For example, "SELECT * FROM
    [myTable] WHERE …", where myTable is the table name in the database that is connected. This
    field is not present if cblxszSqlStr is zero.
sttbfRfs (variable): The string table, STTB, that contains the strings for mail merge connection and
    record filtering. See the SttbfRfs structure. Pms.sttbfRfs does not exist if Pms.rfs.hsttbRfs is
    zero. See the Rfs structure.
wpmsdt (4 bytes): The mail merge document type. See the Wpmsdt structure.
2.9.206 PnFkpChpx
The PnFkpChpx structure specifies the location in the WordDocument Stream of a ChpxFkp
structure.
                                        1                                        2                                        3
0   1   2   3   4   5   6   7   8   9        1   2   3   4   5   6   7   8   9       1   2   3   4   5    6   7   8   9       1
                                        0                                        0                                        0
pn unused
pn (22 bits): An unsigned integer value that specifies the offset in the WordDocument Stream of a
   ChpxFkp structure. The ChpxFkp structure begins at an offset of pn * 512.
2.9.207 PnFkpPapx
The PnFkpPapx structure specifies the offset of a PapxFkp in the WordDocument Stream.
                                                                                                                                  382 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                  1                                           2                                         3
0    1   2    3   4       5   6       7   8   9        1   2   3   4   5     6   7    8   9       1    2   3   4   5    6   7   8   9       1
                                                  0                                           0                                         0
pn unused
pn (22 bits): An unsigned integer that specifies the offset in the WordDocument Stream of a
   PapxFkp structure. The PapxFkp structure begins at an offset of pn×512.
2.9.208 PositionCodeOperand
The PositionCodeOperand structure is an operand that specifies the location of an anchor point for
an absolutely positioned table or frame.
                                                  1                                           2                                         3
0    1   2    3   4       5   6       7   8   9        1   2   3   4   5     6   7    8   9       1    2   3   4   5    6   7   8   9       1
                                                  0                                           0                                         0
padding A B
A - pcVert (2 bits): An unsigned integer that MUST be one of the following values.
Value         Meaning
0             The vertical position of the table or frame is relative to the top page margin.
1             The vertical position of the table or frame is relative to the top edge of the page.
2             The vertical position of the table or frame is relative to the paragraph bottom of the
              paragraph that precedes it.
3             None. The table or frame is not absolutely positioned.
B - pcHorz (2 bits): An unsigned integer that MUST be one of the following values.
Value         Meaning
0             The horizontal position of the table or frame is relative to the left edge of the current
              column.
1             The horizontal position of the table or frame is relative to the left page margin.
2             The horizontal position of the table or frame is relative to the left edge of the page.
3             None. The table or frame is not absolutely positioned.
Note that all horizontal position measurements are made from the physical left.
2.9.209 Prc
The Prc structure specifies a set of properties for document content that is referenced by a Pcd
structure.
                                                  1                                           2                                         3
0    1   2    3   4       5   6       7   8   9        1   2   3   4   5     6   7    8   9       1    2   3   4   5    6   7   8   9       1
                                                  0                                           0                                         0
...
                                                                                                                                                383 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
data (variable): A PrcData that specifies a set of properties.
2.9.210 PrcData
The PrcData structure specifies an array of Prl elements and the size of the array.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
...
cbGrpprl (2 bytes): A signed integer that specifies the size of GrpPrl, in bytes. This value MUST be
   less than or equal to 0x3FA2.
GrpPrl (variable): An array of Prl elements. GrpPrl contains a whole number of Prl elements.
2.9.211 PrDrvr
The PrDrvr structure specifies printer driver information. It contains four null-terminated strings of
ANSI characters that specify the printer name, the port, the driver, and the product name of the
printer.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
szPrinter (variable)
...
szPrPort (variable)
...
szPrDriver (variable)
...
szTruePrnName (variable)
...
szPrinter (variable): A null-terminated string of ANSI characters that specifies the printer name that
   is used by the computer or the network.
szPrPort (variable): A null-terminated string of ANSI characters that specifies the printer port.
szPrDriver (variable): A null-terminated string of ANSI characters that specifies the printer driver.
szTruePrnName (variable): A null-terminated string of ANSI characters that specifies the product
   name from the printer manufacturer.
                                                                                                                                   384 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.212              PrEnvLand
The PrEnvLand structure specifies print environment information in landscape mode, which is
obtained from the printer as a binary block. This is unused and MUST be ignored.
2.9.213 PrEnvPort
The PrEnvPort structure specifies print environment information in portrait mode, which is obtained
from the printer as a binary block. This is unused and MUST be ignored.
2.9.214 Prm
A Prm structure is either a Prm0 structure or a Prm1 structure, depending on the value of the
fComplex bit.
                                            1                                       2                                       3
0   1   2   3   4    5   6   7    8     9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                       0                                       0
A data
A - fComplex (1 bit): If fComplex is 1, this Prm is a Prm1 structure. If fComplex is zero, this
    Prm is a Prm0 structure.
data (15 bits): The interpretation of this field depends on the value of fComplex. If fComplex is
   zero, then data is the last 15 bits of a Prm0 structure. If fComplex is 1, then data is the last 15
   bits of a Prm1 structure.
2.9.215 Prm0
The Prm0 structure is a Prm that has an fComplex value of zero. It specifies a single Sprm and
operand to apply to all document content that is referenced by a Pcd.
                                            1                                       2                                       3
0   1   2   3   4    5   6   7    8     9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                            0                                       0                                       0
A isprm val
isprm (7 bits): An unsigned integer that specifies the Sprm to apply, according to the following
    table. The operand is specified by val.
Isprm       Sprm
0x00        sprmCLbcCRJ. If val is also zero, this Prm0 does not apply sprmCLbcCRJ with an operand of zero;
            instead, it has no effect.
0x04        sprmPIncLvl
0x05        sprmPJc
0x07        sprmPFKeep
0x08        sprmPFKeepFollow
0x09        sprmPFPageBreakBefore
0x0C        sprmPIlvl
0x0D        sprmPFMirrorIndents
0x0E        sprmPFNoLineNumb
0x0F        sprmPTtwo
0x18        sprmPFInTable
0x19        sprmPFTtp
0x1D        sprmPPc
                                                                                                                                    385 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Isprm       Sprm
0x25        sprmPWr
0x2C        sprmPFNoAutoHyph
0x32        sprmPFLocked
0x33        sprmPFWidowControl
0x35        sprmPFKinsoku
0x36        sprmPFWordWrap
0x37        sprmPFOverflowPunct
0x38        sprmPFTopLinePunct
0x39        sprmPFAutoSpaceDE
0x3A        sprmPFAutoSpaceDN
0x41        sprmCFRMarkDel
0x42        sprmCFRMarkIns
0x43        sprmCFFldVanish
0x47        sprmCFData
0x4B        sprmCFOle2
0x4D        sprmCHighlight
0x4E        sprmCFEmboss
0x4F        sprmCSfxText
0x50        sprmCFWebHidden
0x51        sprmCFSpecVanish
0x53        sprmCPlain
0x55        sprmCFBold
0x56        sprmCFItalic
0x57        sprmCFStrike
0x58        sprmCFOutline
0x59        sprmCFShadow
0x5A        sprmCFSmallCaps
0x5B        sprmCFCaps
0x5C        sprmCFVanish
0x5E        sprmCKul
0x62        sprmCIco
0x68        sprmCIss
0x73        sprmCFDStrike
0x74        sprmCFImprint
0x75        sprmCFSpec
0x76        sprmCFObj
0x78        sprmPOutLvl
0x7B        sprmCFSdtVanish
0x7C        sprmCNeedFontFixup
0x7E        sprmPFNumRMIns
val (8 bits): The operand for the Sprm that is specified by isprm.
2.9.216 Prm1
The Prm1 structure is a Prm with an fComplex value of 1. It specifies properties for document
content that is referenced by a Pcd.
                                        1                                       2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                       0                                       0
A igrpprl
igrpprl (15 bits): An unsigned integer that specifies a zero-based index of a Prc in Clx.RgPrc. This
    value MUST be less than the number of Prc elements in Clx.RgPrc.
                                                                                                                                386 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.217              PropRMark
                                         1                                           2                                       3
0   1   2   3    4   5   6   7   8   9       1     2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                           0                                       0
...
fPropRMark (1 byte): An unsigned integer that specifies if there is a property revision. This value is
    1 if there is a property revision; otherwise, if there is no property revision, this value is 0.
ibstshort (2 bytes): A signed integer value that specifies the index into the SttbfRMark string table
    at which the name of the author of the revision is specified.
dttm (4 bytes): A DTTM structure that specifies the date and time at which the property revision
   was made.
2.9.218 PropRMarkOperand
The PropRMarkOperand structure is the operand to several Sprm structures that specify the
properties of property revision marks.
                                         1                                           2                                       3
0   1   2   3    4   5   6   7   8   9       1     2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                           0                                       0
cb proprmark
...
cb (1 byte): An unsigned integer that specifies the size of this PropRMarkOperand, excluding the
    current byte. This value MUST be 7.
proprmark (7 bytes): A PropRMark structure that holds the properties of the property revision
   mark that is being specified.
2.9.219 ProtectionType
The ProtectionType enumeration identifies common types of editing protection for ranges of text in a
document.
iProtReadWrite 0x0001 Allow the editing of the regions that are marked as editable in forms.
                                     Allow the creation, deletion, and editing of annotations. For all other changes: Allow
iProtRevision            0x0002
                                     them, but track them with revision marks.
iProtComment 0x0003 Allow the creation, deletion, and editing of annotations, but allow no other changes.
                                                                                                                                     387 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.220         PRTI
The PRTI structure contains information about a span of text that is delimited by a range-level
protection bookmark in the document.
                                                                                            388 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
iProt (2 bytes): A ProtectionType that identifies the kind of protection for which exception is granted
    to the editors that are specified by uidSel within a span of text. The span of text is delimited by
    the bookmark that is associated with this PRTI. This MUST be iProtReadWrite.
2.9.221 PTIstdInfoOperand
The PTIstdInfoOperand structure is the operand for sprmPTIstdInfo, and MUST be ignored.
                                          1                                            2                                       3
0   1   2   3     4   5   6   7   8   9       1   2   3   4    5      6    7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                            0                                       0
...
...
...
cb (1 byte): An unsigned integer value that specifies the size, in bytes, of this PTIstdInfoOperand,
    excluding the cb member. This value MUST be 16.
2.9.222 Rca
The Rca structure is used to define the coordinates of a rectangular area in the document. Unless
otherwise specified by the other structures that use this structure, the origin is at the top left of the
page and the units are in twips.
                                          1                                            2                                       3
0   1   2   3     4   5   6   7   8   9       1   2   3   4    5      6    7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                            0                                       0
left
top
right
bottom
left (4 bytes): An integer that specifies the X coordinate of the top left corner of the rectangle.
top (4 bytes): An integer that specifies the Y coordinate of the top left corner of the rectangle.
right (4 bytes): An integer that specifies the X coordinate of the bottom right corner of the
    rectangle.
bottom (4 bytes): An integer that specifies the X coordinate of the bottom right corner of the
   rectangle.
                                                                                                                                       389 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.223             RecipientBase
The RecipientBase structure contains information about a mail merge recipient followed by a marker
(RecipientLast) that specifies where the recipient information ends.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
recipient (variable)
...
RecipientLast
recipient (variable): An array of RecipientDataItem containing data that describes a mail merge
    recipient. Each recipient MUST have a RecipientDataItem with a RecipientDataID of 0x0003 or
    MUST have RecipientDataItem elements that have RecipientDataIDs of 0x0002 and 0x0004.
RecipientLast (4 bytes): Contains a RecipientTerminator that specifies that there is no further data
   to read for the current recipient.
2.9.224 RecipientDataItem
The RecipientDataItem structure specifies information about a mail merge recipient. All the
RecipientDataItem elements that pertain to a particular recipient are grouped together. The
presence of a RecipientTerminator indicates that there is no further data about this recipient.
RecipientDataItem elements that follow a RecipientTerminator relate to subsequent recipients.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3    4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
RecipientDataId cbRecipientData
Data (variable)
...
cbRecipientData (2 bytes): An unsigned integer that specifies the size, in bytes, of the following
   Data element.
Data (variable): Contains the actual data for this RecipientDataItem. The meaning of the data
   depends on the preceding RecipientDataId and is described following.
RecipientDataId         Data
0x0001                  An unsigned integer that specifies the status (included or excluded) of a recipient
                        record. This value MUST be zero (excluded) or 1 (included). If not present, this value
                        defaults to 1.
0x0002                  An unsigned integer that specifies the zero-based index of the data source column
                        that uniquely identifies a recipient.
0x0003                  An unsigned integer that specifies a hashed DWORD that uniquely identifies a
                        recipient if there is no unique column in the data source. The hash value for a data
                        source record is generated as follows:
FUNCTION GetHash
                                                                                                                                   390 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
RecipientDataId          Data
                           SET hashValue to 0x00000000
                           FOR each column in the data source
                              SET strColumn to the string value in the column
                              SET hashValue to CALL AddStringToHash hashValue strColumn
                           END FOR
                           RETURN hashValue
                         END FUNCTION
                         If the data source is Microsoft Outlook, the last column in the data source SHOULD
                         NOT<233> be used in the preceding function GetHash.
0x0004                   A Unicode string that specifies the contents of the data source column that uniquely
                         identifies a recipient. The string is not null-terminated.
2.9.225 RecipientInfo
The RecipientInfo structure specifies which recipients in the data source are excluded from the mail
merge. It also provides data to uniquely identify each recipient in case the data source was altered
after the last read operation.
                                        1                                           2                                          3
0   1   2   3   4   5   6   7   8   9        1   2    3   4   5     6   7   8   9       1    2    3   4    5   6   7   8   9       1
                                        0                                           0                                          0
countMarker cbCount
cRecipients
RecipientListSizeMarker cbRecipientList
cbRecipientListOverflow (optional)
Recipients (variable)
...
countMarker (2 bytes): An unsigned integer that specifies that the count of recipients follows. This
   value MUST be zero.
cbCount (2 bytes): An unsigned integer that specifies the size, in bytes, of cRecipients. This value
   MUST be 0x0004.
                                                                                                                                       391 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cRecipients (4 bytes): An unsigned integer that specifies the number of elements in the
   Recipients array.
RecipientListSizeMarker (2 bytes): An unsigned integer that specifies that the size, in bytes, of
   the Recipients array follows. This value MUST be 0x0001.
cbRecipientList (2 bytes): An unsigned integer that specifies the size, in bytes, of the Recipients
   array, or, if the size is greater than 0xFFFE, this value MUST be 0xFFFF.
cbRecipientListOverflow (4 bytes): An unsigned integer that specifies the size, in bytes, of the
   Recipients array. This value is present only if cbRecipientList is set to 0xFFFF.
Recipients (variable): An array of RecipientBase. An array that contains information about the
   recipients in the mail merge data source.
2.9.226 RecipientTerminator
The RecipientTerminator structure marks the end of the RecipientDataItem elements that pertain to
a recipient.
2.9.227 Rfs
The Rfs structure specifies record filtering and the other mail merge properties.
                                            1                                       2                                          3
0   1       2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2    3   4     5   6   7   8   9       1
                                            0                                       0                                          0
A B C D E F G unused2 hsttbRfs
A - fShowData (1 bit): Specifies whether the data are shown in the merged fields. If this value is set
    to zero, only the merged field names are shown.
B - grfChkErr (2 bits): An integer that specifies the settings for error checking and reporting. It
    MUST be one of the following values.
Value           Meaning
0               Simulate the merge and report errors in a new document.
1               Complete the merge and pause to report errors.
2               Complete the merge and report errors in a new document.
C - fManDocSetup (1 bit): Specifies whether the main document envelope or mailing labels are set
    up.
D - fMailAsText (1 bit): Specifies whether the e-mail message is in plain text format.
F - fDefaultSQL (1 bit): Specifies whether the default SQL query string is "SELECT * FROM x".
                                                                                                                                       392 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
unused2 (8 bits): This field is undefined and MUST be ignored.
hsttbRfs (2 bytes): An unsigned integer that specifies whether SttbfRfs exists in Pms. If SttbfRfs
    does not exist in Pms, hsttbRfs MUST be zero. If Pms contains SttbfRfs, hsttbRfs MUST be
    nonzero (any nonzero value).
2.9.228 RgCdb
The RgCdb structure contains binary data for grammar checker cookies which are stored by
grammar checkers that implement the NLCheck interface. The data for a grammar checker cookie
is implementation-specific to the grammar checker that created the grammar checker cookie.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
cbTotal
ccdb
rgdata (variable)
...
cbTotal (4 bytes): An unsigned integer that specifies the size of this RgCdb, including cbTotal, in
   bytes.
ccdb (4 bytes): An unsigned integer that specifies the number of CDB entries in rgdata.
rgdata (variable): An array of CDB. These entries are accessed by using the icdb field of FCKS.
2.9.229 RgxOcxInfo
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
cOcxInfo
rgocxinfo (variable)
...
cOcxInfo (4 bytes): An unsigned integer that specifies the number of OcxInfo structures in
   rgocxinfo.
2.9.230 RmdThreading
The RmdThreading structure specifies data about e-mail messages and their authors.
                                                                                                                                     393 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                        1                                             2                                       3
0   1   2   3   4   5   6   7   8   9       1    2    3   4   5       6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                             0                                       0
SttbMessage (variable)
...
SttbStyle (variable)
...
SttbAuthorAttrib (variable)
...
SttbAuthorValue (variable)
...
SttbMessageAttrib (variable)
...
SttbMessageValue (variable)
...
SttbMessage (variable): An STTB where each string specifies the message identifier for the
    corresponding author in the parallel SttbfRMark. The string is empty if the corresponding author
    is not the author of an e-mail message. The extra data that is appended to each string is an MDP
    that specifies the message display properties. If a string is empty, the extra data that is appended
    to it MUST be ignored.
                                        1                                             2                                       3
0   1   2   3   4   5   6   7   8   9   0   1    2    3   4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
Data0 (variable)
ExtraData0 (8 bytes)
                                                                                                                                      394 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                        ExtraData1 (8 bytes)
… cchDatacData-1 (2 bytes)
DatacData-1 (variable)
ExtraDatacData-1 (8 bytes)
SttbMessage is an STTB with the following additional restrictions on its field values:
SttbStyle (variable): An STTB where each string specifies the personal style of the corresponding
    author in the parallel SttbfRMark. The string is empty if the corresponding author does not have
    a personal style. There is no extra data appended to the strings of this STTB.
                                            1                                            2                                       3
0   1   2   3   4   5   6   7       8   9   0   1   2    3   4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
Data0 (variable)
… cchDatacData-1 (2 bytes)
DatacData-1 (variable)
SttbStyle is an STTB with the following additional restrictions on its field values:
SttbAuthorAttrib (variable): An STTB in which each string specifies an author attribute. The extra
    data appended to each string is a 16-bit signed integer that specifies a zero-based index of an
    author in the SttbfRMark to which this attribute is related. If a string is an empty string, the data
                                                                                                                                         395 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    that is appended to it MUST be ignored, and the corresponding value in the parallel
    SttbAuthorValue MUST be ignored. SttbAuthorAttrib SHOULD<234> be ignored.
                                         1                                           2                                            3
0   1   2   3   4    5   6   7   8   9   0   1   2   3   4   5       6   7   8   9   0    1   2   3       4   5   6   7   8   9   0   1
Data0 (variable)
Data1 (variable)
ExtraData1 (2 bytes) …
ExtraDatacData-1 (2 bytes)
SttbAuthorAttrib is an STTB with the following additional restrictions on its field values:
SttbAuthorValue (variable): An STTB where each string specifies the value of the corresponding
    author attribute in the parallel SttbAuthorAttrib. There is no extra data appended to the strings
    of this STTB. SttbAuthorValue SHOULD<235> be ignored.
                                         1                                           2                                            3
0   1   2   3   4    5   6   7   8   9   0   1   2   3   4   5       6   7   8   9   0    1   2   3       4   5   6   7   8   9   0   1
Data0 (variable)
                                                                                                                                          396 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                             …                                                        cchDatacData-1 (2 bytes)
DatacData-1 (variable)
SttbAuthorValue is an STTB with the following additional restrictions on its field values:
SttbMessageAttrib (variable): An STTB in which each string specifies a message attribute. The
    extra data that is appended to each string is a 16-bit signed integer that specifies a zero-based
    index of a message that this attribute pertains to in SttbMessage. If a string is an empty string,
    the data that is appended to it MUST be ignored, and the corresponding value in the parallel
    SttbMessageValue MUST be ignored. SttbMessageAttrib SHOULD<236> be ignored.
                                         1                                            2                                            3
0   1   2   3   4    5   6   7   8   9   0   1   2    3   4   5       6   7   8   9   0    1   2   3       4   5   6   7   8   9   0   1
Data0 (variable)
Data1 (variable)
ExtraData1 (2 bytes) …
ExtraDatacData-1 (2 bytes)
SttbMessageAttrib is an STTB with the following additional restrictions on its field values:
SttbMessageValue (variable): An STTB in which each string specifies the value of the
    corresponding message attribute in the parallel SttbMessageAttrib. No extra data is appended to
    the strings of this STTB. SttbMessageValue SHOULD<237> be ignored.
                                                                                                                                           397 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                           1                                            2                                        3
0   1   2   3   4   5   6     7    8   9   0   1   2    3   4   5       6   7   8   9   0   1   2   3   4    5   6   7   8   9   0   1
Data0 (variable)
… cchDatacData-1 (2 bytes)
DatacData-1 (variable)
SttbMessageValue is an STTB with the following additional restrictions on its field values:
2.9.231 Rnc
The Rnc enumeration specifies whether and when the numbering for footnotes or endnotes restarts.
The members of this enumeration are specified as the following 8-bit unsigned integer values.
2.9.232 RouteSlip
The RouteSlip structure contains information about the routing slip of the document.
                                           1                                            2                                        3
0   1   2   3   4   5   6     7    8   9       1   2    3   4   5       6   7   8   9       1   2   3   4    5   6   7   8   9       1
                                           0                                            0                                        0
fRouted fReturnOrig
fTrackStatus fDirty
nProtect iStage
delOption cRecip
                                                                                                                                         398 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          szSubject (variable)
...
szMessage (variable)
...
szStatus (variable)
...
szTitle (variable)
...
rgRouteSlips (variable)
...
fRouted (2 bytes): A 16-bit Boolean value that specifies whether the document was sent out for
   review.
fReturnOrig (2 bytes): A 16-bit Boolean value that specifies whether the document is returned to
   the original sender after the review route is complete.
fTrackStatus (2 bytes): A 16-bit Boolean value that specifies whether status tracking e-mail is sent
    to the original sender.
nProtect (2 bytes): An unsigned integer value that specifies the kinds of changes allowed to the
   document being routed. This MUST be one of the values that are defined in
   RouteSlipProtectionEnum.
iStage (2 bytes): A 16-bit signed integer value that specifies the index of the current routing
    recipient. This value MUST be greater or equal to zero, and less than the value of cRecip.
delOption (2 bytes): A 16-bit signed integer value that specifies how the document is routed. This
   value MUST be 0 or 1. A value of 0 means the document is sent to reviewers in serial order. A
   value of 1 means the document is sent to all reviewers in parallel order.
cRecip (2 bytes): A 16-bit signed integer that specifies the number of recipients of the routing slip.
   This is the size of the rgRouteSlips array.
szSubject (variable): A length-prefixed string containing ANSI characters that represent the subject
   to be mailed with the route slip. This string MUST be less than 256 characters in length. The string
   is encoded by using the system code page of the computer that saved the file.
szMessage (variable): A length-prefixed string containing ANSI characters that represent the
   message body to be mailed with the route slip. This string MUST be less than 256 characters in
   length. The string is encoded by using the system code page of the computer that saved the file.
szStatus (variable): A length-prefixed string containing ANSI characters that represent status
   information about the document to be mailed with the route slip. This string MUST be less than
                                                                                               399 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    256 characters in length. The string is encoded by using the system code page of the computer
    that saved the file.
szTitle (variable): A length-prefixed string containing ANSI characters that represent a title for the
   route slip. This string MUST be less than 256 characters long. The string is encoded by using the
   system code page of the computer that saved the file.
rgRouteSlips (variable): An array of cRecip RouteSlipInfo structures that contains all the routing
   slips.
2.9.233 RouteSlipInfo
The RouteSlipInfo structure provides information about a single routing slip recipient.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
cbEntryID cbszName
rgbEntryId (variable)
...
szName (variable)
...
cbEntryID (2 bytes): A 16-bit signed integer that specifies the number of bytes in rgbEntryId.
cbszName (2 bytes): A 16-bit signed integer that specifies the number of bytes in szName. This
   value MUST be greater than zero.
rgbEntryId (variable): An array of bytes that provide a unique identifier for this routing slip
   recipient.
szName (variable): A narrow string that specifies the name or e-mail alias of the routing slip
   recipient. The length of the string MUST be equal to cbszName. The string is encoded by using
   the operating system code page of the computer that last saved this file.
2.9.234 RouteSlipProtectionEnum
The RouteSlipProtectionEnum enumeration lists the possible protection levels for a document being
routed.
                                    Changes to the document can be neither accepted nor rejected, and change
ProtectRevMark          0x0001
                                    tracking cannot be turned off.
                                    Users can insert comments into the document but cannot change the content of
ProtectAnnot            0x0002
                                    the document.
                                                                                                                                   400 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.235         SBkcOperand
The SBkcOperand structure is the operand to sprmSBkc. This structure is an 8-bit unsigned integer
that specifies the type of the section break that is being described.
bkcContinuous 0x00 A continuous section break. The next section starts on the next line.
bkcNewColumn 0x01 A new column section break. The next section starts in the next column.
bkcNewPage 0x02 A new page section break. The next section starts on the next page.
bkcEvenPage 0x03 An even page section break. The next section starts on an even page.
bkcOddPage 0x04 An odd page section break. The next section starts on an odd page.
                                                                                                     401 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.237             SClmOperand
The SClmOperand structure provides an enumeration which specifies the type of document grid that
is used for the section. This enumeration defines the following 16-bit unsigned integer values.
                                        Specifies a document grid that enforces both character spacing and line pitch.
clmCharsAndLines            0x0001      Line pitch is specified by sprmSDyaLinePitch; character spacing is specified by
                                        sprmSDxtCharSpace.
                                        Specifies a document grid that enforces only line pitch. Line pitch is specified by
clmLinesOnly                0x0002
                                        sprmSDyaLinePitch.
                                        Specifies a document grid that enforces both character spacing and line pitch.
                                        Line pitch is specified by sprmSDyaLinePitch; character spacing is specified by
clmEnforceGrid              0x0003
                                        sprmSDxtCharSpace. Each full-width character MUST occupy its own grid
                                        square.
2.9.238 SDmBinOperand
The SDmBinOperand enumeration is a 16-bit unsigned integer that specifies a paper source for a
printer. The determination and interpretation of this value is implementation specific.
2.9.239 SDTI
The SDTI structure contains information about a structured document tag bookmark in the
document.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3    4    5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                            0                                       0
dwId
tiq
...
sdtt
cfsdap
cbPlaceholder
fsdaparray (variable)
...
xszPlaceholder (variable)
...
dwId (4 bytes): An unsigned integer that specifies a unique value which is used to reference the
   structured document tag bookmark associated with this SDTI structure. This value MUST be
                                                                                                                                     402 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    unique for all SDTI structures that are contained in a given SttbfBkmkSdt. This value MUST NOT
    be 0.
tiq (8 bytes): A TIQ that specifies further information about the structured document tag bookmark
    that is associated with this SDTI structure.
sdtt (4 bytes): An SDTT structure that specifies further information about the structured document
    tag bookmark that is associated with this SDTI. The SDTT structure MUST NOT be
    sdttUnknown.
cfsdap (4 bytes): An unsigned integer value that specifies the number of elements in fsdaparray.
cbPlaceholder (4 bytes): An unsigned integer that specifies the count of bytes, including the
   terminating NULL character, in xszPlaceholder.
fsdaparray (variable): An array of FSDAP structures, each of which specifies further information
   about the structured document tag bookmark that is associated with this SDTI structure.
2.9.240 SDTT
The SDTT structure specifies the type of structured document tag that is represented by a
structured document tag bookmark in the document.
sdttUnknown 0x00000000 The type of the tag is determined from the range it encloses.
2.9.241 SDxaColSpacingOperand
The SDxaColSpacingOperand structure is the operand to Sprm structures that control column size
and spacing.
                                        1                                        2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                        0                                       0
iCol dxaCol
iCol (1 byte): An unsigned integer that specifies the zero-based index of the column that is being
    referenced by the Sprm. This value MUST be less than or equal to 43.
dxaCol (2 bytes): An XAS_nonNeg value that specifies the space after the column that is specified
   by iCol.
2.9.242 SDxaColWidthOperand
The SDxaColWidthOperand structure is the operand to Sprm structures that control column size
and spacing.
                                                                                                                                 403 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                             1                                         2                                          3
0   1   2   3   4   5    6    7      8   9       1   2   3   4    5   6    7   8   9       1   2    3   4   5   6    7   8    9       1
                                             0                                         0                                          0
iCol dxaCol
iCol (1 byte): An unsigned integer value that specifies the zero-based index of the column that is
    referenced by the Sprm. This value MUST be less than or equal to 43.
dxaCol (2 bytes): An XAS_nonNeg value that specifies the width of the column that is specified by
   iCol. This value MUST be at least 718.
2.9.243 Sed
                                             1                                         2                                          3
0   1   2   3   4   5    6    7      8   9       1   2   3   4    5   6    7   8   9       1   2    3   4   5   6    7   8    9       1
                                             0                                         0                                          0
fn fcSepx
... fnMpr
fcMpr
fcSepx (4 bytes): A signed integer value that specifies the position in the WordDocument Stream at
   which a Sepx structure is located.
2.9.244 Selsf
The Selsf structure specifies the last selection that was made to the document.
                                             1                                         2                                          3
0   1   2   3   4   5    6    7      8   9       1   2   3   4    5   6    7   8   9       1   2    3   4   5   6    7   8    9       1
                                             0                                         0                                          0
A B C D E F G H I J K L M N O P fForward Q fInsEnd
cpFirst
cpLim
unused4
blktblSel
cpAnchor
sty unused5
                                                                                                                                          404 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          cpAnchorShrink
xaTableLeft xaTableRight
A - fRightward (1 bit): A bit that specifies whether the selection was made from the physical left
    to the physical right. If fBlock is 0, this bit is undefined and MUST be ignored.
C - fWithinCell (1 bit): A bit that specifies that the selection is content within a table cell. This value
    MUST be 0 if the selection contains only whole table cells.
D - fTableAnchor (1 bit): If this bit is 1, then the selection began with either table content or table
    cells.
E - fTableSelNonShrink (1 bit): If this bit is 1, then the selection began with the use of the mouse
    to select the whole table cell and that the selection contains only whole table cells.
G - fDiscontiguous (1 bit): If this bit is 1, then the selection was made of two or more ranges within
    the document. The Selsf structure describes only the most recent range that was selected.
H - fPrefix (1 bit): If this bit is 1, then the selection is a bullet in a bulleted list or a number in a
    numbered list.
I - fShape (1 bit): A bit that specifies that the selection is a shape or floating picture. This value
     MUST be 0 if the selection is a textbox or inline picture.
J - fFrame (1 bit): A bit that specifies that the selection is a text frame. This value MUST be 0 if the
     selection is a textbox.
K - fColumn (1 bit): If this bit is 1, then the selection contains one or more whole table cells. This bit
    MUST be 0 if the selection was made strictly of whole table rows or the entire table.
L - fTable (1 bit): If this bit is 1, then the selection contains one or more whole table cells.
M - fGraphics (1 bit): A bit that specifies that the selection is an inline picture. This value MUST be 0
    if the selection is a floating picture.
N - fBlock (1 bit): A bit that specifies that the selection was made of a rectangular block. If fTable is
    0, the selection is a block of text and MUST NOT contain table content. If fTable is 1, the selection
    is a block of table cells; fBlock MUST be 0 if the table selection is restricted to whole table rows or
    is the entire table.
P - fIns (1 bit): A bit that specifies that the selection is an insertion point. If fIns is 1, cpFirst MUST
    equal cpLim.
fForward (7 bits): An unsigned integer that MUST be 0 or 1. This field specifies that the selection
   was made in a downward direction or towards the logical right if the value is 1.
fInsEnd (8 bits): An unsigned integer value that MUST be 0 or 1. If this value is 1, the selection is
    an insertion point at the end of the line, as opposed to at the beginning of the following line. If
    fInsEnd is 1, fIns MUST also be 1. If fShape is 1, fInsEnd is undefined and MUST be ignored. If
    the selection does not fall at a line break, fInsEnd MUST be ignored.
                                                                                                     405 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cpFirst (4 bytes): A signed integer that specifies the start point, in characters, of the selection
   range. This value MUST be at least 0, and MUST NOT exceed the end of the text piece. If the
   selection begins with whole table cells, cpFirst MUST be the location of the beginning of the row
   that contains the first selected cell. If the selection is a block selection of text, cpFirst MUST be
   the location of the beginning of the first line that contains selected characters.
cpLim (4 bytes): A signed integer that specifies the endpoint, in characters, of the selection range.
   This value MUST be at least 0, MUST be greater than or equal to cpFirst, and MUST NOT exceed
   the end of the document. If the selection ends with whole table cells, cpLim MUST be the location
   of the end of the row that contains the last selected cell. If the selection is a block selection of
   text, cpLim MUST be the location of the beginning of the last line that contains selected
   characters.
blktblSel (4 bytes): Specifies a selection range. The interpretation of blktblSel depends on the
    values of fTable and fBlock, which are provided following.
fTable
          fBlock    Interpretation
0
          0         blktblSel is undefined and MUST be ignored.
0
          1         blktblSel is a BlockSel and specifies the dimensions of a block selection.
1
          0         blktblSel is a TableSel and specifies a row selection.
1
          1         blktblSel is a TableSel and specifies a range of table cells.
cpAnchor (4 bytes): A signed integer that specifies the point, in characters, at which the selection
   initially began. This value MUST be greater than or equal to cpFirst. If the selection was
   automatically extended to include text before cpAnchor, cpFirst is less than cpAnchor. If the
   selection was not extended before the point where the selection began, cpAnchor is equal to
   cpFirst.
sty (2 bytes): A Sty structure that specifies the type of selection that was made.
cpAnchorShrink (4 bytes): A signed integer that specifies the point, in characters, where a block
   selection began. If fBlock is 0 or fTable is 1, cpAnchorShrink is undefined and MUST be
   ignored.
xaTableLeft (2 bytes): A signed integer that specifies, in twips, the physical left edge of the first
   selected cell if the selection contains whole table cells. This value MUST be in the range of -31680
   to 31680, inclusive. If the entire row is selected, xaTableLeft MUST be -31680. If the selection
   does not contain whole table cells, xaTableLeft is undefined and MUST be ignored.
xaTableRight (2 bytes): A signed integer that specifies, in twips, the physical right edge of the last
   selected cell if the selection contains whole table cells. This value MUST be in the range of -31680
   to 31680, inclusive, and MUST be greater than or equal to xaTableLeft. If the entire row is
   selected, xaTableRight MUST be 31680. If the selection does not contain whole table cells,
   xaTableRight is undefined and MUST be ignored.
2.9.245 Sepx
The Sepx structure specifies an array of Prl structures and the size of the array.
                                                                                                 406 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          1                                         2                                       3
0   1    2   3   4   5   6   7    8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                         0                                       0
cb grpprl (variable)
...
grpprl (variable): An array of Prl structures that specify the properties of a section. This array
   MUST contain a whole number of Prl structures.
2.9.246 SFpcOperand
The SFpcOperant enumeration provides an 8-bit unsigned integer that specifies the positioning of the
section footnote. SFpcOperand is the operand to sprmSFpc.
fpcBeneathText 0x02 Footnotes are positioned beneath the text on the page.
2.9.247 Shd
The Shd structure specifies the colors and pattern that are used for background shading.
ShdAuto is a special value for Shd that specifies that no shading is applied and is defined as the
following Shd.
Field            Value
cvFore
cvBack
ipat ipatAuto
ShdNil is a special value for Shd. If ShdNil is used in a Table Style definition, ShdNil is ignored and
the shading of the cell is not affected. If ShdNil is applied outside of a Table Style, ShdNil specifies
that no shading is applied. ShdNil is defined as the following Shd.
                                                                                                                                    407 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Field            Value
cvFore
cvBack
ipat ipatAuto
                                         1                                        2                                       3
0   1    2   3   4   5   6   7   8   9       1   2   3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                        0                                       0
cvFore
cvBack
ipat
ipat (2 bytes): An Ipat that specifies the pattern used for shading.
2.9.248 Shd80
The Shd80 structure specifies the colors and pattern that are used for background shading. As an
exception to the constraints that are specified by Ico and Ipat, a Shd80 can be set to Shd80Nil and
specifies that no shading is applied. Shd80Nil is defined as the following Shd80.
Field            Value
icoFore          0x1F
icoBack          0x1F
ipat             0x3F
                                         1                                        2                                       3
0   1    2   3   4   5   6   7   8   9       1   2   3   4    5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                        0                                       0
ipat (6 bits): An Ipat that specifies the pattern used for shading.
                                                                                                                                  408 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.249         SHDOperand
The SDHOperand structure is an operand that is used by several Sprm structures to specify the
background shading to be applied.
          cb                                          shd
...
...
                                                                                         409 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cb (1 byte): An unsigned integer that specifies the size of this operand in bytes, not including cb.
    This value MUST be 10.
shd (10 bytes): A Shd structure that specifies the background shading that is applied.
2.9.250 SLncOperand
The SLncOperand enumeration is the operand to sprmSLnc. This structure is an 8-bit unsigned
integer that specifies the line numbering mode for the section.
                                Line numbers continue from the preceding section, or start at 1 if this is the first section
lncContinue         0x02
                                of the document.
2.9.251 SmartTagData
The SmartTagData structure stores information about all the smart tags in the document. The
location of each smart tag is specified by the fcPlcfBkfFactoid and lcbPlcfBkfFactoid members of
the FibRgFcLcb2002.
                                         1                                            2                                       3
0   1   2   3   4   5   6   7    8   9       1   2    3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                            0                                       0
propBagStore (variable)
...
propBags (variable)
...
2.9.252 SortColumnAndDirection
The SortColumnAndDirection structure specifies the sort order and the column by which the list of
mail merge recipients is sorted.
                                         1                                            2                                       3
0   1   2   3   4   5   6   7    8   9       1   2    3   4    5      6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                            0                                       0
iColumn
iDirection
                                                                                                                                      410 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
iColumn (4 bytes): An unsigned integer that specifies the zero-based index of the database column
    to which this filter applies. This value MUST be greater than or equal to zero and MUST be less
    than or equal to 254.
iDirection (4 bytes): An unsigned integer that specifies the sort order to be used when sorting the
    associated column. The value MUST be zero (ascending) or 1 (descending).
                                                                                            411 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.253               Spa
The Spa structure specifies information about the shapes and drawings that the document contains.
                                              1                                          2                                       3
0   1    2   3    4   5   6    7      8   9       1   2   3    4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                              0                                          0                                       0
lid
...
...
A bx by wr wrk B C D cTxbx
...
lid (4 bytes): An integer that specifies the identifier of a shape that is contained in the
     OfficeArtDggContainer structure. This value corresponds to the spid field of an OfficeArtFSP
     structure that specifies the data for this shape. OfficeArtDggContainer and OfficeArtFSP are
     specified in [MS-ODRAW] sections 2.2.12 and 2.2.40, respectively.
rca (16 bytes): An Rca structure that specifies the rectangle where the drawing exists. The
    coordinates of rca are in twips.
bx (2 bits): An unsigned integer that specifies the horizontal position of the origin that is used to
    calculate the rca. This MUST be one of the following values.
Value Meaning
by (2 bits): An unsigned integer that specifies the vertical position of the origin that is used to
    calculate the rca. This MUST be one of the following values.
Value Meaning
                                                                                                                                         412 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
wr (4 bits): An unsigned integer that specifies the style of text wrapping around this shape. This
   MUST be one of the following values.
Value Meaning
1                No text wrapping around the object. No text appears on either side of the shape
                 (top and bottom wrapping).
3                Display as if the shape is not there. The shape appears either in front of or behind
                 the text, based on fBelowText.
4                Wrap text tightly around this shape, following its contour only on the left and right
                 sides (tight wrapping).
5                Wrap text tightly around this shape, following its contour on all sides (through
                 wrapping).
Value Meaning
                                                                                                         413 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cTxbx (4 bytes): This value is undefined and MUST be ignored.
2.9.254 SpellingSpls
The SpellingSpls is an SPLS structure that specifies the state of the spell-checker over a range of
text. Some states that are possible in a generic SPLS are not allowed in a SpellingSpls structure.
                                              1                                       2                                       3
0   1     2   3       4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                              0                                       0                                       0
spls
spls (2 bytes): An SPLS structure. The spls.fExtend and spls.fTypo fields are not used and MUST
    be zero. The spls.splf field MUST be one of the following:
§ splfMaybeDirty
§ splfDirty
§ splfEdit
§ splfForeign
§ splfClean
§ splfRepeatWord
§ splfUnknownWord
2.9.255 SPgbPropOperand
                                              1                                       2                                       3
0   1     2   3       4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                              0                                       0                                       0
A B C reserved
A - pgbApplyTo (3 bits): A value from the PgbApplyTo enumeration that specifies to what pages
    the border applies.
B - pgbPageDepth (2 bits): A value from the PgbPageDepth enumeration controlling the "depth"
    of the border—for example, whether it is above or below other page elements.
C - pgbOffsetFrom (3 bits): A value from the PgbOffsetFrom enumeration that specifies from
    where the offset of the border is measured.
2.9.256 SPLS
The SPLS structure specifies the current state of a range of text with regard to one of the language
checking features such as the spell-checker, grammar-checker, language auto-detection, or smart
tag recognizer.
                                                                                                                                      414 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          1                                        2                                       3
0   1   2   3   4   5   6   7    8    9        1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                        0                                       0
splf A B C unused
A - fError (1 bit): The range is an error. This bit MUST be set when the splf value is splfErrorMin,
    splfRepeatWord, or splfUnknownWord. It can also be set when the splf value is splfDirty or
    splfEdit, which both indicate that the range is currently an error but is still subject to further
    checking. This bit MUST NOT be set for any other splf value.
B - fExtend (1 bit): The range is an error. When rechecked, the surrounding text is also rechecked.
C - fTypo (1 bit): The range is a spelling error that was caught by a grammar-checker.
unused (9 bits): This field is not used. This value MUST be zero.
2.9.257 SPPOperand
The SPPOperand structure specifies a potential change in the current style as specified by an istd
value. A given istd is affected only if it is within the istdFirst and istdLast bounds (inclusive). If the
istd is affected, the new istd is rgIstdPermute[istd – istdFirst].
                                                                                                                                   415 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                            1                                            2                                           3
0   1   2   3    4   5   6    7   8     9       1   2    3    4   5      6   7   8   9       1   2     3   4     5   6   7   8   9       1
                                            0                                            0                                           0
cb fLong istdFirst
...
cb (1 byte): An unsigned 8-bit integer that specifies the size, in bytes, of this SPPOperand
    structure, excluding the cb member.
istdFirst (2 bytes): An unsigned 16-bit integer that specifies the first istd to which this change
    applies.
istdLast (2 bytes): An unsigned 16-bit integer that specifies the last istd to which this change
    applies. This value MUST be greater than or equal to istdFirst.
rgIstdPermute (variable): An array of unsigned 16-bit integers that specifies an array of remapped
   istd values. The count of elements MUST be equal to istdLast – istdFirst + 1.
2.9.258 STD
                                            1                                            2                                           3
0   1   2   3    4   5   6    7   8     9       1   2    3    4   5      6   7   8   9       1   2     3   4     5   6   7   8   9       1
                                            0                                            0                                           0
stdf (variable)
...
xstzName (variable)
...
grLPUpxSw (variable)
...
stdf (variable): An Stdf that specifies basic information about the style.
xstzName (variable): An Xstz structure that specifies the primary style name followed by any
   alternate names (aliases), with meaning as specified in [ECMA-376] part 4, section 2.7.3.9 (name)
   and [ECMA-376] part 4, section 2.7.3.1 (aliases). The primary style name and any alternate style
   names are combined into one string, with a comma character (U+002C) separating the primary
   style name and any alternate style names. If there are no alternate style names, the trailing
   comma is omitted.
    Each name, whether primary or alternate, MUST NOT be empty and MUST be unique within all
    names in the stylesheet.
grLPUpxSw (variable): A GrLPUpxSw structure that specifies the formatting for the style.
                                                                                                                                             416 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.259             Stdf
                                              1                                           2                                           3
0   1   2   3   4   5     6   7      8    9         1   2   3   4   5     6   7   8   9       1   2    3   4    5   6     7   8   9       1
                                              0                                           0                                           0
stdfBase
...
...
...
stdfBase (10 bytes): An StdfBase structure that specifies general information about the style.
2.9.260 StdfBase
                                              1                                           2                                           3
0   1   2   3   4   5     6   7      8    9         1   2   3   4   5     6   7   8   9       1   2    3   4    5   6     7   8   9       1
                                              0                                           0                                           0
grfstd
sti (12 bits): An unsigned integer that specifies the invariant style identifier for application-defined
    styles, or 0x0FFE for user-defined styles.
     The sti identifies which styles in the stylesheet correspond to which application-defined styles. An
     application-defined style can have different names in different languages, but it MUST have the
     same sti value regardless of language. The sti values correspond to the "Index within Built-in
     Styles" table column that is specified in [ECMA-376] part 4, section 2.7.3.9 (name).
B - fInvalHeight (1 bit): Specifies whether the paragraph height information in the fcPlcfPhe field
    of FibRgFcLcb97, for any paragraphs having this paragraph style, MUST be ignored.
    SHOULD<240> be 0.
stk (4 bits): An unsigned integer that specifies the type of this style, which corresponds to the "type"
    attribute of the style element as specified in [ECMA-376] part 4, section 2.7.3.17 (Style
    Definition). This MUST be one of the following values:
                                                                                                                                              417 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value                      Meaning
istdBase (12 bits): An unsigned integer that specifies the istd (see the rglpstd array in the STSH
    structure) of the parent style from which this style inherits in the style inheritance tree, or 0x0FFF
    if this style does not inherit from any other style in the current document. The meaning of the
    parent style is specified in the basedOn element in [ECMA-376] part 4, section 2.7.3.3. However,
    the style reference in that specification is a styleId rather than an istd, and an istdBase value of
    0x0FFF corresponds to omitting the basedOn element.
    The istdBase value MUST be an index that refers to a valid non-empty style in the array of style
    definitions. The istdBase value MUST NOT be the same as the istd of the current style and MUST
    NOT cause a loop in the style inheritance tree.
cupx (4 bits): An unsigned integer that specifies the count of formatting sets inside the structure,
   specified to style type, that is contained in the GrLPUpxSw.
    Each type of style contains a different structure within GrLPUpxSw, as shown in the following
    table. The cupx value specifies the count of structures within the structure that is contained in the
    GrLPUpxSw. For each type of style, the cupx MUST be equal to the values that are shown in the
    table, depending on whether the style is revision-marked (in a revision-marked style the
    fHasOriginalStyle value in StdfPost2000 is 1; in a non-revision-marked style the value is 0.)
istdNext (12 bits): An unsigned integer that specifies the istd (see rglpstd in STSH) of the style
    which is automatically applied to a new paragraph created following a paragraph with the current
    style, as specified in more detail in [ECMA-376] part 4, section 2.7.3.10 (next). However, the style
    reference in that specification is a styleId rather than an istd.
    The istdNext value MUST be an index that refers to a valid non-empty style in the array of style
    definitions.
bchUpe (2 bytes): An unsigned integer that specifies the size, in bytes, of std in LPStd. This value
   MUST be equal to cbStd in LPStd.
                                                                                                          418 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.261                StdfPost2000
                                             1                                          2                                           3
0   1   2   3   4    5   6     7     8   9       1   2   3    4   5     6   7   8   9       1   2   3   4     5   6     7   8   9       1
                                             0                                          0                                           0
istdLink A B rsid
... C D iPriority
istdLink (12 bits): An unsigned integer that specifies the istd of the style that is linked to this one,
    or 0x0000 if this style is not linked to any other style in the document. The meaning of a linked
    style is as specified in [ECMA-376] part 4, section 2.7.3.6 (link). However, the style reference in
    that specification is a styleId rather than an istd, and an istdLink value of 0x0000 corresponds to
    omitting the link element.
    The istdLink value MUST be an index that refers to a valid non-empty style in the array of style
    definitions, or 0x0000.
rsid (4 bytes): An unsigned integer that specifies the revision save identifier of the session when this
    style definition was last modified, as specified in [ECMA-376] part 4, section 2.7.3.15 (rsid).
iPriority (12 bits): An unsigned integer that specifies the priority value that is assigned to this style
    and that is used when ordering the styles by priority in the user interface, as specified in [ECMA-
    376] part 4, section 2.7.3.19 (uiPriority).
2.9.262 StdfPost2000OrNone
                                             1                                          2                                           3
0   1   2   3   4    5   6     7     8   9       1   2   3    4   5     6   7   8   9       1   2   3   4     5   6     7   8   9       1
                                             0                                          0                                           0
StdfPost2000
...
StdfPost2000 (8 bytes): An StdfPost2000 structure that specifies general information about the
   style. This field is optional; Stshif.cbSTDBaseInFile defines whether it is included or not.
                                                                                                                                            419 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.263             StkCharGRLPUPX
The StkCharGRLPUPX structure specifies the formatting properties for a character style. All members
of StkCharGRLPUPX are optional, but those that are present MUST appear in the order that is
specified in the following table. Additionally, the number of members that are present MUST match the
cupx member of StdfBase for the style.
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8    9       1   2   3   4   5   6   7   8   9       1
                                        0                                           0                                       0
lpUpxChpx (variable)
...
StkCharLpUpxGrLpUpxRM (variable)
...
lpUpxChpx (variable): A LPUpxChpx that specifies the character formatting properties for the
   style.
2.9.264 StkCharLPUpxGrLPUpxRM
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8    9       1   2   3   4   5   6   7   8   9       1
                                        0                                           0                                       0
...
cbStkCharUpxGrLpUpxRM (2 bytes): An unsigned 16-bit integer that specifies the size, in bytes, of
   StkCharUpxGrLpUpxRM. This field MUST include padding if it is needed to make
   StkCharLPUpxGrLPUpxRM an even length.
2.9.265 StkCharUpxGrLPUpxRM
                                        1                                           2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8    9       1   2   3   4   5   6   7   8   9       1
                                        0                                           0                                       0
lpUpxRm
...
                                                                                                                                    420 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                lpUpxChpxRM (variable)
...
lpUpxRm (8 bytes): An LPUpxRm structure that specifies the revision-marking information for the
   style.
lpUpxChpxRM (variable): An LPUpxChpxRM that specifies the character formatting properties for
   the revision-marked style formatting.
2.9.266 StkListGRLPUPX
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
lpUpxPapx (variable)
...
lpUpxPapx (variable): An LPUpxPapx that specifies the paragraph formatting properties for the
   style.
2.9.267 StkParaGRLPUPX
The StkParaGRLPUPX structure that specifies the formatting properties for a paragraph style. All
members of StkParaGRLPUPX are optional, but those that are present MUST appear in the order
that is specified in the following table. Additionally, the number of members that are present MUST
match the cupx member of StdfBase for the style.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
lpUpxPapx (variable)
...
lpUpxChpx (variable)
...
StkParaLpUpxGrLpUpxRM (variable)
...
lpUpxPapx (variable): A LPUpxPapx that specifies the paragraph formatting properties for the
   style.
                                                                                                                                   421 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lpUpxChpx (variable): A LPUpxChpx that specifies the character formatting properties for the
   style.
2.9.268 StkParaLPUpxGrLPUpxRM
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8    9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
...
cbStkParaUpxGrLpUpxRM (2 bytes): An unsigned 16-bit integer that specifies the size, in bytes, of
   StkParaUpxGrLpUpxRM, including the padding.
2.9.269 StkParaUpxGrLPUpxRM
The StkParaUpxGrLPUpxRM structure specifies style revision-marking and formatting for paragraph
styles.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8    9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
lpUpxRm
...
lpUpxPapxRM (variable)
...
lpUpxChpxRM (variable)
...
lpUpxRm (8 bytes): An LPUpxRm structure that specifies the revision-marking information for the
   style.
                                                                                                                                   422 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.270             StkTableGRLPUPX
The StkTableGRLPUPX structure specifies the formatting properties for a table style. This structure is
variable in length. All members of StkTableGRLPUPX are optional, but those members that are
present MUST appear in the order that is specified in the following table. Additionally, the number of
members that are present MUST match the cupx member of StdfBase for the style.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
lpUpxTapx (variable)
...
lpUpxPapx (variable)
...
lpUpxChpx (variable)
...
lpUpxTapx (variable): An LPUpxTapx that specifies the table formatting properties for the style.
lpUpxPapx (variable): An LPUpxPapx that specifies the paragraph formatting properties for the
   style.
lpUpxChpx (variable): An LPUpxChpx that specifies the character formatting properties for the
   style.
2.9.271 STSH
The STSH structure specifies the stylesheet for a document. The stylesheet describes the styles that
are available within a document as well as their formatting.
An istd is an index into rglpstd that is used to reference a particular style definition. The istd values
are used internally within the stylesheet, such as in the istdBase member of the StdfBase structure,
as well as externally outside the stylesheet, such as in Sprm structures such as sprmPIstd. An istd
value MUST be greater than or equal to 0x0000 and less than 0x0FFE.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
lpstshi (variable)
...
rglpstd (variable)
...
                                                                                                                                   423 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
rglpstd (variable): An array of LPStd that specifies the style definitions.
       The beginning of the rglpstd array is reserved for specific "fixed-index" application-defined styles.
       A particular fixed-index, application-defined style has the same istd value in every stylesheet. The
       rglpstd MUST contain an LPStd for each of these fixed-index styles and the order MUST match
       the order in the following table.
       A style is "empty" if the cbStd member of the LPStd is 0. The fixed-index styles from istd 0 to 12
       MAY<241> be empty, while those from istd 13 to 14 MUST be empty.
2.9.272 STSHI
                                           1                                         2                                          3
0   1    2   3   4   5   6   7     8   9       1   2   3   4   5     6   7   8   9       1     2   3   4   5    6   7   8   9       1
                                           0                                         0                                          0
...
...
StshiLsd (variable)
...
StshiB (variable)
...
ftcBi (2 bytes): A signed integer that specifies an operand value for the sprmCFtcBi for default
    document formatting, as defined in the section Determining Formatting Properties.
                                                                                                                                        424 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
StshiB (variable): An STSHIB. This MUST be ignored.
2.9.273 STSHIB
                                           1                                         2                                       3
0   1   2   3   4   5   6     7   8    9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                         0                                       0
grpprlChpStandard (variable)
...
grpprlPapStandard (variable)
...
2.9.274 Stshif
                                           1                                         2                                       3
0   1   2   3   4   5   6     7   8    9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                         0                                       0
cstd cbSTDBaseInFile
A fReserved stiMaxWhenSaved
istdMaxFixedWhenSaved nVerBuiltInNamesWhenSaved
ftcAsci ftcFE
ftcOther
cstd (2 bytes): An unsigned integer that specifies the count of elements in STSH.rglpstd. This value
    MUST be equal to or greater than 0x000F, and MUST be less than 0x0FFE.
cbSTDBaseInFile (2 bytes): An unsigned integer that specifies the size, in bytes, of the Stdf
   structure. The Stdf structure contains an StdfBase structure that is followed by a
   StdfPost2000OrNone structure which contains an optional StdfPost2000 structure. This value
   MUST be 0x000A when the Stdf structure does not contain an StdfPost2000 structure and MUST
   be 0x0012 when the Stdf structure does contain an StdfPost2000 structure.
fReserved (15 bits): This value MUST be zero and MUST be ignored.
stiMaxWhenSaved (2 bytes): An unsigned integer that specifies a value that is 1 larger than the
    largest StdfBase.sti index of any application-defined style. This SHOULD<242> be equal to the
    largest sti index that is defined in the application, incremented by 1.
                                                                                                                                     425 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
istdMaxFixedWhenSaved (2 bytes): An unsigned integer that specifies the count of elements at
    the start of STSH.rglpstd that are reserved for fixed-index application-defined styles. This value
    MUST be 0x000F.
ftcAsci (2 bytes): A signed integer that specifies an operand value for the sprmCRgFtc0 for default
    document formatting, as defined in the section Determining Formatting Properties.
ftcFE (2 bytes): A signed integer that specifies an operand value for the sprmCRgFtc1 for default
    document formatting, as defined in the section Determining Formatting Properties.
ftcOther (2 bytes): A signed integer that specifies an operand value for the sprmCRgFtc2 for default
    document formatting, as defined in the section Determining Formatting Properties.
2.9.275 StshiLsd
The StshiLsd structure specifies latent style data for application-defined styles. Application-defined
styles are considered to be latent if they have an LPStd that is 0x0000 in STSH.rglpstd or if they
have no corresponding LPStd in STSH.rglpstd. (For example, if an application has a built-in
definition for a "Heading 1" style but that style is not currently defined in a document stylesheet, that
style is considered latent.) Latent style data specifies a default set of behavior properties to be used
when latent styles are first created.
The index into mpstiilsd is the sti value (in the StdfBase structure) of the application-defined style
to which it applies. An LSD structure MUST be provided for every application-defined style with sti
values from 0 to one less than stiMaxWhenSaved (in the Stshif structure), regardless of whether
those application-defined styles are currently latent or not.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
...
cbLSD (2 bytes): An unsigned 16-bit integer that specifies the size in bytes of the LSD structure.
   This value MUST be 4.
mpstiilsd (variable): An array of LSD structures that specifies the latent style data for application-
  defined styles. The count of elements MUST be equal to the stiMaxWhenSaved member of the
  Stshif structure.
2.9.276 SttbfAssoc
The SttbfAssoc structure is an STTB that contains strings which are associated with this document.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5     6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
Data0 (variable)
                                                                                                                                  426 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                   …
… cchDatacData-1 (2 bytes)
DatacData-1 (variable)
This STTB MUST contain 18 strings. No extra data is appended to the strings of this STTB. Unless
otherwise noted, each string in this STTB MUST contain no more than 255 characters. The indexes
and meanings of these strings are as follows.
 Index      Meaning
 0x00       Unused. MUST be ignored.
 0x01       The path of the associated document template, if it is not the default Normal template.
 0x02       The title of the document. This MUST be ignored if title information, as specified in [MS-
            OLEPS] section 3.1.2, exists in the Summary Information Stream.
 0x03       The subject of the document. This MUST be ignored if subject information, as specified in
            [MS-OLEPS] section 3.1.3, exists in the Summary Information Stream.
 0x04       Key words associated with the document. This MUST be ignored if key word information, as
            specified in [MS-OLEPS] section 3.1.5, exists in the Summary Information Stream.
 0x05       Unused. This index MUST be ignored.
 0x06       The author of the document. This index MUST be ignored if author information, as specified
            in [MS-OLEPS] section 3.1.4, exists in the Summary Information Stream.
 0x07       The user who last revised the document. This index MUST be ignored if last author
            information, as specified in [MS-OLEPS] section 3.1.8, exists in the Summary Information
            Stream.
 0x08       The path of the associated mail merge data source.
 0x09       The path of the associated mail merge header document.
 0x0A       Unused. This index MUST be ignored.
 0x0B       Unused. This index MUST be ignored.
 0x0C       Unused. This index MUST be ignored.
 0x0D       Unused. This index MUST be ignored.
 0x0E       Unused. This index MUST be ignored.
 0x0F       Unused. This index MUST be ignored.
 0x10       Unused. This index MUST be ignored.
 0x11       The write-reservation password of the document. This value MUST not exceed 15
            characters in length.
The SttbfAssoc structure is an STTB structure that has the following additional restrictions on its field
values:
2.9.277 SttbfAtnBkmk
The SttbfAtnBkmk structure is an STTB whose strings are all of zero length. The cData field size of
this STTB is two bytes. Although this STTB contains no strings, it is an extended STTB, meaning that
its cchData field size is two bytes. The extra data that is appended to each string of this STTB is an
                                                                                                         427 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
ATNBE which contains information about an annotation bookmark in the document. In a document,
the number of annotation bookmarks MUST NOT exceed 0x3FFB.
                                        1                                           2                                           3
0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5       6   7   8   9   0   1   2   3       4   5   6   7   8   9   0   1
… cchData1 (2 bytes)
… …
The SttbfAtnBkmk structure is an STTB structure that has the following additional restrictions on its
field values:
2.9.278 SttbfAutoCaption
The SttbfAutoCaption structure is an STTB that contains AutoCaption information. Each string is
the ProgID of an OLE object that, when inserted into the document, automatically has a caption
inserted with it. The extra data which is appended to each string is an unsigned 16-bit integer that
specifies a zero-based index into SttbfCaption. The data at that index defines the caption that is
inserted.
                                        1                                           2                                           3
0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5       6   7   8   9   0   1   2   3       4   5   6   7   8   9   0   1
                                                                                                                                        428 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                     Data0 (variable)
Data1 (variable)
ExtraData1 (2 bytes) …
ExtraDatacData-1 (2 bytes)
The SttbfAutoCaption structure is an STTB structure that has following additional restrictions on its
field values:
2.9.279 SttbfBkmk
The SttbfBkmk structure is an STTB structure whose strings specify the names of bookmarks in the
document. The cData field size of this STTB structure is 2 bytes. The strings of this STTB contain
extended (2-byte) characters, and there is no extra data appended to them—in other words, it is
equivalent to an SttbfBkmkBPRepairs structure. The names in this table that begin with the Unicode
character 0x005F correspond to hidden bookmarks. The strings in this table MUST be greater than 0
and less than 40 characters in length. The strings in this table MUST be unique, and there MUST NOT
be more than 0x3FFB of them.
                                         1                                           2                                            3
0   1   2   3   4    5   6   7   8   9   0   1   2   3   4   5       6   7   8   9   0    1   2   3       4   5   6   7   8   9   0   1
Data0 (variable)
… cchDatacData-1 (2 bytes)
                                                                                                                                          429 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                         DatacData-1 (variable)
The SttbfBkmk structure is an STTB structure with the following additional restrictions on its field
values:
Data (variable): For the purpose of achieving the correct definition of "skip character", the following
   constraints MUST be evaluated using delayed evaluation and examination of characters in a string
   MUST take place in first-to-last order. Delayed evaluation requires that each constraint not be
   read until the result of that constraint is needed. For example, application of the following
   algorithm to the string "Abc" will never require reading of the constraints defining a single byte
   Katakana character.
To be a valid member of SttbfBkmk, all characters in the string that are not preceded by a skip
character SHOULD<244> meet all of the following constraints:
§ Is the first character of the name and satisfies all of the following constraints:
§ Is not a double-byte digit, meaning that it is between 0xFF10 and 0xFF19, inclusive.
§ Is not the first character of the name and satisfies all of the following constraints:
A digit character is defined as that which satisfies both of the following constraints:
§ Is not 0xFFFF.
                                                                                               430 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§   Satisfies one of the following constraints:
A bidirectional alpha character is defined as a character that satisfies one of the following constraints:
An alpha character is defined as that which satisfies one of the following constraints:
§   Is a Kanji character, meaning that it is 0x3005 or 0x3007 or between 0x4E00 and 0x9FFF,
    inclusive, or the Unicode sub-range of the character is either CJK Compatibility Ideographs or CJK
    Unified Ideographs Extension A.
§   Is not a character that satisfies the definition of a digit given earlier, and satisfies one of the
    following constraints:
                                                                                                    431 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    §   Is not 0x1780 and the top 2 bytes of the character are 0x900, 0xE00, 0xF00 or 0x1700 and
        satisfies one of the following constraints:
§ Is 0x93D.
§ The top 2 bytes of the character are not 0x900, 0xE00, 0xF00 or 0x1700.
        §   Is a Unicode 3 South Asian character—meaning that it is less than or equal to 0x900 and
            satisfies one of the following:
§ Satisfies the definition of bidirectional alpha character that was given earlier.
§   Is a Vietnamese tonemark, meaning it is one of the following: 0x0300, 0x0301, 0x0303, 0x0309,
    or 0x0323.
§ Is a low surrogate character, meaning that it is between 0xDC00 and 0xDFFF, inclusive.
§ Is a high surrogate character, meaning that it is between 0xD840 and 0xD869, inclusive.
                                                                                              432 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    An East Asian double-byte text character is defined as that which satisfies one of the following
    constraints:
    §       Is a high surrogate character, meaning it is between 0xD800 and 0xDBFF, inclusive. If this
            constraint is reached and satisfied during delayed evaluation of the conditions upon strings in
            SttbfBkmk, then it is a skip character.
§ Is greater than or equal to 0x0080 and satisfies all of the following constraints:
    §       Not a high or low surrogate character, where a low surrogate character is defined as between
            0xDC00 and 0xDFFF, inclusive.
2.9.280 SttbfBkmkBPRepairs
The SttbfBkmkBPRepairs structure is an STTB structure whose strings specify the descriptions of
repair bookmarks in the document. The cData field size of this STTB structure is 2 bytes. The
strings of this STTB structure contain extended (two-byte) characters, and there is no extra data
appended to them—in other words, it is equivalent to an SttbfBkmk. The strings of this table are not
null-terminated. In a document, the number of repair bookmarks MUST NOT exceed 0x7FF0.
                                         1                                           2                                       3
0   1   2    3   4   5   6   7   8   9   0   1   2   3   4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
Data0 (variable)
                                                                                                                                     433 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                                 …
… cchDatacData-1 (2 bytes)
DatacData-1 (variable)
The SttbfBkmkBPRepairs structure is an STTB structure with the following additional restrictions on
its field values:
2.9.281 SttbfBkmkFactoid
The SttbfBkmkFactoid structure is an STTB whose strings are FACTOIDINFO structures, each of
which contains information about a smart tag bookmark in the document. The cData field size of
this STTB is 2 bytes. This STTB is an extended STTB, meaning that its cchData field size is 2 bytes.
There is no extra data appended to the strings of this STTB. In a document, the number of smart tag
bookmarks MUST NOT exceed 0x7FF0.
                                        1                                            2                                            3
0   1   2   3   4   5   6   7   8   9   0   1   2    3   4   5       6   7   8   9   0    1   2   3       4   5   6   7   8   9   0   1
… …
                                                                                                                                          434 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
The SttbfBkmkFactoid structure is an STTB structure that has the following additional restrictions on
its field values:
2.9.282 SttbfBkmkFcc
The SttbfBkmkFcc structure is an STTB whose strings are DPCID structures. Each DPCID contains
information about a format consistency-checker bookmark in the document. The cData field size
of this STTB is 2 bytes. This STTB is an extended STTB, which means that its cchData field size is 2
bytes. There is no extra data appended to the strings of this STTB. In a document, the number of
format consistency-checker bookmark elements MUST NOT exceed 0x7FF0.
                                        1                                           2                                            3
0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5       6   7   8   9   0    1   2   3       4   5   6   7   8   9   0   1
… …
                                                                                                                                         435 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                                 …
The SttbfBkmkFcc structure is an STTB structure that has the following additional restrictions on its
field values:
2.9.283 SttbfBkmkProt
The SttbfBkmkProt structure is an STTB whose strings are all of length zero. The cData field of this
STTB is four bytes. Although this STTB contains no strings, it is an extended STTB, which means that
its cchData fields are two bytes in size. The extra data that is appended to each string of this STTB is
a PRTI which contains information about the range-level protection bookmarks in the document.
In a document, the number of range-level protection bookmarks MUST NOT exceed 0x00007FF0.
                                        1                                            2                                        3
0   1   2   3   4   5   6   7   8   9   0   1   2    3   4   5       6   7   8   9   0    1   2   3   4   5   6   7   8   9   0   1
… cbExtra (2 bytes)
… cchData1 (2 bytes)
ExtraData1 (8 bytes)
… cchDatacData-1 (2 bytes)
ExtraDatacData-1 (8 bytes)
The SttbfBkmkProt structure is an STTB structure that has the following additional restrictions on its
field values:
                                                                                                                                      436 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cbExtra (2 bytes): This value MUST be 0x8.
2.9.284 SttbfBkmkSdt
The SttbfBkmkSdt structure is an STTB whose strings are SDTI structures, each of which contains
information about a structured document tag bookmark in the document. The cData field size of
this STTB is 4 bytes. This STTB is an extended STTB, which means that its cchData field size is 2
bytes. There is no extra data appended to the strings of this STTB. In a document, the number of
structured document tag bookmarks MUST NOT exceed 0x7FFFFFFF.
                                        1                                            2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2    3   4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
… cbExtra (2 bytes)
… cchDatacData-1 (2 bytes)
DatacData-1 (variable)
The SttbfBkmkSdt structure is an STTB structure that has the following additional constraints on its
field values:
Data (variable): An SDTI. The size of this field is 2 * cchData bytes, incremented by the value of
   the cbPlaceholder of this SDTI plus the size, in bytes, of the fsdaparray of this SDTI.
2.9.285 SttbfCaption
The SttbfCaption structure is an STTB structure that defines captions. Each string in this STTB
structure is the label of a caption, and MUST have less than or equal to 40 characters. The extra data
appended to each string is a CAPI structure that specifies addition information about the caption.
                                                                                                                                     437 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                            1                                            2                                            3
0   1   2   3   4   5   6   7       8   9   0   1   2    3   4   5       6   7   8   9   0    1   2   3       4   5   6   7   8   9   0   1
Data0 (variable)
Extra0 (6 bytes)
… cchData1 (2 bytes)
Data1 (variable)
Extra1 (6 bytes)
… …
The SttbfCaption structure is an STTB structure that has the following additional restrictions on its
field values:
2.9.286 SttbfFfn
The SttbfFfn structure is an STTB whose strings are FFN records that specify details of system fonts.
Each font that is used in the document MUST have an entry in this list. There is no extra data
appended to the strings of this STTB. Each FFN MUST be completely and accurately filled out with
attributes that match the corresponding system font. This table MAY<245> contain fonts that are not
referenced in the document.
                                            1                                            2                                            3
0   1   2   3   4   5   6   7       8   9   0   1   2    3   4   5       6 7     8   9   0   1    2   3       4   5   6   7   8   9   0   1
                                                                                                                                              438 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                              …
… cchDatacData-1 (1 byte)
DatacData-1 (variable)
The SttbfFfn structure is a non-extended character STTB that has the following additional restrictions
on its field values:
2.9.287 SttbfGlsy
The SttbfGlsy structure is an STTB structure in which the strings specify the names of the AutoText
and rich text AutoCorrect items that are defined in this document. These names correspond to their
respective entries in the parallel PlcfGlsy. Each string in this STTB MUST have no more than 32
characters. The extra data that is appended to each string of this STTB is a LEGOXTR_V11, which
specifies additional data about the item with which the string is associated.
                                        1                                         2                                         3
0   1   2   3   4   5   6   7   8   9   0   1   2    3   4   5    6   7   8   9   0   1   2   3   4     5   6   7   8   9   0   1
Data0 (variable)
Extra0 (4 bytes)
Extra1 (4 bytes)
… cchDatacData-1 (2 bytes)
DatacData-1 (variable)
                                                                                                                                    439 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                    Extra cData-1 (4 bytes)
The SttbfGlsy structure is an STTB with the following additional restrictions on its field values:
2.9.288 SttbFnm
The SttbFnm structure is an STTB structure in which the strings specify the file names of the external
files that are referenced by this document. Each file name contains the full path of the file, including
the name and extension of the file. The extra data that is appended to each string of this STTB is an
FNIF which contains additional information about the path. fnpi.fnpd MUST be unique for all FNIF
structures in this STTB structure that share the same fnpi.fnpt. Because fnpi is unique for all FNIF
structures in this STTB structure, FNPI structures can be used by other structures to reference the
file names in this STTB structure.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2    3   4   5    6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
Data0 (variable)
Extra0 (8 bytes)
Extra1 (8 bytes)
… cchDatacData-1 (2 bytes)
DatacData-1 (variable)
                                                                                                                                  440 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
The SttbFnm structure is an STTB with the following additional restrictions on its field values:
2.9.289 SttbfRfs
The SttbfRfs structure is an STTB structure that contains the strings for a mail merge. This structure
SHOULD<246> contain 5 strings, and MUST contain at least 4 strings, as shown in the following table.
There is no extra data appended to the strings of this STTB.
                                        1                                       2                                       3
0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
Data0 (variable)
The SttbfRfs structure is an STTB structure that has the following additional restrictions on its field
values:
cData (2 bytes): This value SHOULD<247> be 0x0005, and MUST be either 0x0005 or 0x0004.
cchData0-4 (2 bytes): An unsigned integer that specifies the count of characters in the corresponding
   Data fields. This value MUST be less than 256.
Data0 (variable): A Unicode string that specifies the connection string to the mail merge data
   source. This string MUST be identical to the string with id=0x0000 inside ODSOPropertyBase, if
   neither of these two strings is empty.
                                                                                                                                441 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Data1 (variable): A Unicode string that specifies the connection string to the source for the field
   names of the mail merge data. This string MUST be empty if the field names are from the same
   data source as Data0.
Data2 (variable): A Unicode string that specifies the e-mail subject line if the mail merge is for e-
   mail.
Data3 (variable): A Unicode string that specifies the name of the data column that contains either e-
   mail addresses, if the mail merge is for e-mail, or fax numbers, if the mail merge is for fax.
2.9.290 SttbfRMark
The SttbfRMark structure is an STTB structure where the strings specify the names of the authors of
the revision marks, comments, and e-mail messages in the document. There is no extra data
appended to the strings of this STTB. The first entry MUST be "Unknown".
                                          1                                               2                                        3
0   1   2   3   4   5    6   7    8   9   0   1   2   3   4       5       6   7   8   9   0   1    2   3   4   5   6   7   8   9   0        1
Data0 (variable)
The SttbfRMark structure is an STTB with the following additional restrictions on its field values:
2.9.291 SttbGlsyStyle
The SttbGlsyStyle structure is an STTB structure in which the strings specify the names of the styles
used by the AutoText and rich text AutoCorrect items that are defined in the parallel SttbfGlsy.
The extra data that is appended to each string in this STTB is an unsigned 8-bit integer that specifies
how many items use the style indicated by the string and that MUST be less than or equal to 0x32.
                                              1                                       2                                                 3
0   1   2   3   4   5    6    7       8   9   0   1   2   3   4   5   6   7   8   9   0   1   2        3       4   5   6   7   8   9    0       1
                                                                                                                                       442 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                         cbExtra (2 bytes)                                                            cchData0 (2 bytes)
Data0 (variable)
Extra1 (1 byte) …
The SttbfGlsyStyle structure is an STTB with the following additional restrictions on its field values:
2.9.292 SttbListNames
The SttbListNames structure is an STTB structure whose strings are the names used by the
LISTNUM field, as specified by LISTNUM in flt, for each of the LSTF structures in the document.
There is no extra data appended to the strings of this STTB structure. This STTB is parallel to
PlfLst.rgLstf. If this STTB has more entries than PlfLst.rgLstf, the extra entries in this STTB MUST
be ignored. If a list does not have a name, its corresponding string is an empty string. All non-empty
strings in this STTB structure MUST be unique. Each string in this STTB structure MUST contain no
more than 255 characters.
                                           1                                             2                                         3
0   1   2   3   4    5    6   7    8   9   0   1   2    3   4    5       6   7   8   9   0   1    2    3   4   5   6   7   8   9   0   1
Data0 (variable)
… cchDatacData-1 (2 bytes)
DatacData-1 (variable)
                                                                                                                                           443 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                                  …
The SttbListNames structure is an STTB structure that has the following additional restrictions on its
field values:
2.9.293 SttbProtUser
The SttbProtUser structure is an STTB structure in which the strings specify the usernames of users
who have different roles with respect to a protected range of content in the document.
                                          1                                           2                                            3
0    1   2   3   4    5   6   7   8   9   0   1   2   3   4   5       6   7   8   9   0    1   2   3       4   5   6   7   8   9   0   1
Data0 (variable)
Data1 (variable)
ExtraData1 (2 bytes) …
ExtraDatacData-1 (2 bytes)
Each string is either the name of a mapped Windows user or group account that MUST be in the form
"DOMAIN\NAME" or a valid e-mail address as defined in [RFC2822]. Each string in this STTB MUST be
unique, and MUST have less than or equal to 255 characters. The extra data that is appended to each
string of this STTB is a signed 16-bit integer that specifies the role for the username and MUST be one
of the following values.
    Value            Meaning
    0x0000           There is no role specified for the user name.
    0xFFFC           The username specifies an owner.
    0xFFFB           The username specifies an editor.
The SttbProtUser structure is an STTB structure that has the following additional restrictions on its
field values:
                                                                                                                                           444 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fExtend (2 bytes): This value MUST be 0xFFFF.
2.9.294 SttbRgtplc
The SttbRgtplc structure is an STTB structure in which each string specifies the bullet/numbering
formats for a hybrid bulleted/numbered multi-level list. Because such a list can have a maximum of 9
levels, each string, if not empty, is in fact an array of 9 32-bit Tplc elements. The first element in
each array specifies the format of the outermost level in the hybrid list.
SttbRgtplc is used parallel to PlfLst to specify the list formatting details. The index of each string
inside SttbRgtplc corresponds to the LSTF of the same index inside PlfLst, with each Tplc mapped to
the corresponding LVL inside the LSTF.
If the fHybrid member of the LSTF corresponding to a string in SttbRgtplc is 1, then that string in
SttbRgtplc is not used and thus can be empty. In that case, the cchData of that string in the
following table can be zero.
                                        1                                            2                                        3
0   1   2   3   4   5   6   7   8   9   0   1   2    3   4   5       6   7   8   9   0    1   2   3   4   5   6   7   8   9   0   1
Data0 (0 or 36 bytes)
… cchDatacData-1 (2 bytes)
DatacData-1 (0 or 36 bytes)
The SttbRgtplc structure is an STTB with the following additional restrictions on its field values:
Data (0 or 36 bytes): An array that contains 9 Tplc elements. This does not exist if cchData is 0x0.
                                                                                                                                      445 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.295              SttbSavedBy
The SttbSavedBy structure is an STTB structure that specifies the save history of this document. The
strings in the STTB structure are arranged in pairs: A string that specifies the name of the author who
saved the document, followed by a string that specifies the path and name of the saved file. These
pairs are in order from the earliest saved file to the latest saved file. This STTB structure MUST have
an even number of strings, and MUST have less than or equal to 20 strings. There is no extra data
appended to the strings of this STTB.
                                          1                                            2                                       3
0   1   2   3   4   5   6   7     8   9   0   1   2    3   4   5       6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
Data0 (variable)
… cchDatacData-1 (2 bytes)
DatacData-1 (variable)
The SttbSavedBy structure is an STTB structure that has the following additional restrictions on its
field values:
cData (2 bytes): This value MUST be even and MUST be less than or equal to 0x0014.
2.9.296 SttbTtmbd
The SttbTtmbd structure contains the list of TrueType fonts that are embedded in the document.
                                          1                                            2                                       3
0   1   2   3   4   5   6   7     8   9       1   2    3   4   5       6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                            0                                       0
sttb
...
...
                                                                                                                                       446 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
sttb (10 bytes): An SttbW6 structure that specifies the number of TrueType fonts that are
    embedded in the document.
2.9.297 SttbW6
The SttbW6 structure specifies the count of TrueType fonts that are embedded in the document.
                                          1                                            2                                         3
0   1   2   3   4   5   6    7   8    9       1   2    3   4   5       6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                          0                                            0                                         0
unused1 ibstMac
ibstMax unused2
brgbst
ibstMac (2 bytes): A signed integer that specifies the count of Ttmbd in SttbTtmbd.rgTTMBD (the
    number of TrueType fonts embedded in the document). This value MUST be nonnegative and
    MUST NOT exceed 64.
ibstMax (2 bytes): A signed integer that specifies the maximum number of embedded TrueType
    fonts that are supported by the document. This value MUST be 64.
brgbst (2 bytes): An unsigned integer that specifies the offset from the location of the SttbW6
   structure where SttbTtmbd.rgTTMBD begins. This value SHOULD<248> be 10 (the size of the
   SttbW6 structure).
2.9.298 StwUser
The StwUser structure specifies the names and values of the user-defined variables that are stored in
the document.
                                          1                                            2                                         3
0   1   2   3   4   5   6    7   8    9   0   1   2    3   4   5       6   7   8   9   0   1   2    3   4    5   6   7   8   9   0   1
SttbNames (variable)
rgxchNames (variable)
SttbNames (variable): An extended-character STTB that specifies the names of the variables. Each
string in this STTB specifies the name of a variable. The extra data appended to each string in this
STTB is a 4-byte unsigned integer that MUST be ignored. Each string in this STTB MUST be unique.
The name "Sign", if it exists, SHOULD<249> specify the VBA digital signature variable. The name
"SigAgile", if it exists, SHOULD<250> specify the VBA digital signature variable.
                                                                                                                                         447 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          1                                         2                                       3
0   1    2   3   4   5   6   7    8   9   0   1   2    3   4   5    6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
Data0 (variable)
Extra0 (4 bytes)
Extra1 (4 bytes)
… cchDatacData-1 (2 bytes)
DatacData-1 (variable)
The SttbNames structure is an STTB structure that has the following additional restrictions on its
field values:
rgxchValues (variable): An array of Xst elements. This array is parallel to SttbNames. Each string
in this array specifies the value of the variable that is named by the corresponding string in
SttbNames. The value that corresponds to the "Sign" name string in SttbNames, if it exists,
SHOULD<251> be a special value that specifies the VBA digital signature of the document. The bytes
of this value, including the count prefix, specify a WordSigBlob structure, as specified in [MS-
OSHARED] section 2.3.2.3. The WordSignBlob MUST have the contentInfo field of the SignedData
structure ([MS-OSHARED] section 2.3.2.4.1) as an SpcIndirectDataContent structure ([MS-
OSHARED] section 2.3.2.4.3.1). The value that corresponds to the "SigAgile" name string in
SttbNames, if exists, SHOULD<252> be a special value that specifies the VBA digital signature of the
document. The bytes of this value, including the count prefix, specify a WordSigBlob structure, as
specified in [MS-OSHARED] section 2.3.2.3. The WordSignBlob MUST have the contentInfo field of
the SignedData structure ([MS-OSHARED] section 2.3.2.4.1) as an SpcIndirectDataContentV2
structure ([MS-OSHARED] section 2.3.2.4.3.2).
2.9.299 Sty
The Sty structure is used by the Selsf structure and specifies the type of the selection that was made.
styNil 0x0000 The selection type is undefined and is determined from the Selsf structure.
                                                                                                                                    448 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name               Value         Meaning
styChar 0x0001 The selection is one or more characters, an inline picture, or a text frame.
styPrefix 0x001B The selection is a bullet or numbering character in a bulleted or numbered list.
2.9.300 TabJC
The TabJC enumeration provides a 3-bit unsigned integer that specifies the type of alignment which is
applied to the text that is entered at this tab stop. This MUST be one of the following values.
                         Specifies that the current tab stop results in a location in the document at which all
                         following text is aligned around the first decimal separator in the following text runs. If
                         there is no decimal separator, text is aligned around the implicit decimal separator after
jcDecimal    0x3
                         the last digit of the first numeric value that appears in the following text. All text runs
                         before the first decimal character appear before the tab stop; all text runs after it appear
                         after the tab stop location.
2.9.301 TabLC
The TabLC enumeration is a 3-bit unsigned integer that specifies the characters that are used to fill in
the space which is created by a tab that ends at a custom tab stop. This MUST be one of the following
values.
                                                                                                                449 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.302               TableBordersOperand
                                          1                                          2                                         3
0   1   2   3     4   5   6   7   8   9       1   2   3   4   5     6   7   8    9         1   2   3   4   5   6   7   8   9       1
                                          0                                          0                                         0
cb brcTop
...
... brcLeft
...
... brcBottom
...
... brcRight
...
... brcHorizontalInside
...
... brcVerticalInside
...
...
cb (1 byte): An unsigned integer that specifies the size, in bytes, of this TableBordersOperand
    structure, not including this byte. This value MUST be 0x30.
brcTop (8 bytes): A Brc structure that specifies the top border of the row, if it is the first row in the
   table.
brcLeft (8 bytes): A Brc structure that specifies the logical left border of the row.
brcBottom (8 bytes): A Brc structure that specifies the bottom border of the row, if it is the last row
   in the table.
brcRight (8 bytes): A Brc structure that specifies the logical right border of the row.
brcHorizontalInside (8 bytes): A Brc structure that specifies the horizontal border between the row
   and the preceding and succeeding rows.
brcVerticalInside (8 bytes): A Brc structure that specifies the vertical border between the cells in
   the row.
                                                                                                                                       450 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.303              TableBordersOperand80
The TableBordersOperand80 structure is an operand that specifies the borders which are applied to
a row of table cells.
                                         1                                         2                                       3
0   1   2   3    4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                         0                                       0
cb itc bordersToApply
brc
itc (2 bytes): An ItcFirstLim structure that specifies the range of cell columns to apply the border
    type format.
bordersToApply (1 byte): An unsigned integer that specifies which borders are affected. The value
   MUST be the result of the bitwise OR of any subset of the following values that specifies an edge
   to be formatted:
brc (4 bytes): A Brc80MayBeNil structure that specifies the border type that is applied to the edges
    which are indicated by bordersToApply.
                                                                                                                                   451 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.305              TableBrcOperand
The TableBrcOperand structure is an operand that specifies borders for a range of cells in a table
row.
                                           1                                         2                                       3
0   1   2   3    4   5   6   7     8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                         0                                       0
cb itc bordersToApply
brc
...
cb (1 byte): An unsigned integer that specifies the size, in bytes, of the remainder of this structure.
    This value MUST be 11.
itc (2 bytes): An ItcFirstLim structure that specifies the range of cell columns to which the border
    type format is applied.
bordersToApply (1 byte): An unsigned integer that specifies which borders are affected. The value
   MUST be the result of the bitwise OR of any subset of the following values that specifies an edge
   to be formatted:
brc (8 bytes): A BrcMayBeNil structure that specifies the border type that is applied to the edges
    which are indicated by bordersToApply.
2.9.306 TableCellWidthOperand
                                           1                                         2                                       3
0   1   2   3    4   5   6   7     8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                         0                                       0
cb itc FtsWWidth
...
cb (1 byte): An unsigned integer that specifies the size of this operand in bytes, not including cb.
    The value of cb MUST be 5.
itc (2 bytes): An ItcFirstLim that specifies the cells to which this TableCellWidthOperand
    structure applies.
                                                                                                                                     452 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
FtsWWidth (3 bytes): An FtsWWidth_TablePart that specifies the width of cells itc.itcFirst
   through itc.itcLim – 1.
2.9.307 TableSel
The TableSel structure is used by Selsf to specify the range of cells in a table cell block selection.
Selsf.fTable MUST be 1. If Selsf.fBlock is zero, the selection is one or more table rows; otherwise,
the selection is a range of cells. If Selsf.fBlock is 1 and the selection includes rows with differing cell
counts, the TableSel is interpreted based on the first row in the selection.
                                             1                                         2                                        3
0   1   2   3     4   5   6    7   8     9       1   2   3   4   5     6   7   8   9       1   2   3   4    5   6   7   8   9       1
                                             0                                         0                                        0
itcFirst itcLim
itcFirst (2 bytes): An integer that specifies the first cell that is included in the selection. Cell indices
    are zero-based. itcFirst MUST be at least zero, SHOULD NOT<253> exceed the number of cells in
    the row, and MUST NOT exceed 63. If itcFirst is greater than or equal to the number of cells in
    the row, the selection begins at the end of row mark. If Selsf.fBlock is zero, itcFirst MUST be
    zero.
itcLim (2 bytes): An integer that specifies the cell at which the selection ends, exclusive. Cell indices
    are zero-based. If the selection includes the last cell in the row, the itcLim value is the number of
    cells in the row. If the selection includes the end of row mark, itcLim is equal to the number of
    cells in the row incremented by 1. The itcLim value SHOULD<254> be greater than the itcFirst
    value and MUST NOT exceed 64. If Selsf.fBlock is zero, then itcLim MUST be 64. If the itcLim
    value is 64, the entire Selsf MAY<255> be ignored.
2.9.308 TableShadeOperand
The TableShadeOperand structure specifies a range of cells in a table row and the background
shading to apply to those cells.
                                             1                                         2                                        3
0   1   2   3     4   5   6    7   8     9       1   2   3   4   5     6   7   8   9       1   2   3   4    5   6   7   8   9       1
                                             0                                         0                                        0
cb itc shd
...
...
...
cb (1 byte): Specifies the byte count of the remainder of this structure. The value MUST be 12.
itc (2 bytes): An ItcFirstLim that specifies a cell range in the table row.
shd (10 bytes): A Shd structure that specifies the background shading that is applied.
2.9.309 TBC
                                                                                                                                        453 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                     1                                           2                                         3
0       1    2   3    4    5   6       7     8   9       1   2   3    4   5      6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                                     0                                           0                                         0
tbch (variable)
...
cid (optional)
tbcd (variable)
...
cid (4 bytes): A structure of type Cid that specifies the command identifier for this toolbar control.
    This MUST only exist if tbch.tcid is not equal to 0x0001 and is not equal to 0x1051. Toolbar
    controls MUST have only Cid structures whose Cmt values are equal to 0x0001 or 0x0003.
tbcd (variable): A structure of type TBCData, as specified in [MS-OSHARED], that contains toolbar
   control data. This MUST exist if tbch.tct is not equal to 0x16. This MUST NOT exist if tbch.tct is
   equal to 0x016.
2.9.310 TBD
A TBD structure specifies the alignment type and the leader type for a custom tab stop.
                                                     1                                           2                                         3
0       1    2   3    4    5   6       7     8   9       1   2   3    4   5      6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                                     0                                           0                                         0
jc tlc A
jc (3 bits): A TabJC value that specifies the alignment (justification) type for the current custom tab
    stop.
tlc (3 bits): A TabLC value that specifies the leader type for the current custom tab stop. The value
    MUST be ignored if jc is equal to 0x4 (jcBar).
2.9.311 TBDelta
The TBDelta structure specifies a toolbar delta. When the toolbar delta involves adding or modifying
a toolbar control, the affected toolbar control is stored in the rtbdc array of the CTBWRAPPER
structure that contains the rCustomizations array, that contains the Customization structure that
contains the customizationData array, that contains this structure.
                                                     1                                           2                                         3
0       1    2   3    4    5   6       7     8   9       1   2   3    4   5      6   7   8   9       1   2    3   4    5   6   7   8   9       1
                                                     0                                           0                                         0
... cid
                                                                                                                                                   454 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                         ...                                                    fc
... C iTB D E
cbTBC
A - dopr (2 bits): These bits specify the type of toolbar delta operation. This MUST be one of the
    following values.
Value
(Binary value in parenthesis)       Meaning
0x00 (00)                           Change a toolbar control.
0x01 (01)                           Insert a toolbar control.
0x02 (10)                           Modify a toolbar control.
B - fAtEnd (1 bit): A bit that specifies if the toolbar control that is associated with this TBDelta was
    inserted at the end of the toolbar at the time the toolbar delta was created. A value of 1 specifies
    that the toolbar control that is associated with this TBDelta was inserted at the end of the toolbar.
    This bit MUST be 0 if dopr is not equal to 1.
ibts (8 bits): An unsigned integer that specifies the zero-based index of the toolbar control that was
    associated with this TBDelta in the toolbar at the time that the toolbar delta was created. It is
    possible for more than one TBDelta structure that affects the same toolbar to have the same
    value in the ibts field. This is because this field specifies the index of the toolbar control that was
    associated with the TBDelta in the toolbar at the time the toolbar delta was created.
cidNext (4 bytes): A signed integer value. This value MUST be one of the following.
                                                                                                             455 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cid (4 bytes): A structure of type Cid that specifies the command identifier for the toolbar control
    that is associated with this TBDelta. Toolbar controls MUST only have Cid structures that have
    Cmt values equal to 0x0001 or 0x0003.
fc (4 bytes): An unsigned integer that specifies the file offset in the Table Stream where the toolbar
    control that is associated with this TBDelta is stored. This value MUST be 0x00000000 if fOnDisk
    is not equal to 1.
C - fOnDisk (1 bit): A bit that specifies if a toolbar control that is associated with this TBDelta was
    written to the file. A value of 1 specifies that a toolbar control that is associated with this TBDelta
    was written to the file. This value MUST be 1 if dopr is equal to 0 or 1.
iTB (13 bits): This field MUST be used only when the toolbar control that is associated with this
    TBDelta is a custom toolbar control that drops a custom menu toolbar. This is an unsigned
    integer that specifies the index to the Customization structure, contained in the
    rCustomizations array, that also contains the Customization that contains the
    customizationData array that contains this structure, that contains the CTB structure that
    specifies the custom menu toolbar dropped by the toolbar control associated to this TBDelta. This
    value MUST be 0 if the toolbar control that is associated with this TBDelta is not a custom toolbar
    control that drops a custom menu toolbar. This value MUST be greater than or equal to 0 and
    SHOULD<256> be less than the value of the cCust field of the CTBWRAPPER structure that
    contains the rCustomizations array, that contains the Customization structure, that contains
    the customizationData array that contains this structure.
E - fDead (1 bit): A bit that specifies if the toolbar control that is associated with this TBDelta does
    not drop a menu toolbar. A value of 1 specifies that the toolbar control that is associated with this
    TBDelta does not drop a custom menu toolbar. This value MUST be 0 if the toolbar control that is
    associated with this TBDelta is not a custom toolbar control that drops a custom menu toolbar or
    if dopr is not equal to 1.
                                                                                                  456 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cbTBC (2 bytes): An unsigned integer that specifies the size, in bytes, of the toolbar control that is
   associated with this TBDelta. This field MUST only be used when fOnDisk equals 1. If fOnDisk is
   equal to 0, this value MUST be 0x0000.
2.9.312 Tbkd
The Tbkd structure is used by the PlcftxbxBkd and PlcfTxbxHdrBkd structures to associate ranges
of text from the Textboxes Document and the Header Textboxes Document with FTXBXS objects.
Ranges of text from the Textboxes Document are associated with FTXBXS objects from PlcftxbxTxt;
ranges of text from the Header Textboxes Document are associated with FTXBXS objects from
PlcfHdrtxbxTxt.
                                         1                                        2                                        3
0   1   2   3   4   5   6   7   8    9       1   2   3   4    5   6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                         0                                        0                                        0
itxbxs dcpDepend
reserved1 A B C D
itxbxs (2 bytes): A signed integer that specifies the index of an FTXBXS object within the
    PlcftxbxTxt structure or the PlcfHdrtxbxTxt structure. The text range of this Tbkd object MUST
    be the same as the text range of the FTXBXS object, or else it MUST be a subset of that range.
    When the FTXBXS object specifies a chain of linked textboxes, the text range of each component
    textbox MUST be represented by its own Tbkd object and a discrete text range.
    In all but the last Tbkd object, itxbxs MUST be a valid FTXBXS index. The final Tbkd is not
    associated with any FTXBXS object. The itxbxs value for the final Tbkd MUST be ignored.
dcpDepend (2 bytes): Specifies version-specific information about the quantity of text that was
   processed. This makes it possible to identify the end of the corresponding text range. This value
   SHOULD<257> be zero and SHOULD<258> be ignored.
reserved1 (10 bits): This value MUST be zero and MUST be ignored.
B - fUnk (1 bit): Specifies version-specific information that flags the text range which corresponds to
    this Tbkd as not being used by a textbox. This value SHOULD<259> be zero and SHOULD<260>
    be ignored.
C - fTextOverflow (1 bit): Specifies version-specific information about whether the text that is
    associated with a textbox exceeds the amount that fits into the associated shape. This value
    SHOULD<261> be zero and SHOULD<262> be ignored.
2.9.313 TC80
The TC80 structure specifies the border and other formatting for a single cell in a table.
                                         1                                        2                                        3
0   1   2   3   4   5   6   7   8    9       1   2   3   4    5   6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                         0                                        0                                        0
tcgrf wWidth
brcTop
                                                                                                                                   457 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                                               brcLeft
brcBottom
brcRight
wWidth (2 bytes): An integer that specifies the preferred width of the cell. The width includes cell
  margins, but does not include cell spacing. This value MUST be a non-negative number.
brcTop (4 bytes): A Brc80MayBeNil structure that specifies the border to be used on the top side
   of the table cell.
brcLeft (4 bytes): A Brc80MayBeNil structure that specifies the border to be used on the logical
   left side of the table cell.
brcBottom (4 bytes): A Brc80MayBeNil that specifies the border to be used on the bottom side of
   the table cell.
brcRight (4 bytes): A Brc80MayBeNil that specifies the border to be used on the logical right side
   of the table cell.
2.9.314 TCellBrcTypeOperand
                                           1                                             2                                       3
0   1   2    3     4   5   6   7   8   9       1   2   3   4     5     6    7    8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                             0                                       0
cb rgBrcType (variable)
...
cb (1 byte): cb (1 byte): An unsigned integer that specifies the size, in bytes, of rgBrcType. This
    value MUST be evenly divisible by four.
rgBrcType (variable): An array of BrcType that specifies border types for a set of table cells. Each
   cell corresponds to four bytes. Every four bytes specify the border types of the top, left, bottom
   and right borders, in that order.
2.9.315 Tcg
                                           1                                             2                                       3
0   1   2    3     4   5   6   7   8   9       1   2   3   4     5     6    7    8   9       1   2   3   4   5   6   7   8   9       1
                                           0                                             0                                       0
...
                                                                                                                                         458 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
nTcgVer (1 byte): A signed integer that specifies the version of the structure. This value MUST be
   255.
2.9.316 Tcg255
                                                      1                                          2                                       3
0       1    2   3   4    5       6   7       8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                                      0                                          0                                       0
rgtcgData (variable)
...
chTerminator
rgtcgData (variable): A sequence of structures. Each structure is identified by its first byte, as
    follows.
chTerminator (1 byte): An unsigned integer that specifies a terminator for the sequence. This value
   MUST be 0x40.
2.9.317 TCGRF
A TCGRF structure specifies the text layout and cell merge properties for a single cell in a table.
                                                      1                                          2                                       3
0       1    2   3   4    5       6   7       8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                                      0                                          0                                       0
A B C D E F G H I
A - horzMerge (2 bits): A value that specifies how this cell merges horizontally with the neighboring
    cells in the same row. This value MUST be one of the following.
Value                     Meaning
0                         The cell is not merged with the cells on either side of it.
                                                                                                                                                 459 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value                Meaning
1                    The cell is one of a set of horizontally merged cells. It contributes its layout region to
                     the set and its own contents are not rendered.
2, 3                 The cell is the first cell in a set of horizontally merged cells. The contents and
                     formatting of this cell extend into any consecutive cells following it that are
                     designated as part of the merged set.
B - textFlow (3 bits): A value from the TextFlow enumeration that specifies rotation settings for
    the text in the cell.
C - vertMerge (2 bits): A value from the VerticalMergeFlag enumeration that specifies how this
    cell merges vertically with the cells above or below it.
D - vertAlign (2 bits): A value from the VerticalAlign enumeration that specifies how contents
    inside this cell are aligned.
E - ftsWidth (3 bits): An Fts value that specifies the unit of measurement for the wWidth field in
    the TC80 structure.
F - fFitText (1 bit): Specifies whether the contents of the cell are to be stretched out such that the
    full cell width is used.
G - fNoWrap (1 bit): When set, specifies that the preferred layout of the contents of this cell is as a
    single line and that cell widths can be adjusted to accommodate long lines. This preference is
    ignored when the preferred width of this cell is set to ftsDxa.
H - fHideMark (1 bit): When set, specifies that this cell is rendered with no height if all cells in the
    row are empty.
2.9.318 TcgSttbf
The TcgSttbf structure specifies the command string table that is used to store the names of macros
and the arguments to the allocated commands. This structure is used in the sequence of structures
that specify command-related customizations in Tcg255.
                                         1                                           2                                        3
0   1   2   3    4   5   6   7   8   9       1   2   3   4   5     6   7     8   9       1    2   3   4   5   6   7   8   9       1
                                         0                                           0                                        0
ch sttbf (variable)
...
2.9.319 TcgSttbfCore
The TcgSttbfCore structure is an STTB structure whose strings are used by the Acd and Mcd
structures. The cData field of this STTB structure is two bytes. This is an extended STTB structure,
which means that its cchData fields are 2 bytes in size. The extra data that is appended to each
string of this STTB is an unsigned 16-bit integer that specifies the number of references that other
structures have to that string.
                                                                                                                                      460 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                         1                                           2                                            3
0   1   2   3   4    5   6   7   8   9   0   1   2   3   4   5       6   7   8   9   0    1   2   3       4   5   6   7   8   9   0   1
Data0 (variable)
Data1 (variable)
ExtraData1 (2 bytes) …
The TcgSttbfCore structure is an STTB that has the following additional restrictions on its field
values:
2.9.320 Tch
The Tch structure is used by PlcfTch and specifies table character information for the CP range.
                                         1                                           2                                            3
0   1   2   3   4    5   6   7   8   9       1   2   3   4   5       6   7   8   9        1   2   3       4   5   6   7   8   9       1
                                         0                                           0                                            0
A unused
A - fUnk (1 bit): A bit that specifies that the table character cache for the CP range is unknown. If
    fUnk is set, unused MUST be ignored.
unused (31 bits): A bit field that specifies information for the CP range. This value SHOULD<263>
   be zero and SHOULD be ignored.
2.9.321 TDefTableOperand
The TDefTableOperand structure is the operand that is used by the sprmTDefTable value. It
specifies the initial layout of the columns in the current table row.
                                                                                                                                          461 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                          1                                         2                                        3
0   1   2   3   4   5   6   7     8   9       1   2   3   4   5     6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                          0                                         0                                        0
...
rgTc80 (variable)
...
cb (2 bytes): An unsigned integer that specifies the number of bytes that are used by the remainder
    of this structure, incremented by 1.
NumberOfColumns (1 byte): An integer that specifies the number of columns in this table. The
  number MUST be at least zero, and MUST NOT exceed 63.
rgdxaCenter (variable): An array of XAS. There MUST be exactly one XAS value in this array for
   every column specified in NumberOfColumns, incremented by 1. The first entry specifies the
   horizontal position of the logical left edge of the table, as indented from the logical left page
   margin. The remaining entries specify the horizontal positions of the logical right edges of each
   cell progressing logical right across the row. More specifically, the positions for all edges between
   cells are the midpoints of the inter-cell spacing. The first and last entries specify the positions of
   the outer edges of the table, including all cell spacing. The values in the array MUST be in non-
   decreasing order.
rgTc80 (variable): An array of TC80 that specifies the default formatting for a cell in the table. Each
   TC80 in the array corresponds to the equivalent column in the table. If there are fewer TC80s than
   columns, the remaining columns are formatted with the default TC80 formatting. If there are more
   TC80s than columns, the excess TC80s MUST be ignored.
2.9.322 TDxaColOperand
The TDxaColOperand structure is used by the sprmTDxaCol value and specifies a range of table cells
and the width of each cell.
                                          1                                         2                                        3
0   1   2   3   4   5   6   7     8   9       1   2   3   4   5     6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                          0                                         0                                        0
itc dxaCol
itc (2 bytes): An ItcFirstLim structure that specifies which cells this column width applies to.
dxaCol (2 bytes): An XAS_nonNeg value that specifies the width of each of the columns, measured
   in twips. The width of a column is the measurement from the midpoint of the cell spacing before
   it to the midpoint of the cell spacing after it. For the first and last columns in a row, the width
   additionally includes the remainder of the cell spacing out to the outer border of the table.
2.9.323 TextFlow
The TextFlow enumeration specifies the rotation settings for a block of text and for the individual
East Asian characters in each line of the block.
                                                                                                                                     462 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                  Value         Meaning
                                    Specifies the standard vertical text arrangement. The text block is not rotated. Multiple
grpfTFlrtb            0x0000
                                    lines are arranged top to bottom. The characters on a line are laid out left to right.
                                    Specifies a 90-degree clockwise rotation of the standard vertical text block. The lines in
grpfTFtbrl            0x0001        the block are vertical and arranged right to left. The characters on a line are rotated 90
                                    degrees in a clockwise direction and laid out top to bottom.
                                    Specifies a 90 degree, counter-clockwise rotation of the standard vertical text block. The
grpfTFbtlr            0x0003        lines in the block are vertical and arranged left to right. The characters on a line are
                                    rotated 90 degrees in a counter-clockwise direction and laid out bottom to top.
                                    Specifies the same line layout as grpfTFlrtb, however, each East Asian character is
grpfTFlrtbv           0x0004
                                    rotated 90 degrees in a counter-clockwise direction. All other text is not rotated.
                                    Specifies the same rotated line layout as grpfTFtbrl, however, each East Asian
                                    character is rotated 90-degrees in a counter-clockwise direction within the block,
grpfTFtbrlv           0x0005
                                    canceling out the rotation in grpfTFtbrl. All other text is left with the rotation found in
                                    grpfTFtbrl.
2.9.324 TInsertOperand
The TInsertOperand structure is an operand that is used by the sprmTInsert value and specifies a
range of default table cell definitions to add to a table row.
                                             1                                       2                                        3
0    1   2    3   4     5   6   7    8   9       1   2   3   4   5   6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                             0                                       0                                        0
itcFirst (1 byte): An unsigned integer that specifies the zero-based index of the first new table cell
    definition.
ctc (1 byte): An unsigned integer that specifies the number of new table cells. This value MUST be
    greater than zero. Table rows MUST NOT have more than 63 cells after the insertion.
dxaCol (2 bytes): An XAS_nonNeg value that specifies the width of each of the new cells. The total
   width of the table after inserting the new cells MUST NOT exceed 31680 twips.
2.9.325 TIQ
The TIQ structure specifies information about a structured document tag node, or an attribute on a
structured document tag node, in the document.
                                             1                                       2                                        3
0    1   2    3   4     5   6   7    8   9       1   2   3   4   5   6   7   8   9       1   2    3   4   5   6   7   8   9       1
                                             0                                       0                                        0
ixsdr
ixstElement
ixsdr (4 bytes): An unsigned integer that specifies the STTB which is the namespace of the
    structured document tag node or attribute that is represented by the structure containing this TIQ
    structure. This value MUST be less than 0x7FFFFFFF. This STTB can be found by using the
    following algorithm:
1.   The structure that contains this TIQ is contained in an SttbfBkmkSdt which is located at the
     offset specified by the fcSttbfBkmkSdt field of a FibRgFcLcb2002 structure.
                                                                                                                                      463 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.   The fcHpIxsdr field of that FibRgFcLcb2002 structure specifies the location of an Hplxsdr.
3.   ixsdr is the zero-based index of an XSDR within the rgXSDR array of that Hplxsdr.
4.   If this TIQ is a field of an FSDAP structure, the string table that is specified by this ixsdr is the
     SttbElements field of the XSDR in step 3. If this TIQ is a field of an SDTI structure, the string
     table is the SttbAttributes field.
ixstElement (4 bytes): An integer that specifies a zero-based index into the STTB namespace that is
    denoted by ixsdr. The string that is found at offset ixstElement is the name of the structured
    document tag node or attribute associated with the structure containing this TIQ.
2.9.326 TLP
The TLP structure specifies the table style options for the current table.
                                           1                                       2                                        3
0    1   2   3   4   5   6   7     8   9       1   2   3   4   5   6   7   8   9       1   2   3   4    5   6   7   8   9       1
                                           0                                       0                                        0
itl grfatl
itl (2 bytes): A signed integer that MAY<264> specify the index of a predefined table auto-format.
     Formats applied through auto-formatting are distributed to all of the affected rows and cells, and
     can be changed independently of this value. As such, the value that is found here does not specify
     any formatting for the table as it exists now. The purpose of this data is to aid in the re-application
     of the auto-format in the future.
The list of auto-formats is application specific. The special values for itl are as follows.
grfatl (2 bytes): A bit field of Fatl flags that SHOULD<265> specify which optional formats are in
    effect from the table style or table auto-format applied to the table.
2.9.327 ToggleOperand
The ToggleOperand structure is an operand to an SPRM whose spra is 0 and whose sgc is 2. It
modifies a Boolean character property.
                                           1                                       2                                        3
0    1   2   3   4   5   6   7     8   9       1   2   3   4   5   6   7   8   9       1   2   3   4    5   6   7   8   9       1
                                           0                                       0                                        0
value
value (1 byte): An unsigned integer which MUST be one of the following values.
Value        Meaning
0x00         The Boolean property        is set to 0, which means the property is turned OFF.
0x01         The Boolean property        is set to 1, which means the property is turned ON.
0x80         The Boolean property        is set to match the value of the property in the current style that is applied to
             the text.
0x81         The Boolean property        is set to the opposite of the value of the property in the current style that is
             applied to the text.
                                                                                                                                    464 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.328             Tplc
The Tplc structure is a 32-bit unsigned integer that specifies the format of one level of a bulleted or
numbered list.
If the first bit (lowest bit) is 1, Tplc specifies an application built-in format, as specified in
TplcBuildIn. If the first bit is 0, Tplc specifies a user-defined format, as specified in TplcUser. See
SttbRgtplc for more details about how Tplcs are mapped to LVLs inside LSTF.
2.9.329 TplcBuildIn
The TplcBuildIn structure is a Tplc structure that specifies an application predefined format for the
bulleted or numbered list.
                                         1                                       2                                         3
0   1   2   3   4   5    6   7   8   9       1   2   3   4   5   6   7   8   9       1   2   3     4   5   6   7   8   9       1
                                         0                                       0                                         0
A ilgpdM1 lid
ilgpdM1 (15 bits): An unsigned integer that specifies the predefined bulleted or numbered format
    and that MUST be one of the values from the following table. The precise rendering of the bulleted
    or numbering format is application-dependent.
0x7FFF (none)
0x0000
0x0001
0x0002
0x0003
0x0004
0x0005
0x0006
0x0007
0x0008
0x0009
0x000A
0x000B
0x000C
                                                                                                                                   465 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value           Bullet/numbering format
0x000D
lid (2 bytes): A LID that specifies the language identifier for the bullet or number.
2.9.330 TplcUser
The TplcUser structure is a Tplc value that specifies a user-defined bulleted or numbered format. It
MUST correspond to an LSTF structure (see LSTF.tplc) or it MUST correspond to an individual LVL
structure. This LVL structure MUST correspond to an LSTF structure in the PlfLst structure. The LSTF
and LVL structures contain the detailed format specification. See the SttbRgtplc structure for more
details about how Tplc values are mapped to LVL structures inside the LSTF structure.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
A wRandom
wRandom (31 bits): An unsigned random integer assigned by the application. Any unsigned integer
  is valid as long as it is unique for each user-defined bulleted or numbered format.
2.9.331 Ttmbd
The Ttmbd structure specifies information about an embedded TrueType font, including where to
locate the font in the document.
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
fc
iiffn A B unnamed
fcSubset
fc (4 bytes): An unsigned integer value that specifies an offset into the WordDocument Stream
    where the embedded TrueType font is stored. This value MUST be nonzero. The font data that is
    stored at this offset is written as specified in [Embed-Open-Type-Format].
iiffn (2 bytes): A signed integer value that specifies an index into the SttbfFfn string table stored at
     FibRgFcLcb97.fcSttbfffn. This value MUST be a non-negative number.
fcSubset (4 bytes): If entire fonts are embedded in the document, fcSubset MUST be 0xFFFFFFFF.
   If only the characters that are used by the document are embedded in the document, fcSubset is
   an unsigned integer that specifies the order in which fonts are first used. The first font to be used
                                                                                                                                  466 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    in the document has an fcSubset value that is equal to zero; all subsequent fonts are
    incremented by 1 in order of first use. fcSubset MUST be incremented for all fonts that are used
    in the document, including fonts that are not embedded in the document. This value MUST NOT
    exceed the total number of fonts used in the document.
2.9.332 UFEL
The UFEL structure specifies layout information for text in East Asian languages. See also [ECMA-376]
part 4, section 2.3.2.8 eastAsianLayout paragraph property.
                                          1                                       2                                       3
0   1   2   3   4   5    6    7   8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                       0                                       0
A B C D E F G H I J K L M
A - fTNY (1 bit): A bit that specifies if the text displays horizontally within vertical text, or vertically
    within horizontal text. The text is rendered with a 90-degree rotation to the left from all other
    contents of the containing line, while keeping the text on the same line as all other text in the
    paragraph.
B - fWarichu (1 bit): A bit that specifies that the text displays on a single line by creating two sub-
    lines within the regular line, and laying out this text equally between those sub-lines.
H - iWarichuBracket (3 bits): An unsigned integer that specifies whether the two sub-lines within
    one line are enclosed within a pair of brackets when displayed, and the type of brackets that are
    displayed. If fWarichu is equal to 0x0, this value MUST be ignored.
Value       Meaning
0x0         No brackets
0x1         Round brackets, "()"
0x2         Square brackets, "[]"
0x3         Angle brackets, "<>"
0x4         Curly brackets, "{}"
J - fTNYCompress (1 bit): A bit that specifies whether other Sprm structures were applied that
     cause the text to be scaled to fit within the existing line. A value of 0x1 means that other Sprm
     structures were applied. A value of 0x0 means that they were not.
                                                                                                                                  467 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.333             UID
2.9.334 UidSel
The UidSel structure is a 2-byte integer that identifies a user or group of users for the purpose of
specifying range-level protection information about the given users. If the integer is greater than
zero, it MUST be a 1-based index into the SttbProtUser at an offset of
FibRgFcLcb2003.fcSttbProtUser in the Table Stream. Otherwise, it is a UID type that MUST be one
of the uidEveryone, uidEditors, or uidOwners values.
2.9.335 UIM
The UIM structure contains data that was provided by the Microsoft Windows Text Services
Framework, a service provided by Microsoft Windows that enables the application to receive input
from different input sources, such as handwriting.
                                         1                                         2                                           3
0   1   2   3   4   5   6   7   8    9       1   2    3   4   5    6   7   8   9       1   2     3   4     5   6   7   8   9       1
                                         0                                         0                                           0
iguidType iclsidTip
fc
cch
cb
dwPrivate
iguidType (2 bytes): A signed integer value that specifies an index into the GUIDs that are listed in
    PlfguidUim.rgguidUim. This value MUST be greater than or equal to 0 and less than
    PlfguidUim.iMac. The referenced GUID specifies the Text Services category of the service that
    provided this data.
iclsidTip (2 bytes): A signed integer value that specifies an index into the GUIDs that are listed in
    PlfguidUim.rgguidUim. This value MUST be greater than or equal to 0 and less than
    PlfguidUim.iMac. The referenced GUID specifies the CLSID of the service that provided this data.
fc (4 bytes): A signed integer that specifies an offset into the Table Stream. The data that is
    provided by the service which is identified by iguidType and iclsidTip begins at this offset. The
                                                                                                                                       468 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
     size of this data, in bytes, is specified by cb. The meaning of this data is determined by the
     service that provided it.
cch (4 bytes): A signed integer that specifies the size of text, in count of characters, which starts at
   the corresponding CP in the plcfUim value of the main document.
cb (4 bytes): An unsigned integer that specifies the size, in bytes, of the data at offset fc in the
    Table Stream.
dwPrivate (4 bytes): An unsigned integer that specifies the private data that is generated by the
  service which is identified by iguidType and iclsidTip.
2.9.336 UpxChpx
The UpxChpx structure specifies the character formatting properties that differ from the parent style
as defined by StdfBase.istdBase.
                                         1                                          2                                       3
0    1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                          0                                       0
grpprlChpx (variable)
...
padding (variable)
...
grpprlChpx (variable): An array of Prl elements that specifies character formatting properties.
     This array MUST contain only character Sprm structures. However, this array MUST NOT contain
     any Sprm structure that specifies a property that is preserved across the application of the
     sprmCIstd value. Finally, this array MUST NOT contain any of the following:
1. sprmCFSpecVanish
2. sprmCIstd
3. sprmCIstdPermute
4. sprmCPlain
5. sprmCMajority
6. sprmCDispFldRMark
7. sprmCIdslRMarkDel
8. sprmCLbcCRJ
9. sprmCPbiIBullet
10. sprmCPbiGrf
Additionally, character, paragraph, and list styles MUST NOT contain the sprmCCnf value.
padding (variable): A UPXPadding structure that specifies the padding that is required to make
   the UpxChpx structure an even length.
                                                                                                                                    469 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.337             UPXPadding
The UPXPadding structure specifies the padding that is used to pad the UpxPapx, UpxChpx, or
UpxTapx structure if any of them are an odd number of bytes in length. The number of bytes that are
required MUST be written as a zero value.
The UpxPapx, UpxChpx, and UpxTapx structures MUST be written as an even length, even if their
contents are an odd length.
                                          1                                           2                                        3
0   1   2   3   4   5    6   7   8   9        1   2   3    4   5      6   7   8   9        1   2   3   4   5   6   7   8   9       1
                                          0                                           0                                        0
blob (variable)
...
blob (variable): A structure that specifies any padding that is required to pad structures of an odd
   number of bytes in length so that they end on an even-byte boundary. It has a size of 1 byte if
   padding is needed, and 0 bytes if no padding is needed.
2.9.338 UpxPapx
The UpxPapx structure specifies the paragraph formatting properties that differ from the parent style,
as defined by StdfBase.istdBase.
                                          1                                           2                                        3
0   1   2   3   4   5    6   7   8   9        1   2   3    4   5      6   7   8   9        1   2   3   4   5   6   7   8   9       1
                                          0                                           0                                        0
...
padding (variable)
...
istd (2 bytes): An unsigned integer that specifies the istd value of the paragraph style. The istd
    value MUST be equal to the current style.
grpprlPapx (variable): An array of Prl elements that specify paragraph formatting properties. This
   array MUST contain only paragraph Sprm structures.
    Paragraph and table styles MUST NOT contain any Sprm structure that specifies a property that is
    preserved across the application of the sprmPIstd value. Additionally, paragraph and table styles
    MUST NOT contain any of the following:
§ sprmPIstd
§ sprmPIstdPermute
§ sprmPIncLvl
§ sprmPNest80
§ sprmPChgTabs
                                                                                                                                       470 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
§   sprmPDcs
§ sprmPHugePapx
§ sprmPFInnerTtp
§ sprmPFOpenTch
§ sprmPNest
§ sprmPFNoAllowOverlap
§ sprmPIstdListPermute
§ sprmPTableProps
§ sprmPTIstdInfo
padding (variable): A UPXPadding value that specifies the padding that is required to make the
   UpxPapx structure an even length.
2.9.339 UpxRm
The UpxRm structure specifies that the style was revision-marked, and the date and author of the
revision. A revision-marked style contains a set of formatting properties that specify the formatting of
the style at the time that the style was modified for revision-marking.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
date
ibstAuthor
date (4 bytes): A DTTM that specifies the date and time at which this style revision occurred.
ibstAuthor (2 bytes): A signed integer that specifies the index location of the string in the
    SttbfRMark string table that describes the author who modified the style.
2.9.340 UpxTapx
The UpxTapx structure specifies the table formatting properties that differ from the parent style, as
defined by the StdfBase.istdBase value.
                                        1                                          2                                       3
0   1   2   3   4   5   6   7   8   9       1   2    3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                          0                                       0
grpprlTapx (variable)
...
padding (variable)
...
                                                                                                                                   471 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
grpprlTapx (variable): An array of Prl elements that specify table formatting properties. This array
   MUST contain only table Sprm structures.
     This array MUST NOT contain the sprmTWidthBefore value, except when specifying the table
     formatting properties for the table style with an istd of 0x000B, which MUST contain a
     sprmTWidthBefore value with an FtsWWidth_TablePart operand that specifies a ftsWidth of
     ftsDxa (0x03) and a wWidth of zero.
     Additionally, this array MUST NOT contain any Sprm structure that specifies a property that is
     preserved across the application of the sprmTIstd value.
1. sprmTDxaLeft
2. sprmTDefTable
3. sprmTDefTableShd80
4. sprmTDefTableShd3rd
5. sprmTDefTableShd
6. sprmTDefTableShd2nd
7. sprmTWidthAfter
8. sprmTFKeepFollow
9. sprmTBrcTopCv
10. sprmTBrcLeftCv
11. sprmTBrcBottomCv
12. sprmTBrcRightCv
13. sprmTSetBrc80
14. sprmTInsert
15. sprmTDelete
16. sprmTDxaCol
17. sprmTMerge
18. sprmTSplit
19. sprmTTextFlow
20. sprmTVertMerge
21. sprmTVertAlign
22. sprmTSetBrc
23. sprmTCellPadding
24. sprmTCellWidth
                                                                                              472 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
25. sprmTFitText
26. sprmTFCellNoWrap
27. sprmTCellFHideMark
28. sprmTSetShdTable
29. sprmTCellBrcType
30. sprmTFBiDi90
31. sprmTFNoAllowOverlap
32. sprmTIpgp
33. sprmTDefTableShdRaw
34. sprmTDefTableShdRaw2nd
35. sprmTDefTableShdRaw3rd
padding (variable): A UPXPadding value that specifies the padding that is required to make
   UpxTapx an even length.
2.9.341 VerticalAlign
The VerticalAlign enumeration specifies the vertical alignment of content within table cells.
vaTop 0x00 Specifies that content is vertically aligned to the top of the cell.
vaCenter 0x01 Specifies that content is vertically aligned to the center of the cell.
vaBottom 0x02 Specifies that content is vertically aligned to the bottom of the cell.
2.9.342 VerticalMergeFlag
The VerticalMergeFlag enumeration provides a 2-bit value that specifies whether a table cell is
merged with the cells above or below it. This MUST be one of the following values.
fvmClear 0x00 The cell is not merged with cells above or below it. This is the default behavior.
                       The cell is one of a set of vertically merged cells. It contributes its layout region to the set
fvmMerge      0x01
                       and its own contents are not rendered.
fvmRestart    0x03     The cell is the first cell in a set of vertically merged cells. The contents and formatting of
                       this cell extend down into any consecutive cells below it that are set to the fvmMerge
                                                                                                              473 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Name                 Value     Meaning
value.
2.9.343 VertMergeOperand
The VertMergeOperand structure is an operand that specifies the merge behavior of a cell in a table
row with the equivalent cells in the rows immediately above or below it.
                                          1                                         2                                       3
0   1   2   3    4    5   6   7   8   9       1     2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                         0                                       0
cb itc vertMergeFlags
cb (1 byte): An integer value that specifies the byte count of the remainder of this structure. This
    value MUST be 2.
itc (1 byte): An integer that specifies the index of a cell in the table row. The first cell has an index
    of zero. All cells in the row are counted, even if they are vertically merged with cells above or
    below them. This value MUST be a valid index of a cell in the table row.
vertMergeFlags (1 byte): A value from the VerticalMergeFlag enumeration that specifies whether
   this cell is vertically merged with the cells above or below it.
2.9.344 Vjc
The Vjc enumeration provides an 8-bit unsigned integer that specifies the vertical alignment of text.
2.9.345 WHeightAbs
                                          1                                         2                                       3
0   1   2   3    4    5   6   7   8   9       1     2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                         0                                       0
DyaHeightAbs A
DyaHeightAbs (15 bits): A YAS_nonNeg value that specifies frame height. If this value is 0x0000,
   the frame height is automatically determined based on the height of its contents.
A - fMinHeight (1 bit): A bit that specifies whether DyaHeightAbs specifies minimum frame height.
    The DyaHeightAbs MUST NOT be 0x0000 when fMinHeight is set.
2.9.346 WKB
                                                                                                                                    474 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
                                              1                                       2                                       3
0   1   2   3   4       5   6   7     8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                              0                                       0                                       0
fn A B C D E F G H fReserved9
lvl fnpi
pdod
fnpi (2 bytes): An FNPI structure that specifies the type and identifier of a file name. The string that
   is contained in the SttbFnm structure and that is appended by an FNIF structure that has an fnpi
   which is identical to this one, is the file name of the file that this WKB references.
2.9.347 Wpms
The Wpms structure specifies the current state of the mail merge.
                                              1                                       2                                       3
0   1   2   3   4       5   6   7     8   9       1   2   3   4   5   6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                              0                                       0                                       0
A B C D E F G H I J K
A - wpmsMainDoc (1 bit): Specifies whether the main document was selected for the mail merge.
B - wpmsDF (1 bit): Specifies whether the data source was selected for the mail merge.
C - wpmsHF (1 bit): Specifies whether the mail merge obtains the merge field names from a header
    file.
D - wpmsType (4 bits): An unsigned integer that specifies the document type of the mail merge.
    This value MUST be one of the following.
Value Meaning
                                                                                                                                      475 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Value       Meaning
0x1 Letters.
0x2 Labels.
0x4 Envelopes.
F - wpmsAuto (1 bit): Specifies whether this is an automatic label or envelope mail merge.
H - wpmsSuppression (1 bit): Specifies whether the blank lines in the data files MUST be
    suppressed.
K - wpmsDest (3 bits): An unsigned integer that specifies the destination of the mail merge. This
    MUST be one of the following values.
Value Meaning
0x0 None
0x1 Printer
0x2 E-mail
0x4 Fax
2.9.348 Wpmsdt
                                          1                                        2                                       3
0   1   2   3     4   5   6   7   8   9       1   2   3   4   5   6   7    8   9       1   2   3   4   5   6   7   8   9       1
                                          0                                        0                                       0
docType unused
docType (6 bits): An unsigned integer that specifies the document type of the mail merge. This
   MUST be one of the following values.
Value       Meaning
0x00        No mail merge.
0x01        Letters.
0x02        Labels.
0x04        Envelopes.
0x08        Catalog or directory.
0x10        E-mail messages.
0x20        Fax.
                                                                                                                                   476 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
unused (26 bits): This field is undefined and MUST be ignored.
2.9.349 XAS
The XAS value is a 16-bit signed integer that specifies horizontal distance in twips. This value MUST
be greater than or equal to -31680 and less than or equal to 31680.
2.9.350 XAS_nonNeg
The XAS_nonNeg value is a 16-bit unsigned integer that specifies horizontal distance, in twips. This
value MUST be less than or equal to 31680.
2.9.351 XAS_plusOne
The XAS_plusOne value is a 16-bit signed integer that specifies the horizontal distance, in twips,
after the stored value is decremented by 1. This value MUST be greater than or equal to -31679 and
less than or equal to 31681.
2.9.352 XSDR
                                        1                                         2                                       3
0   1   2   3   4   5   6   7   8   9       1   2   3   4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                        0                                         0                                       0
wzURI (variable)
...
wzManifestLocation (variable)
...
sttbElements (variable)
...
sttbAttributes (variable)
...
wzURI (variable): A Unicode string that indicates the URI of this schema definition. The string is
   length-prefixed with a 16-bit integer and is not null-terminated.
wzManifestLocation (variable): A Unicode string that is length-prefixed with a 16-bit integer and is
  not null-terminated. If this schema definition was loaded through an XML expansion pack,
  wzManifestLocation is the URI of the expansion pack manifest. If it was not loaded through an
  expansion pack, the string is empty.
sttbElements (variable): An STTB structure that contains all the elements within this XML schema.
    This structure uses a 4-byte cData.
sttbAttributes (variable): An STTB structure that contains all the attributes within this XML
    schema. This structure uses a 4-byte cData.
                                                                                                                                  477 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
2.9.353             Xst
The Xst structure is a string. The string is prepended by its length and is not null-terminated.
                                         1                                          2                                       3
0   1   2   3   4   5   6    7   8   9       1   2   3    4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                          0                                       0
...
cch (2 bytes): An unsigned integer that specifies the number of characters that are contained in the
   rgtchar array.
2.9.354 Xstz
The Xstz structure is a string. The string is prepended by its length and is null-terminated.
                                         1                                          2                                       3
0   1   2   3   4   5   6    7   8   9       1   2   3    4   5     6   7   8   9       1   2   3   4   5   6   7   8   9       1
                                         0                                          0                                       0
xst (variable)
...
chTerm
xst (variable): An Xst structure that is prepended with a value which specifies the length of the
    string.
2.9.355 YAS
The YAS value is a 16-bit signed integer that specifies vertical distance in twips. This value MUST be
greater than or equal to -31680 and less than or equal to 31680.
2.9.356 YAS_nonNeg
The YAS_nonNeg value is a 16-bit unsigned integer that specifies vertical distance, in twips. This
value MUST be less than or equal to 31680.
2.9.357 YAS_plusOne
The YAS_plusOne value is a 16-bit signed integer that specifies vertical distance, in twips, after the
stored value is decremented by 1. This value MUST be greater than or equal to -31679 and less than
or equal to 31681.
                                                                                                                                    478 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
3     Structure Examples
This section contains examples of some of the most commonly used data structures in MS-DOC files.
The examples are based on common computational tasks.
Section 3.1 provides examples of the data structures that are used to find the text of the document.
Section 3.2 provides examples of the data structures that are used to find the properties of a section,
including page size and margins.
Section 3.3 provides examples of the data structures that are used to determine the ranges of
bookmarks.
Sections 3.4 and 3.5 provide examples of the data structures that are used to determine direct
character and paragraph formatting.
Section 3.6 provides an example of the use of the sprmTInsert value to define a table row and of the
use of an ItcFirstLim structure to specify a range of cells to which a Sprm structure applies.
Finally, Section 3.7 provides an example of the data structures that are used to determine the
formatting and number text of a list.
The following is an example of a Clx. This structure demonstrates the mapping between CP elements
and the location of text in the file. See section 2.4.1, Retrieving Text.
As with all Word Binary files, this file has a Fib at an offset of zero in the WordDocument Stream. The
preceding figure 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.
fcClx: 0x000001F8 specifies the offset, in bytes, of a location in the Table Stream. A Clx begins at
    this offset.
lcbClx: 0x0000002D specifies the size, in bytes, of the Clx at offset 0x000001F8 in the Table Stream.
The following shows the top level of the Clx at offset 0x000001F8 in the Table Stream.
                                                                                               479 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset               Size           Structure                             Value
RgPrc: This optional member is not present in this Clx structure. Because the first byte of this Clx
   structure is 0x02, the Clx begins with a Pcdt structure and does not contain an array of Prc
   structures.
Pcdt.clxt: 0x02 specifies that this is a Pcdt structure, as opposed to a Prc structure.
Pcdt.lcb: 0x00000028 specifies the size, in bytes, of PlcPcd. A PlcPcd is a Plc structure whose data
   members are Pcd structures. A Pcd is 8 bytes in size, so this PlcPcd consists of three Pcd
   structures and four CP elements.
The following shows the top-level expansion of the PlcPcd that is contained in this Clx. The Pcd
structures, which are expanded in later tables, specify the locations of text in the file.
cp[0]: 0x00000000 specifies that pcd[0] applies to text starting at CP zero. Because cp[1] is
   0x0000006, pcd[0] applies to CP values zero through 5, inclusive.
cp[1]: 0x00000006 specifies that pcd[1] applies to text starting at CP 0x00000006. Because cp[2]
   is 0x0000000D, pcd[1] applies to CP values 0x00000006 through 0x0000000C, inclusive.
cp[2]: 0x0000000D specifies that pcd[2] applies to text starting at CP 0x0000000D. Because cp[3]
   is 0x0000000E, pcd[2] applies only to CP value 0x0000000D.
cp[3]: 0x0000000E specifies that the last CP value to which pcd[2] applies is 0x0000000D.
pcd[0]: Specifies the location of text for CP values zero through 5, inclusive. This structure is
   expanded in the following table.
pcd[1]: Specifies the location of text for CP values 0x00000006 through 0x0000000C, inclusive. This
   structure is expanded following.
pcd[2]: Specifies the location of text for CP value 0x0000000D. This structure is expanded following.
The following table shows the expansion of pcd[0]. This structure specifies the location of the text at
CP zero through 5, inclusive.
                                                                                                    480 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset            Size          Structure                                  Value
fNoParaLast: 0x1 specifies that the text that is referenced by this Pcd structure does not contain any
   paragraph marks.
fc.fc: 0x00000C22 specifies the offset, in bytes, in the WordDocument Stream where the text at CP
    zero begins. Because cp[1] is 0x00000006, there are 6 characters of text at this offset.
fc.fCompressed: 0x0 specifies that the text at offset fc.fc in the WordDocument Stream consists of
    16-bit Unicode characters.
prm0.fComplex: 0x0 specifies that this is a Prm0 structure, as opposed to a Prm1 structure.
prm0.isprm: 0x00 specifies that sprmCLbcCRJ is applied to the range of CPs that are referenced by
   this Pcd structure. However, an isprm of 0x0000, combined with a val of 0x0000, is a special
   case that specifies that the CPs that are referenced by this Pcd have no additional formatting from
   their Pcd structure
prm0.val: 0x00, combined with isprm 0x0000, specifies that the CPs that are referenced by this Pcd
   have no additional formatting from their Pcd.
The following shows the expansion of pcd[1]. This structure specifies the location of the text at CP
0x0000006 through 0x0000000C, inclusive.
                                                                                              481 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset            Size          Structure                                   Value
fNoParaLast: 0x0 specifies that the text that is referenced by this Pcd might contain a paragraph
   mark. A value of 0x0001 specifies that there is no paragraph mark. A value of 0x0000 specifies
   that the referenced text might or might not contain a paragraph mark.
fc.fc: 0x00000800 specifies the offset, in bytes, in the WordDocument Stream where the text at CP
    0x00000006 begins. Because fCompressed is 1, the actual offset is fc/2, or 0x00000400.
    Because cp[2] is 0x0000000D, there are 7 characters at this offset.
fc.fCompressed: 0x1 specifies that the text at offset fc/2 consists of 8-bit ANSI characters, except
    for the values that are listed in the table in the specification of FcCompressed (section 2.9.73).
prm0.fComplex: 0x0 specifies that this is a Prm0 structure, as opposed to a Prm1 structure.
prm0.isprm: 0x00 specifies that sprmCLbcCRJ is applied to the range of CPs that are referenced by
   this Pcd. However, an isprm of 0x0000, combined with a val of 0x0000, is a special case that
   specifies that the CPs referenced by this Pcd have no additional formatting from their Pcd.
prm0.val: 0x00, combined with isprm 0x0000, specifies that the CPs that are referenced by this Pcd
   structure have no additional formatting from their Pcd.
The following shows the expansion of pcd[2]. This structure specifies the location of the text at CP
0x0000000D.
fNoParaLast: 0x0 specifies that the text that is referenced by this Pcd might contain a paragraph
   mark. A value of 0x0001 specifies that there is no paragraph mark. A value of 0x0000 indicates
   that a paragraph mark might, or might not, be contained in the referenced text.
fc.fc: 0x0000080E specifies the offset, in bytes, in the WordDocument Stream where the text at CP
    0x0000000D begins. Because fCompressed is 1, the actual offset is fc/2, or 0x00000407.
    Because cp[3] is 0x0000000E, there is 1 character at this offset.
                                                                                                482 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
fc.fCompressed: 0x1 specifies that the text at offset fc/2 consists of 8-bit ANSI characters, except
    for the values that are listed in the table in the specification of FcCompressed (section 2.9.73).
prm0.fComplex: 0x0 specifies that this is a Prm0 structure, as opposed to a Prm1 structure.
prm0.isprm: 0x00 specifies that sprmCLbcCRJ is applied to the range of CPs that are referenced by
   this Pcd. However, an isprm of 0x0000, combined with a val of 0x0000, is a special case that
   specifies that the CPs that are referenced by this Pcd have no additional formatting from their
   Pcd.
prm0.val: 0x00, combined with isprm 0x0000, specifies that the CPs that are referenced by this Pcd
   have no additional formatting from their Pcd.
The following shows the Unicode text at offset 0x00000C22 in the WordDocument Stream. This is an
array of two-byte characters. This array is not null-terminated.
The following shows the ANSI text at offset 0x00000400 in the WordDocument Stream. This is an
array of single byte characters. This array is not null-terminated.
                                                                                               483 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
text[0]: 0x57 ANSI 'W'.
The following structure shows the ANSI text at offset 0x00000407 in the WordDocument Stream. This
is an array of single byte characters. This array is not null-terminated.
The complete text of this document is therefore, "Hello World", followed by a period and two
paragraph marks.
A document that is created by using this specification is divided into sections. Each section can store
unique page-level formatting such as page size and orientation, in addition to other features such as
headers and footers. A document contains at least 1 section.
PlcfSed contains information about how the document is divided into sections, as well as the
properties of each section. The following is an example of a PlcfSed that was taken from a small
document with two sections.
The FibRgFcLcb97 structure is very large. Most fields have been omitted here for brevity.
fcPlcfSed: 0x000012D5 specifies that the PlcfSed structure begins at byte 0x12D5 in the Table
    Stream.
lcbPlcfSed: 0x00000024 specifies that the PlcfSed structure is 36 bytes long. Because each Sed
    structure is 12 bytes, the PlcfSed structure contains exactly three CPs and two Sed structures.
                                                                                               484 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Using the offset and length that are specified by fcPlcfSed and lcbPlcfSed, read the PlcfSed
structure, shown following.
This PlcfSed structure is 36 bytes long. Because each Sed structure is 12 bytes, this PlcfSed
structure contains exactly 3 CPs and 2 Sed structures and from that information it can be determined
that there are 2 sections.
cp[0]: 0x00000000 specifies that the text for the first section begins at position 0 in the main
   document.
cp[1]: 0x0000000B specifies that the text for the second section begins at position 11 in the main
   document. The last character in the first section is at position 10, and has a Unicode value of
   0x0C.
cp[2]: 0x00000016 specifies that the remainder of this document is in the second section. The
   character position 21 does not need to be 0x0C, because no more sections follow it.
sed[0]: The Sed structure for the text range from cp[0] to cp[1].
sed[0].fcSepx: 0x00000E00 specifies that the properties for the section are found at position 0x0E00
   in the WordDocument Stream.
sed[1]: The Sed structure for the text range from cp[1] to cp[2]. Its fcSepx field specifies that the
   properties for the second section are a Sepx structure that begins at byte 0x00000E2E in the
   WordDocument Stream.
The details for sed[1] are very similar to sed[0]. They have been omitted for brevity.
Use the offset specified in sed[0].fcSepx to find the Sepx structure that contains the properties of
the first section.
                                                                                               485 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset            Size       Structure                              Value
                                                                             486 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cb: 0x002C specifies that there are a total of 44 bytes (not counting this cb) of properties that apply
    to section 1. Given only this information, it cannot be determined how many properties this
    represents, because property sizes vary from property to property.
grpprl.prl[0]: The first property. All properties contain a sprm to identify them and an operand which
   contains the property value.
grpprl.prl[0].operand: 0x0168 specifies that the line height of the document grid in section 1 is
   360 twips (0.25 inches)
grpprl.prl[1].sprmSXaPage: 0xB01F specifies that this is the section property sprmSXaPage and
   that the operand is two bytes.
grpprl.prl[1].operand: 0x2FD0 specifies that the page width for pages in section 1 is 12,240 twips
   (8.5 inches).
grpprl.prl[2].sprmSYaPage: 0xB020 specifies that this is the section property sprmSYaPage and
   that the operand is two bytes.
grpprl.prl[2].operand: 0x3DE0 specifies that the page height for pages in section 1 is 15,840 twips
   (11 inches).
grpprl.prl[3].sprmSDxaLeft: 0xB021 specifies that this is the section property sprmSDxaLeft and
   that the operand is two bytes.
grpprl.prl[3].operand: 0x05A0 specifies that the left margin for pages in section 1 is 1440 twips (1
   inch) wide.
grpprl.prl[4].sprmSDxaRight: 0xB022 specifies that this is the section property sprmSDxaRight and
   that the operand is two bytes.
grpprl.prl[4].operand: 0x05A0 specifies that the right margin for pages in section 1 is 1440 twips (1
   inch) wide.
grpprl.prl[5].sprmSDyaTop: 0x9023 specifies that this is the section property sprmSDyaTop and
   that the operand is two bytes.
grpprl.prl[5].operand: 0x05A0 specifies that the top margin for pages in section 1 is 1440 twips (1
   inch) high.
grpprl.prl[6].operand: 0x05A0 specifies that the bottom margin for pages in section 1 is 1440 twips
   (1 inch) high.
grpprl.prl[7].operand: 0x0000 specifies that the gutter margin for pages in section 1 is 0 twips (0
   inches) wide.
grpprl.prl[8].operand: 0x02D0 specifies that headers for pages in section 1 are positioned 720
   twips (0.5 inches) from the top edge of the page.
                                                                                                487 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
grpprl.prl[9].sprmSDyaHdrBottom: 0xB018 specifies that this is the section property
   sprmSDyaHdrBottom and that the operand is two bytes.
grpprl.prl[9].operand: 0x02D0 specifies that footers for pages in section 1 are positioned 720 twips
   (0.5 inches) from the bottom edge of the page.
grpprl.prl[10].operand: 0x02D0 specifies that the spacing between columns, if there are multiple
   columns in section 1, is 720 twips (0.5 inches) wide.
Sed[0].fcSpex contains only some of the properties that apply to the Sepx structure. Properties that
are not contained in sed[0].fcSpex take on their respective default values.
The following is an example of a standard bookmark. This structure demonstrates the mapping
between the name of a bookmark, the CP of the first character of the bookmark, and the CP of the
first character beyond the end of the bookmark.
As with all MS-DOC files, this file has a Fib structure at offset zero in the WordDocument Stream. The
preceding table shows a portion of the FibRgFcLcb97 structure that is contained in that Fib. The
FibRgFcLcb97 structure is very large. Most fields have been omitted here, for brevity.
fcSttbfBkmk: 0x0000146B specifies the offset, in bytes, of a location in the Table Stream. An
    SttbfBkmk that contains the names of standard bookmarks in the document begins at this offset.
lcbSttbfBkmk: 0x0000004E specifies the size, in bytes, of the SttbfBkmk structure at offset
    0x0000146B in the Table Stream.
fcPlcfBkf: 0x000014B9 specifies the offset, in bytes, of a location in the Table Stream. A PlcfBkf
    structure that contains information about standard bookmarks in the document begins at this
    offset. This PlcfBkf structure is parallel to the SttbfBkmk structure at offset fcSttbfBkmk in the
    Table Stream. Each data element in the PlcfBkf structure specifies information about the
    bookmark that is associated with the element which is located at the same offset in that
    SttbfBkmk structure.
lcbPlcfBkf: 0x0000001C specifies the size, in bytes, of the PlcfBkf structure at offset fcPlcfBkf.
fcPlcfBkl: 0x000014D5 specifies the offset, in bytes, of a location in the Table Stream. A PlcfBkl
    structure that contains information about standard bookmarks in the document begins at this
                                                                                              488 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
    offset. Each data element in the PlcfBkl structure is associated in a one-to-one correlation with a
    data element in the PlcfBkf structure at offset fcPlcfBkf.
lcbPlcfBkl: 0x00000010 specifies the size, in bytes, of the PlcfBkl structure at offset fcPlcfBkl.
The following table shows the expansion of the SttbfBkmk structure at offset 0x0000146B in the
Table Stream.
fExtend: 0xFFFF specifies that the string fields in this STTB contain extended (2-byte) characters.
cData: 0x0003 specifies that this string table contains three elements.
cbExtra: 0x0000 specifies that there is no extra data appended to the string fields in this table.
The following table shows the top-level expansion of the Plcfbkf at offset 0x000014B9 in the Table
Stream. Each CP in the Plcfbkf specifies the location of the start of a bookmark in the document.
Each FBKF specifies further information about the bookmark starting at the corresponding CP. The
FBKF structures are expanded in later figures.
                                                                                               489 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset                 Size          Structure                        Value
cp[0]: 0x00000000 specifies the character position of the beginning of the bookmark associated with
   fbkf[0]. The same bookmark is associated with string[0] in the SttbfBkmk at offset
   fcSttbfBkmk in the Table Stream, so its name is "BookmarkThr".
cp[1]: 0x0000000D specifies the character position of the beginning of the bookmark associated with
   fbkf[1]. The same bookmark is associated with string[1] in the SttbfBkmk at offset
   fcSttbfBkmk in the Table Stream, so its name is "BookmarkTwo".
cp[2]: 0x00000011 specifies the character position of the beginning of the bookmark associated with
   fbkf[2]. The same bookmark is associated with string[2] in the SttbfBkmk at offset
   fcSttbfBkmk in the Table Stream, so its name is "BookmarkOne".
cp[3]: 0x00000021 specifies the value one greater than the largest value that a CP marking the start
   or end of a standard bookmark is allowed to have, which is one beyond the character position of
   the end of all document parts.
fbkf[0]: This value specifies further information about the bookmark named "BookmarkThr", whose
    range begins at CP 0x00000000. This structure is expanded in the following table.
fbkf[1]: This value specifies further information about the bookmark named "BookmarkTwo", whose
    range begins at CP 0x0000000D. This structure is expanded later.
fbkf[2]: This value specifies further information about the bookmark named "BookmarkOne", whose
    range begins at CP 0x00000011. This structure is expanded later.
The following table shows the expansion of fbkf[0] in the Plcfbkf structure at offset 0x000014B9 in
the Table Stream.
ibkl: A value of 0x0002 specifies a zero-based index into the PlcfBkl structure at offset 0x000014D5
    in the Table Stream. The entry found at said index specifies the location of the end of the
    bookmark named "BookmarkThr".
bkc.itcFirst: A value of 0x0000 is ignored, because the value of the fCol value that belongs to this
   BKC structure is 0.
                                                                                              490 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
bkc.itcLim: A value of 0x0000 is ignored, because the value of the fCol value that belongs to this
   BKC structure is 0.
bkc.fNative: 0x0000 specifies that an application is expected to include the bookmark named
   "BookmarkThr" when saving its file as RTF (Rich text Format), HTML, or XML.
bkc.fCol: This value is 0x0000 because some of the text that is spanned by the bookmark named
   "BookmarkThr" is not inside a table, so the lowest table nesting depth within the span of text that
   is defined by its character positions is 0.
The following table shows the expansion of fbkf[1] in the Plcfbkf structure at offset 0x000014B9 in
the Table Stream.
ibkl: 0x0000 specifies a zero-based index into the PlcfBkl structure at offset 0x000014D5 in the
    Table Stream. The entry found at the index specifies the location of the end of the bookmark
    named "BookmarkTwo".
bkc.itcFirst: A value of 0x0001 specifies the zero-based index of the table column that is the start of
   the table column range associated with the bookmark named "BookmarkTwo".
bkc.itcLim: A value of 0x0002 specifies that the zero-based index of the first column beyond the end
   of the table column range associated with the bookmark named "BookmarkTwo".
bkc.fNative: A value of 0x0000 specifies that an application is expected to include the bookmark
   named "BookmarkTwo" when saving its file as RTF (Rich text Format), HTML, or XML.
bkc.fCol: This value is 0x0001 because both of the following conditions hold:
§   All of the text that is spanned by the bookmark named "BookmarkTwo" is inside a table, so the
    lowest table nesting depth within the span of text that is defined by its character positions is
    greater than 0.
§   The span of text that is defined by the character positions of that bookmark contains a table cell
    mark from that table and nothing outside that table.
The following table shows the expansion of fbkf[2] in the Plcfbkf structure at offset 0x000014B9 in
the Table Stream.
                                                                                               491 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset                 Size         Structure                                 Value
ibkl: A value of 0x0001 specifies a zero-based index into the PlcfBkl structure at offset 0x000014D5
    in the Table Stream. The entry found at the index specifies the location of the end of the
    bookmark named "BookmarkOne".
bkc.itcFirst: A value of 0x0000 is ignored, because the value of the fCol that belongs to this BKC is
   0.
bkc.itcLim: A value of 0x0000 is ignored, because the value of the fCol that belongs to this BKC is 0.
bkc.fNative: A value of 0x0000 specifies that an application is expected to include the bookmark
   named "BookmarkOne" when saving its file as RTF (Rich text Format), HTML, or XML.
bkc.fCol: This value is 0x0000 because some of the text spanned by the bookmark named
   "BookmarkOne" is not inside a table, so the lowest table nesting depth within the span of text
   defined by its character positions is 0.
The following table shows the top-level expansion of the Plcfbkl structure at offset 0x000014D5 in the
Table Stream. Each CP in the Plcfbkl structure specifies the location of the end of a bookmark (1) in
the document.
cp[0]: A value of 0x00000016 specifies the character position that is 1 beyond the end of the
   bookmark associated with fbkf[1] in the PlcfBkf structure at offset fcPlcfBkf in the Table
   Stream, whose name is "BookmarkTwo". This CP is known to be associated with fbkf[1] because
   fbkf[1].ibkl is 0.
cp[1]: A value of 0x0000001B specifies the character position that is 1 beyond the end of the
   bookmark associated with fbkf[2] in the PlcfBkf structure at offset fcPlcfBkf in the Table
   Stream, whose name is "BookmarkOne". This CP is known to be associated with fbkf[2] because
   fbkf[2].ibkl is 1.
cp[2]: A value of 0x0000001E specifies the character position that is 1 beyond the end of the
   bookmark associated with fbkf[0] in the PlcfBkf structure at offset fcPlcfBkf in the Table
   Stream, whose name is "BookmarkThr". This CP is known to be associated with fbkf[0] because
   fbkf[0].ibkl is 2.
                                                                                              492 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cp[3]: A value of 0x00000021 specifies a value that is 1 greater than the largest value that a CP
   marking the start or end of a standard bookmark is allowed to have, which is 1 beyond the
   character position of the end of all document parts.
The FibRgFcLcb97 structure is very large. Most fields have been omitted here for brevity.
fcPlcfBteChpx: A value of 0x000000D6 specifies the offset, in bytes, of a location in the Table
    Stream. A PlcBteChpx structure begins at this offset.
lcbPlcfBteChpx: A value of 0x0000000C specifies the size, in bytes, of the PlcBteChpx at offset
    0x000000D6 in the Table Stream. Because each PnFkpChpx structure is four bytes, this
    PlcBteChpx structure contains exactly two CPs and one PnFkpChpx structures.
The following table shows the top level of the PlcBteChpx at offset 0x000000D6 in the Table Stream.
fc[0]: 0x00000400 specifies the offset in the WordDocument Stream where a text range begins. This
    is the first and only text range that is specified; this is evident because there are only two FCs.
fc[1]: 0x00000411 specifies the offset in the WordDocument Stream immediately after the end of the
    text range. Because the text is 8-bit ANSI (see Section 2.4.1, Retrieving Text) the end of the text
    range is 0x410. If this document had more than one text range, 0x00000411 would also specify
    the start of the next text range.
pn[0].pn: 0x00000003 specifies the offset in the WordDocument Stream of the ChpxFkp structure
   that is applied to the text range. This ChpxFkp structure is referred to as chpxfkp[0]. The
   chpxfkp[0] element begins at offset 3 * 512 = 1536 = 0x00000600. See the following table for
   the expansion of chpxfkp[0].
                                                                                               493 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
The following table shows the expansion of chpxfkp[0], which specifies the character formatting
properties for the first and only text range in the document.
rgfc.rgfc[0]: A value of 0x00000400 specifies the offset in the WordDocument Stream at which the
    first text run in the text range begins. This text run ends at 0x00000406, immediately before the
    start of the next run, and includes the text "Orange".
rgfc.rgfc[1]: A value of 0x00000407 specifies the offset in the WordDocument Stream at which the
    second text run in the text range begins. This text run ends at 0x0000040F, immediately before
    the start of the next run, and includes the text "Underline".
rgfc.rgfc[2]: A value of 0x00000410 specifies the offset in the WordDocument Stream at which the
    third text run in the text range begins. This text run ends at 0x00000410, and is therefore a single
    character, which is a paragraph marker.
rgfc.rgfc[3]: A value of 0x00000411 specifies the offset in the WordDocument Stream immediately
    after the end of the third text run in the text range.
rgb.rgb[0]: A value of 0xFA specifies the offset of the Chpx for the first text run, referred to as
   chpx[0] (see its expansion later). The chpx[0] element is 2 * 0xFA = 0x1F4 bytes from the start
   of chpxfkp[0], or 0x600 + 0x1F4 = 0x7F4 bytes from the start of the Table Stream.
rgb.rgb[1]: A value of 0xF8 specifies the offset of the Chpx for the second text run, referred to as
   chpx[1] (see its expansion later). The chpx[1] element is 2 * 0xF8 = 0x1F0 bytes from the start
   of chpxfkp[0], or 0x600 + 0x1F0 = 0x7F0 bytes from the start of the Table Stream.
rgb.rgb[2]: A value of 0x00 specifies that there are no character properties associated with the third
   text run.
crun: A value of 0x03 specifies the number of runs in this text range. This is equal to the number of
   elements in rgb, and is 1 less than the number of elements in rgfc.
The following table shows the expansion of the chpx[0] element, which specifies the character
property information for the first text run of the text range.
                                                                                               494 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset                 Size          Structure                                   Value
GrpPrl.GrpPrl[0]: The first property that is being applied. See the chpx[0].GrpPrl.GrpPrl[0]
   element that is described later in this document.
GrpPrl.GrpPrl[1]: The second property that is being applied. See the chpx[0].GrpPrl.GrpPrl[1]
   element that is described later in this document. The fact that there are no more bytes left in the
   GrpPrl element after this property is read indicates that there are no more properties.
The chpx[0] element contains some of the properties that apply to the first run of the text range. The
properties that are not contained in chpx[0] take on their respective default values.
The following table shows the expansion of the chpx[0].GrpPrl.GrpPrl[0] element, which is the first
property that is applied to the first text run ("Orange "). It applies a color to the text.
sprm.ispmd: If ispmd is equal to 0x0042 and fSpec is equal to 0x0001, this property has a value of
   sprmCIco.
operand: The property value, which is an RGB color value that is expressed by an Ico structure.
operand.value: A value of 0x07 specifies that the text color will be represented using RGB (0xFF,
   0xFF, 0x00) values.
The following table shows the expansion of the chpx[0].GrpPrl.GrpPrl[1] element, which is the
second property that is applied to the first text run ("Orange"). It also applies a color to the text.
Because this property occurs after the occurrence of sprmCIco, the color it specifies takes precedence.
                                                                                              495 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset              Size         Structure                                       Value
sprm.ispmd: If ispmd is equal to 0x0070 and fSpec is equal to 0x0000, the value of this property is
   sprmCCv.
operand: The property value, which is an RGB color value that is expressed by a COLORREF.
operand.red: A value of 0xFF specifies the red component of the RGB value.
operand.green: A value of 0x99 specifies the green component of the RGB value.
operand.blue: A value of 0x00 specifies the blue component of the RGB value.
operand.fAuto: A value of 0x00 specifies that the RGB value will be used as specified.
The following table shows the expansion of the chpx[1] element, which specifies the character
property information for the second text run of the text range ("Underline").
GrpPrl.GrpPrl[0]: The first and only property that is being applied. See the
   chpx[1].GrpPrl.GrpPrl[0] element in the following table.
                                                                                            496 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
The chpx[1] element contains only some of the properties that apply to the second run of the text
range. The properties that are not contained in the chpx[1] element take on their respective default
values.
The following table shows the expansion of the chpx[1].GrpPrl.GrpPrl[0] value, which is the first
and only property that is applied to the second text run.
sprm.ispmd: If ispmd is equal to 0x003E and fSpec is equal to 0x0001, the value of this property is
   sprmCKul.
operand: A value of 0x01 specifies that the text has a single underline.
The following is an example of a PlcBtePapx. This example demonstrates how to apply paragraph
properties to text in a document. See section 2.4.6.1, Direct Paragraph Formatting.
The FibRgFcLcb97 structure is very large. Most fields are omitted for reasons of brevity.
fcPlcfBtePapx: A value of 0x0000010E specifies the offset, in bytes, of a location in the Table
    Stream. A PlcBtePapx structure begins at this offset.
lcbPlcfBtePapx: A value of 0x0000000C specifies the size, in bytes, of the PlcBtePapx at offset
    0x0000010E in the Table Stream. Because each PnFkpPapx structure is 4 bytes, this
    PlcBtePapx structure contains exactly two CPs and one PnFkpPapx.
The following table shows the top level of the PlcBtePapx structure at offset 0x0000010E in the Table
Stream.
                                                                                              497 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset               Size           Structure                                 Value
fc[0]: A value of 0x00000400 specifies the offset in the WordDocument Stream at which a text range
    begins. The fact that there are only two FCs indicates that this is the first and only text range that
    is specified.
fc[1]: A value of 0x0000040B specifies the offset in the WordDocument Stream immediately after the
    end of the text range. Because the text is 8-bit ANSI (see Section 2.4.1, Retrieving Text), the end
    of the text range is 0x40A. If this document had more than one text range, 0x0000040B would
    also specify the start of the next text range.
pn[0].pn: A value of 0x00000004 specifies the offset in the WordDocument Stream of the PapxFkp
   structure that is applied to any paragraph in the document which ends within the text range. This
   PapxFkp element is referred to as papxfkp[0]. The papxfkp[0] element begins at offset 4 *
   512 = 2048 = 0x00000800. See the following table for the expansion of the papxfkp[0] element.
The following table shows the expansion of the papxfkp[0] element, which specifies the paragraph
formatting properties for all paragraphs ending in the first and only text range in the document. In this
example all paragraphs in the document start and end within this text range.
                                                                                                 498 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Figure 32: Expansion of papxfkp[0]
rgfc.rgfc[0]: A value of 0x00000400 specifies the offset in the WordDocument Stream at which the
    first paragraph in the text range begins. This paragraph ends at offset 0x00000404, and spans the
    text "Test" followed by a newline character.
rgfc.rgfc[1]: A value of 0x00000405 specifies the offset in the WordDocument Stream at which the
    second paragraph in the text range begins. This paragraph ends at 0x00000409, immediately
    before the start of the next paragraph, and includes the text "Test" followed by a newline
    character.
rgfc.rgfc[2]: A value of 0x0000040A specifies the offset in the WordDocument Stream at which the
    third paragraph in the text range begins. This paragraph ends at 0x0000040A, and is therefore a
    single character, which is a newline character.
rgfc.rgfc[3]: A value of 0x0000040B specifies the offset in the WordDocument Stream immediately
    after where the third paragraph in the text range ends.
rgbx.rgbx[0].bOffset: A value of 0xFA specifies the offset of the PapxInFkp structure for the first
   paragraph, referred to as papxinfkp[0] (see the following table for its expansion). The
   papxinfkp[0] element is 2 * 0xFA = 0x1F4 bytes from the start of the papxfkp[0] element, or
   0x800 + 0x1F4 = 0x9F4 bytes from the start of the Table Stream.
rgbx.rgbx[1].bOffset: A value of 0xF6 specifies the offset of the PapxInFkp for the second
   paragraph, referred to as papxinfkp[1] (see its expansion later). The papxinfkp[1] element is 2
   * 0xF6 = 0x1EC bytes from the start of the papxfkp[1] element, or 0x800 + 0x1EC = 0x9EC
   bytes from the start of the Table Stream.
rgbx.rgbx[2].bOffset: A value of 0xF4 specifies the offset of the PapxInFkp for the first paragraph,
   referred to as papxinfkp[2] (see the following expansion of this element). The papxinfkp[2]
   element is 2 * 0xF4 = 0x1E8 bytes from the start of the papxfkp[2] element, or 0x800 + 0x1E8
   = 0x9E8 bytes from the start of the Table Stream.
cpara: A value of 0x03 specifies the number of paragraphs in this text range. This is equal to the
   number of elements in papxfkp[0].rgbx, and 1 less than the number of elements in
   papxfkp[0].rgfc.
The following table shows the expansion of the papxinfkp[0] element, which specifies the paragraph
property information for the first paragraph of the text range.
                                                                                              499 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
cb: A value of 0x00 specifies that size of GrpPrl is determined by cb'.
GrpPrl.istd: A value of 0x0000 specifies that the Normal style will be applied to this paragraph. See
   Section 2.4.6.5, Determining Properties of a Style.
GrpPrl.GrpPrl[0]: The first property that is being applied. See the papxinfkp[0].GrpPrl.GrpPrl[0]
   element in the following table.
The papxinfkp[0] element contains only some of the properties that apply to the first paragraph of
the text range. The properties that are not contained in the papxinfkp[0] element take on their
respective default values.
The following table shows the expansion of the papxinfkp[0].GrpPrl.GrpPrl[0] element, which is
the first property that is applied to the first paragraph ("Test" followed by a newline character). This
element specifies that the paragraph will be center-justified.
sprm.ispmd: If ispmd is equal to 0x0003 and fSpec is equal to 0x0000, this property is sprmPJc80.
operand: The property value, which is an unsigned integer specifying the paragraph justification. A
value of 0x1 specifies that the paragraph will be center-justified.
The following table shows the expansion of papxinfkp[0].GrpPrl.GrpPrl[1], which is the second
property that is applied to the first paragraph ("Test" followed by a newline character). This value
specifies that the paragraph will be center-justified. Because this property occurs after the occurrence
of sprmPJc80, the justification that it specifies takes precedence. In this case they both specify center
justification, so the paragraph justification is unchanged.
                                                                                                 500 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset             Size         Structure                                           Value
sprm.ispmd: If ispmd is equal to 0x0061 and fSpec is equal to 0x0000, this property is sprmPJc.
sprm.sgc: A value of 0x1 specifies that this is a paragraph property, which is appropriate because
   fcPlcfBtePapx specifies paragraph properties.
operand: The property value, which is an unsigned integer that specifies the paragraph justification.
   A value of 0x01 specifies that the paragraph will be center-justified.
The following table shows the expansion of the papxinfkp[1] element, which specifies the paragraph
property information for the second paragraph of the text range.
cb: A value of 0x00 specifies that the size of GrpPrl is determined by cb'.
GrpPrl.istd: A value of 0x0000 specifies that the Normal style will be applied to this paragraph. See
   section 2.4.6.5, Determining Properties of a Style.
GrpPrl.GrpPrl[0]: The first and only property that is being applied. See
   papxinfkp[1].GrpPrl.GrpPrl[0] in the following table.
papxinfkp[1] contains only some of the properties that apply to the second paragraph of the text
range. The properties that are not contained in papxinfkp[1] take on their respective default values.
The following table shows the expansion of the papxinfkp[1].GrpPrl.GrpPrl[0] element, which is
the first property that is applied to the second paragraph ("Test" followed by a newline character). It
specifies that there are 0x0168 twips of vertical space before this paragraph.
                                                                                                501 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset           Size         Structure                                            Value
sprm.ispmd: If ispmd is equal to 0x0013 and fSpec is equal to 0x0000, this property is
   sprmPDyaBefore.
sprm.sgc: A value of 0x1 specifies that this is a paragraph property, which is appropriate because
   fcPlcfBtePapx specifies paragraph properties.
operand: The property value, which is an unsigned integer that specifies the number of twips of
   vertical space before this paragraph. A value of 0x0168 specifies there should be 0x0168 twips of
   vertical space before this paragraph.
The following table shows the expansion of papxinfkp[2], which specifies the paragraph property
information for the third paragraph of the text range.
cb: A value of 0x00 specifies that the size of GrpPrl is determined by cb'.
cb': A value of 0x01 specifies that there are 2 * 1 = 2 bytes in GrpPrl. The GrpPrl.istd element
    takes up two bytes; this means that GrpPrl has no Prl elements.
GrpPrl.istd: A value of 0x0000 specifies that the Normal style will be applied to this paragraph. See
   section 2.4.6.5, Determining Properties of a Style.
Because papxinfkp[2] contains no properties, all properties for the third paragraph of the text range
take on their respective default values.
This example assumes that the application has found a table terminating paragraph mark by following
the algorithm in section 2.4.5, Determining Row Boundaries, or through some other means such as
sequentially retrieving characters. The application has located the direct paragraph formatting for this
paragraph mark by using the algorithm in section 2.4.6.1, Direct Paragraph Formatting. The following
table shows the first Prl ( section 2.2.5.2) of the direct formatting.
                                                                                               502 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset               Size          Structure                             Value
sprm.ispmd: If this value is 0x06B and fSpec is set to 0x0, this is sprmPTableProps.
operand: A value of 0x00000000 specifies the byte offset in the Data Stream where a PrcData
   begins.
This example assumes that the application can process sprmPTableProps. It therefore ignores the rest
of the array of Prl that contains the sprmPTableProps and instead processes the PrcData at offset
zero of the Data Stream.
The following table shows the PrcData at offset zero of the Data Stream.
cbGrpprl: A value of 0x004A specifies the size, in bytes, of GrpPrl. Because Prl elements are
   variably sized, this does not give any information about the number of Prl elements that are
   contained in GrpPrl other than the fact that there is at least one Prl element.
The following table shows the first Prl element that is contained in GrpPrl.
sprm.ispmd: If this value is 0x016 and fSpec is set to 0x0, this is sprmPFInTable.
                                                                                            503 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
operand: A value of 0x01 specifies that this paragraph is in a table.
The GrpPrl[0] element is 3 bytes in size, leaving 0x47 bytes for the rest of GrpPrl.
The following table shows the second Prl that is contained in GrpPrl.
sprm.ispmd: If this value is 0x017 and fSpec is equal to 0x0, this is sprmPFTtp.
sprm.sgc: A value of 0x1 specifies that this Sprm modifies a paragraph property.
operand: A value of 0x01 specifies that the paragraph mark is a table terminating paragraph mark.
   SprmPFTtp is only valid at table a table depth of 1. Nested tables use sprmPFInnerTtp.
The GrpPrl[1] element is 3 bytes in size, leaving 0x44 bytes for the rest of the GrpPrl element.
sprm.ispmd: If this value is 0x049 and fSpec is set to 0x1, this is sprmPItap.
operand: A value of 0x00000001 specifies that the table depth of this table row is 1. This table is not
   nested in another table.
The GrpPrl[2] element is 6 bytes in size, leaving 0x3E bytes for the rest of GrpPrl.
                                                                                               504 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset                Size           Structure                                  Value
sprm.ispmd: If this value is 0x001 and fSpec is set to 0x1, this is sprmTDxaLeft.
operand: A value of 0x0000 specifies that the horizontal origin of the table is the logical left margin.
   This is further modified in GrpPrl[10].
The GrpPrl[3] element is 4 bytes in size, leaving 0x3A bytes for the rest of the GrpPrl element.
sprm.ispmd: If this value is 0x021 and fSpec is set to 0x1, this is sprmTInsert.
operand.itcFirst: A value of 0x00 specifies the zero-based index of the first cell definition to be
   inserted. Because no cells are defined, 0x00 is the only valid value for itcFirst.
operand.ctc: A value of 0x02 specifies the number of cell definitions to insert. This row has two cells.
operand.dxaCol: A value of 0x0168 specifies that each of the newly inserted cells is 0x0168 twips
   wide.
The GrpPrl[4] element is 6 bytes in size, leaving 0x34 for the rest of the GrpPrl element.
                                                                                                505 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
The following table shows the sixth Prl in the GrpPrl element.
sprm.ispmd: If this value is 0x035 and fSpec is set to 0x1, this is sprmTCellWidth.
sprm.spra: A value of 0x6 specifies that the first byte of operand specifies the size of the rest of
   operand.
operand.cb: A value of 0x05 specifies that operand is 5 bytes in size, not including operand.cb.
operand.itc.itcFirst: A value of 0x0000 specifies the first zero-based index of the first cell to which
   FtsWWidth applies.
operand.itc.itcLim: A value of 0x0001 specifies the zero-based index of the first cell outside the
   range of cells to which FtsWWidth applies. FtsWWidth thus only applies to the first cell in the
   row.
operand.FtsWWidth.wWidth: A value of 0x114C specifies the preferred width of the first cell of the
   row, in twips.
The GrpPrl[5] element is 8 bytes in size, leaving 0x2C bytes for the rest of GrpPrl.
                                                                                                506 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset           Size        Structure                                              Value
sprm.ispmd: If this value is 0x035 and fSpec is set to 0x0001, this is sprmTCellWidth.
sprm.spra: A value of 0x6 specifies that the first byte of operand specifies the size of the rest of
   operand.
operand.cb: A value of 0x05 specifies that operand is 5 bytes in size, not including operand.cb.
operand.itc.itcFirst: A value of 0x0001 specifies the first zero-based index of the first cell to which
   FtsWWidth applies.
operand.itc.itcLim: A value of 0x0002 specifies the zero-based index of the first cell outside the
   range of cells to which FtsWWidth applies. This means that the FtsWWidth value applies only to
   the second cell in the row.
operand.FtsWWidth.wWidth: A value of 0x114C specifies the preferred width of the second cell of
   the row, in twips.
The GrpPrl[6] element is 8 bytes in size, leaving 0x24 for the rest of the GrpPrl element.
The following table shows the eighth Prl in the GrpPrl element.
                                                                                                507 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Figure 48: The eighth Prl in GrpPrl
sprm.ispmd: If this value is 0x023 and fSpec is set to 0x1, this is sprmTDxaCol.
operand.itc.itcFirst: A value of 0x0000 specifies the first zero-based index of the first cell to which
   dxaCol applies.
operand.itc.itcLim: A value of 0x0002 specifies the zero-based index of the first cell outside the
   range of cells to which dxaCol applies. This means that the DxaCol value applies to both cells in
   the row.
operand.dxaCol: A value of 0x114C specifies the width of each cell, in twips. This value overrides the
   widths that are specified in the GrpPrl[4] element.
The GrpPrl[7] element is 6 bytes in size, leaving 0x1E bytes for the rest of GrpPrl.
The following table shows the ninth Prl in the GrpPrl element.
sprm.ispmd: If this value is 0x03A and fSpec is set to 0x1, this is sprmTIstd.
operand: A value of 0x000F specifies the istd of this table. To find the properties that are specified
   by this style, an application would implement the algorithm from section 2.4.6.5, Determining
   Properties of a Style. This is outside the scope of this example.
The GrpPrl[8] element is 4 bytes in size, leaving 0x1A bytes for the rest of GrpPrl.
                                                                                                508 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset                   Size           Structure                              Value
sprm.ispmd: If this value is 0x002 and fSpec is set to 0x0001, this is sprmTDxaGapHalf.
operand: A value of 0x006C specifies the distance, in twips, from the logical left margin to the logical
   left origin of this row.
The GrpPrl[9] element is 4 bytes in size, leaving 0x16 bytes for the rest of GrpPrl.
sprm.ispmd: If this value is 0x0A and fSpec is set to 0x0, this is sprmTTlp.
                                                                                               509 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
operand.itl: A value of 0x0000 specifies that either a table autoformat has not been applied to this
   table or that the last time that a table autoformat was applied to this table, all border, shading,
   font, and best fit formats were reset to the default values. The user could have applied other
   properties since the last table autoformat.
operand.grfatl.fatlBorders: A value of 0x0 specifies that either a table autoformat has not been
   applied to this table or that borders were not applied as part of the last table autoformat.
operand.grfatl.fatlShading: A value of 0x0 specifies that either a table autoformat has never been
   applied to this table or that shading was not applied as part of the last table autoformat.
operand.grfatl.fatlFont: A value of 0x0 specifies that either a table autoformat has not been applied
   to this table or that a font was not applied as part of the last table autoformat.
operand.grfatl.fatlColor: A value of 0x0 specifies that either a table autoformat has not been
   applied to this table, or that the monochrome variant of the last table autoformat was used, or
   that the last table autoformat did not have separate color and monochrome variant.
operand.grfatl.fatlBestFit: A value of 0x0 specifies that either a table autoformat has not been
   applied to this table or that the table columns were not resized to fit their contents as part of the
   last table autoformat.
operand.grfatl.fatlHdrRows: A value of 0x1 specifies that the first row of this table receives special
   formatting if the table style specifies special formatting for them. Special formatting is specified by
   any or all of sprmCCnf, sprmPCnf, and sprmTCnf in the style definition.
operand.grfatl.fatlLastRow: A value of 0x1 specifies that the last row of this table receives special
   formatting if the table style specifies special formatting for them. Special formatting is specified by
   any or all of sprmCCnf, sprmPCnf, and sprmTCnf in the style definition.
operand.grfatl.fatlHdrCols: A value of 0x1 specifies that the logical left column of this table receives
   special formatting if the table style specifies special formatting for them. Special formatting is
   specified by any or all of sprmCCnf, sprmPCnf, and sprmTCnf in the style definition.
operand.grfatl.fatlLastCol: A value of 0x1 specifies that the logical right column of this table
   receives special formatting if the table style specifies special formatting for them. Special
   formatting is specified by any or all of sprmCCnf, sprmPCnf, and sprmTCnf in the style definition.
operand.grfatl.fatlNoRowBands: 0x0 specifies that the rows in odd-numbered row bands receive
   special formatting if the table style specifies special formatting for them. Special formatting is
   specified by any or all of sprmCCnf, sprmPCnf, and sprmTCnf in the style definition. The number of
   rows in a row band is specified by sprmTCHorzBands in the style definition.
operand.grfatl.fatlNoColBands: 0x0 specifies that the rows in odd-numbered column bands receive
   special formatting if the table style specifies special formatting for them. Special formatting is
   specified by any or all of sprmCCnf, sprmPCnf, and sprmTCnf in the style definition. The number of
   columns in a column band is specified by sprmTCVertBands in the style definition.
The GrpPrl[10] element is 6 bytes in size, leaving 0x10 bytes for the rest of GrpPrl.
                                                                                                 510 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset              Size               Structure                                  Value
sprm.ispmd: If this value is 0x014 and fSpec is set to 0x01, this is sprmTTableWidth.
operand.ftsWidth: A value of 0x01 specifies that the table has no preferred width.
The GrpPrl[11] element is 5 bytes in size, leaving 0x0B for the rest of GrpPrl.
sprm.ispmd: A value of 0x015 and fSpec 0x1 specifies that this is sprmTFAutoFit.
operand: A value of 0x01 specifies that the columns are to be resized to fit the contents.
The GrpPrl[12] element is 3 bytes in size, leaving 0x08 for the rest of GrpPrl.
                                                                                             511 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset           Size        Structure                                              Value
sprm.ispmd: If this value is 0x035 and fSpec is set to 0x1, this is sprmTCellWidth.
sprm.spra: A value of 0x6 specifies that the first byte of operand specifies the size of the rest of
   operand.
operand.cb: A value of 0x05 specifies the size of operand, not including operand.cb.
operand.itc.itcFirst: A value of 0x0000 specifies the first zero-based index of the first cell to which
   FtsWWidth applies.
operand.itc.itcLim: A value of 0x0002 specifies the zero-based index of the first cell outside the
   range of cells to which FtsWWidth applies. This means that the FtsWWidth value applies to both
   cells in the row.
operand.FtsWWidth.wWidth: A value of 0x114C specifies the preferred width of each cell, in twips.
   This value overrides the widths that are specified in GrpPrl[5] and GrpPrl[6].
The GrpPrl[13] element is 8 bytes in size, consuming all remaining space in GrpPrl.
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.
                                                                                                512 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
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.
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.
rgLstf: An array that contains the LSTF that is stored in the document.
The following table shows the expansion of rgLstf.lstf[0] in the PlfLst at offset 0x00000536 in the
Table Stream.
                                                                                                513 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Offset            Size        Structure                                       Value
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.
fAutoNum: A value of 0x0 specifies that this list is not used by any field.
fHybrid: A value of 0x0 specifies that this list is not a hybrid list.
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.
                                                                                                 514 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
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].
lvlf.iStartAt: A value of 0x00000001 specifies that the number sequence of this level starts at 1.
                                                                                                 515 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
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.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.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.".
                                                                                                     516 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
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].
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.
                                                                                                 517 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
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.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.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)".
                                                                                                   518 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
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].
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.
                                                                                                 519 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lvlf.fConverted: A value of 0x0 specifies that lvlf.nfc was not converted from an old value used for
     compatibility purposes.
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.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.
                                                                                                  520 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
lfoMac: A value of 0x00000001 specifies that rgLfo and rgLfoData each have one element.
The following table shows the expansion of rgLfo.lfo[0] in the PlfLfo at offset 0x000007E1 in the
Table Stream.
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.
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.
                                                                                              521 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
4     Security Considerations
When XOR obfuscation (section 2.2.6.1) is used, data can be easily extracted and the document
password might be retrievable.
When obfuscation or encryption is used, the ObjectPool storage, Macros storage, Custom XML Data
storage, XML Signatures storage, and Signatures stream are not obfuscated or encrypted.
When XOR obfuscation (section 2.2.6.1) or Office binary document RC4 encryption (section 2.2.6.2) is
used or when Office binary document RC4 CryptoAPI encryption (section 2.2.6.3) is used with
fDocProps set to false in EncryptionHeader.Flags, the Document Summary Information stream
and the Summary Information stream are not obfuscated or encrypted.
When Office binary document RC4 encryption (section 2.2.6.2) or Office binary document RC4
CryptoAPI encryption (section 2.2.6.3) is used, the same block numbers are reused in the
WordDocument stream, the Table stream, and the entire Data stream. This reuse can occur potentially
with known cleartext, implying that certain portions of encrypted data can be directly extracted or
easily retrieved.
See [MS-OFFCRYPTO] section 4.1.3 for additional security considerations with encryption and
obfuscation in Word binary files.
The write-reservation password is embedded in cleartext in the file. Be aware that protection with
a write reservation password is not considered a security mechanism. The protection can be easily
removed by using a binary editor. Protection with a write-reservation password is meant to protect
against accidental modification only.
                                                                                              522 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
5    Appendix A: Product Behavior
The information in this specification is applicable to the following Microsoft products or supplemental
software. References to product versions include updates to those products.
§ Microsoft Word 97
Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base
(KB) number appears with a product name, the behavior changed in that update. The new behavior
also applies to subsequent updates unless otherwise specified. If a product edition appears with the
product version, behavior is different in that product edition.
Unless otherwise specified, any statement of optional behavior in this specification that is prescribed
using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the
SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the
product does not follow the prescription.
<1> Section 1.5: This persistence format provides interoperability with applications that create or
read documents conforming to this structure, including Word 97, Word 2000, Word 2002, and Office
Word 2003. This persistence format can also be used for interoperability with Office Word 2007, Word
2010, and Word 2013 when compatibility with Word 97, Word 2000, Word 2002, and Office Word
2003 is a primary concern.
<2> Section 2.1.4.3: Word 97 and Word 2000 do not generate this stream when saving files and
ignore it when loading files. Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word
2013 read this stream when loading files and generate it when saving files if the object supports a
separate print presentation and provides that presentation in Enhanced Metafile format.
<3> Section 2.1.10: Office Word 2007, Word 2010, and Word 2013 read this storage. Word 97, Word
2000, Word 2002, and Office Word 2003 ignore it.
<4> Section 2.1.11: Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013
read this stream. Word 97 and Word 2000 ignore it.
<5> Section 2.1.12: Office Word 2003, Office Word 2007, Word 2010, and Word 2013 read streams
and storages from inside the Protected Content Stream. Word 97, Word 2000, and Word 2002 ignore
the Information Rights Management Data Space Storage and the Protected Content Stream.
<6> Section 2.1.12: Office Word 2003, Office Word 2007, Word 2010, and Word 2013 ignore streams
and storages which instead are read from inside the Protected Content Stream. Word 97, Word 2000,
and Word 2002 ignore the Protected Content Stream and read storages and streams located outside
the Protected Content Stream.
                                                                                                523 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<7> Section 2.2.5: The following table lists the ranges of Sprm.ispmd that each version of Microsoft
Word processes. All versions of Microsoft Word skip Prls that they cannot process.
                                                                                           524 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Version            Sprm.sgc        Range of Sprm.ispmd processed
<8> Section 2.2.6: Word 97 and Word 2000 cannot open files which are password protected with
Office binary document RC4 CryptoAPI encryption.
<9> Section 2.2.6.3: Neither Word 97 nor Word 2000 support this encryption method.
<10> Section 2.4.3: Word 97 and Word 2000 require that each row have sprmTDefTable applied.
These versions do not process sprmPTableProps. Word 2002, Office Word 2003, Office Word 2007,
Word 2010, and Word 2013 require sprmTDefTable or sprmTInsert. These versions do process
sprmPTableProps.
A sprmTDefTable applied to a TTP mark overrides any formatting inherited from the table style. Word
97 and Word 2000 do not have a table style feature. For this reason, Word 2002, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 only emit sprmTDefTable for versions that do not
process sprmPTableProps.
If an application does not emit sprmTDefTable for the benefit of readers that do not process
sprmPTableProps, the documents that are generated by that application are not compatible with Word
97 or Word 2000.
<11> Section 2.4.6: Word 97 and Word 2000 do not support table styles, and thus ignore sprmTIstd,
among others. sprmPTableProps can be used to separate Prls intended for Word 97 and Word 2000
from those intended for all other versions, as specified in section 2.4.3, Overview of Tables.
<12> Section 2.5.2: A special empty document is installed with Word 97, Word 2000, Word 2002,
and Office Word 2003 to allow "Create New Word Document" from the operating system. This
document has an nFib of 0x00C0. In addition the BiDi build of Word 97 differentiates its documents by
saving 0x00C2 as the nFib. In both cases treat them as if they were 0x00C1.
<13> Section 2.5.2: Picture watermarks could be present in the document even if fHasPic is 0.
<14> Section 2.5.2: The nFibBack field is treated as if it is set to 0x00BF when a locale-specific
version of Word 97 sets it to 0x00C1.
<15> Section 2.5.2: Word 97, Word 2000, Word 2002, and Office Word 2003 install a minimal .doc
file for use with the New- Microsoft Word Document of the shell. This minimal .doc file has
fEmptySpecial set to 1.
<16> Section 2.5.2: Word uses this flag to identify a document that was created by using the New –
Microsoft Word Document of the operating system shell.
<17> Section 2.5.3: Word 97 and Word 2000 sometimes put a value here when performing an
incremental save (FibBase.fComplex).
<18> Section 2.5.3: Word 97 and Word 2000 sometimes put a value here when performing an
incremental save (FibBase.fComplex).
<19> Section 2.5.3: Word 97 and Word 2000 sometimes put a value here when performing an
incremental save (FibBase.fComplex).
<20> Section 2.5.3: Word 97 and Word 2000 will sometimes put a value here when performing an
incremental save (FibBase.fComplex).
<21> Section 2.5.3: Word 97 and Word 2000 will sometimes put a value here when performing an
incremental save (FibBase.fComplex).
                                                                                              525 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<22> Section 2.5.3: Word 97 and Word 2000 will sometimes put a value here when performing an
incremental save (FibBase.fComplex).
<23> Section 2.5.3: Word 97 and Word 2000 will sometimes put a value here when performing an
incremental save (FibBase.fComplex).
<24> Section 2.5.3: Word 97 and Word 2000 will sometimes put a value here when performing an
incremental save (FibBase.fComplex).
<25> Section 2.5.3: Word 97 and Word 2000 will sometimes put a value here when performing an
incremental save (FibBase.fComplex).
<26> Section 2.5.4: Word 97, Word 2000, Word 2002, and Office Word 2003 write a nonzero value
here when saving a document template with changes that require the saving of an AutoText
document.
<27> Section 2.5.6: Word 97, Word 2000, and Word 2002 emit this information when performing an
incremental save. Office Word 2003, Office Word 2007, Word 2010, and Word 2013 do not emit this
information.
<28> Section 2.5.6: Word 97 reads this information if FibBase.nFib is 193. Word 2000 reads this
information if FibRgCswNew.nFibNew is 217. Word 2002 reads this information if
FibRgCswNew.nFibNew is 257. Office Word 2003, Office Word 2007, Word 2010, and Word 2013
do not read this information.
<29> Section 2.5.6: Office Word 2007, Word 2010, and Word 2013 ignore this data.
<30> Section 2.5.6: Word 97 emits information at offset fcPgdMotherOldOld. Neither Word 2000,
Word 2002, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<31> Section 2.5.6: Word 97 reads this information. Word 2000, Word 2002, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<32> Section 2.5.6: Word 97 emits information at offset fcBkdMotherOldOld. Neither Word 2000,
Word 2002, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<33> Section 2.5.6: Word 97 reads this information. Word 2000, Word 2002, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<34> Section 2.5.6: Word 97 emits information at offset fcPgdFtnOldOld. Neither Word 2000, Word
2002, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<35> Section 2.5.6: Word 97 reads this information. Word 2000, Word 2002, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<36> Section 2.5.6: Word 97 emits information at offset fcBkdFtnOldOld. Neither Word 2000, Word
2002, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<37> Section 2.5.6: Word 97 reads this information. Word 2000, Word 2002, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<38> Section 2.5.6: Word 97 emits information at offset fcPgdEdnOldOld. Neither Word 2000,
Word 2002, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<39> Section 2.5.6: Word 97 reads this information. Word 2000, Word 2002, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<40> Section 2.5.6: Word 97 emits information at offset fcBkdEdnOldOld. Neither Word 2000,
Word 2002, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
                                                                                         526 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<42> Section 2.5.6: fcRouteSlip is only saved and read by Word 97, Word 2000, Word 2002, and
Office Word 2003.
<43> Section 2.5.6: SttbSavedBy is only saved and read by Word 97 and Word 2000.
<44> Section 2.5.6: SttbSavedBy is only saved and read by Word 97 and Word 2000.
<45> Section 2.5.6: Word 97 and Word 2000 write this information when the user chooses to save
versions in the document. Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word
2013 do not write this information.
<46> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 read this information.
Office Word 2007, Word 2010, and Word 2013 ignore it.
<47> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 write this information
when the user chooses to save versions in the document. Neither Office Word 2007, Word 2010, nor
Word 2013 write this information.
<48> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 read this information.
Office Word 2007, Word 2010, and Word 2013 ignore it.
<49> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 write this information
when the user chooses to save versions in the document. Neither Office Word 2007, Word 2010, nor
Word 2013 write this information.
<50> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 read this information.
Office Word 2007, Word 2010, and Word 2013 ignore it.
<51> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 write this information
when the user chooses to save versions in the document. Neither Office Word 2007, Word 2010, nor
Word 2013 write this information.
<52> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 read this information.
Office Word 2007, Word 2010, and Word 2013 ignore it.
<53> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 write this information
when the user chooses to save versions in the document. Neither Office Word 2007, Word 2010, nor
Word 2013 write this information.
<54> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 read this information.
Office Word 2007, Word 2010, and wd15 ignore it.
<55> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 write this information
when the user chooses to save versions in the document. Neither Office Word 2007, Word 2010, nor
Word 2013 write this information.
<56> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 read this information.
Office Word 2007, Word 2010, and Word 2013 ignore it.
<57> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 write this information.
Neither Office Word 2007, Word 2010, nor Word 2013 write this information.
<58> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 read this information.
Office Word 2007, Word 2010, and Word 2013 ignore it.
<59> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 write the size of the
deprecated numbering field cache at offset fcPlcfBteLvc in the Table Stream. Office Word 2007, Word
2010, and Word 2013 write zero.
<60> Section 2.5.6: Word 97 emits information at offset fcPlcfLvcPre10 when performing an
incremental save. Word 2000 emits information at offset fcPlcfLvcPre10 on every save. Neither
                                                                                          527 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Word 2002, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit information at
offset fcPlcfLvcPre10 and the value of fcPlcfLvcPre10 is undefined.
<61> Section 2.5.6: Word 97 and Word 2000 read this information. Word 2002, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore it.
<62> Section 2.5.6: Word 97 and Word 2000 write lcbPlcfLvcPre10 with the size, in bytes, of the
information emitted at offset fcPlcfLvcPre10. Word 2002, Office Word 2003, Office Word 2007, Word
2010, and Word 2013 write 0 to lcbPlcfLvcPre10.
<63> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 write this information
when the user chooses to save versions in the document. Neither Office Word 2007, Word 2010, nor
Word 2013 write this information.
<64> Section 2.5.6: Word 97, Word 2000, Word 2002, and Office Word 2003 read this information.
Office Word 2007, Word 2010, and Word 2013 ignore it.
<65> Section 2.5.7: Office Word 2007, Word 2010, and Word 2013 ignore this information. Word
2000, Word 2002, and Office Word 2003 read this information, however the information is an optional,
deprecated cache that can be calculated by reading the document content.
<66> Section 2.5.7: Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013
ignore this value.
<67> Section 2.5.7: Word 2000 and Word 2002 emit information at offset fcPgdMotherOld. Neither
Word 97, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<68> Section 2.5.7: Word 2000 and Word 2002 read this information. Word 97, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<69> Section 2.5.7: Word 2000 and Word 2002 emit information at offset fcBkdMotherOld. Neither
Word 97, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<70> Section 2.5.7: Word 2000 and Word 2002 read this information. Word 97, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<71> Section 2.5.7: Word 2000 and Word 2002 emit information at offset fcPgdFtnOld. Neither
Word 97, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<72> Section 2.5.7: Word 2000 and Word 2002 read this information. Word 97, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<73> Section 2.5.7: Word 2000 and Word 2002 emit information at offset fcBkdFtnOld. Neither
Word 97, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<74> Section 2.5.7: Word 2000 and Word 2002 read this information. Word 97, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<75> Section 2.5.7: Word 2000 and Word 2002 emit information at offset fcPgdEdnOld. Neither
Word 97, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<76> Section 2.5.7: Word 2000 and Word 2002 read this information. Word 97, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<77> Section 2.5.7: Word 2000 and Word 2002 emit information at offset fcBkdEdnOld. Neither
Word 97, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<78> Section 2.5.7: Word 2000 and Word 2002 read this information. Word 97, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<79> Section 2.5.8: Office Word 2007, Word 2010, and Word 2013 ignore this value.
                                                                                           528 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<80> Section 2.5.8: Word 2002 and Office Word 2003 write this information when the user chooses
to save versions in the document. Neither Word 97, Word 2000, Office Word 2007, Word 2010, nor
Word 2013 write this information.
<81> Section 2.5.8: Word 2002 and Office Word 2003 read this information. Word 97, Word 2000,
Office Word 2007, Word 2010, and Word 2013 ignore it.
<82> Section 2.5.8: Word 2002 emits information at offset fcPlcfpmiOldXP. Neither Word 97, Word
2000, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit information at this offset
and the value of fcPlcfpmiOldXP is undefined.
<83> Section 2.5.8: Word 2002 reads this information. Word 97, Word 2000, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore it.
<84> Section 2.5.8: Word 2002 writes lcbPlcfpmiOldXP with the size, in bytes, of the information
emitted at offset fcPlcfpmiOldXP. Office Word 2003, Office Word 2007, Word 2010, and Word 2013
write 0 to lcbPlcfpmiOldXP. Neither Word 97 nor Word 2000 write a FibRgFcLcb2002.
<85> Section 2.5.8: Word 2002 emits information at offset fcPlcfpmiNewXP. Neither Word 97,
Word 2000, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit information at this
offset and the value of fcPlcfpmiNewXP is undefined.
<86> Section 2.5.8: Word 2002 reads this information. Word 97, Word 2000, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore it.
<87> Section 2.5.8: Word 2002 writes lcbPlcfpmiNewXP with the size, in bytes, of the information
emitted at offset fcPlcfpmiNewXP. Office Word 2003, Office Word 2007, Word 2010, and Word 2013
write 0 to lcbPlcfpmiNewXP. Neither Word 97 nor Word 2000 write a FibRgFcLcb2002.
<88> Section 2.5.8: Word 2002 emits information at offset fcPlcfpmiMixedXP. Neither Word 97,
Word 2000, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit information at this
offset and the value of fcPlcfpmiMixedXP is undefined.
<89> Section 2.5.8: Word 2002 reads this information. Word 97, Word 2000, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore it.
<90> Section 2.5.8: Word 2002 writes lcbPlcfpmiMixedXP with the size, in bytes, of the
information emitted at offset fcPlcfpmiMixedXP. Office Word 2003, Office Word 2007, Word 2010,
and Word 2013 write 0 to lcbPlcfpmiMixedXP. Neither Word 97 nor Word 2000 write a
FibRgFcLcb2002.
<91> Section 2.5.8: Word 2002 emits information at offset fcPlcflvcOldXP. Neither Word 97, Word
2000, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit information at this offset
and the value of fcPlcflvcOldXP is undefined.
<92> Section 2.5.8: Word 2002 reads this information. Word 97, Word 2000, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore it.
<93> Section 2.5.8: Word 2002 writes lcbPlcflvcOldXP with the size, in bytes, of the information
emitted at offset fcPlcflvcOldXP. Office Word 2003, Office Word 2007, Word 2010, and Word 2013
write 0 to lcbPlcflvcOldXP. Neither Word 97 nor Word 2000 write a FibRgFcLcb2002.
<94> Section 2.5.8: Word 2002 emits information at offset fcPlcflvcNewXP. Neither Word 97, Word
2000, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit information at this offset
and the value of fcPlcflvcNewXP is undefined.
<95> Section 2.5.8: Word 2002 reads this information. Word 97, Word 2000, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore it.
                                                                                          529 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<96> Section 2.5.8: Word 2002 writes lcbPlcflvcNewXP with the size, in bytes, of the information
emitted at offset fcPlcflvcNewXP. Office Word 2003, Office Word 2007, Word 2010, and Word 2013
write 0 to lcbPlcflvcNewXP. Neither Word 97 nor Word 2000 write a FibRgFcLcb2002.
<97> Section 2.5.8: Word 2002 emits information at offset fcPlcflvcMixedXP. Neither Word 97,
Word 2000, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit information at this
offset and the value of fcPlcflvcMixedXP is undefined.
<98> Section 2.5.8: Word 2002 reads this information. Word 97, Word 2000, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 ignore it.
<99> Section 2.5.8: Word 2002 writes lcbPlcflvcMixedXP with the size, in bytes, of the information
emitted at offset fcPlcflvcMixedXP. Office Word 2003, Office Word 2007, Word 2010, and Word 2013
write 0 to lcbPlcflvcMixedXP. Neither Word 97 nor Word 2000 write a FibRgFcLcb2002.
<100> Section 2.5.9: Only Office Word 2003 emits information at offset fcPlcfpmiOld; Neither
Office Word 2007, Word 2010, nor Word 2013 emit information at this offset and the value of
fcPlcfpmiOld is undefined.
<101> Section 2.5.9: Only Office Word 2003 reads this information.
<102> Section 2.5.9: Office Word 2003 writes lcbPlcfpmiOld with the size, in bytes, of the
information emitted at offset fcPlcfpmiOld; Office Word 2007, Word 2010, and Word 2013 write 0 to
lcbPlcfpmiOld.
<103> Section 2.5.9: Only Office Word 2003 emits information at offset fcPlcfpmiOldInline;
Neither Office Word 2007, Word 2010, nor Word 2013 emit information at this offset and the value of
fcPlcfpmiOldInline is undefined.
<104> Section 2.5.9: Only Office Word 2003 reads this information.
<105> Section 2.5.9: Office Word 2003 writes lcbPlcfpmiOldInline with the size, in bytes, of the
information emitted at offset fcPlcfpmiOldInline; Office Word 2007, Word 2010, and Word 2013
write 0 to lcbPlcfpmiOldInline.
<106> Section 2.5.9: Only Office Word 2003 emits information at offset fcPlcfpmiNew; Neither
Office Word 2007, Word 2010, nor Word 2013 emit information at this offset and the value of
fcPlcfpmiNew is undefined.
<107> Section 2.5.9: Only Office Word 2003 reads this information.
<108> Section 2.5.9: Office Word 2003 writes lcbPlcfpmiNew with the size, in bytes, of the
information emitted at offset fcPlcfpmiNew; Office Word 2007, Word 2010, and Word 2013 write 0
to lcbPlcfpmiNew.
<109> Section 2.5.9: Only Office Word 2003 emits information at offset fcPlcfpmiNewInline;
Neither Office Word 2007, Word 2010, nor Word 2013 emit information at this offset and the value of
fcPlcfpmiNewInline is undefined.
<110> Section 2.5.9: Only Office Word 2003 reads this information.
<111> Section 2.5.9: Office Word 2003 writes lcbPlcfpmiNewInline with the size, in bytes, of the
information emitted at offset fcPlcfpmiNewInline; Office Word 2007, Word 2010, and Word 2013
write 0 to lcbPlcfpmiNewInline.
<112> Section 2.5.9: Only Office Word 2003 emits information at offset fcPlcflvcOld; Neither Office
Word 2007, Word 2010, nor Word 2013 emit information at this offset and the value of fcPlcflvcOld
is undefined.
<113> Section 2.5.9: Only Office Word 2003 reads this information.
                                                                                           530 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<114> Section 2.5.9: Office Word 2003 writes lcbPlcflvcOld with the size, in bytes, of the
information emitted at offset fcPlcflvcOld; Office Word 2007, Word 2010, and Word 2013 write 0 to
lcbPlcflvcOld.
<115> Section 2.5.9: Only Office Word 2003 emits information at offset fcPlcflvcOldInline; Neither
Office Word 2007, Word 2010, nor Word 2013 emit information at this offset and the value of
fcPlcflvcOldInline is undefined.
<116> Section 2.5.9: Only Office Word 2003 reads this information.
<117> Section 2.5.9: Office Word 2003 writes lcbPlcflvcOldInline with the size, in bytes, of the
information emitted at offset fcPlcflvcOldInline; Office Word 2007, Word 2010, and Word 2013 write
0 to lcbPlcflvcOldInline.
<118> Section 2.5.9: Only Office Word 2003 emits information at offset fcPlcflvcNew; Neither
Office Word 2007, Word 2010, nor Word 2013 emit information at this offset and the value of
fcPlcflvcNew is undefined.
<119> Section 2.5.9: Only Office Word 2003 reads this information.
<120> Section 2.5.9: Office Word 2003 writes lcbPlcflvcNew with the size, in bytes, of the
information emitted at offset fcPlcflvcNew; Office Word 2007, Word 2010, and Word 2013 write 0 to
lcbPlcflvcNew.
<121> Section 2.5.9: Only Office Word 2003 emits information at offset fcPlcflvcNewInline;
Neither Office Word 2007, Word 2010, nor Word 2013 emit information at this offset and the value of
fcPlcflvcNewInline is undefined.
<122> Section 2.5.9: Only Office Word 2003 reads this information.
<123> Section 2.5.9: Office Word 2003 writes lcbPlcflvcNewInline with the size, in bytes, of the
information emitted at offset fcPlcflvcNewInline; Office Word 2007, Word 2010, and Word 2013
write 0 to lcbPlcflvcNewInline.
<124> Section 2.5.9: Office Word 2003 emits information at offset fcPgdMother. Neither Word 97,
Word 2000, Office Word 2003, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<125> Section 2.5.9: Office Word 2003 reads this information. Word 97, Word 2000, Word 2002,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<126> Section 2.5.9: Office Word 2003 emits information at offset fcBkdMother. Neither Word 97,
Word 2000, Word 2002, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<127> Section 2.5.9: Office Word 2003 reads this information. Word 97, Word 2000, Word 2002,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<128> Section 2.5.9: Office Word 2003 emits information at offset fcAfdMother. Neither Word 97,
Word 2000, Word 2002, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<129> Section 2.5.9: Office Word 2003 reads this information. Word 97, Word 2000, Word 2002,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<130> Section 2.5.9: Office Word 2003 emits information at offset fcPgdFtn. Neither Word 97, Word
2000, Word 2002, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<131> Section 2.5.9: Office Word 2003 reads this information. Word 97, Word 2000, Word 2002,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<132> Section 2.5.9: Office Word 2003 emits information at offset fcBkdFtn. Neither Word 97, Word
2000, Word 2002, Office Word 2007, Word 2010, nor Word 2013 emit this information.
                                                                                           531 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<133> Section 2.5.9: Office Word 2003 reads this information. Word 97, Word 2000, Word 2002,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<134> Section 2.5.9: Office Word 2003 emits information at offset fcAfdFtn. Neither Word 97, Word
2000, Word 2002, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<135> Section 2.5.9: Office Word 2003 reads this information. Word 97, Word 2000, Word 2002,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<136> Section 2.5.9: Office Word 2003 emits information at offset fcPgdEdn. Neither Word 97,
Word 2000, Word 2002, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<137> Section 2.5.9: Office Word 2003 reads this information. Word 97, Word 2000, Word 2002,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<138> Section 2.5.9: Office Word 2003 emits information at offset fcBkdEdn. Neither Word 97,
Word 2000, Word 2002, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<139> Section 2.5.9: Office Word 2003 reads this information. Word 97, Word 2000, Word 2002,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<140> Section 2.5.9: Office Word 2003 emits information at offset fcAfdEdn. Neither Word 97, Word
2000, Word 2002, Office Word 2007, Word 2010, nor Word 2013 emit this information.
<141> Section 2.5.9: Office Word 2003 reads this information. Word 97, Word 2000, Word 2002,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<142> Section 2.5.9: Office Word 2003 emits information at offset fcAfd. Neither Word 97, Word
2000, Word 2002, Office Word 2007, Word 2010, nor Word 2013 emit information at this offset.
<143> Section 2.5.9: Office Word 2003 reads this information. Word 97, Word 2000, Word 2002,
Office Word 2007, Word 2010, and Word 2013 ignore this information.
<144> Section 2.5.10: Neither Office Word 2007, Word 2010, nor Word 2013 write 0 here, but all
three ignore this value when loading files.
<145> Section 2.5.10: Neither Office Word 2007, Word 2010, nor Word 2013 write 0 here, but all
three ignore this value when loading files.
<146> Section 2.6.1: Office Word 2007, Word 2010, and Word 2013 ignore this property when
running in compatibility mode for previous versions of Word. Word 97, Word 2000, Word 2002, and
Office Word 2003 do not process this Sprm, and thus ignore this property.
<147> Section 2.6.1: When sprmCFSpec is unexpectedly applied to a character that can be displayed,
the character can be displayed in the same manner as a character that is not fSpec. If, on the other
hand, the character cannot be displayed, it can be ignored.
<148> Section 2.6.1: This property is compatible with Word 97, and for that version the default color
for right-to-left text is cvAuto. Later versions do not use this property, and instead the color of all
text is specified by sprmCIco.
<149> Section 2.6.2: Word implements this property by acting as if there is a page break before the
paragraph if it would not otherwise fit on the remainder of the page. If sprmPFKeepFollow is applied to
the preceding paragraph with a value of 1, Word favors keeping this paragraph’s lines together over
keeping this paragraph on the same page as the previous paragraph. If the paragraph is too long to fit
on a full page by itself, Word ignores this property. If the paragraph is in a table, Word ignores this
property.
<150> Section 2.6.2: Word implements this property by acting as if there is a page break before the
paragraph if there would otherwise be a page break between the end of this paragraph and the
                                                                                              532 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
beginning of the next one. If sprmPFKeep is applied to the next paragraph with a value of 1, Word
avoids breaking the next paragraph across pages even if it means ignoring sprmPFKeepFollow.
<151> Section 2.6.3: Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013
ignore this property. Word 2000 and Word 97 do not split table rows across pages when the table
rows set this property to 0x01.
<152> Section 2.6.3: Word 97 stops working if merged cells are split across page break boundaries;
setting this property for merged cells avoids this problem.
<153> Section 2.6.3: Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013
ignore this property.
<154> Section 2.6.3: Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013
evaluate sprmTFCantSplit instead of this property.
<155> Section 2.6.3: Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013
evaluate sprmTFCantSplit instead of this property.
<156> Section 2.6.3: If the cell has a fixed-width, this property is false (0), and content cannot fit on
a single line in the cell, then content will word wrap. If the cell does not have a fixed-width, this
property is false (0), and content cannot fit on a single line in the cell, then the cell can grow to fit the
content; however, if the cell has no more room to grow, then the content will word wrap instead.
<157> Section 2.6.3: If the cell does not have a fixed width and this property is true, the cell will
automatically grow to fit more content, shrinking adjacent cells in the row if necessary so that content
in this cell does not wrap. However, if the cell content is too large to fit in the table, then the content
will be forced to wrap. If multiple cells in the row have this property set and content will not fit on a
single line for any them, widths will be adjusted proportionately according to how much content is in
each cell (the cell with the most content receives the most width).
<158> Section 2.6.4: Word 97, Word 2000, and Word 2002 emit sprmSDxaColumns only when the
space between columns differs from the default.
<160> Section 2.6.4: Word 97, Word 2000, and Word 2002 emit sprmSDyaHdrTop only when the
header’s distance from the top edge of the page differs from the default.
<161> Section 2.6.4: Word 97, Word 2000, and Word 2002 emit sprmSDyaHdrBottom only when the
footer distance from the bottom edge of the page differs from the default.
<162> Section 2.6.4: Word’s user interface allows starting line numbers only up to 32767,
corresponding to a SPRM value of 32766. However, bigger values can be read in (for example from
ECMA-376 files) and subsequently stored into an MS-DOC file.
<163> Section 2.6.4: Office Word 2007, Word 2010, and Word 2013 support larger values.
<164> Section 2.6.4: Word 97, Word 2000, Word 2002, Office Word 2003, Office Word 2007, Word
2010, and Word 2013 ignore this value when there is only one available paper format as defined by
the currently selected printer driver.
<165> Section 2.7.2: With Word 97, Word 2000, Word 2002, and Office Word 2003 it is possible for
the fLockRev value or the fLockAtn value to be set to 1 when fProtEnabled is 1.
<166> Section 2.7.2: With Word 97, Word 2000, Word 2002, and Office Word 2003 it is possible for
the fLockRev value or the fLockAtn value to be set to 1 when fProtEnabled is 1.
<167> Section 2.7.2: Word 97 allows independent viewing and printing of revision markup. This
means that the value of fRMPrint is not always the same as the value of fRMView.
                                                                                                   533 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<168> Section 2.7.2: With Word 97, Word 2000, Word 2002, and Office Word 2003, it is possible for
the fLockRev value or the fLockAtn value to be set to 1 when fProtEnabled is 1.
<169> Section 2.7.2: Word stores either the date and time the document was created or the date
and time when personal information was scrubbed.
<170> Section 2.7.2: Word stores either the date and time the document was printed or 4 bytes of
zeros (0) if personal information was scrubbed or if the document was never printed.
<171> Section 2.7.2: Word will store a 0 here if personal information was scrubbed.
<172> Section 2.7.2: Word will store a 0 here for certain locales and if personal information was
scrubbed. Word does not prevent this value from overflowing if the document was opened for editing
more than 0x7FFFFFFF minutes.
<173> Section 2.7.2: Word sets up the save dialog so that, if it is not altered, it saves a comma-
delimited text file but does not prevent the user from altering the file type in the dialog.
<174> Section 2.7.4: If Office Word 2007, Word 2010, or Word 2013 saved this file as a background
operation, this value is 9.
<175> Section 2.7.4: Word 97 sets this value when it loads files through the Microsoft HTML
converter (html32.cnv).
<176> Section 2.7.4: Word 2000, Word 2002, Office Word 2003, Office Word 2007, Word 2010, and
Word 2013 write 0. Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013
ignore any value on load.
<177> Section 2.7.4: Word 2000, Word 2002, Office Word 2003, Office Word 2007, Word 2010, and
Word 2013 write 0. Word 2002, Office Word 2003, Office Word 2007 , Word 2010, and Word 2013
ignore any value on load.
<178> Section 2.7.4: Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013
neither read nor write this value.
<179> Section 2.7.4: Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013
neither read nor write this value.
<180> Section 2.7.5: All background saves and all saves by Office Word 2007, Word 2010, and Word
2013 result in 0 here.
<181> Section 2.7.5: All background saves and all saves by Office Word 2007, Word 2010, and Word
2013 result in 0 here.
<182> Section 2.7.5: Word does not consistently set this when tentative lists are in the document so
it is best to assume that a 1 was written here.
<183> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<184> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<185> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<186> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<187> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<188> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<189> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<190> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
                                                                                              534 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<191> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<192> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<193> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<194> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<195> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<196> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<197> Section 2.7.13: Only supported in Office Word 2007, Word 2010, and Word 2013.
<198> Section 2.7.14: The Word object model does not validate input and does allow values other
than those listed.
<199> Section 2.7.16: Only Word 97 uses this setting. Word 2000, Word 2002, Office Word 2003,
Office Word 2007, Word 2010, and Word 2013 use iCustomKsu and fJapaneseUseLevel2 instead.
If Word 2000, Word 2002, Office Word 2003, Office Word 2007, Word 2010, or Word 2013 loads a
Word 97 file, it deduces its settings based on iCustomKsu and fJapaneseUseLevel2 if either are
present, or on the contents of rgxchFPunct and rgxchLPunct. Word 2000, Word 2002, Office Word
2003, Office Word 2007, Word 2010, and Word 2013 save only the values 0 and 2 and purely for
backward compatibility. The value of 1 (strict) is instead saved as 2 (custom) with the characters
saved in rgxchFPunct and rgxchLPunct.
<202> Section 2.8.29: Office Word 2007, Word 2010, and Word 2013 ignore this information. Word
2000, Word 2002, and Office Word 2003 read this information.
<203> Section 2.8.29: Office Word 2007, Word 2010, and Word 2013 write the information specified.
Word 2000, Word 2002, and Office Word 2003 write information that depends on the state of the
application’s internal table character cache at the time the document was saved.
<204> Section 2.9.23: Word 97, Word 2000, and Word 2002 emit this information. Office Word 2003
and 2007 emit 0.
<205> Section 2.9.23: Word 97, Word 2000, and Word 2002 read this information. Office Word 2003
and 2007 ignore it.
<206> Section 2.9.24: Word 97, Word 2000, and Word 2002 ignore this data.
<207> Section 2.9.36: Word 97 does not follow this rule when reading a file.
<208> Section 2.9.36: Word 2000 and Word 97 do not follow this rule when reading a file.
<209> Section 2.9.43: Office Word 2007, Word 2010, and Word 2013 write COLORREFs that have
fAuto set to 0xFF but the other members set to nonzero values. They do this when the user chooses a
theme color for the borders of a PGPInfo structure. Because the Word Binary File format does not
support Word 2007’s theme colors, these COLORREF values are undefined and result in inconsistent
behavior across different versions of Word.
<210> Section 2.9.43: Word takes its default color from the window text color of the operating
system. If applied shading would result in text being difficult to read, Word switches to the window
background color of the operating system. Word also changes its default colors to comply with
system-wide accessibility settings.
                                                                                              535 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<211> Section 2.9.48: In Office Word 2003 this structure also contains the toolbar visual
information for when the application is in the Reading Layout view.
<212> Section 2.9.69: Word 97 through Office Word 2003 do not always enable or disable optional
formats based on these flags. Instead, they sometimes use these flags to record which formats were
specified the last time the table was auto-formatted. In such cases, these values are only used as an
aid when re-applying a table auto-format. See the details of each flag for specific version behavior.
<213> Section 2.9.69: Word 97, Word 2000, Word 2002, and Office Word 2003 record the setting
from the last auto-format on the table. Office Word 2007, Word 2010, and Word 2013 ignore the
value.
<214> Section 2.9.69: Word 97, Word 2000, Word 2002, and Office Word 2003 record the setting
from the last auto-format on the table. Office Word 2007, Word 2010, and Word 2013 ignore the
value.
<215> Section 2.9.69: Word 97, Word 2000, Word 2002, and Office Word 2003 record the setting
from the last auto-format on the table. Office Word 2007, Word 2010, and Word 2013 ignore the
value.
<216> Section 2.9.69: Word 97, Word 2000, Word 2002, and Office Word 2003 record the setting
from the last auto-format on the table. Office Word 2007, Word 2010, and Word 2013 ignore the
value.
<217> Section 2.9.69: Word 97, Word 2000, Word 2002, and Office Word 2003 record the setting
from the last auto-format on the table. Office Word 2007, Word 2010, and Word 2013 ignore the
value.
<218> Section 2.9.69: Office Word 2007, Word 2010, and Word 2013 table styles and Word 97,
Word 2000, Word 2002, and Office Word 2003 table auto-formats can have optional formatting for the
top row of a table. In Word 97 and Word 2000, the value only reflects whether the optional formatting
was applied, rather than what the format is now.
<219> Section 2.9.69: Office Word 2007, Word 2010, and Word 2013 table styles and Word 97,
Word 2000, Word 2002, and Office Word 2003 table auto-formats can have optional formatting for the
bottom row of a table. In Word 97 and Word 2000, the value only reflects whether the optional
formatting was applied, rather than what the format is now.
<220> Section 2.9.69: Office Word 2007, Word 2010, and Word 2013 table styles and Word 97,
Word 2000, Word 2002, and Office Word 2003 table auto-formats can have optional formatting for the
logically leftmost column of a table. In Word 97 and Word 2000, the value only reflects whether the
optional formatting was applied, rather than what the format is now.
<221> Section 2.9.69: Office Word 2007, Word 2010, and Word 2013 table styles and Word 97,
Word 2000, Word 2002, and Office Word 2003 table auto-formats can have optional formatting for the
logically rightmost column of a table. In Word 97 and Word 2000, the value only reflects whether the
optional formatting was applied, rather than what the format is now.
<222> Section 2.9.69: Office Word 2007, Word 2010, and Word 2013 table styles and Word 97,
Word 2000, Word 2002, and Office Word 2003 table auto-formats can have optional formatting for the
odd numbered rows of a table. In Word 97 and Office Word 2003, the value only reflects whether the
optional formatting was applied, rather than what the format is now.
<223> Section 2.9.69: Office Word 2007, Word 2010, and Word 2013 table styles and Word 97,
Word 2000, Word 2002, and Office Word 2003 table auto-formats can have optional formatting for the
odd numbered columns of a table. In Word 97 and Office Word 2003, the value only reflects whether
the optional formatting was applied, rather than what the format is now.
<224> Section 2.9.90: Word 2000, Word 2002, Office Word 2003, Office Word 2007, Word 2010, and
Word 2013 do not change the data or header file.
                                                                                              536 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<225> Section 2.9.112: Word 2000, Word 2002, Office Word 2003, Office Word 2007, Word 2010,
and Word 2013 recalculate the appropriate sprmCRgLid0_80 and sprmCRgLid1_80 to apply to each
style if f97LidsSet is 0. Thus it is safe to set this value to 0. Word 97 does not need to apply the
compatibility Sprms.
<226> Section 2.9.121: No version of Word has these additional patterns available through its user
interface. However, all versions of Word have these available through macros.
<227> Section 2.9.147: Word 97, Word 2000, Word 2002, Office Word 2003, Office Word 2007,
Word 2010, and Word 2013 use this Tplc to link a graphical representation of this list format in the
Word List UI to this LSTF.
<228> Section 2.9.158: Word 97, Word 2000, Word 2002, Office Word 2003, Office Word 2007,
Word 2010, and Word 2013 allow the user to directly edit field codes. This can cause the binary data
to mismatch the field type.
<229> Section 2.9.161: Office Word 2003, Office Word 2007, Word 2010, and Word 2013 ignore the
values in the OcxInfo structure but, for backward compatibility, emit values based on the OLE
controls in the document. The values are populated by finding all the control FLDs in the document
and saving the values for the corresponding OLE controls. Previous versions of Word expect that the
values in OcxInfo structures and the values of the controls all match. The description of OcxInfo fields
specifies the values that are written.
<230> Section 2.9.169: Word 2000 and Word 97 use this value to store a reference count of the
shape. Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013 ignore this
value.
<231> Section 2.9.181: Word 2002 occasionally writes a value of -31681. This behavior is
deprecated.
<232> Section 2.9.182: Word 2002, Office Word 2003 and Office Word 2007 ignore the instance of
sprmPChgTabs in this scenario.
<233> Section 2.9.224: Word 2002, Office Word 2003, and Office Word 2007 use all of the columns
of the data source when computing the hash. Word 2010 and Word 2013 ignore the last column when
Microsoft Outlook is the data source.
<234> Section 2.9.230: SttbAuthorAttrib is ignored and not saved by Word 97, Office Word 2007,
Word 2010, and Word 2013. It is ignored but saved if read by Word 2000, Word 2002, and Office
Word 2003.
<235> Section 2.9.230: SttbAuthorValue is ignored and not saved by Word 97, Office Word 2007,
Word 2010, and Word 2013. It is ignored but saved if read by Word 2000, Word 2002, and Office
Word 2003.
<236> Section 2.9.230: SttbMessageAttrib is ignored and not saved by Word 97, Office Word
2007, Word 2010, and Word 2013. It is ignored but saved if read by Word 2000, Word 2002, and
Office Word 2003.
<237> Section 2.9.230: SttbMessageValue is ignored and not saved by Word 97, Office Word
2007, Word 2010, and Word 2013. It is ignored but saved if read by Word 2000, Word 2002, and
Office Word 2003.
<238> Section 2.9.244: Office Word 2007, Word 2010, and Word 2013 write 1 if the selection is a
bullet or number character from a bulleted or numbered list. All versions of Word ignore this bit. Office
Word 2007, Word 2010, and Word 2013 write 0 for fPrefix.
<239> Section 2.9.256: Word 97 uses multiple splf values for grammatical errors.
                                                                                                537 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<240> Section 2.9.260: Word 97, Word 2000, and Word 2002 set this value to 1 when performing an
incremental save and the style has been modified in such a way that it can affect the height of
paragraphs with that style. Office Word 2003, Office Word 2007, Word 2010, and Word 2013 set the
value to 0. If the Plc specified by fcPlcfPhe is not emitted, it is safe to set this value to 0.
<241> Section 2.9.271: Styles that are used in the document are not empty. Styles that are unused
in the document (latent) are allowed to be empty.
<242> Section 2.9.274: The following table lists the value of stiMaxWhenSaved that each version
of Word writes.
Version            stiMaxWhenSaved
Word 97            91
Word 2000          105
Word 2002          156
Office Word 2003   156
Office Word 2007   267
Word 2010          267
Word 2013          267
Specifying a value of 0 is recommended for maximum compatibility, as it will cause all versions of
Word to update the names to whatever set of application defined style names is current, with little
performance penalty.
The following table lists the value of nVerBuiltInNamesWhenSaved that each version of Word
writes.
Version            nVerBuiltInNamesWhenSaved
Word 97            2
Word 2000          3
Word 2002          3
Office Word 2003   4
Office Word 2007   7
Word 2010          7
Word 2013          7
<244> Section 2.9.279: Word 97, Word 2000, Word 2002, Office Word 2003, Office Word 2007,
Word 2010, and Word 2013 do not allow creation of a bookmark whose name violates the constraints
upon valid strings described in this section but if a string violating them is written to file, it will be
handled without error and displayed as expected.
<245> Section 2.9.286: When a new font is applied in a document, Word adds is to the font table if it
is not already there. However, when the user edits a document such that a font is no longer used, the
entry is not removed from the font table. Thus, the font table will accumulate unused font references
over time.
                                                                                                  538 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<247> Section 2.9.289: Word 97 emits 0x0004 for cData.
<248> Section 2.9.297: Word 97 and Word 2000 incorrectly write 26. Regardless, Word 97 and Word
2000 correctly read and write SttbTtmbd.rgTTMBD 10 bytes after the beginning of SttbW6. Word
2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013 write 10.
<249> Section 2.9.298: Word 97, Word 2000, Word 2002, Office Word 2003, Office Word 2007,
Word 2010, Word 2013, and Word 2016 allow a value to be set using the name "Sign" that is not the
VBA digital signature if the document does not contain a VBA project or if the file contains a VBA
project but is unsigned. In the case where a VBA project is present but is not signed, specifying a
value with this name will cause Microsoft Word to view the file as having an invalid signature for the
VBA project on a subsequent load.
<250> Section 2.9.298: Word 97, Word 2000, Word 2002, Office Word 2003, Office Word 2007,
Word 2010, and Word 2013 allow a value to be set using the name "SigAgile" that is not the VBA
digital signature. Word 2016 allows a value to be set using this name that is not the VBA digital
signature if the document does not contain a VBA project or if the file contains a VBA project but is
unsigned. In the case where a VBA project is present but is not signed, specifying a value with this
name will cause Word 2016 to view the file as having an invalid signature for the VBA project on a
subsequent load.
<251> Section 2.9.298: Word 97, Word 2000, Word 2002, Office Word 2003, Office Word 2007,
Word 2010, Word 2013, and Word 2016 allow a value to be set using this name that is not the VBA
digital signature if the document does not contain a VBA project or if the file contains a VBA project
but is unsigned. In the case where a VBA project is present but is not signed, specifying a value with
this name will cause Microsoft Word to view the file as having an invalid signature for the VBA project
on a subsequent load.
<252> Section 2.9.298: Word 97, Word 2000, Word 2002, Office Word 2003, Office Word 2007,
Word 2010, and Word 2013 allow a value to be set using this name that is not the VBA digital
signature. Word 2016 allows a value to be set using this name that is not the VBA digital signature if
the document does not contain a VBA project or if the file contains a VBA project but is unsigned. In
the case where a VBA project is present but is not signed, specifying a value with this name will cause
Word 2016 to view the file as having an invalid signature for the VBA project on a subsequent load.
<253> Section 2.9.307: If the first row in the selection contains fewer cells than the last row in the
selection, and the selection began at a cell index greater than the number of cells in the first row, then
itcFirst will be greater than the number of cells in the first row, and the selection is interpreted as
being the end of row mark.
<254> Section 2.9.307: In some cases when the selection spans rows with differing cell counts, Word
97, Word 2000, Word 2002, Office Word 2003, Office Word 2007, Word 2010, and Word 2013 write an
itcLim that is less than or equal to itcFirst.
<255> Section 2.9.307: Office Word 2003, Office Word 2007, Word 2010, and Word 2013 ignore the
Selsf if itcLim is 64.
<256> Section 2.9.311: If the toolbar control associated to this TBDelta is a custom toolbar
control of type Popup, but the toolbar control does not drop a custom menu toolbar, the value of
iTB can be greater or equal than the value of the cCust field of the CTBWRAPPER structure that
contains the rCustomizations array that contains the Customization structure that contains the
customizationData array that contains this structure, and is ignored.
<257> Section 2.9.312: Word 97, Word 2000, Word 2002 and Office Word 2003 emit this
information. Office Word 2007, Word 2010, and Word 2013 emit 0.
<258> Section 2.9.312: Word 97, Word 2000, Word 2002 and Office Word 2003 read this
information. Neither Office Word 2007, Word 2010, nor Word 2013 read this information.
                                                                                                 539 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
<259> Section 2.9.312: Word 97, Word 2000, Word 2002 and Office Word 2003 emit this
information. Office Word 2007, Word 2010, and Word 2013 emit 0.
<260> Section 2.9.312: Word 97, Word 2000, Word 2002 and Office Word 2003 read this
information. Neither Office Word 2007, Word 2010, nor Word 2013 read this information.
<261> Section 2.9.312: Word 97, Word 2000, Word 2002 and Office Word 2003 emit this
information. Office Word 2007, Word 2010, and Word 2013 emit 0.
<262> Section 2.9.312: Word 97, Word 2000, Word 2002 and Office Word 2003 will read this
information. Neither Office Word 2007, Word 2010, nor Word 2013 read this information.
<263> Section 2.9.320: Office Word 2007, Word 2010, and Word 2013 write 0 and ignore the Tch.
Word 2000, Word 2002, and Office Word 2003 read and write this information.
<264> Section 2.9.326: Word 97 and Word 2000 set this value to the index of the predefined table
auto-format that was last applied to this table. Neither Word 2002, Office Word 2003, Office Word
2007, Word 2010, nor Word 2013 set this value.
<265> Section 2.9.326: Word 97, Word 2000, and Office Word 2003 do not always enable or disable
optional formats based on these flags. Instead, they sometimes use these flags to record which
formats were specified the last time the table was auto-formatted. In such cases, these values are
only used as an aid when re-applying a table auto-format. See the details of each flag for specific
version.
                                                                                           540 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
6    Change Tracking
This section identifies changes that were made to this document since the last release. Changes are
classified as Major, Minor, or None.
The revision class Major means that the technical content in the document was significantly revised.
Major changes affect protocol interoperability or implementation. Examples of major changes are:
The revision class Minor means that the meaning of the technical content was clarified. Minor changes
do not affect protocol interoperability or implementation. Examples of minor changes are updates to
clarify ambiguity at the sentence, paragraph, or table level.
The revision class None means that no new technical changes were introduced. Minor editorial and
formatting changes may have been made, but the relevant technical content is identical to the last
released version.
The changes made to this document are listed in the following table. For more information, please
contact dochelp@microsoft.com.
                                                                                             541 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
7    Index
0                                               CellRangeVertAlign 213
                                                CFitTextOperand 213
0Table stream structure 28                      Chpx 213
                                                ChpxFkp 214
1                                               Cid 214
                                                CidAllocated 215
1Table stream structure 28                      CidFci 215
                                                CidMacro 218
A                                               Clx 218
                                                CMajorityOperand 219
Acd structure 194                               Cmt enumeration 219
Afd structure 196                               CNFOperand 219
Algorithms                                      CNS enumeration 220
  application data for VtHyperlink 51           COLORREF 220
  applying properties 45                        COSL 221
  determining cell boundaries 43                CSSA 221
  determining paragraph boundaries 39           CSSAOperand 222
  determining row boundaries 44                 CSymbolOperand 222
  retrieving text 38                            CTB 222
Applicability 27                                CTBWRAPPER 224
Application data for VtHyperlink algorithm 51   Customization 225
Applying properties algorithms 45               DCS 225
ASUMY structure 196                             DefTableSdh800Operand 226
Asumyi structure 169                            DefTableSdhOperand 226
ATNBE structure 196                             DispFldRmOperand 227
AtrdExtra structure 197                         Dofr 227
ATRDPost10 structure 197                        DofrFsn 228
ATRDPre10 structure 198                         DofrFsnFnm 229
                                                DofrFsnName 229
                                                DofrFsnp 229
B
                                                DofrFsnSpbd 230
                                                Dofrh 230
Basic types
                                                DofrRglstsf 231
  Acd 194
                                                Dofrt enumeration 231
  Afd 196
                                                DPCID 231
  ASUMY 196
                                                DTTM 232
  ATNBE 196
                                                FACTOIDINFO 233
  AtrdExtra 197
                                                FactoidSpls 233
  ATRDPost10 197
                                                FarEastLayoutOperand 234
  ATRDPre10 198
                                                Fatl 234
  BKC 199
                                                FBKF 235
  BKF 199
                                                FBKFD 235
  BKFD 200
                                                FBKLD 236
  BKL 200
                                                FcCompressed 236
  BKLD 201
                                                FCCT 237
  BlockSel 201
                                                Fci enumeration 237
  Bool16 202
                                                FCKS 296
  Bool8 202
                                                FCKSOLD 297
  Brc 202
                                                FFData 298
  Brc80 202
                                                FFDataBits 300
  Brc80MayBeNil 203
                                                FFID 301
  BrcCvOperand 203
                                                FFM enumeration 301
  BrcMayBeNil 204
                                                FFN 302
  BrcOperand 204
                                                FieldMapBase 303
  BrcType 204
                                                FieldMapDataItem 304
  BxPap 210
                                                FieldMapInfo 304
  CAPI 210
                                                FieldMapTerminator 305
  CDB 211
                                                FilterDataItem 305
  CellHideMarkOperand 211
                                                Fld 306
  CellRangeFitText 212
                                                fldch 307
  CellRangeNoWrap 212
                                                flt enumeration 307
  CellRangeTextFlow 212
                                                                            542 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
 FNFB 309                                MFPF 347
 FNIF 310                                NilBrc 347
 FNPI 310                                NilPICFAndBinData 348
 FOBJH 311                               NumRM 349
 FrameTextFlowOperand 311                NumRMOperand 351
 FSDAP 313                               OcxInfo 351
 Fsnk enumeration 313                    ODSOPropertyBase 352
 Fssd 313                                ODSOPropertyLarge 354
 FssUnits 314                            ODSOPropertyStandard 354
 FTO 315                                 ODT 354
 Fts 315                                 ODTPersist1 355
 FtsWWidth_Indent 315                    ODTPersist2 357
 FtsWWidth_Table 316                     OfficeArtClientAnchor 357
 FtsWWidth_TablePart 316                 OfficeArtClientData 358
 FTXBXNonReusable 317                    OfficeArtClientTextbox 358
 FTXBXS 317                              OfficeArtContent 358
 FTXBXSReusable 318                      OfficeArtWordDrawing 359
 GOSL 318                                PANOSE 359
 GrammarSpls 319                         PapxFkp 363
 grffldEnd 319                           PapxInFkp 364
 grfhic 320                              PbiGrfOperand 364
 GRFSTD 321                              Pcd 365
 GrLPUpxSw 322                           Pcdt 365
 GrpPrlAndIstd 322                       PChgTabsAdd 366
 HFD 324                                 PChgTabsDel 366
 HFDBits 324                             PChgTabsDelClose 366
 Hplxsdr 325                             PChgTabsOperand 367
 HresiOperand 325                        PChgTabsPapxOperand 368
 Ico 325                                 PgbApplyTo 368
 IDPCI 326                               PgbOffsetFrom 368
 Ipat 327                                PgbPageDepth 368
 IScrollType 330                         PGPArray 369
 ItcFirstLim 330                         PGPInfo 369
 Kcm 331                                 PGPOptions 370
 Kme 331                                 PICF 371
 Kt enumeration 331                      PICF_Shape 372
 Kul enumeration 332                     PICFAndOfficeArtData 372
 LadSpls 332                             PICMID 373
 LBCOperand 333                          PlcfGlsy 374
 LEGOXTR_V11 333                         PlfAcd 375
 LFLVLO 336                              PlfCosl 375
 LFO 334                                 PlfGosl 376
 LFOData 335                             PlfguidUim 376
 LID 336                                 PlfKme 376
 LPStd 336                               PlfLfo 377
 LPStshi 337                             PlfLst 377
 LPStshiGrpPrl 337                       PlfMcd 378
 LPUpxChpx 337                           PLRSID 378
 LPUpxChpxRM 338                         Pmfs 379
 LPUpxPapx 338                           Pms 381
 LPUpxPapxRM 338                         PnFkpChpx 382
 LPUpxRM 339                             PnFkpPapx 382
 LPUpxTapx 339                           PositionCodeOperand 383
 LPXCharBuffer9 339                      Prc 383
 LSD 340                                 PrcData 384
 LSPD 340                                PrDrvr 384
 LSTF 341                                PrEnvLand 385
 Lstsf 342                               PrEnvPort 385
 LVL 342                                 Prm 385
 LVLF 343                                Prm0 385
 MacroName 345                           Prm1 386
 MacroNames 345                          PropRMark 387
 MathPrOperand 346                       PropRMarkOperand 387
 Mcd 346                                 ProtectionType 387
 MDP 347                                 PRTI 388
                                                                      543 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
 PTIstdInfoOperand 389                   SttbfFfn 438
 Rca 389                                 SttbfGlsy 439
 RecipientBase 390                       SttbFnm 440
 RecipientDataItem 390                   SttbfRfs 441
 RecipientInfo 391                       SttbfRMark 442
 RecipientTerminator 392                 SttbGlsyStyle 442
 Rfs 392                                 SttbListNames 443
 RgCdb 393                               SttbProtUser 444
 RgOcxInfo 393                           SttbRgtplc 445
 RmdThreading 393                        SttbSavedBy 446
 Rnc 398                                 SttbTtmbd 446
 RouteSlip 398                           SttbW6 447
 RouteSlipInfo 400                       StwUser 447
 RouteSlipProtectionEnum 400             Sty 448
 SBkcOperand 401                         TabJC enumeration 449
 SBOrientationOperand 401                TabLC enumeration 449
 SClmOperand 402                         TableBordersOperand 450
 SDmBinOperand 402                       TableBordersOperand80 451
 SDTI 402                                TableBrc80Operand 451
 SDTT 403                                TableBrcOperand 452
 SDxaColSpacingOperand 403               TableCellWidthOperand 452
 SDxaCoWidthOperand 403                  TableSel 453
 Sed 404                                 TableShadeOperand 453
 Selsf 404                               TBC 453
 Sepx 406                                TBD 454
 SFpcOperand 407                         TBDelta 454
 Shd 407                                 Tbkd 457
 Shd80 408                               TC80 457
 SHDOperand 409                          TCellBrcTypeOperand 458
 SLncOperand 410                         Tcg 458
 SmartTagData 410                        Tcg255 459
 SortColumnAndDirection 410              TCGRF 459
 Spa 412                                 TcgSttbf 460
 SpellingSpls 414                        TcgSttbfCore 460
 SPgbPropOperand 414                     Tch 461
 SPLS 414                                TDefTableOperand 461
 SPPOperand 415                          TDxaColOperand 462
 STD 416                                 TextFlow 462
 Stdf 417                                TInsertOperand 463
 StdfBase 417                            TIQ 463
 StdfPost2000 419                        TLP 464
 StdfPost2000OrNone 419                  ToggleOperand 464
 StkCharGRLPUPX 420                      Tplc 465
 StkCharLPUpxGrLPUpxRM 420               TplcBuildIn 465
 StkCharUpxGrLPUpxRM 420                 TplcUser 466
 StkListGRLPUPX 421                      Ttmbd 466
 StkParaGRLPUPX 421                      UFEL 467
 StkParaLPUpxGrLPUpxRM 422               UID enumeration 468
 StkParaUpxGrLPUpxRM 422                 UidSel 468
 StkTableGRLPUPX 423                     UIM 468
 STSH 423                                UpxChpx 469
 STSHI 424                               UPXPadding 470
 STSHIB 425                              UpxPapx 470
 Stshif 425                              UpxRm 471
 StshiLsd 426                            UpxTapx 471
 SttbfAssoc 426                          VerticalAlign enumeration 473
 SttbfAtnBkmk 427                        VerticalMergeFlag enumeration 473
 SttbfAutoCaption 428                    VertMergeOperand 474
 SttbfBkmk 429                           Vjc enumeration 474
 SttbfBkmkBPRepairs 433                  WHeightAbs 474
 SttbfBkmkFactoid 434                    WKB 474
 SttbfBkmkFcc 435                        Wpms 475
 SttbfBkmkProt 436                       Wpmsdt 476
 SttbfBkmkSdt 437                        XAS value 477
 SttbfCaption 437                        XAS_nonNeg value 477
                                                                             544 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
  XAS_plusOne value 477
  XSDR 477                                          D
  Xst 478
  Xstz 478                                          Data stream structure 28
  YAS value 478                                     DCS structure 225
  YAS_nonNeg value 478                              DefTableSdh800Operand structure 226
  YAS_plusOne value 478                             DefTableSdhOperand structure 226
BKC structure 199                                   Details
BKF structure 199                                    0Table stream structure 28
BKFD structure 200                                   1Table stream structure 28
BKL structure 200                                    Acd structure 194
BKLD structure 201                                   Afd structure 196
BlockSel structure 201                               application data for VtHyperlink 51
Bookmark example 488                                 applying properties 45
Bool16 structure 202                                 ASUMY structure 196
Bool8 structure 202                                  Asumyi structure 169
Brc structure 202                                    ATNBE structure 196
Brc80 structure 202                                  AtrdExtra structure 197
Brc80MayBeNil structure 203                          ATRDPost10 structure 197
BrcCvOperand structure 203                           ATRDPre10 structure 198
BrcMayBeNil structure 204                            BKC structure 199
BrcOperand structure 204                             BKF structure 199
BrcType structure 204                                BKFD structure 200
BxPap structure 210                                  BKL structure 200
Byte ordering - overview 26                          BKLD structure 201
                                                     BlockSel structure 201
C                                                    Bool16 structure 202
                                                     Bool8 structure 202
CAPI structure 210                                   Brc structure 202
CDB structure 211                                    Brc80 structure 202
CellHideMarkOperand structure 211                    Brc80MayBeNil structure 203
CellRangeFitText structure 212                       BrcCvOperand structure 203
CellRangeNoWrap structure 212                        BrcMayBeNil structure 204
CellRangeTextFlow structure 212                      BrcOperand structure 204
CellRangeVertAlign structure 213                     BrcType structure 204
CFitTextOperand structure 213                        BxPap structure 210
Change tracking 541                                  CAPI structure 210
Character Position (CP) - fundamental concepts 30    CDB structure 211
Character property modifiers 101                     CellHideMarkOperand structure 211
Characters - overview 24                             CellRangeFitText structure 212
Chpx structure 213                                   CellRangeNoWrap structure 212
ChpxFkp structure 214                                CellRangeTextFlow structure 212
Cid structure 214                                    CellRangeVertAlign structure 213
CidAllocated structure 215                           CFitTextOperand structure 213
CidFci structure 215                                 character properties 101
CidMacro structure 218                               Chpx structure 213
Clx example 479                                      ChpxFkp structure 214
Clx structure 218                                    Cid structure 214
CMajorityOperand structure 219                       CidAllocated structure 215
Cmt enumeration 219                                  CidFci structure 215
CNFOperand structure 219                             CidMacro structure 218
CNS enumeration 220                                  Clx structure 218
COLORREF structure 220                               CMajorityOperand structure 219
Comments structure 37                                Cmt enumeration 219
Copts structure 167                                  CNFOperand structure 219
Copts60 structure 164                                CNS enumeration 220
Copts80 structure 165                                COLORREF structure 220
COSL structure 221                                   comments 37
CSSA structure 221                                   Copts structure 167
CSSAOperand structure 222                            Copts60 structure 164
CSymbolOperand structure 222                         Copts80 structure 165
CTB structure 222                                    COSL structure 221
CTBWRAPPER structure 224                             CSSA structure 221
Custom XML Data storage structure 29                 CSSAOperand structure 222
Customization structure 225                          CSymbolOperand structure 222
                                                                                           545 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
 CTB structure 222                               FibRgFcLcb2000 structure 78
 CTBWRAPPER structure 224                        FibRgFcLcb2002 structure 82
 Custom XML Data storage structure 29            FibRgFcLcb2003 structure 89
 Customization structure 225                     FibRgFcLcb2007 structure 95
 Data stream structure 28                        FibRgFcLcb97 structure 59
 DCS structure 225                               FibRgLw97 structure 56
 DefTableSdh800Operand structure 226             FibRgW97 structure 55
 DefTableSdhOperand structure 226                FieldMapBase structure 303
 determining cell boundaries 43                  FieldMapDataItem structure 304
 determining paragraph boundaries 39             FieldMapInfo structure 304
 determining row boundaries 44                   FieldMapTerminator structure 305
 DispFldRmOperand structure 227                  FilterDataItem structure 305
 document content 38                             Fld structure 306
 document parts 36                               fldch structure 307
 Document Summary Information stream structure   flt enumeration 307
    29                                           FNFB structure 309
 Dofr structure 227                              FNIF structure 310
 DofrFsn structure 228                           FNPI structure 310
 DofrFsnFnm structure 229                        FOBJH structure 311
 DofrFsnName structure 229                       footnotes 36
 DofrFsnp structure 229                          FrameTextFlowOperand structure 311
 DofrFsnSpbd structure 230                       FSDAP structure 313
 Dofrh structure 230                             Fsnk enumeration 313
 DofrRglstsf structure 231                       Fssd structure 313
 Dofrt enumeration 231                           FssUnits structure 314
 Dogrid structure 171                            FTO structure 315
 Dop structure 142                               Fts structure 315
 Dop2000 structure 153                           FtsWWidth_Indent structure 315
 Dop2002 structure 156                           FtsWWidth_Table structure 316
 Dop2003 structure 159                           FtsWWidth_TablePart structure 316
 Dop2007 structure 162                           FTXBXNonReusable structure 317
 Dop2010 structure 163                           FTXBXS structure 317
 Dop2013 structure 164                           FTXBXSReusable structure 318
 Dop95 structure 149                             GOSL structure 318
 Dop97 structure 150                             GrammarSpls structure 319
 DopBase structure 143                           grffldEnd structure 319
 DopMth structure 173                            grfhic structure 320
 DopTypography structure 171                     GRFSTD structure 321
 DPCID structure 231                             GrLPUpxSw structure 322
 DTTM structure 232                              GrpPrlAndIstd structure 322
 Encryption stream structure 29                  header textboxes 38
 endnotes 37                                     headers 36
 FACTOIDINFO structure 233                       HFD structure 324
 FactoidSpls structure 233                       HFDBits structure 324
 FarEastLayoutOperand structure 234              how to read the Fib 100
 Fatl structure 234                              Hplxsdr structure 325
 FBKF structure 235                              HresiOperand structure 325
 FBKFD structure 235                             Ico structure 325
 FBKLD structure 236                             IDPCI structure 326
 FcCompressed structure 236                      Information Rights Management Data Space
 FCCT structure 237                                 storage structure 30
 Fci enumeration 237                             Ipat structure 327
 FCKS structure 296                              IScrollType structure 330
 FCKSOLD structure 297                           ItcFirstLim structure 330
 FFData structure 298                            Kcm structure 331
 FFDataBits structure 300                        Kme structure 331
 FFID structure 301                              Kt enumeration 331
 FFM enumeration 301                             Kul enumeration 332
 FFN structure 302                               LadSpls structure 332
 Fib structure 52                                LBCOperand structure 333
 FibBase structure 53                            LEGOXTR_V11 structure 333
 FibRgCswNew structure 98                        LFO structure 334
 FibRgCswNewData2000 structure 99                LFOData structure 335
 FibRgCswNewData2007 structure 99                LFOLVL structure 336
 FibRgFcLcb structure 58                         LID structure 336
                                                                                      546 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
 LPStd structure 336                     picture properties 142
 LPStshi structure 337                   Plcbkf structure 175
 LPStshiGrpPrl structure 337             Plcbkfd structure 176
 LPUpxChpx structure 337                 Plcbkl structure 177
 LPUpxChpxRM structure 338               Plcbkld structure 177
 LPUpxPapx structure 338                 PlcBteChpx structure 178
 LPUpxPapxRM structure 338               PlcBtePapx structure 178
 LPUpxRM structure 339                   PlcfandRef structure 179
 LPUpxTapx structure 339                 PlcfandTxt structure 179
 LPXCharBuffer9 structure 339            PlcfAsumy structure 180
 LSD structure 340                       Plcfbkf structure 180
 LSPD structure 340                      Plcfbkfd structure 181
 LSTF structure 341                      Plcfbkl structure 182
 Lstsf structure 342                     Plcfbkld structure 182
 LVL structure 342                       Plcfcookie structure 182
 LVLF structure 343                      PlcfcookieOld structure 183
 MacroName structure 345                 PlcfendRef structure 183
 MacroNames structure 345                PlcfendTxt structure 184
 Macros storage structure 29             Plcffactoid structure 184
 main document 36                        PlcffndRef structure 185
 MathPrOperand structure 346             PlcffndTxt structure 185
 Mcd structure 346                       PlcfGlsy structure 374
 MDP structure 347                       Plcfgram structure 186
 MFPF structure 347                      Plcfhdd structure 186
 nFib value 100                          PlcfHdrtxbxTxt structure 186
 NilBrc structure 347                    Plcflad structure 187
 NilPICFAndBinData structure 348         Plcfld structure 188
 NumRM structure 349                     PlcfSed structure 189
 NumRMOperand structure 351              PlcfSpa structure 189
 ObjectPool storage structure 28         Plcfspl structure 190
 OcxInfo structure 351                   PlcfTch structure 190
 ODSOPropertyBase structure 352          PlcfTxbxBkd structure 191
 ODSOPropertyLarge structure 354         PlcfTxbxHdrBkd structure 192
 ODSOPropertyStandard structure 354      PlcftxbxTxt structure 192
 ODT structure 354                       Plcfuim structure 193
 ODTPersist1 structure 355               PlcfWKB structure 193
 ODTPersist2 structure 357               PlcPcd structure 193
 OfficeArtClientAnchor structure 357     PlfAcd structure 375
 OfficeArtClientData structure 358       PlfCosl structure 375
 OfficeArtClientTextbox structure 358    PlfGosl structure 376
 OfficeArtContent structure 358          PlfguidUim structure 376
 OfficeArtWordDrawing structure 359      PlfKme structure 376
 overview of tables 40                   PlfLfo structure 377
 PANOSE structure 359                    PlfLst structure 377
 PapxFkp structure 363                   PlfMcd structure 378
 PapxInFkp structure 364                 PLRSID structure 378
 paragraph properties 115                Pmfs structure 379
 PbiGrfOperand structure 364             Pms structure 381
 Pcd structure 365                       PnFkpChpx structure 382
 Pcdt structure 365                      PnFkpPapx structure 382
 PChgTabsAdd structure 366               PositionCodeOperand structure 383
 PChgTabsDel structure 366               Prc structure 383
 PChgTabsDelClose structure 366          PrcData structure 384
 PChgTabsOperand structure 367           PrDrvr structure 384
 PChgTabsPapxOperand structure 368       PrEnvLand structure 385
 PgbApplyTo structure 368                PrEnvPort structure 385
 PgbOffsetFrom structure 368             Prm structure 385
 PgbPageDepth structure 368              Prm0 structure 385
 PGPArray structure 369                  Prm1 structure 386
 PGPInfo structure 369                   PropRMark structure 387
 PGPOptions structure 370                PropRMarkOperand structure 387
 PICF structure 371                      Protected Content stream structure 30
 PICF_Shape structure 372                ProtectionType structure 387
 PICFAndOfficeArtData structure 372      PRTI structure 388
 PICMID structure 373                    PTIstdInfoOperand structure 389
                                                                                 547 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
 Rca structure 389                       SttbfBkmkProt structure 436
 RecipientBase structure 390             SttbfBkmkSdt structure 437
 RecipientDataItem structure 390         SttbfCaption structure 437
 RecipientInfo structure 391             SttbfFfn structure 438
 RecipientTerminator structure 392       SttbfGlsy structure 439
 retrieving text 38                      SttbFnm structure 440
 Rfs structure 392                       SttbfRfs structure 441
 RgCdb structure 393                     SttbfRMark structure 442
 RgOcxInfo structure 393                 SttbGlsyStyle structure 442
 RmdThreading structure 393              SttbListNames structure 443
 Rnc structure 398                       SttbProtUser structure 444
 RouteSlip structure 398                 SttbRgtplc structure 445
 RouteSlipInfo structure 400             SttbSavedBy structure 446
 RouteSlipProtectionEnum structure 400   SttbTtmbd structure 446
 SBkcOperand structure 401               SttbW6 structure 447
 SBOrientationOperand structure 401      StwUser structure 447
 SClmOperand structure 402               Sty structure 448
 SDmBinOperand structure 402             Summary Information stream structure 29
 SDTI structure 402                      TabJC enumeration 449
 SDTT structure 403                      TabLC enumeration 449
 SDxaColSpacingOperand structure 403     table overview 40
 SDxaColWidthOperand structure 403       table properties 126
 section properties 135                  TableBordersOperand structure 450
 Sed structure 404                       TableBordersOperand80 structure 451
 Selsf structure 404                     TableBrc80Operand structure 451
 Sepx structure 406                      TableBrcOperand structure 452
 SFpcOperand structure 407               TableCellWidthOperand structure 452
 Shd structure 407                       TableSel structure 453
 Shd80 structure 408                     TableShadeOperand structure 453
 SHDOperand structure 409                TBC structure 453
 signatures stream structure 30          TBD structure 454
 single property modifiers 100           TBDelta structure 454
 SLncOperand structure 410               Tbkd structure 457
 SmartTagData structure 410              TC80 structure 457
 SortColumnAndDirection structure 410    TCellBrcTypeOperand structure 458
 Spa structure 412                       Tcg structure 458
 SpellingSpls structure 414              Tcg255 structure 459
 SPgbPropOperand structure 414           TCGRF structure 459
 SPLS structure 414                      TcgSttbf structure 460
 SPPOperand structure 415                TcgSttbfCore structure 460
 STD structure 416                       Tch structure 461
 Stdf structure 417                      TDefTableOperand structure 461
 StdfBase structure 417                  TDxaColOperand structure 462
 StdfPost2000 structure 419              textboxes 38
 StdfPost2000OrNone structure 419        TextFlow structure 462
 StkCharGRLPUPX structure 420            TInsertOperand structure 463
 StkCharLPUpxGrLPUpxRM structure 420     TIQ structure 463
 StkCharUpxGrLPUpxRM structure 420       TLP structure 464
 StkListGRLPUPX structure 421            ToggleOperand structure 464
 StkParaGRLPUPX structure 421            Tplc structure 465
 StkParaLPUpxGrLPUpxRM structure 422     TplcBuildIn structure 465
 StkParaUpxGrLPUpxRM structure 422       TplcUser structure 466
 StkTableGRLPUPX structure 423           Ttmbd structure 466
 STSH structure 423                      UFEL structure 467
 STSHI structure 424                     UID enumeration 468
 STSHIB structure 425                    UidSel structure 468
 Stshif structure 425                    UIM structure 468
 StshiLsd structure 426                  UpxChpx structure 469
 SttbfAssoc structure 426                UPXPadding structure 470
 SttbfAtnBkmk structure 427              UpxPapx structure 470
 SttbfAutoCaption structure 428          UpxRm structure 471
 SttbfBkmk structure 429                 UpxTapx structure 471
 SttbfBkmkBPRepairs structure 433        VerticalAlign enumeration 473
 SttbfBkmkFactoid structure 434          VerticalMergeFlag enumeration 473
 SttbfBkmkFcc structure 435              VertMergeOperand structure 474
                                                                              548 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
  Vjc enumeration 474                               Example of a Clx 479
  WHeightAbs structure 474                          Example of a List 512
  WKB structure 474                                 Example of a PlcBteChpx 493
  WordDocument stream structure 28                  Example of a PlcBtePapx 497
  Wpms structure 475                                Example of a section 484
  Wpmsdt structure 476                              Example of Table Row Properties 502
  XAS value 477                                     list 512
  XAS_nonNeg value 477                              PlcBteChpx 493
  XAS_plusOne value 477                             PlcBtePapx 497
  XML signatures storage structure 30               section 484
  XSDR structure 477                                table row properties 502
  Xst structure 478
  Xstz structure 478                            F
  YAS value 478
  YAS_nonNeg value 478                          FACTOIDINFO structure 233
  YAS_plusOne value 478                         FactoidSpls structure 233
Determining cell boundaries algorithm 43        FarEastLayoutOperand structure 234
Determining paragraph boundaries algorithm 39   Fatl structure 234
Determining row boundaries algorithm 44         FBKF structure 235
DispFldRmOperand structure 227                  FBKFD structure 235
Document content structure 38                   FBKLD structure 236
Document parts structure 36                     FcCompressed structure 236
Document Summary Information stream structure   FCCT structure 237
    29                                          Fci enumeration 237
Dofr structure 227                              FCKS structure 296
DofrFsn structure 228                           FCKSOLD structure 297
DofrFsnFnm structure 229                        FFData structure 298
DofrFsnName structure 229                       FFDataBits structure 300
DofrFsnp structure 229                          FFID structure 301
DofrFsnSpbd structure 230                       FFM enumeration 301
Dofrh structure 230                             FFN structure 302
DofrRglstsf structure 231                       FIB - overview 26
Dofrt enumeration 231                           Fib structure 52
Dogrid structure 171                            FibBase structure 53
Dop structure 142                               FibRgCswNew structure 98
Dop2000 structure 153                           FibRgCswNewData2000 structure 99
Dop2002 structure 156                           FibRgCswNewData2007 structure 99
Dop2003 structure 159                           FibRgFcLcb structure 58
Dop2007 structure 162                           FibRgFcLcb2000 structure 78
Dop2010 structure 163                           FibRgFcLcb2002 structure 82
Dop2013 structure 164                           FibRgFcLcb2003 structure 89
Dop95 structure 149                             FibRgFcLcb2007 structure 95
Dop97 structure 150                             FibRgFcLcb97 structure 59
DopBase structure 143                           FibRgLw97 structure 56
DopMth structure 173                            FibRgW97 structure 55
DopTypography structure 171                     FieldMapBase structure 303
DPCID structure 231                             FieldMapDataItem structure 304
DTTM structure 232                              FieldMapInfo structure 304
                                                FieldMapTerminator structure 305
E                                               Fields - vendor-extensible 27
                                                File Information Block - overview 26
Encryption - fundamental concepts 34            File structure 28
Encryption stream structure 29                  FilterDataItem structure 305
Endnotes structure 37                           Fld structure 306
Example of a Bookmark example 488               fldch structure 307
Example of a Clx example 479                    flt enumeration 307
Example of a List example 512                   FNFB structure 309
Example of a PlcBteChpx example 493             FNIF structure 310
Example of a PlcBtePapx example 497             FNPI structure 310
Example of a section example 484                FOBJH structure 311
Example of Table Row Properties example 502     Footnote structure 36
Examples 479                                    Formatting - overview 25
  bookmark 488                                  FrameTextFlowOperand structure 311
  Clx 479                                       FSDAP structure 313
  Example of a Bookmark 488                     Fsnk enumeration 313
                                                                                          549 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Fssd structure 313                                  Kme structure 331
FssUnits structure 314                              Kt enumeration 331
FTO structure 315                                   Kul enumeration 332
Fts structure 315
FtsWWidth_Indent structure 315                      L
FtsWWidth_Table structure 316
FtsWWidth_TablePart structure 316                   LadSpls structure 332
FTXBXNonReusable structure 317                      LBCOperand structure 333
FTXBXS structure 317                                LEGOXTR_V11 structure 333
FTXBXSReusable structure 318                        LFO structure 334
Fundamental concepts                                LFOData structure 335
  Character Position (CP) 30                        LFOLVL structure 336
  encryption 34                                     LID structure 336
  obfuscation 34                                    List example 512
  Office binary document RC4 CryptoAPI encryption   Localization 27
     35                                             LPStd structure 336
  Office binary document RC4 encryption 35          LPStshi structure 337
  password protection 34                            LPStshiGrpPrl structure 337
  PLC 30                                            LPUpxChpx structure 337
  Prl structure 34                                  LPUpxChpxRM structure 338
  property storage 33                               LPUpxPapx structure 338
  Sprm structure 33                                 LPUpxPapxRM structure 338
  storing properties 33                             LPUpxRM structure 339
  STTB 32                                           LPUpxTapx structure 339
  valid selection 31                                LPXCharBuffer9 structure 339
  XOR obfuscation 35                                LSD structure 340
                                                    LSPD structure 340
G                                                   LSTF structure 341
                                                    Lstsf structure 342
General organization of this documentation 26       LVL structure 342
Glossary 14                                         LVLF structure 343
GOSL structure 318
GrammarSpls structure 319                           M
grffldEnd structure 319
grfhic structure 320                                MacroName structure 345
GRFSTD structure 321                                MacroNames structure 345
GrLPUpxSw structure 322                             Macros storage structure 29
GrpPrlAndIstd structure 322                         Main document structure 36
                                                    MathPrOperand structure 346
H                                                   Mcd structure 346
                                                    MDP structure 347
Header structure 36                                 MFPF structure 347
Header textboxes structure 38
HFD structure 324                                   N
HFDBits structure 324
How to read the Fib 100                             nFib value - determining 100
Hplxsdr structure 325                               NilBrc structure 347
HresiOperand structure 325                          NilPICFAndBinData structure 348
                                                    Normative references 23
I                                                   NumRM structure 349
                                                    NumRMOperand structure 351
Ico structure 325
IDPCI structure 326                                 O
Information Rights Management Data Space storage
     structure 30                                   Obfuscation - fundamental concepts 34
Informative references 24                           ObjectPool storage structure 28
Introduction 14                                     OcxInfo structure 351
Ipat structure 327                                  ODSOPropertyBase structure 352
IScrollType structure 330                           ODSOPropertyLarge structure 354
ItcFirstLim structure 330                           ODSOPropertyStandard structure 354
                                                    ODT structure 354
K                                                   ODTPersist1 structure 355
                                                    ODTPersist2 structure 357
Kcm structure 331
                                                                                            550 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
Office binary document RC4 CryptoAPI encryption -   Plcfld structure 188
     fundamental concepts 35                        PlcfSed structure 189
Office binary document RC4 encryption -             PlcfSpa structure 189
     fundamental concepts 35                        Plcfspl structure 190
OfficeArtClientAnchor structure 357                 PlcfTch structure 190
OfficeArtClientData structure 358                   PlcfTxbxBkd structure 191
OfficeArtClientTextbox structure 358                PlcfTxbxHdrBkd structure 192
OfficeArtContent structure 358                      PlcftxbxTxt structure 192
OfficeArtWordDrawing structure 359                  Plcfuim structure 193
                                                    PlcfWKB structure 193
P                                                   PlcPcd structure 193
                                                    PLCs - overview 25
PANOSE structure 359                                PlfAcd structure 375
PapxFkp structure 363                               PlfCosl structure 375
PapxInFkp structure 364                             PlfGosl structure 376
Paragraph property modifiers 115                    PlfguidUim structure 376
Password protection - fundamental concepts 34       PlfKme structure 376
PbiGrfOperand structure 364                         PlfLfo structure 377
Pcd structure 365                                   PlfLst structure 377
Pcdt structure 365                                  PlfMcd structure 378
PChgTabsAdd structure 366                           PLRSID structure 378
PChgTabsDel structure 366                           Pmfs structure 379
PChgTabsDelClose structure 366                      Pms structure 381
PChgTabsOperand structure 367                       PnFkpChpx structure 382
PChgTabsPapxOperand structure 368                   PnFkpPapx structure 382
PgbApplyTo structure 368                            PositionCodeOperand structure 383
PgbOffsetFrom structure 368                         Prc structure 383
PgbPageDepth structure 368                          PrcData structure 384
PGPArray structure 369                              PrDrvr structure 384
PGPInfo structure 369                               PrEnvLand structure 385
PGPOptions structure 370                            PrEnvPort structure 385
PICF structure 371                                  Prl structure - fundamental concepts 34
PICF_Shape structure 372                            Prm structure 385
PICFAndOfficeArtData structure 372                  Prm0 structure 385
PICMID structure 373                                Prm1 structure 386
Picture property modifiers 142                      Product behavior 523
Pictures - overview 25                              Property storage - fundamental concepts 33
PLC - fundamental concepts 30                       PropRMark structure 387
Plcbkf structure 175                                PropRMarkOperand structure 387
Plcbkfd structure 176                               Protected Content stream structure 30
Plcbkl structure 177                                ProtectionType structure 387
Plcbkld structure 177                               PRTI structure 388
PlcBteChpx example 493                              PTIstdInfoOperand structure 389
PlcBteChpx structure 178
PlcBtePapx example 497                              R
PlcBtePapx structure 178
Plcfactoid structure 184                            Rca structure 389
PlcfandRef structure 179                            RecipientBase structure 390
PlcfandTxt structure 179                            RecipientDataItem structure 390
PlcfAsumy structure 180                             RecipientInfo structure 391
Plcfbkf structure 180                               RecipientTerminator structure 392
Plcfbkfd structure 181                              References 23
Plcfbkl structure 182                                 informative 24
Plcfbkld structure 182                                normative 23
Plcfcookie structure 182                            Relationship to protocols and other structures 27
PlcfcookieOld structure 183                         Retrieving text algorithm 38
PlcfendRef structure 183                            Rfs structure 392
PlcfendTxt structure 184                            RgCdb structure 393
PlcffndRef structure 185                            RgOcxInfo structure 393
PlcffndTxt structure 185                            RmdThreading structure 393
PlcfGlsy structure 374                              Rnc structure 398
Plcfgram structure 186                              RouteSlip structure 398
Plcfhdd structure 186                               RouteSlipInfo structure 400
PlcfHdrtxbxTxt structure 186                        RouteSlipProtectionEnum structure 400
Plcflad structure 187
                                                                                               551 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
S                                                 BKLD 201
                                                  BlockSel 201
SBkcOperand structure 401                         Bool16 202
SBOrientationOperand structure 401                Bool8 202
SClmOperand structure 402                         Brc 202
SDmBinOperand structure 402                       Brc80 202
SDTI structure 402                                Brc80MayBeNil 203
SDTT structure 403                                BrcCvOperand 203
SDxaColSpacingOperand structure 403               BrcMayBeNil 204
SDxaColWidthOperand structure 403                 BrcOperand 204
Section example 484                               BrcType 204
Section property modifiers 135                    BxPap 210
Security                                          CAPI 210
  encryption and obfuscation (password to open)   CDB 211
     522                                          CellHideMarkOperand 211
  write reservation password 522                  CellRangeFitText 212
Security - encryption and obfuscation 522         CellRangeNoWrap 212
Security - write-reservation password 522         CellRangeTextFlow 212
Sed structure 404                                 CellRangeVertAlign 213
Selsf structure 404                               CFitTextOperand 213
Sepx structure 406                                character properties 101
SFpcOperand structure 407                         Chpx 213
Shd structure 407                                 ChpxFkp 214
Shd80 structure 408                               Cid 214
SHDOperand structure 409                          CidAllocated 215
Signatures stream structure 30                    CidFci 215
Single property modifiers structure 100           CidMacro 218
SLncOperand structure 410                         Clx 218
SmartTagData structure 410                        CMajorityOperand 219
SortColumnAndDirection structure 410              Cmt enumeration 219
Spa structure 412                                 CNFOperand 219
SpellingSpls structure 414                        CNS enumeration 220
SPgbPropOperand structure 414                     COLORREF 220
SPLS structure 414                                comments 37
SPPOperand structure 415                          Copts 167
Sprm structure - fundamental concepts 33          Copts60 164
STD structure 416                                 Copts80 165
Stdf structure 417                                COSL 221
StdfBase structure 417                            CSSA 221
StdfPost2000 structure 419                        CSSAOperand 222
StdfPost2000OrNone structure 419                  CSymbolOperand 222
StkCharGRLPUPX structure 420                      CTB 222
StkCharLPUpxGrLPUpxRM structure 420               CTBWRAPPER 224
StkCharUpxGrLPUpxRM structure 420                 Custom XML Data storage 29
StkListGRLPUPX structure 421                      Customization 225
StkParaGRLPUPX structure 421                      Data stream 28
StkParaLPUpxGrLPUpxRM structure 422               DCS 225
StkParaUpxGrLPUpxRM structure 422                 DefTableSdh800Operand 226
StkTableGRLPUPX structure 423                     DefTableSdhOperand 226
Storing properties - fundamental concepts 33      DispFldRmOperand 227
Structures                                        document content 38
  0Table stream 28                                document parts 36
  1Table stream 28                                Document Summary Information stream 29
  Acd 194                                         Dofr 227
  Afd 196                                         DofrFsn 228
  ASUMY 196                                       DofrFsnFnm 229
  Asumyi 169                                      DofrFsnName 229
  ATNBE 196                                       DofrFsnp 229
  AtrdExtra 197                                   DofrFsnSpbd 230
  ATRDPost10 197                                  Dofrh 230
  ATRDPre10 198                                   DofrRglstsf 231
  BKC 199                                         Dofrt enumeration 231
  BKF 199                                         Dogrid 171
  BKFD 200                                        Dop 142
  BKL 200                                         Dop2000 153
                                                                                     552 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
 Dop2002 156                             FtsWWidth_Table 316
 Dop2003 159                             FtsWWidth_TablePart 316
 Dop2007 162                             FTXBXNonReusable 317
 Dop2010 163                             FTXBXS 317
 Dop2013 164                             FTXBXSReusable 318
 Dop95 149                               GOSL 318
 Dop97 150                               GrammarSpls 319
 DopBase 143                             grffldEnd 319
 DopMth 173                              grfhic 320
 DopTypography 171                       GRFSTD 321
 DPCID 231                               GrLPUpxSw 322
 DTTM 232                                GrpPrlAndIstd 322
 Encryption stream 29                    header 36
 endnotes 37                             header textboxes 38
 FACTOIDINFO 233                         HFD 324
 FactoidSpls 233                         HFDBits 324
 FarEastLayoutOperand 234                Hplxsdr 325
 Fatl 234                                HresiOperand 325
 FBKF 235                                Ico 325
 FBKFD 235                               IDPCI 326
 FBKLD 236                               Information Rights Management Data Space 30
 FcCompressed 236                        Ipat 327
 FCCT 237                                IScrollType 330
 Fci enumeration 237                     ItcFirstLim 330
 FCKS 296                                Kcm 331
 FCKSOLD 297                             Kme 331
 FFData 298                              Kt enumeration 331
 FFDataBits 300                          Kul enumeration 332
 FFID 301                                LadSpls 332
 FFM enumeration 301                     LBCOperand 333
 FFN 302                                 LEGOXTR_V11 333
 Fib 52                                  LFO 334
 FibBase 53                              LFOData 335
 FibRgCswNew 98                          LFOLVL 336
 FibRgCswNewData2000 99                  LID 336
 FibRgCswNewData2007 99                  LPStd 336
 FibRgFcLcb 58                           LPStshi 337
 FibRgFcLcb2000 78                       LPStshiGrpPrl 337
 FibRgFcLcb2002 82                       LPUpxChpx 337
 FibRgFcLcb2003 89                       LPUpxChpxRM 338
 FibRgFcLcb2007 95                       LPUpxPapx 338
 FibRgFcLcb97 59                         LPUpxPapxRM 338
 FibRgLw97 56                            LPUpxRM 339
 FibRgW97 55                             LPUpxTapx 339
 FieldMapBase 303                        LPXCharBuffer9 339
 FieldMapDataItem 304                    LSD 340
 FieldMapInfo 304                        LSPD 340
 FieldMapTerminator 305                  LSTF 341
 FilterDataItem 305                      Lstsf 342
 Fld 306                                 LVL 342
 fldch 307                               LVLF 343
 flt enumeration 307                     MacroName 345
 FNFB 309                                MacroNames 345
 FNIF 310                                Macros storage 29
 FNPI 310                                main document 36
 FOBJH 311                               MathPrOperand 346
 footnotes 36                            Mcd 346
 FrameTextFlowOperand 311                MDP 347
 FSDAP 313                               MFPF 347
 Fsnk enumeration 313                    NilBrc 347
 Fssd 313                                NilPICFAndBinData 348
 FssUnits 314                            NumRM 349
 FTO 315                                 NumRMOperand 351
 Fts 315                                 ObjectPool storage 28
 FtsWWidth_Indent 315                    OcxInfo 351
                                                                              553 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
 ODSOPropertyBase 352                    PlcfTxbxHdrBkd 192
 ODSOPropertyLarge 354                   PlcftxbxTxt 192
 ODSOPropertyStandard 354                Plcfuim 193
 ODT 354                                 PlcfWKB 193
 ODTPersist1 355                         PlcPcd 193
 ODTPersist2 357                         PlfAcd 375
 OfficeArtClientAnchor 357               PlfCosl 375
 OfficeArtClientData 358                 PlfGosl 376
 OfficeArtClientTextbox 358              PlfguidUim 376
 OfficeArtContent 358                    PlfKme 376
 OfficeArtWordDrawing 359                PlfLfo 377
 PANOSE 359                              PlfLst 377
 PapxFkp 363                             PlfMcd 378
 PapxInFkp 364                           PLRSID 378
 paragraph properties 115                Pmfs 379
 PbiGrfOperand 364                       Pms 381
 Pcd 365                                 PnFkpChpx 382
 Pcdt 365                                PnFkpPapx 382
 PChgTabsAdd 366                         PositionCodeOperand 383
 PChgTabsDel 366                         Prc 383
 PChgTabsDelClose 366                    PrcData 384
 PChgTabsOperand 367                     PrDrvr 384
 PChgTabsPapxOperand 368                 PrEnvLand 385
 PgbApplyTo 368                          PrEnvPort 385
 PgbOffsetFrom 368                       Prm 385
 PgbPageDepth 368                        Prm0 385
 PGPArray 369                            Prm1 386
 PGPInfo 369                             PropRMark 387
 PGPOptions 370                          PropRMarkOperand 387
 PICF 371                                Protected Content stream 30
 PICF_Shape 372                          ProtectionType 387
 PICFAndOfficeArtData 372                PRTI 388
 PICMID 373                              PTIstdInfoOperand 389
 picture properties 142                  Rca 389
 Plcbkf 175                              RecipienDataItem 390
 Plcbkfd 176                             RecipientBase 390
 Plcbkl 177                              RecipientInfo 391
 Plcbkld 177                             RecipientTerminator 392
 PlcBteChpx 178                          Rfs 392
 PlcBtePapx 178                          RgCdb 393
 PlcfandRef 179                          RgOcxInfo 393
 PlcfandTxt 179                          RmdThreading 393
 PlcfAsumy 180                           Rnc 398
 Plcfbkf 180                             RouteSlip 398
 Plcfbkfd 181                            RouteSlipInfo 400
 Plcfbkl 182                             RouteSlipProtectionEnum 400
 Plcfbkld 182                            SBkcOperand 401
 Plcfcookie 182                          SBOrientationOperand 401
 PlcfcookieOld 183                       SClmOperand 402
 PlcfendRef 183                          SDmBinOperand 402
 PlcfendTxt 184                          SDTI 402
 Plcffactoid 184                         SDTT 403
 PlcffndRef 185                          SDxaColSpacingOperand 403
 PlcffndTxt 185                          SDxaColWidthOperand 403
 PlcfGlsy 374                            section properties 135
 Plcfgram 186                            Sed 404
 Plcfhdd 186                             Selsf 404
 PlcfHdrtxbxTxt 186                      Sepx 406
 Plcflad 187                             SFpcOperand 407
 Plcfld 188                              Shd 407
 PlcfSed 189                             Shd80 408
 PlcfSpa 189                             SHDOperand 409
 Plcfspl 190                             signatures stream 30
 PlcfTch 190                             single property modifiers 100
 PlcfTxbxBkd 191                         SLncOperand 410
                                                                         554 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
 SmartTagData 410                          TCellBrcTypeOperand 458
 SortColumnAndDirection 410                Tcg 458
 Spa 412                                   Tcg255 459
 SpellingSpls 414                          TCGRF 459
 SPgbPropOperand 414                       TcgSttbf 460
 SPLS 414                                  TcgSttbfCore 460
 SPPOperand 415                            Tch 461
 STD 416                                   TDefTableOperand 461
 Stdf 417                                  TDxaColOperand 462
 StdfBase 417                              textboxes 38
 StdfPost2000 419                          TextFlow 462
 StdfPost2000OrNone 419                    TInsertOperand 463
 StkCharGRLPUPX 420                        TIQ 463
 StkCharLPUpxGrLPUpxRM 420                 TLP 464
 StkCharUpxGrLPUpxRM 420                   ToggleOperand 464
 StkListGRLPUPX 421                        Tplc 465
 StkParaGRLPUPX 421                        TplcBuildIn 465
 StkParaLPUpxGrLPUpxRM 422                 TplcUser 466
 StkParaUpxGrLPUpxRM 422                   Ttmbd 466
 StkTableGRLPUPX 423                       UFEL 467
 STSH 423                                  UID enumeration 468
 STSHI 424                                 UidSel 468
 STSHIB 425                                UIM 468
 Stshif 425                                UpxChpx 469
 StshiLsd 426                              UPXPadding 470
 SttbfAssoc 426                            UpxPapx 470
 SttbfAtnBkmk 427                          UpxRm 471
 SttbfAutoCaption 428                      UpxTapx 471
 SttbfBkmk 429                             VerticalAlign enumeration 473
 SttbfBkmkBPRepairs 433                    VerticalMergeFlag enumeration 473
 SttbfBkmkFactoid 434                      VertMergeOperand 474
 SttbfBkmkFcc 435                          Vjc enumeration 474
 SttbfBkmkProt 436                         WHeightAbs 474
 SttbfBkmkSdt 437                          WKB 474
 SttbfCaption 437                          WordDocument stream 28
 SttbfFfn 438                              Wpms 475
 SttbfGlsy 439                             Wpmsdt 476
 SttbFnm 440                               XAS value 477
 SttbfRfs 441                              XAS_nonNeg value 477
 SttbfRMark 442                            XAS_plusOne value 477
 SttbGlsyStyle 442                         XML signatures storage 30
 SttbListNames 443                         XSDR 477
 SttbProtUser 444                          Xst 478
 SttbRgtplc 445                            Xstz 478
 SttbSavedBy 446                           YAS value 478
 SttbTtmbd 446                             YAS_nonNeg value 478
 SttbW6 447                                YAS_plusOne value 478
 StwUser 447                             STSH structure 423
 Sty 448                                 STSHI structure 424
 Summary Information stream 29           STSHIB structure 425
 TabJC enumeration 449                   Stshif structure 425
 TabLC enumeration 449                   StshiLsd structure 426
 table properties 126                    STTB - fundamental concepts 32
 TableBordersOperand 450                 SttbfAssoc structure 426
 TableBordersOperand80 451               SttbfAtnBkmk structure 427
 TableBrc80Operand 451                   SttbfAutoCaption structure 428
 TableBrcOperand 452                     SttbfBkmk structure 429
 TableCellWidthOperand 452               SttbfBkmkBPRepairs structure 433
 TableSel 453                            SttbfBkmkFactoid structure 434
 TableShadeOperand 453                   SttbfBkmkFcc structure 435
 TBC 453                                 SttbfBkmkProt structure 436
 TBD 454                                 SttbfBkmkSdt structure 437
 TBDelta 454                             SttbfCaption structure 437
 Tbkd 457                                SttbfFfn structure 438
 TC80 457                                SttbfGlsy structure 439
                                                                               555 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018
SttbFnm structure 440                                UpxTapx structure 471
SttbfRfs structure 441
SttbfRMark structure 442                             V
SttbGlsyStyle structure 442
SttbListNames structure 443                          Valid selection - fundamental concepts 31
SttbProtUser structure 444                           Vendor-extensible fields 27
SttbRgtplc structure 445                             Versioning 27
SttbSavedBy structure 446                            VerticalAlign enumeration 473
SttbTtmbd structure 446                              VerticalMergeFlag enumeration 473
SttbW6 structure 447                                 VertMergeOperand structure 474
StwUser structure 447                                Vjc enumeration 474
Sty structure 448
Summary Information stream structure 29              W
                                                                                                 556 / 556
[MS-DOC] - v20180828
Word (.doc) Binary File Format
Copyright © 2018 Microsoft Corporation
Release: August 28, 2018