external/clucene/patches/clucene-const.patch.1 |   95 +++-
 sw/source/filter/ww8/sortedarray.hxx           |   14 
 sw/source/filter/ww8/ww8par6.cxx               |  593 ++++++++++++-------------
 3 files changed, 395 insertions(+), 307 deletions(-)

New commits:
commit caf9187455cb0b8ba4f67e41dff28905bcb17edb
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Mon Jul 14 21:26:08 2025 +0100
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Tue Jul 15 09:45:22 2025 +0200

    const up some more parts of clucene
    
    Change-Id: I3290409faac20d441ae9de6ca109ce093d577d1e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187879
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/external/clucene/patches/clucene-const.patch.1 
b/external/clucene/patches/clucene-const.patch.1
index db83aa1c8aad..d51098a59d7d 100644
--- a/external/clucene/patches/clucene-const.patch.1
+++ b/external/clucene/patches/clucene-const.patch.1
@@ -8470,9 +8470,51 @@ diff -ru 
clucene.orig/src/contribs-lib/CLucene/snowball/src_c/stem_UTF_8_swedish
  
  static int r_mark_regions(struct SN_env * z) {
      z->I[0] = z->l;
+diff -ru clucene.orig/src/core/CLucene/analysis/Analyzers.cpp 
clucene/src/core/CLucene/analysis/Analyzers.cpp
+--- clucene.orig/src/core/CLucene/analysis/Analyzers.cpp       2025-07-14 
21:22:25.560506427 +0100
++++ clucene/src/core/CLucene/analysis/Analyzers.cpp    2025-07-14 
21:22:35.955552591 +0100
+@@ -195,7 +195,7 @@
+ bool StopFilter::getEnablePositionIncrements() const { return 
enablePositionIncrements; }
+ void StopFilter::setEnablePositionIncrements(const bool enable) { 
this->enablePositionIncrements = enable; }
+ 
+-void StopFilter::fillStopTable(CLTCSetList* stopTable, const TCHAR** 
stopWords, const bool _ignoreCase)
++void StopFilter::fillStopTable(CLTCSetList* stopTable, const TCHAR* const* 
stopWords, const bool _ignoreCase)
+ {
+   TCHAR* tmp;
+       if ( _ignoreCase ){
+@@ -290,7 +290,7 @@
+     return streams->result;
+ }
+ 
+-const TCHAR* StopAnalyzer::ENGLISH_STOP_WORDS[]  = 
++const TCHAR* const StopAnalyzer::ENGLISH_STOP_WORDS[]  = 
+ {
+       _T("a"), _T("an"), _T("and"), _T("are"), _T("as"), _T("at"), _T("be"), 
_T("but"), _T("by"),
+       _T("for"), _T("if"), _T("in"), _T("into"), _T("is"), _T("it"),
+diff -ru clucene.orig/src/core/CLucene/analysis/Analyzers.h 
clucene/src/core/CLucene/analysis/Analyzers.h
+--- clucene.orig/src/core/CLucene/analysis/Analyzers.h 2025-07-14 
21:22:25.560506427 +0100
++++ clucene/src/core/CLucene/analysis/Analyzers.h      2025-07-14 
21:22:35.957413701 +0100
+@@ -160,7 +160,7 @@
+       * Note: the stopWords list must be a static list because the strings 
are not copied
+       */
+       static void fillStopTable(CLTCSetList* stopTable,
+-                                      const TCHAR** stopWords, const bool 
_ignoreCase = false);
++                                      const TCHAR* const* stopWords, const 
bool _ignoreCase = false);
+ 
+       /**
+       * Returns the next input Token whose termText() is not a stop word.
+@@ -262,7 +262,7 @@
+ 
+       /** An array containing some common English words that are not usually 
useful
+     for searching. */
+-    static const TCHAR* ENGLISH_STOP_WORDS[];
++    static const TCHAR* const ENGLISH_STOP_WORDS[];
+ };
+ 
+ 
 diff -ru clucene.orig/src/core/CLucene/index/IndexFileNames.cpp 
clucene/src/core/CLucene/index/IndexFileNames.cpp
---- clucene.orig/src/core/CLucene/index/IndexFileNames.cpp     2025-07-14 
10:02:13.796423188 +0100
-+++ clucene/src/core/CLucene/index/IndexFileNames.cpp  2025-07-14 
10:06:17.086614810 +0100
+--- clucene.orig/src/core/CLucene/index/IndexFileNames.cpp     2025-07-14 
21:22:25.582506524 +0100
++++ clucene/src/core/CLucene/index/IndexFileNames.cpp  2025-07-14 
21:22:30.824736167 +0100
 @@ -13,26 +13,26 @@
  
  CL_NS_DEF(index)
@@ -8594,9 +8636,54 @@ diff -ru 
clucene.orig/src/core/CLucene/index/IndexWriter.h clucene/src/core/CLuc
  
    /**
     * @deprecated
+diff -ru clucene.orig/src/core/CLucene/queryParser/QueryParserConstants.h 
clucene/src/core/CLucene/queryParser/QueryParserConstants.h
+--- clucene.orig/src/core/CLucene/queryParser/QueryParserConstants.h   
2025-07-14 21:22:25.584506533 +0100
++++ clucene/src/core/CLucene/queryParser/QueryParserConstants.h        
2025-07-14 21:22:35.958548353 +0100
+@@ -53,7 +53,7 @@
+               DEFAULT = 3
+       };
+ 
+-      static const TCHAR* tokenImage[];
++      static const TCHAR* const tokenImage[];
+ 
+ protected:
+       /**
+diff -ru clucene.orig/src/core/CLucene/queryParser/QueryParser.cpp 
clucene/src/core/CLucene/queryParser/QueryParser.cpp
+--- clucene.orig/src/core/CLucene/queryParser/QueryParser.cpp  2025-07-14 
21:22:25.587506546 +0100
++++ clucene/src/core/CLucene/queryParser/QueryParser.cpp       2025-07-14 
21:22:35.959114783 +0100
+@@ -43,7 +43,7 @@
+ 
+ CL_NS_DEF(queryParser)
+ 
+-const TCHAR* QueryParserConstants::tokenImage[] = {
++const TCHAR* const QueryParserConstants::tokenImage[] = {
+     _T("<EOF>"),
+     _T("<_NUM_CHAR>"),
+     _T("<_ESCAPED_CHAR>"),
+@@ -1440,7 +1440,7 @@
+ 
+ TCHAR* QueryParser::getParseExceptionMessage(QueryToken* currentToken,
+                        CL_NS(util)::CLVector< 
CL_NS(util)::ValueArray<int32_t>*, CL_NS(util)::Deletor::Object< 
CL_NS(util)::ValueArray<int32_t> > >* expectedTokenSequences,
+-                       const TCHAR* tokenImage[])
++                       const TCHAR* const tokenImage[])
+ {
+   // TODO: Check to see what's a realistic initial value for the buffers here
+   // TODO: Make eol configurable (will be useful for PrintStream 
implementation as well later)?
+diff -ru clucene.orig/src/core/CLucene/queryParser/QueryParser.h 
clucene/src/core/CLucene/queryParser/QueryParser.h
+--- clucene.orig/src/core/CLucene/queryParser/QueryParser.h    2025-07-14 
21:22:25.584506533 +0100
++++ clucene/src/core/CLucene/queryParser/QueryParser.h 2025-07-14 
21:22:35.960694453 +0100
+@@ -524,7 +524,7 @@
+   TCHAR* getParseExceptionMessage(QueryToken* currentToken,
+     CL_NS(util)::CLVector<  CL_NS(util)::ValueArray<int32_t>*,
+     CL_NS(util)::Deletor::Object< CL_NS(util)::ValueArray<int32_t> > >* 
expectedTokenSequences,
+-    const TCHAR* tokenImage[]);
++    const TCHAR* const tokenImage[]);
+ };
+ CL_NS_END
+ #endif
 diff -ru clucene.orig/src/core/CLucene/queryParser/QueryParserTokenManager.cpp 
clucene/src/core/CLucene/queryParser/QueryParserTokenManager.cpp
---- clucene.orig/src/core/CLucene/queryParser/QueryParserTokenManager.cpp      
2025-07-14 10:02:13.799247895 +0100
-+++ clucene/src/core/CLucene/queryParser/QueryParserTokenManager.cpp   
2025-07-14 10:04:22.134762172 +0100
+--- clucene.orig/src/core/CLucene/queryParser/QueryParserTokenManager.cpp      
2025-07-14 21:22:25.587506546 +0100
++++ clucene/src/core/CLucene/queryParser/QueryParserTokenManager.cpp   
2025-07-14 21:22:30.826276026 +0100
 @@ -23,12 +23,12 @@
                15, 17, 18, 29, 32, 23, 33, 30, 20, 21, 32, 23, 33, 31, 34, 27,
                2, 4, 5, 0, 1
commit b8af18100b8d09a035a3eb18ca439fdf12eced85
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Mon Jul 14 14:34:30 2025 +0100
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Tue Jul 15 09:45:12 2025 +0200

    ensure aSprms are sorted at compile time
    
    them it can be made constexpr
    
    Change-Id: If1e5368424f6fc4b63ec7cffee04c89a63f40837
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187877
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/sw/source/filter/ww8/sortedarray.hxx 
b/sw/source/filter/ww8/sortedarray.hxx
index 40affc5a413d..202d740b9f44 100644
--- a/sw/source/filter/ww8/sortedarray.hxx
+++ b/sw/source/filter/ww8/sortedarray.hxx
@@ -27,15 +27,12 @@
 
 namespace ww
 {
-    /** simple template that manages a static array
-
-        The template sorts the array at construction in place.
-    */
+    /** simple template that manages a static sorted array */
     template<class C> class SortedArray
     {
     private:
         //The array e.g. of sprms.
-        C *mpWwSprmTab;
+        const C *mpWwSprmTab;
         size_t mnNoElems;
 
         SortedArray(const SortedArray&) = delete;
@@ -44,7 +41,7 @@ namespace ww
         //Find an entry, return its address if found and 0 if not
         const C *search(C aSrch) const
         {
-            std::pair<C *, C *> aPair =
+            std::pair<const C*, const C*> aPair =
                 std::equal_range(mpWwSprmTab, mpWwSprmTab + mnNoElems, aSrch);
             if (aPair.first != aPair.second)
                 return aPair.first;
@@ -52,11 +49,10 @@ namespace ww
                 return nullptr;
         }
 
-        SortedArray(C *pWwSprmTab, size_t nNoElems)
+        SortedArray(const C *pWwSprmTab, size_t nNoElems)
             : mpWwSprmTab(pWwSprmTab), mnNoElems(nNoElems)
         {
-            OSL_ENSURE(mnNoElems && pWwSprmTab, "WW8: empty Array: Don't do 
that");
-            std::sort(mpWwSprmTab, mpWwSprmTab + mnNoElems);
+            assert(mnNoElems && pWwSprmTab && "WW8: empty Array: Don't do 
that");
         }
     };
 }
diff --git a/sw/source/filter/ww8/ww8par6.cxx b/sw/source/filter/ww8/ww8par6.cxx
index bf1c0698f9d9..960f62bf019d 100644
--- a/sw/source/filter/ww8/ww8par6.cxx
+++ b/sw/source/filter/ww8/ww8par6.cxx
@@ -5587,7 +5587,7 @@ struct SprmReadInfo
     FNReadRecord pReadFnc;
 };
 
-static bool operator<(const SprmReadInfo &rFirst, const SprmReadInfo &rSecond)
+static constexpr bool operator<(const SprmReadInfo &rFirst, const SprmReadInfo 
&rSecond)
 {
     return (rFirst.nId < rSecond.nId);
 }
@@ -5596,7 +5596,7 @@ typedef ww::SortedArray<SprmReadInfo> wwSprmDispatcher;
 
 static const wwSprmDispatcher *GetWW2SprmDispatcher()
 {
-    static SprmReadInfo aSprms[] =
+    static constexpr SprmReadInfo aSprms[] =
     {
           {0, nullptr},                              // "0" default resp. error
                                                      // will be skipped! ,
@@ -5746,13 +5746,15 @@ static const wwSprmDispatcher *GetWW2SprmDispatcher()
          {99, nullptr}                                     //"sprmPicBrcRight",
     };
 
-    static wwSprmDispatcher aSprmSrch(aSprms, SAL_N_ELEMENTS(aSprms));
+    static_assert(std::is_sorted(std::begin(aSprms), std::end(aSprms)));
+
+    static const wwSprmDispatcher aSprmSrch(aSprms, SAL_N_ELEMENTS(aSprms));
     return &aSprmSrch;
 }
 
 static const wwSprmDispatcher *GetWW6SprmDispatcher()
 {
-    static SprmReadInfo aSprms[] =
+    static constexpr SprmReadInfo aSprms[] =
     {
         {0,                                 nullptr},                          
   // "0" default resp. error
                                                                                
   // will be skipped!
@@ -5958,380 +5960,383 @@ static const wwSprmDispatcher *GetWW6SprmDispatcher()
         {207,                               nullptr},                          
   //dunno
     };
 
-    static wwSprmDispatcher aSprmSrch(aSprms, SAL_N_ELEMENTS(aSprms));
+    static_assert(std::is_sorted(std::begin(aSprms), std::end(aSprms)));
+
+    static const wwSprmDispatcher aSprmSrch(aSprms, SAL_N_ELEMENTS(aSprms));
     return &aSprmSrch;
 }
 
 static const wwSprmDispatcher *GetWW8SprmDispatcher()
 {
-    static SprmReadInfo aSprms[] =
+    static constexpr SprmReadInfo aSprms[] =
     {
-        {0,                              nullptr},                             
          // "0" default resp. error
-
-        {NS_sprm::PIstd::val,             &SwWW8ImplReader::Read_StyleCode},   
           // pap.istd;istd (style code);short;
-        {NS_sprm::PIstdPermute::val,      nullptr},                            
           // pap.istd;permutation vector;
-                                                                               
          // variable length;
-        {NS_sprm::PIncLvl::val,           nullptr},                            
           // pap.istd, pap.lvl;difference between
-                                                                               
          // istd of base PAP and istd of
-                                                                               
          // PAP to be produced;byte;
+        {0,                               nullptr},                            
           // "0" default resp. error
+        {NS_sprm::CFRMarkDel::val,        &SwWW8ImplReader::Read_CFRMarkDel},  
           // chp.fRMarkDel;1 or 0;bit;
+        {NS_sprm::CFRMarkIns::val,        &SwWW8ImplReader::Read_CFRMark},     
           // chp.fRMark;1 or 0;bit;
+        {NS_sprm::CFFldVanish::val,       &SwWW8ImplReader::Read_FieldVanish}, 
           // chp.fFieldVanish;1 or 0;bit;
+        {NS_sprm::CFData::val,            nullptr},                            
           // chp.fData;1 or 0;bit;
+        {NS_sprm::CFOle2::val,            &SwWW8ImplReader::Read_Obj},         
           // chp.fOle2;1 or 0;bit;
+        {NS_sprm::CFBold::val,            &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fBold;0,1, 128, or 129;byte;
+        {NS_sprm::CFItalic::val,          &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fItalic;0,1, 128, or 129; byte;
+        {NS_sprm::CFStrike::val,          &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fStrike;0,1, 128, or 129; byte;
+        {NS_sprm::CFOutline::val,         &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fOutline;0,1, 128, or 129; byte;
+        {NS_sprm::CFShadow::val,          &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fShadow;0,1, 128, or 129; byte;
+        {NS_sprm::CFSmallCaps::val,       &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fSmallCaps;0,1, 128, or 129;byte;
+        {NS_sprm::CFCaps::val,            &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fCaps;0,1, 128, or 129; byte;
+        {NS_sprm::CFVanish::val,          &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fVanish;0,1, 128, or 129; byte;
+        {NS_sprm::CFImprint::val,         &SwWW8ImplReader::Read_Relief},      
           // chp.fImprint;1 or 0;bit;
+        {NS_sprm::CFSpec::val,            &SwWW8ImplReader::Read_Special},     
           // chp.fSpec;1 or 0;bit;
+        {NS_sprm::CFObj::val,             &SwWW8ImplReader::Read_Obj},         
           // chp.fObj;1 or 0;bit;
+        {NS_sprm::CFEmboss::val,          &SwWW8ImplReader::Read_Relief},      
           // chp.fEmboss;1 or 0;bit;
+        {NS_sprm::CFBiDi::val,            &SwWW8ImplReader::Read_Bidi},
+        {NS_sprm::LN_CFDiacColor,         nullptr},
+        {NS_sprm::CFBoldBi::val,          &SwWW8ImplReader::Read_BoldBiDiUsw},
+        {NS_sprm::CFItalicBi::val,        &SwWW8ImplReader::Read_BoldBiDiUsw},
+        {NS_sprm::CFUsePgsuSettings::val, nullptr},                            
           // chp.fUsePgsuSettings; 1 or 0;bit;
+        {0x2205,                          nullptr},                            
           // ???? "sprmSDxaLeft" sep.dxaLeft;
         {NS_sprm::PJc80::val,             &SwWW8ImplReader::Read_Justify},     
           // pap.jc;jc (justification);byte;
-        {NS_sprm::LN_PFSideBySide,       nullptr},                             
          // pap.fSideBySide;0 or 1;byte;
+        {NS_sprm::LN_PFSideBySide,        nullptr},                            
           // pap.fSideBySide;0 or 1;byte;
         {NS_sprm::PFKeep::val,            &SwWW8ImplReader::Read_KeepLines},   
           // pap.fKeep;0 or 1;byte;
         {NS_sprm::PFKeepFollow::val,      &SwWW8ImplReader::Read_KeepParas},   
           // pap.fKeepFollow;0 or 1;byte;
         {NS_sprm::PFPageBreakBefore::val, &SwWW8ImplReader::Read_BreakBefore}, 
           // pap.fPageBreakBefore;0 or 1;byte;
-        {NS_sprm::LN_PBrcl,              nullptr},                             
          // pap.brcl;brcl;byte;
-        {NS_sprm::LN_PBrcp,              nullptr},                             
          // pap.brcp;brcp;byte;
-        {NS_sprm::PIlvl::val,             &SwWW8ImplReader::Read_ListLevel},   
           // pap.ilvl;ilvl;byte;
-        {NS_sprm::PIlfo::val,             &SwWW8ImplReader::Read_LFOPosition}, 
           // pap.ilfo;ilfo (list index);short;
+        {NS_sprm::LN_PBrcl,               nullptr},                            
           // pap.brcl;brcl;byte;
+        {NS_sprm::LN_PBrcp,               nullptr},                            
           // pap.brcp;brcp;byte;
         {NS_sprm::PFNoLineNumb::val,      &SwWW8ImplReader::Read_NoLineNumb},  
           // pap.fNoLnn;0 or 1;byte;
-        {NS_sprm::PChgTabsPapx::val,      &SwWW8ImplReader::Read_Tab},         
           // pap.itbdMac, pap.rgdxaTab, pap.rgtbd;
-                                                                               
          // complex;variable length
-        {NS_sprm::PDxaRight80::val,       &SwWW8ImplReader::Read_LR},          
           // pap.dxaRight;dxa;word;
-        {NS_sprm::PDxaLeft80::val,        &SwWW8ImplReader::Read_LR},          
           // pap.dxaLeft;dxa;word;
-        {NS_sprm::PNest80::val,           nullptr},                            
           // pap.dxaLeft;dxa;word;
-        {NS_sprm::PDxaLeft180::val,       &SwWW8ImplReader::Read_LR},          
           // pap.dxaLeft1;dxa;word;
-        {NS_sprm::PDyaLine::val,          &SwWW8ImplReader::Read_LineSpace},   
           // pap.lspd;an LSPD, a long word
-                                                                               
          // structure consisting of a short
-                                                                               
          // of dyaLine followed by a short
-                                                                               
          // of fMultLinespace;long;
-        {NS_sprm::PDyaBefore::val,        &SwWW8ImplReader::Read_UL},          
           // pap.dyaBefore;dya;word;
-        {NS_sprm::PDyaAfter::val,         &SwWW8ImplReader::Read_UL},          
           // pap.dyaAfter;dya;word;
-        {NS_sprm::PChgTabs::val,          &SwWW8ImplReader::Read_Tab},         
           // pap.itbdMac, pap.rgdxaTab, pap.rgtbd;
-                                                                               
          // complex;variable length;
         {NS_sprm::PFInTable::val,         nullptr},                            
           // pap.fInTable;0 or 1;byte;
         {NS_sprm::PFTtp::val,             &SwWW8ImplReader::Read_TabRowEnd},   
           // pap.fTtp;0 or 1;byte;
-        {NS_sprm::PDxaAbs::val,           nullptr},                            
           // pap.dxaAbs;dxa;word;
-        {NS_sprm::PDyaAbs::val,           nullptr},                            
           // pap.dyaAbs;dya;word;
-        {NS_sprm::PDxaWidth::val,         nullptr},                            
           // pap.dxaWidth;dxa;word;
-        {NS_sprm::PPc::val,               &SwWW8ImplReader::Read_ApoPPC},      
           // pap.pcHorz, pap.pcVert;complex;byte;
-        {NS_sprm::LN_PBrcTop10,          nullptr},                             
          // pap.brcTop;BRC10;word;
-        {NS_sprm::LN_PBrcLeft10,         nullptr},                             
          // pap.brcLeft;BRC10;word;
-        {NS_sprm::LN_PBrcBottom10,       nullptr},                             
          // pap.brcBottom;BRC10;word;
-        {NS_sprm::LN_PBrcRight10,        nullptr},                             
          // pap.brcRight;BRC10;word;
-        {NS_sprm::LN_PBrcBetween10,      nullptr},                             
          // pap.brcBetween;BRC10;word;
-        {NS_sprm::LN_PBrcBar10,          nullptr},                             
          // pap.brcBar;BRC10;word;
-        {NS_sprm::LN_PDxaFromText10,     nullptr},                             
          // pap.dxaFromText;dxa;word;
         {NS_sprm::PWr::val,               nullptr},                            
           // pap.wr;wr;byte;
-        {NS_sprm::PBrcTop80::val,         &SwWW8ImplReader::Read_Border},      
           // pap.brcTop;BRC;long;
-        {NS_sprm::PBrcLeft80::val,        &SwWW8ImplReader::Read_Border},      
           // pap.brcLeft;BRC;long;
-        {NS_sprm::PBrcBottom80::val,      &SwWW8ImplReader::Read_Border},      
           // pap.brcBottom;BRC;long;
-        {NS_sprm::PBrcRight80::val,       &SwWW8ImplReader::Read_Border},      
           // pap.brcRight;BRC;long;
-        {NS_sprm::PBrcBetween80::val,     &SwWW8ImplReader::Read_Border},      
           // pap.brcBetween;BRC;long;
-        {NS_sprm::PBrcBar80::val,         nullptr},                            
           // pap.brcBar;BRC;long;
         {NS_sprm::PFNoAutoHyph::val,      &SwWW8ImplReader::Read_Hyphenation}, 
           // pap.fNoAutoHyph;0 or 1;byte;
-        {NS_sprm::PWHeightAbs::val,       nullptr},                            
           // pap.wHeightAbs;w;word;
-        {NS_sprm::PDcs::val,              nullptr},                            
           // pap.dcs;DCS;short;
-        {NS_sprm::PShd80::val,            &SwWW8ImplReader::Read_Shade},       
           // pap.shd;SHD;word;
-        {NS_sprm::PDyaFromText::val,      nullptr},                            
           // pap.dyaFromText;dya;word;
-        {NS_sprm::PDxaFromText::val,      nullptr},                            
           // pap.dxaFromText;dxa;word;
         {NS_sprm::PFLocked::val,          nullptr},                            
           // pap.fLocked;0 or 1;byte;
         {NS_sprm::PFWidowControl::val,    
&SwWW8ImplReader::Read_WidowControl},           // pap.fWidowControl;0 or 1;byte
-        {NS_sprm::LN_PRuler,             nullptr},                             
          // variable length;
         {NS_sprm::PFKinsoku::val,         &SwWW8ImplReader::Read_BoolItem},    
           // pap.fKinsoku;0 or 1;byte;
         {NS_sprm::PFWordWrap::val,        nullptr},                            
           // pap.fWordWrap;0 or 1;byte;
         {NS_sprm::PFOverflowPunct::val,   &SwWW8ImplReader::Read_BoolItem},    
           // pap.fOverflowPunct; 0 or 1;byte;
         {NS_sprm::PFTopLinePunct::val,    nullptr},                            
           // pap.fTopLinePunct;0 or 1;byte
         {NS_sprm::PFAutoSpaceDE::val,     &SwWW8ImplReader::Read_BoolItem},    
           // pap.fAutoSpaceDE;0 or 1;byte;
         {NS_sprm::PFAutoSpaceDN::val,     nullptr},                            
           // pap.fAutoSpaceDN;0 or 1;byte;
-        {NS_sprm::PWAlignFont::val,       &SwWW8ImplReader::Read_AlignFont},   
           // pap.wAlignFont;iFa;word;
-        {NS_sprm::PFrameTextFlow::val,    nullptr},                            
           // pap.fVertical pap.fBackward
-                                                                               
          // pap.fRotateFont;complex; word
-        {NS_sprm::LN_PISnapBaseLine,     nullptr},                             
          // obsolete, not applicable in
+        {NS_sprm::LN_PISnapBaseLine,      nullptr},                            
           // obsolete, not applicable in
                                                                                
          // Word97 and later versions;;byte;
-        {NS_sprm::LN_PAnld,              &SwWW8ImplReader::Read_ANLevelDesc},  
          // pap.anld;;variable length;
-        {NS_sprm::LN_PPropRMark,         nullptr},                             
          // pap.fPropRMark;complex;
-                                                                               
          // variable length;
-        {NS_sprm::POutLvl::val,           &SwWW8ImplReader::Read_POutLvl},     
           // pap.lvl;has no effect if pap.istd
-                                                                               
          // is < 1 or is > 9;byte;
         {NS_sprm::PFBiDi::val,            &SwWW8ImplReader::Read_ParaBiDi},    
           // ;;byte;
         {NS_sprm::PFNumRMIns::val,        nullptr},                            
           // pap.fNumRMIns;1 or 0;bit;
-        {NS_sprm::LN_PCrLf,              nullptr},                             
          // ;;byte;
-        {NS_sprm::PNumRM::val,            nullptr},                            
           // pap.numrm;;variable length;
-        {NS_sprm::LN_PHugePapx,          nullptr},                             
          // ;fc in the data stream to locate
-                                                                               
          // the huge grpprl;long;
-        {NS_sprm::PHugePapx::val,         nullptr},                            
           // ;fc in the data stream to locate
-                                                                               
          // the huge grpprl;long;
+        {NS_sprm::LN_PCrLf,               nullptr},                            
           // ;;byte;
         {NS_sprm::PFUsePgsuSettings::val, 
&SwWW8ImplReader::Read_UsePgsuSettings},        // pap.fUsePgsuSettings;1 or 
0;byte;
         {NS_sprm::PFAdjustRight::val,     nullptr},                            
           // pap.fAdjustRight;1 or 0;byte;
-        {NS_sprm::CFRMarkDel::val,        &SwWW8ImplReader::Read_CFRMarkDel},  
           // chp.fRMarkDel;1 or 0;bit;
-        {NS_sprm::CFRMarkIns::val,        &SwWW8ImplReader::Read_CFRMark},     
           // chp.fRMark;1 or 0;bit;
-        {NS_sprm::CFFldVanish::val,       &SwWW8ImplReader::Read_FieldVanish}, 
           // chp.fFieldVanish;1 or 0;bit;
-        {NS_sprm::CPicLocation::val,      &SwWW8ImplReader::Read_PicLoc},      
           // chp.fcPic and chp.fSpec;variable
-                                                                               
          // length, length recorded is always 4;
-        {NS_sprm::CIbstRMark::val,        nullptr},                            
           // chp.ibstRMark;index into
-                                                                               
          // sttbRMark;short;
-        {NS_sprm::CDttmRMark::val,        nullptr},                            
           // chp.dttmRMark;DTTM;long;
-        {NS_sprm::CFData::val,            nullptr},                            
           // chp.fData;1 or 0;bit;
-        {NS_sprm::CIdslRMark::val,        nullptr},                            
           // chp.idslRMReason;an index to
-                                                                               
          // a table of strings defined in
-                                                                               
          // Word 6.0 executables;short;
-        {NS_sprm::LN_CChs,               &SwWW8ImplReader::Read_CharSet},      
          // chp.fChsDiff and chp.chse;3 bytes;
-        {NS_sprm::CSymbol::val,           &SwWW8ImplReader::Read_Symbol},      
           // chp.fSpec, chp.xchSym and chp.ftcSym;
-                                                                               
          // variable length, length
-                                                                               
          // recorded is always 4;
-        {NS_sprm::CFOle2::val,            &SwWW8ImplReader::Read_Obj},         
           // chp.fOle2;1 or 0;bit;
-      //NS_sprm::LN_CIdCharType,                                               
          // obsolete: not applicable in Word97
-                                                                               
          // and later versions
+        {NS_sprm::PFInnerTableCell::val,  &SwWW8ImplReader::Read_TabCellEnd},
+        {NS_sprm::PFInnerTtp::val,        &SwWW8ImplReader::Read_TabRowEnd},
+        {NS_sprm::PFDyaBeforeAuto::val,   
&SwWW8ImplReader::Read_ParaAutoBefore},
+        {NS_sprm::PFDyaAfterAuto::val,    
&SwWW8ImplReader::Read_ParaAutoAfter},
+        {NS_sprm::PJc::val,               &SwWW8ImplReader::Read_RTLJustify},
+        {NS_sprm::PFContextualSpacing::val, 
&SwWW8ImplReader::Read_ParaContextualSpacing},
+        {NS_sprm::PIncLvl::val,           nullptr},                            
           // pap.istd, pap.lvl;difference between
+                                                                               
          // istd of base PAP and istd of
+                                                                               
          // PAP to be produced;byte;
+        {NS_sprm::PIlvl::val,             &SwWW8ImplReader::Read_ListLevel},   
           // pap.ilvl;ilvl;byte;
+        {NS_sprm::PPc::val,               &SwWW8ImplReader::Read_ApoPPC},      
           // pap.pcHorz, pap.pcVert;complex;byte;
+        {NS_sprm::POutLvl::val,           &SwWW8ImplReader::Read_POutLvl},     
           // pap.lvl;has no effect if pap.istd
+                                                                               
          // is < 1 or is > 9;byte;
+        {NS_sprm::CSfxText::val,          &SwWW8ImplReader::Read_TextAnim},    
           // chp.sfxtText;text animation;byte;
+        {NS_sprm::CIdctHint::val,         &SwWW8ImplReader::Read_IdctHint},    
           // chp.idctHint;IDCT: byte;
+        {NS_sprm::CLbcCRJ::val,           
&SwWW8ImplReader::Read_LineBreakClear},
         {NS_sprm::CHighlight::val,        
&SwWW8ImplReader::Read_CharHighlight},          // chp.fHighlight, 
chp.icoHighlight;ico
                                                                                
          // (fHighlight is set to 1 iff
                                                                                
          // ico is not 0);byte;
-        {NS_sprm::LN_CObjLocation,       &SwWW8ImplReader::Read_PicLoc},       
          // chp.fcObj;FC;long;
       //NS_sprm::LN_CFFtcAsciSymb, ? ? ?,
-        {NS_sprm::CIstd::val,             &SwWW8ImplReader::Read_CColl},       
           // chp.istd;istd,short;
-        {NS_sprm::CIstdPermute::val,      nullptr},                            
           // chp.istd;permutation vector;
-                                                                               
          // variable length;
-        {NS_sprm::LN_CDefault,           nullptr},                             
          // whole CHP;none;variable length;
+        {NS_sprm::LN_CDefault,            nullptr},                            
           // whole CHP;none;variable length;
         {NS_sprm::CPlain::val,            nullptr},                            
           // whole CHP;none;length: 0;
         {NS_sprm::CKcd::val,              &SwWW8ImplReader::Read_Emphasis},
-        {NS_sprm::CFBold::val,            &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fBold;0,1, 128, or 129;byte;
-        {NS_sprm::CFItalic::val,          &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fItalic;0,1, 128, or 129; byte;
-        {NS_sprm::CFStrike::val,          &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fStrike;0,1, 128, or 129; byte;
-        {NS_sprm::CFOutline::val,         &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fOutline;0,1, 128, or 129; byte;
-        {NS_sprm::CFShadow::val,          &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fShadow;0,1, 128, or 129; byte;
-        {NS_sprm::CFSmallCaps::val,       &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fSmallCaps;0,1, 128, or 129;byte;
-        {NS_sprm::CFCaps::val,            &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fCaps;0,1, 128, or 129; byte;
-        {NS_sprm::CFVanish::val,          &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fVanish;0,1, 128, or 129; byte;
-      //NS_sprm::LN_CFtcDefault, 0,                                            
          // ftc, only used internally, never
-                                                                               
          // stored in file;word;
         {NS_sprm::CKul::val,              &SwWW8ImplReader::Read_Underline},   
           // chp.kul;kul;byte;
-        {NS_sprm::LN_CSizePos,           nullptr},                             
          // chp.hps, chp.hpsPos;3 bytes;
-        {NS_sprm::CDxaSpace::val,         &SwWW8ImplReader::Read_Kern},        
           // chp.dxaSpace;dxa;word;
-        {NS_sprm::LN_CLid,               &SwWW8ImplReader::Read_Language},     
          // ;only used internally, never stored;
-                                                                               
          // word;
         {NS_sprm::CIco::val,              &SwWW8ImplReader::Read_TextColor},   
           // chp.ico;ico;byte;
-        {NS_sprm::CHps::val,              &SwWW8ImplReader::Read_FontSize},    
           // chp.hps;hps;byte;
-        {NS_sprm::LN_CHpsInc,            nullptr},                             
          // chp.hps;byte;
-        {NS_sprm::CHpsPos::val,           
&SwWW8ImplReader::Read_SubSuperProp},           // chp.hpsPos;hps;byte;
-        {NS_sprm::LN_CHpsPosAdj,         nullptr},                             
          // chp.hpsPos;hps;byte;
-        {NS_sprm::CMajority::val,         &SwWW8ImplReader::Read_Majority},    
           // chp.fBold, chp.fItalic, chp.fStrike,
-                                                                               
          // chp.fSmallCaps, chp.fVanish, chp.fCaps,
-                                                                               
          // chp.hps, chp.hpsPos, chp.dxaSpace,
-                                                                               
          // chp.kul, chp.ico, chp.rgftc, chp.rglid;
-                                                                               
          // complex;variable length, length byte
-                                                                               
          // plus size of following grpprl;
+        {NS_sprm::LN_CHpsInc,             nullptr},                            
           // chp.hps;byte;
+        {NS_sprm::LN_CHpsPosAdj,          nullptr},                            
           // chp.hpsPos;hps;byte;
         {NS_sprm::CIss::val,              &SwWW8ImplReader::Read_SubSuper},    
           // chp.iss;iss;byte;
-        {NS_sprm::LN_CHpsNew50,          nullptr},                             
          // chp.hps;hps;variable width, length
-                                                                               
          // always recorded as 2;
-        {NS_sprm::LN_CHpsInc1,           nullptr},                             
          // chp.hps;complex; variable width,
-                                                                               
          // length always recorded as 2;
+        {NS_sprm::CFDStrike::val,         &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fDStrike;;byte;
+        {NS_sprm::LN_PicBrcl,             nullptr},                            
           // pic.brcl;brcl (see PIC structure
+                                                                               
          // definition);byte;
+        {NS_sprm::ScnsPgn::val,           nullptr},                            
           // sep.cnsPgn;cns;byte;
+        {NS_sprm::SiHeadingPgn::val,      nullptr},                            
           // sep.iHeadingPgn;heading number level;
+                                                                               
          // byte;
+        {NS_sprm::SFEvenlySpaced::val,    nullptr},                            
           // sep.fEvenlySpaced; 1 or 0;byte;
+        {NS_sprm::SFProtected::val,       nullptr},                            
           // sep.fUnlocked;1 or 0;byte;
+        {NS_sprm::SFProtected::val,       nullptr},                            
           // sep.fUnlocked;1 or 0;byte;
+        {NS_sprm::SBkc::val,              nullptr},                            
           // sep.bkc;bkc;byte;
+        {NS_sprm::SFTitlePage::val,       nullptr},                            
           // sep.fTitlePage;0 or 1;byte;
+        {NS_sprm::LN_SFAutoPgn,           nullptr},                            
           // sep.fAutoPgn;obsolete;byte;
+        {NS_sprm::SNfcPgn::val,           nullptr},                            
           // sep.nfcPgn;nfc;byte;
+        {NS_sprm::SFPgnRestart::val,      nullptr},                            
           // sep.fPgnRestart;0 or 1;byte;
+        {NS_sprm::SFEndnote::val,         nullptr},                            
           // sep.fEndnote;0 or 1;byte;
+        {NS_sprm::SLnc::val,              nullptr},                            
           // sep.lnc;lnc;byte;
+        {NS_sprm::LN_SGprfIhdt,           nullptr},                            
           // sep.grpfIhdt;grpfihdt;byte;
+        {NS_sprm::SLBetween::val,         nullptr},                            
           // sep.fLBetween;0 or 1;byte;
+        {NS_sprm::SVjc::val,              
&SwWW8ImplReader::Read_TextVerticalAdjustment}, // sep.vjc;vjc;byte;
+        {NS_sprm::SBOrientation::val,     nullptr},                            
           // sep.dmOrientPage;dm;byte;
+      //NS_sprm::LN_SBCustomize, ? ? ?,
+        {NS_sprm::SFpc::val,              nullptr},
+        {NS_sprm::SRncFtn::val,           nullptr},
+      //NS_sprm::SFBiDi::val, ? ? ?,
+      //NS_sprm::LN_SFFacingCol, ? ? ?,
+        {NS_sprm::SFRTLGutter::val,       nullptr},                            
           // set to 1 if gutter is on the right.
+        {NS_sprm::TFCantSplit90::val,     nullptr},                            
           // tap.fCantSplit90;1 or 0;byte;
+        {NS_sprm::TTableHeader::val,      nullptr},                            
           // tap.fTableHeader;1 or 0;byte;
+        {NS_sprm::TFCantSplit::val,       nullptr},                            
           // tap.fCantSplit;1 or 0;byte;
+        {NS_sprm::TPc::val,               nullptr},
+        {NS_sprm::TFAutofit::val,         nullptr},
+        {NS_sprm::PWHeightAbs::val,       nullptr},                            
           // pap.wHeightAbs;w;word;
+        {NS_sprm::PDcs::val,              nullptr},                            
           // pap.dcs;DCS;short;
+        {NS_sprm::PShd80::val,            &SwWW8ImplReader::Read_Shade},       
           // pap.shd;SHD;word;
+        {NS_sprm::PWAlignFont::val,       &SwWW8ImplReader::Read_AlignFont},   
           // pap.wAlignFont;iFa;word;
+        {NS_sprm::PFrameTextFlow::val,    nullptr},                            
           // pap.fVertical pap.fBackward
+                                                                               
          // pap.fRotateFont;complex; word
+        {NS_sprm::PDxcRight::val,         &SwWW8ImplReader::Read_LR},
+        {NS_sprm::PDxcLeft::val,          &SwWW8ImplReader::Read_LR},
+        {NS_sprm::PDxcLeft1::val,         &SwWW8ImplReader::Read_LR},
+        {NS_sprm::PIstd::val,             &SwWW8ImplReader::Read_StyleCode},   
           // pap.istd;istd (style code);short;
+        {NS_sprm::PIlfo::val,             &SwWW8ImplReader::Read_LFOPosition}, 
           // pap.ilfo;ilfo (list index);short;
+        {NS_sprm::PNest80::val,           nullptr},                            
           // pap.dxaLeft;dxa;word;
+        {NS_sprm::LN_PBrcTop10,           nullptr},                            
           // pap.brcTop;BRC10;word;
+        {NS_sprm::LN_PBrcLeft10,          nullptr},                            
           // pap.brcLeft;BRC10;word;
+        {NS_sprm::LN_PBrcBottom10,        nullptr},                            
           // pap.brcBottom;BRC10;word;
+        {NS_sprm::LN_PBrcRight10,         nullptr},                            
           // pap.brcRight;BRC10;word;
+        {NS_sprm::LN_PBrcBetween10,       nullptr},                            
           // pap.brcBetween;BRC10;word;
+        {NS_sprm::LN_PBrcBar10,           nullptr},                            
           // pap.brcBar;BRC10;word;
+        {NS_sprm::LN_PDxaFromText10,      nullptr},                            
           // pap.dxaFromText;dxa;word;
+        {NS_sprm::CIbstRMark::val,        nullptr},                            
           // chp.ibstRMark;index into
+                                                                               
          // sttbRMark;short;
+        {NS_sprm::CIdslRMark::val,        nullptr},                            
           // chp.idslRMReason;an index to
+                                                                               
          // a table of strings defined in
+                                                                               
          // Word 6.0 executables;short;
+      //NS_sprm::LN_CIdCharType,                                               
          // obsolete: not applicable in Word97
+                                                                               
          // and later versions
+        {NS_sprm::CHpsPos::val,           
&SwWW8ImplReader::Read_SubSuperProp},           // chp.hpsPos;hps;byte;
         {NS_sprm::CHpsKern::val,          &SwWW8ImplReader::Read_FontKern},    
           // chp.hpsKern;hps;short;
-        {NS_sprm::LN_CMajority50,        &SwWW8ImplReader::Read_Majority},     
          // chp.fBold, chp.fItalic, chp.fStrike,
-                                                                               
          // chp.fSmallCaps, chp.fVanish, chp.fCaps,
-                                                                               
          // chp.ftc, chp.hps, chp.hpsPos, chp.kul,
-                                                                               
          // chp.dxaSpace, chp.ico;complex;
-                                                                               
          // variable length;
-        {NS_sprm::LN_CHpsMul,            nullptr},                             
          // chp.hps;percentage to grow hps;short;
         {NS_sprm::CHresi::val,            nullptr},                            
           // ???? "sprmCYsri" chp.ysri;ysri;short;
-        {NS_sprm::CRgFtc0::val,           &SwWW8ImplReader::Read_FontCode},    
           // chp.rgftc[0];ftc for ASCII text;short;
-        {NS_sprm::CRgFtc1::val,           &SwWW8ImplReader::Read_FontCode},    
           // chp.rgftc[1];ftc for Far East text;
-                                                                               
          // short;
-        {NS_sprm::CRgFtc2::val,           &SwWW8ImplReader::Read_FontCode},    
           // chp.rgftc[2];ftc for non-Far East text;
-                                                                               
          // short;
         {NS_sprm::CCharScale::val,        &SwWW8ImplReader::Read_ScaleWidth},
-        {NS_sprm::CFDStrike::val,         &SwWW8ImplReader::Read_BoldUsw},     
           // chp.fDStrike;;byte;
-        {NS_sprm::CFImprint::val,         &SwWW8ImplReader::Read_Relief},      
           // chp.fImprint;1 or 0;bit;
-        {NS_sprm::CFSpec::val,            &SwWW8ImplReader::Read_Special},     
           // chp.fSpec;1 or 0;bit;
-        {NS_sprm::CFObj::val,             &SwWW8ImplReader::Read_Obj},         
           // chp.fObj;1 or 0;bit;
-        {NS_sprm::CPropRMark90::val,      &SwWW8ImplReader::Read_CPropRMark},  
           // chp.fPropRMark, chp.ibstPropRMark,
-                                                                               
          // chp.dttmPropRMark;Complex;variable
-                                                                               
          // length always recorded as 7 bytes;
-        {NS_sprm::CFEmboss::val,          &SwWW8ImplReader::Read_Relief},      
           // chp.fEmboss;1 or 0;bit;
-        {NS_sprm::CSfxText::val,          &SwWW8ImplReader::Read_TextAnim},    
           // chp.sfxtText;text animation;byte;
-        {NS_sprm::CFBiDi::val,            &SwWW8ImplReader::Read_Bidi},
-        {NS_sprm::LN_CFDiacColor,        nullptr},
-        {NS_sprm::CFBoldBi::val,          &SwWW8ImplReader::Read_BoldBiDiUsw},
-        {NS_sprm::CFItalicBi::val,        &SwWW8ImplReader::Read_BoldBiDiUsw},
-        {NS_sprm::CFtcBi::val,            &SwWW8ImplReader::Read_FontCode},
         {NS_sprm::CLidBi::val,            &SwWW8ImplReader::Read_Language},
-      //NS_sprm::CIcoBi::val, ? ? ?,
-        {NS_sprm::CHpsBi::val,            &SwWW8ImplReader::Read_FontSize},
-        {NS_sprm::CDispFldRMark::val,     nullptr},                            
           // chp.fDispFieldRMark,
-                                                                               
          // chp.ibstDispFieldRMark,
-                                                                               
          // chp.dttmDispFieldRMark;
-                                                                               
          // Complex;variable length
-                                                                               
          // always recorded as 39 bytes;
         {NS_sprm::CIbstRMarkDel::val,     nullptr},                            
           // chp.ibstRMarkDel;index into
                                                                                
          // sttbRMark;short;
-        {NS_sprm::CDttmRMarkDel::val,     nullptr},                            
           // chp.dttmRMarkDel;DTTM;long;
-        {NS_sprm::CBrc80::val,            &SwWW8ImplReader::Read_CharBorder},  
           // chp.brc;BRC;long;
-        {NS_sprm::CBrc::val,              &SwWW8ImplReader::Read_CharBorder},  
           // chp.brc;BRC;long;
         {NS_sprm::CShd80::val,            &SwWW8ImplReader::Read_CharShadow},  
           // chp.shd;SHD;short;
         {NS_sprm::CIdslRMarkDel::val,     nullptr},                            
           // chp.idslRMReasonDel;an index to
                                                                                
          // a table of strings defined in
                                                                                
          // Word 6.0 executables;short;
-        {NS_sprm::CFUsePgsuSettings::val, nullptr},                            
           // chp.fUsePgsuSettings; 1 or 0;bit;
-        {NS_sprm::LN_CCpg,               nullptr},                             
          // ;;word;
+        {NS_sprm::LN_CCpg,                nullptr},                            
           // ;;word;
         {NS_sprm::CRgLid0_80::val,        &SwWW8ImplReader::Read_Language},    
           // chp.rglid[0];
                                                                                
          // LID: for non-Far East text;word;
         {NS_sprm::CRgLid1_80::val,        &SwWW8ImplReader::Read_Language},    
           // chp.rglid[1];
                                                                                
          // LID: for Far East text;word;
-        {NS_sprm::CIdctHint::val,         &SwWW8ImplReader::Read_IdctHint},    
           // chp.idctHint;IDCT: byte;
-        {NS_sprm::LN_PicBrcl,            nullptr},                             
          // pic.brcl;brcl (see PIC structure
-                                                                               
          // definition);byte;
-        {NS_sprm::LN_PicScale,           nullptr},                             
          // pic.mx, pic.my, pic.dxaCropleft,
-                                                                               
          // pic.dyaCropTop pic.dxaCropRight,
-                                                                               
          // pic.dyaCropBottom;Complex;
-                                                                               
          // length byte plus 12 bytes;
-        {NS_sprm::PicBrcTop80::val,       nullptr},                            
           // pic.brcTop;BRC;long;
-        {NS_sprm::PicBrcLeft80::val,      nullptr},                            
           // pic.brcLeft;BRC;long;
-        {NS_sprm::PicBrcBottom80::val,    nullptr},                            
           // pic.brcBottom;BRC;long;
-        {NS_sprm::PicBrcRight80::val,     nullptr},                            
           // pic.brcRight;BRC;long;
-        {NS_sprm::ScnsPgn::val,           nullptr},                            
           // sep.cnsPgn;cns;byte;
-        {NS_sprm::SiHeadingPgn::val,      nullptr},                            
           // sep.iHeadingPgn;heading number level;
-                                                                               
          // byte;
-        {NS_sprm::LN_SOlstAnm,           &SwWW8ImplReader::Read_OLST},         
          // sep.olstAnm;OLST;variable length;
-        {NS_sprm::SDxaColWidth::val,      nullptr},                            
           // sep.rgdxaColWidthSpacing;complex;
-                                                                               
          // 3 bytes;
-        {NS_sprm::SDxaColSpacing::val,    nullptr},                            
           // sep.rgdxaColWidthSpacing;complex;
-                                                                               
          // 3 bytes;
-        {NS_sprm::SFEvenlySpaced::val,    nullptr},                            
           // sep.fEvenlySpaced; 1 or 0;byte;
-        {NS_sprm::SFProtected::val,       nullptr},                            
           // sep.fUnlocked;1 or 0;byte;
+        {NS_sprm::CRgLid0::val,           &SwWW8ImplReader::Read_Language},    
           // chp.rglid[0];
+                                                                               
          // LID: for non-Far East text;
+        {NS_sprm::CRgLid1::val,           nullptr},                            
           // chp.rglid[1];
+                                                                               
          // LID: for Far East text
+        {NS_sprm::CIstd::val,             &SwWW8ImplReader::Read_CColl},       
           // chp.istd;istd,short;
+      //NS_sprm::LN_CFtcDefault, 0,                                            
          // ftc, only used internally, never
+                                                                               
          // stored in file;word;
+        {NS_sprm::LN_CLid,                &SwWW8ImplReader::Read_Language},    
           // ;only used internally, never stored;
+                                                                               
          // word;
+        {NS_sprm::CHps::val,              &SwWW8ImplReader::Read_FontSize},    
           // chp.hps;hps;byte;
+        {NS_sprm::LN_CHpsMul,             nullptr},                            
           // chp.hps;percentage to grow hps;short;
+        {NS_sprm::CRgFtc0::val,           &SwWW8ImplReader::Read_FontCode},    
           // chp.rgftc[0];ftc for ASCII text;short;
+        {NS_sprm::CRgFtc1::val,           &SwWW8ImplReader::Read_FontCode},    
           // chp.rgftc[1];ftc for Far East text;
+                                                                               
          // short;
+        {NS_sprm::CRgFtc2::val,           &SwWW8ImplReader::Read_FontCode},    
           // chp.rgftc[2];ftc for non-Far East text;
+                                                                               
          // short;
+        {NS_sprm::CFtcBi::val,            &SwWW8ImplReader::Read_FontCode},
+      //NS_sprm::CIcoBi::val, ? ? ?,
+        {NS_sprm::CHpsBi::val,            &SwWW8ImplReader::Read_FontSize},
         {NS_sprm::SDmBinFirst::val,       nullptr},                            
           // sep.dmBinFirst;;word;
         {NS_sprm::SDmBinOther::val,       nullptr},                            
           // sep.dmBinOther;;word;
-        {NS_sprm::SBkc::val,              nullptr},                            
           // sep.bkc;bkc;byte;
-        {NS_sprm::SFTitlePage::val,       nullptr},                            
           // sep.fTitlePage;0 or 1;byte;
         {NS_sprm::SCcolumns::val,         nullptr},                            
           // sep.ccolM1;# of cols - 1;word;
-        {NS_sprm::SDxaColumns::val,       nullptr},                            
           // sep.dxaColumns;dxa;word;
-        {NS_sprm::LN_SFAutoPgn,          nullptr},                             
          // sep.fAutoPgn;obsolete;byte;
-        {NS_sprm::SNfcPgn::val,           nullptr},                            
           // sep.nfcPgn;nfc;byte;
-        {NS_sprm::LN_SDyaPgn,            nullptr},                             
          // sep.dyaPgn;dya;short;
-        {NS_sprm::LN_SDxaPgn,            nullptr},                             
          // sep.dxaPgn;dya;short;
-        {NS_sprm::SFPgnRestart::val,      nullptr},                            
           // sep.fPgnRestart;0 or 1;byte;
-        {NS_sprm::SFEndnote::val,         nullptr},                            
           // sep.fEndnote;0 or 1;byte;
-        {NS_sprm::SLnc::val,              nullptr},                            
           // sep.lnc;lnc;byte;
-        {NS_sprm::LN_SGprfIhdt,          nullptr},                             
          // sep.grpfIhdt;grpfihdt;byte;
         {NS_sprm::SNLnnMod::val,          nullptr},                            
           // sep.nLnnMod;non-neg int.;word;
-        {NS_sprm::SDxaLnn::val,           nullptr},                            
           // sep.dxaLnn;dxa;word;
-        {NS_sprm::SDyaHdrTop::val,        nullptr},                            
           // sep.dyaHdrTop;dya;word;
-        {NS_sprm::SDyaHdrBottom::val,     nullptr},                            
           // sep.dyaHdrBottom;dya;word;
-        {NS_sprm::SLBetween::val,         nullptr},                            
           // sep.fLBetween;0 or 1;byte;
-        {NS_sprm::SVjc::val,              
&SwWW8ImplReader::Read_TextVerticalAdjustment}, // sep.vjc;vjc;byte;
         {NS_sprm::SLnnMin::val,           nullptr},                            
           // sep.lnnMin;lnn;word;
         {NS_sprm::SPgnStart97::val,       nullptr},                            
           // sep.pgnStart;pgn;word;
-        {NS_sprm::SBOrientation::val,     nullptr},                            
           // sep.dmOrientPage;dm;byte;
-      //NS_sprm::LN_SBCustomize, ? ? ?,
-        {NS_sprm::SXaPage::val,           nullptr},                            
           // sep.xaPage;xa;word;
-        {NS_sprm::SYaPage::val,           nullptr},                            
           // sep.yaPage;ya;word;
-        {0x2205,                         nullptr},                             
          // ???? "sprmSDxaLeft" sep.dxaLeft;
-                                                                               
          // dxa;word;
-        {NS_sprm::SDxaLeft::val,          nullptr},                            
           // sep.dxaLeft;dxa;word;
-        {NS_sprm::SDxaRight::val,         nullptr},                            
           // sep.dxaRight;dxa;word;
-        {NS_sprm::SDyaTop::val,           nullptr},                            
           // sep.dyaTop;dya;word;
-        {NS_sprm::SDyaBottom::val,        nullptr},                            
           // sep.dyaBottom;dya;word;
-        {NS_sprm::SDzaGutter::val,        nullptr},                            
           // sep.dzaGutter;dza;word;
         {NS_sprm::SDmPaperReq::val,       nullptr},                            
           // sep.dmPaperReq;dm;word;
-        {NS_sprm::LN_SPropRMark,         nullptr},                             
          // sep.fPropRMark, sep.ibstPropRMark,
-                                                                               
          // sep.dttmPropRMark;complex; variable
-                                                                               
          // length always recorded as 7 bytes;
-      //NS_sprm::SFBiDi::val, ? ? ?,
-      //NS_sprm::LN_SFFacingCol, ? ? ?,
-        {NS_sprm::SFRTLGutter::val,       nullptr},                            
           // set to 1 if gutter is on the right.
-        {NS_sprm::SBrcTop80::val,         nullptr},                            
           // sep.brcTop;BRC;long;
-        {NS_sprm::SBrcLeft80::val,        nullptr},                            
           // sep.brcLeft;BRC;long;
-        {NS_sprm::SBrcBottom80::val,      nullptr},                            
           // sep.brcBottom;BRC;long;
-        {NS_sprm::SBrcRight80::val,       nullptr},                            
           // sep.brcRight;BRC;long;
-        {NS_sprm::SPgbProp::val,          nullptr},                            
           // sep.pgbProp;word;
-        {NS_sprm::SDxtCharSpace::val,     nullptr},                            
           // sep.dxtCharSpace;dxt;long;
-        {NS_sprm::SDyaLinePitch::val,     nullptr},                            
           // sep.dyaLinePitch;dya;
-                                                                               
          // WRONG:long; RIGHT:short; !
       //NS_sprm::SClm::val, ? ? ?,
         {NS_sprm::STextFlow::val,         nullptr},                            
           // sep.wTextFlow;complex;short
+        {NS_sprm::SPgbProp::val,          nullptr},                            
           // sep.pgbProp;word;
+      //NS_sprm::TFBiDi::val, ? ? ?,
         {NS_sprm::TJc90::val,             nullptr},                            
           // tap.jc;jc;word
                                                                                
          // (low order byte is significant);
-        {NS_sprm::TDxaLeft::val,          nullptr},                            
           // tap.rgdxaCenter;dxa;word;
-        {NS_sprm::TDxaGapHalf::val,       nullptr},                            
           // tap.dxaGapHalf,
-                                                                               
          // tap.rgdxaCenter;dxa;word;
-        {NS_sprm::TFCantSplit90::val,     nullptr},                            
           // tap.fCantSplit90;1 or 0;byte;
-        {NS_sprm::TTableHeader::val,      nullptr},                            
           // tap.fTableHeader;1 or 0;byte;
-        {NS_sprm::TFCantSplit::val,       nullptr},                            
           // tap.fCantSplit;1 or 0;byte;
-        {NS_sprm::TTableBorders80::val,   nullptr},                            
           // tap.rgbrcTable;complex;24 bytes;
-        {NS_sprm::LN_TDefTable10,        nullptr},                             
          // tap.rgdxaCenter, tap.rgtc;complex;
-                                                                               
          // variable length;
-        {NS_sprm::TDyaRowHeight::val,     nullptr},                            
           // tap.dyaRowHeight;dya;word;
-        {NS_sprm::TDefTable::val,         nullptr},                            
           // tap.rgtc;complex
-        {NS_sprm::TDefTableShd80::val,    nullptr},                            
           // tap.rgshd;complex
-        {NS_sprm::TTlp::val,              nullptr},                            
           // tap.tlp;TLP;4 bytes;
-      //NS_sprm::TFBiDi::val, ? ? ?,
-      //NS_sprm::LN_THTMLProps, ? ? ?,
-        {NS_sprm::TSetBrc80::val,         nullptr},                            
           // tap.rgtc[].rgbrc;complex;5 bytes;
-        {NS_sprm::TInsert::val,           nullptr},                            
           // tap.rgdxaCenter, tap.rgtc;complex;
-                                                                               
          // 4 bytes;
         {NS_sprm::TDelete::val,           nullptr},                            
           // tap.rgdxaCenter, tap.rgtc;complex;
                                                                                
          // word;
-        {NS_sprm::TDxaCol::val,           nullptr},                            
           // tap.rgdxaCenter;complex;4 bytes;
         {NS_sprm::TMerge::val,            nullptr},                            
           // tap.fFirstMerged, tap.fMerged;
                                                                                
          // complex; word;
         {NS_sprm::TSplit::val,            nullptr},                            
           // tap.fFirstMerged, tap.fMerged;
                                                                                
          // complex;word;
-        {NS_sprm::LN_TSetBrc10,          nullptr},                             
          // tap.rgtc[].rgbrc;complex;5 bytes;
-        {NS_sprm::LN_TSetShd80,          nullptr},                             
          // tap.rgshd;complex;4 bytes;
-        {NS_sprm::LN_TSetShdOdd80,       nullptr},                             
          // tap.rgshd;complex;4 bytes;
+        {NS_sprm::PDyaLine::val,          &SwWW8ImplReader::Read_LineSpace},   
           // pap.lspd;an LSPD, a long word
+                                                                               
          // structure consisting of a short
+                                                                               
          // of dyaLine followed by a short
+                                                                               
          // of fMultLinespace;long;
+        {NS_sprm::PBrcTop80::val,         &SwWW8ImplReader::Read_Border},      
           // pap.brcTop;BRC;long;
+        {NS_sprm::PBrcLeft80::val,        &SwWW8ImplReader::Read_Border},      
           // pap.brcLeft;BRC;long;
+        {NS_sprm::PBrcBottom80::val,      &SwWW8ImplReader::Read_Border},      
           // pap.brcBottom;BRC;long;
+        {NS_sprm::PBrcRight80::val,       &SwWW8ImplReader::Read_Border},      
           // pap.brcRight;BRC;long;
+        {NS_sprm::PBrcBetween80::val,     &SwWW8ImplReader::Read_Border},      
           // pap.brcBetween;BRC;long;
+        {0x6463,                          nullptr},                            
           // undocumented
+        {NS_sprm::PRsid::val,             nullptr},
+        {NS_sprm::PBrcBar80::val,         nullptr},                            
           // pap.brcBar;BRC;long;
+        {NS_sprm::LN_PHugePapx,           nullptr},                            
           // ;fc in the data stream to locate
+                                                                               
          // the huge grpprl;long;
+        {NS_sprm::PHugePapx::val,         nullptr},                            
           // ;fc in the data stream to locate
+                                                                               
          // the huge grpprl;long;
+        {NS_sprm::PItap::val,             nullptr},
+        {NS_sprm::CDttmRMark::val,        nullptr},                            
           // chp.dttmRMark;DTTM;long;
+        {NS_sprm::LN_CObjLocation,        &SwWW8ImplReader::Read_PicLoc},      
           // chp.fcObj;FC;long;
+        {NS_sprm::CRsidProp::val,         nullptr},
+        {NS_sprm::CRsidText::val,         nullptr},
+        {NS_sprm::CDttmRMarkDel::val,     nullptr},                            
           // chp.dttmRMarkDel;DTTM;long;
+        {NS_sprm::CBrc80::val,            &SwWW8ImplReader::Read_CharBorder},  
           // chp.brc;BRC;long;
+        {NS_sprm::CCv::val,               
&SwWW8ImplReader::Read_TextForeColor},
+        {NS_sprm::CCvUl::val,             
&SwWW8ImplReader::Read_UnderlineColor},
+        {NS_sprm::CPicLocation::val,      &SwWW8ImplReader::Read_PicLoc},      
           // chp.fcPic and chp.fSpec;variable
+                                                                               
          // length, length recorded is always 4;
+        {NS_sprm::CSymbol::val,           &SwWW8ImplReader::Read_Symbol},      
           // chp.fSpec, chp.xchSym and chp.ftcSym;
+                                                                               
          // variable length, length
+                                                                               
          // recorded is always 4;
+        {NS_sprm::PicBrcTop80::val,       nullptr},                            
           // pic.brcTop;BRC;long;
+        {NS_sprm::PicBrcLeft80::val,      nullptr},                            
           // pic.brcLeft;BRC;long;
+        {NS_sprm::PicBrcBottom80::val,    nullptr},                            
           // pic.brcBottom;BRC;long;
+        {NS_sprm::PicBrcRight80::val,     nullptr},                            
           // pic.brcRight;BRC;long;
+        {NS_sprm::SBrcTop80::val,         nullptr},                            
           // sep.brcTop;BRC;long;
+        {NS_sprm::SBrcLeft80::val,        nullptr},                            
           // sep.brcLeft;BRC;long;
+        {NS_sprm::SBrcBottom80::val,      nullptr},                            
           // sep.brcBottom;BRC;long;
+        {NS_sprm::SBrcRight80::val,       nullptr},                            
           // sep.brcRight;BRC;long;
+        {NS_sprm::SDxtCharSpace::val,     nullptr},                            
           // sep.dxtCharSpace;dxt;long;
+        {NS_sprm::SRsid::val,             nullptr},
+        {NS_sprm::TTlp::val,              nullptr},                            
           // tap.tlp;TLP;4 bytes;
+      //NS_sprm::LN_THTMLProps, ? ? ?,
+        {NS_sprm::TInsert::val,           nullptr},                            
           // tap.rgdxaCenter, tap.rgtc;complex;
+                                                                               
          // 4 bytes;
+        {NS_sprm::TDxaCol::val,           nullptr},                            
           // tap.rgdxaCenter;complex;4 bytes;
+        {NS_sprm::LN_TSetShd80,           nullptr},                            
           // tap.rgshd;complex;4 bytes;
+        {NS_sprm::LN_TSetShdOdd80,        nullptr},                            
           // tap.rgshd;complex;4 bytes;
         {NS_sprm::TTextFlow::val,         nullptr},                            
           // tap.rgtc[].fVertical
                                                                                
          // tap.rgtc[].fBackward
                                                                                
          // tap.rgtc[].fRotateFont
                                                                                
          // 0 or 10 or 10 or 1;word;
-      //NS_sprm::LN_TDiagLine, ? ? ?  ,
-        {NS_sprm::TVertMerge::val,        nullptr},                            
           // tap.rgtc[].vertMerge;complex;variable
-                                                                               
          // length always recorded as 2 bytes;
-        {NS_sprm::TVertAlign::val,        nullptr},                            
           // tap.rgtc[].vertAlign;complex;variable
-                                                                               
          // length always recorded as 3 bytes;
+        {NS_sprm::PDxaRight80::val,       &SwWW8ImplReader::Read_LR},          
           // pap.dxaRight;dxa;word;
+        {NS_sprm::PDxaLeft80::val,        &SwWW8ImplReader::Read_LR},          
           // pap.dxaLeft;dxa;word;
+        {NS_sprm::PDxaLeft180::val,       &SwWW8ImplReader::Read_LR},          
           // pap.dxaLeft1;dxa;word;
+        {NS_sprm::PDxaAbs::val,           nullptr},                            
           // pap.dxaAbs;dxa;word;
+        {NS_sprm::PDyaAbs::val,           nullptr},                            
           // pap.dyaAbs;dya;word;
+        {NS_sprm::PDxaWidth::val,         nullptr},                            
           // pap.dxaWidth;dxa;word;
+        {NS_sprm::PDyaFromText::val,      nullptr},                            
           // pap.dyaFromText;dya;word;
+        {NS_sprm::PDxaFromText::val,      nullptr},                            
           // pap.dxaFromText;dxa;word;
+        {NS_sprm::PDxaRight::val,         &SwWW8ImplReader::Read_LR},
+        {NS_sprm::PDxaLeft::val,          &SwWW8ImplReader::Read_LR},
+        {NS_sprm::PDxaLeft1::val,         &SwWW8ImplReader::Read_LR},
+        {NS_sprm::CDxaSpace::val,         &SwWW8ImplReader::Read_Kern},        
           // chp.dxaSpace;dxa;word;
+        {NS_sprm::SDxaColumns::val,       nullptr},                            
           // sep.dxaColumns;dxa;word;
+        {NS_sprm::SDxaLnn::val,           nullptr},                            
           // sep.dxaLnn;dxa;word;
+        {NS_sprm::SDyaTop::val,           nullptr},                            
           // sep.dyaTop;dya;word;
+        {NS_sprm::SDyaBottom::val,        nullptr},                            
           // sep.dyaBottom;dya;word;
+        {NS_sprm::SDyaLinePitch::val,     nullptr},                            
           // sep.dyaLinePitch;dya;
+                                                                               
          // WRONG:long; RIGHT:short; !
+        {NS_sprm::TDyaRowHeight::val,     nullptr},                            
           // tap.dyaRowHeight;dya;word;
+        {NS_sprm::TDxaAbs::val,           nullptr},
+        {NS_sprm::TDyaAbs::val,           nullptr},
+        {NS_sprm::TDxaFromText::val,      nullptr},
+        {NS_sprm::TDxaLeft::val,          nullptr},                            
           // tap.rgdxaCenter;dxa;word;
+        {NS_sprm::TDxaGapHalf::val,       nullptr},                            
           // tap.dxaGapHalf,
+                                                                               
          // tap.rgdxaCenter;dxa;word;
+        {NS_sprm::PDyaBefore::val,        &SwWW8ImplReader::Read_UL},          
           // pap.dyaBefore;dya;word;
+        {NS_sprm::PDyaAfter::val,         &SwWW8ImplReader::Read_UL},          
           // pap.dyaAfter;dya;word;
+        {NS_sprm::LN_SDyaPgn,             nullptr},                            
           // sep.dyaPgn;dya;short;
+        {NS_sprm::LN_SDxaPgn,             nullptr},                            
           // sep.dxaPgn;dya;short;
+        {NS_sprm::SDyaHdrTop::val,        nullptr},                            
           // sep.dyaHdrTop;dya;word;
+        {NS_sprm::SDyaHdrBottom::val,     nullptr},                            
           // sep.dyaHdrBottom;dya;word;
+        {NS_sprm::SXaPage::val,           nullptr},                            
           // sep.xaPage;xa;word;
+        {NS_sprm::SYaPage::val,           nullptr},                            
           // sep.yaPage;ya;word;
+        {NS_sprm::SDxaLeft::val,          nullptr},                            
           // sep.dxaLeft;dxa;word;
+        {NS_sprm::SDxaRight::val,         nullptr},                            
           // sep.dxaRight;dxa;word;
+        {NS_sprm::SDzaGutter::val,        nullptr},                            
           // sep.dzaGutter;dza;word;
+        {NS_sprm::PIstdPermute::val,      nullptr},                            
           // pap.istd;permutation vector;
+                                                                               
          // variable length;
+        {NS_sprm::PChgTabsPapx::val,      &SwWW8ImplReader::Read_Tab},         
           // pap.itbdMac, pap.rgdxaTab, pap.rgtbd;
+                                                                               
          // complex;variable length
+        {NS_sprm::PChgTabs::val,          &SwWW8ImplReader::Read_Tab},         
           // pap.itbdMac, pap.rgdxaTab, pap.rgtbd;
+                                                                               
          // complex;variable length;
+        {NS_sprm::LN_PRuler,              nullptr},                            
           // variable length;
+        {NS_sprm::LN_PAnld,               &SwWW8ImplReader::Read_ANLevelDesc}, 
           // pap.anld;;variable length;
+        {NS_sprm::LN_PPropRMark,          nullptr},                            
           // pap.fPropRMark;complex;
+        {NS_sprm::PNumRM::val,            nullptr},                            
           // pap.numrm;;variable length;
+                                                                               
          // variable length;
+        {NS_sprm::PShd::val,              
&SwWW8ImplReader::Read_ParaBackColor},
+        {NS_sprm::PBrcTop::val,           &SwWW8ImplReader::Read_Border},
+        {NS_sprm::PBrcLeft::val,          &SwWW8ImplReader::Read_Border},
+        {NS_sprm::PBrcBottom::val,        &SwWW8ImplReader::Read_Border},
+        {NS_sprm::PBrcRight::val,         &SwWW8ImplReader::Read_Border},
+        {NS_sprm::PBrcBetween::val,       &SwWW8ImplReader::Read_Border},
+        {NS_sprm::CIstdPermute::val,      nullptr},                            
           // chp.istd;permutation vector;
+                                                                               
          // variable length;
+        {NS_sprm::CMajority::val,         &SwWW8ImplReader::Read_Majority},    
           // chp.fBold, chp.fItalic, chp.fStrike,
+                                                                               
          // chp.fSmallCaps, chp.fVanish, chp.fCaps,
+                                                                               
          // chp.hps, chp.hpsPos, chp.dxaSpace,
+                                                                               
          // chp.kul, chp.ico, chp.rgftc, chp.rglid;
+                                                                               
          // complex;variable length, length byte
+                                                                               
          // plus size of following grpprl;
+        {NS_sprm::LN_CHpsNew50,           nullptr},                            
           // chp.hps;hps;variable width, length
+                                                                               
          // always recorded as 2;
+        {NS_sprm::LN_CHpsInc1,            nullptr},                            
           // chp.hps;complex; variable width,
+                                                                               
          // length always recorded as 2;
+        {NS_sprm::LN_CMajority50,         &SwWW8ImplReader::Read_Majority},    
           // chp.fBold, chp.fItalic, chp.fStrike,
+                                                                               
          // chp.fSmallCaps, chp.fVanish, chp.fCaps,
+                                                                               
          // chp.ftc, chp.hps, chp.hpsPos, chp.kul,
+                                                                               
          // chp.dxaSpace, chp.ico;complex;
+                                                                               
          // variable length;
+        {NS_sprm::CPropRMark90::val,      &SwWW8ImplReader::Read_CPropRMark},  
           // chp.fPropRMark, chp.ibstPropRMark,
+                                                                               
          // chp.dttmPropRMark;Complex;variable
+                                                                               
          // length always recorded as 7 bytes;
+        {NS_sprm::CDispFldRMark::val,     nullptr},                            
           // chp.fDispFieldRMark,
+                                                                               
          // chp.ibstDispFieldRMark,
+                                                                               
          // chp.dttmDispFieldRMark;
+                                                                               
          // Complex;variable length
+                                                                               
          // always recorded as 39 bytes;
+        {NS_sprm::CShd::val,              
&SwWW8ImplReader::Read_TextBackColor},
+        {NS_sprm::CBrc::val,              &SwWW8ImplReader::Read_CharBorder},  
           // chp.brc;BRC;long;
         {NS_sprm::CFELayout::val,         
&SwWW8ImplReader::Read_DoubleLine_Rotate},
-        {NS_sprm::PItap::val,             nullptr},
-        {NS_sprm::TTableWidth::val,       nullptr},                            
           // recorded as 3 bytes;
+        {NS_sprm::LN_PicScale,            nullptr},                            
           // pic.mx, pic.my, pic.dxaCropleft,
+                                                                               
          // pic.dyaCropTop pic.dxaCropRight,
+                                                                               
          // pic.dyaCropBottom;Complex;
+                                                                               
          // length byte plus 12 bytes;
+        {NS_sprm::LN_SOlstAnm,            &SwWW8ImplReader::Read_OLST},        
           // sep.olstAnm;OLST;variable length;
+        {NS_sprm::LN_SPropRMark,          nullptr},                            
           // sep.fPropRMark, sep.ibstPropRMark,
+                                                                               
          // sep.dttmPropRMark;complex; variable
+                                                                               
          // length always recorded as 7 bytes;
+        {0xD238,                          nullptr},                            
           // undocumented sep
+        {NS_sprm::TTableBorders80::val,   nullptr},                            
           // tap.rgbrcTable;complex;24 bytes;
+        {NS_sprm::LN_TDefTable10,         nullptr},                            
           // tap.rgdxaCenter, tap.rgtc;complex;
+                                                                               
          // variable length;
+        {NS_sprm::TDefTable::val,         nullptr},                            
           // tap.rgtc;complex
+        {NS_sprm::TDefTableShd80::val,    nullptr},                            
           // tap.rgshd;complex
         {NS_sprm::TDefTableShd::val,      nullptr},
         {NS_sprm::TTableBorders::val,     nullptr},
         {NS_sprm::TBrcTopCv::val,         nullptr},
         {NS_sprm::TBrcLeftCv::val,        nullptr},
         {NS_sprm::TBrcBottomCv::val,      nullptr},
         {NS_sprm::TBrcRightCv::val,       nullptr},
-        {NS_sprm::TCellPaddingDefault::val, nullptr},
+        {NS_sprm::TSetBrc80::val,         nullptr},                            
           // tap.rgtc[].rgbrc;complex;5 bytes;
+        {NS_sprm::LN_TSetBrc10,           nullptr},                            
           // tap.rgtc[].rgbrc;complex;5 bytes;
+      //NS_sprm::LN_TDiagLine, ? ? ?  ,
+        {NS_sprm::TVertMerge::val,        nullptr},                            
           // tap.rgtc[].vertMerge;complex;variable
+                                                                               
          // length always recorded as 2 bytes;
+        {NS_sprm::TVertAlign::val,        nullptr},                            
           // tap.rgtc[].vertAlign;complex;variable
+                                                                               
          // length always recorded as 3 bytes;
         {NS_sprm::TCellPadding::val,      nullptr},
-        {0xD238,                         nullptr},                             
          // undocumented sep
-        {NS_sprm::PBrcTop::val,           &SwWW8ImplReader::Read_Border},
-        {NS_sprm::PBrcLeft::val,          &SwWW8ImplReader::Read_Border},
-        {NS_sprm::PBrcBottom::val,        &SwWW8ImplReader::Read_Border},
-        {NS_sprm::PBrcRight::val,         &SwWW8ImplReader::Read_Border},
-        {NS_sprm::PBrcBetween::val,       &SwWW8ImplReader::Read_Border},
-        {NS_sprm::TWidthIndent::val,      nullptr},
-        {NS_sprm::CRgLid0::val,           &SwWW8ImplReader::Read_Language},    
           // chp.rglid[0];
-                                                                               
          // LID: for non-Far East text;
-        {NS_sprm::CRgLid1::val,           nullptr},                            
           // chp.rglid[1];
-                                                                               
          // LID: for Far East text
-        {0x6463,                         nullptr},                             
          // undocumented
-        {NS_sprm::PJc::val,               &SwWW8ImplReader::Read_RTLJustify},
-        {NS_sprm::PDxaLeft::val,          &SwWW8ImplReader::Read_LR},
-        {NS_sprm::PDxaLeft1::val,         &SwWW8ImplReader::Read_LR},
-        {NS_sprm::PDxaRight::val,         &SwWW8ImplReader::Read_LR},
-        {NS_sprm::PDxcLeft::val,          &SwWW8ImplReader::Read_LR},
-        {NS_sprm::PDxcLeft1::val,         &SwWW8ImplReader::Read_LR},
-        {NS_sprm::PDxcRight::val,         &SwWW8ImplReader::Read_LR},
-        {NS_sprm::TFAutofit::val,         nullptr},
-        {NS_sprm::TPc::val,               nullptr},
-        {NS_sprm::TDxaAbs::val,           nullptr},
-        {NS_sprm::TDyaAbs::val,           nullptr},
-        {NS_sprm::TDxaFromText::val,      nullptr},
-        {NS_sprm::SRsid::val,             nullptr},
-        {NS_sprm::SFpc::val,              nullptr},
-        {NS_sprm::PFInnerTableCell::val,  &SwWW8ImplReader::Read_TabCellEnd},
-        {NS_sprm::PFInnerTtp::val,        &SwWW8ImplReader::Read_TabRowEnd},
-        {NS_sprm::CRsidProp::val,         nullptr},
-        {NS_sprm::CRsidText::val,         nullptr},
-        {NS_sprm::CCv::val,               
&SwWW8ImplReader::Read_TextForeColor},
-        {NS_sprm::CCvUl::val,             
&SwWW8ImplReader::Read_UnderlineColor},
-        {NS_sprm::PShd::val,              
&SwWW8ImplReader::Read_ParaBackColor},
-        {NS_sprm::PRsid::val,             nullptr},
-        {NS_sprm::TWidthBefore::val,      nullptr},
+        {NS_sprm::TCellPaddingDefault::val, nullptr},
         {NS_sprm::TSetShdTable::val,      nullptr},
         {NS_sprm::TDefTableShdRaw::val,   nullptr},
-        {NS_sprm::CShd::val,              
&SwWW8ImplReader::Read_TextBackColor},
-        {NS_sprm::SRncFtn::val,           nullptr},
-        {NS_sprm::PFDyaBeforeAuto::val,   
&SwWW8ImplReader::Read_ParaAutoBefore},
-        {NS_sprm::PFDyaAfterAuto::val,    
&SwWW8ImplReader::Read_ParaAutoAfter},
-        {NS_sprm::PFContextualSpacing::val, 
&SwWW8ImplReader::Read_ParaContextualSpacing},
-        {NS_sprm::CLbcCRJ::val, &SwWW8ImplReader::Read_LineBreakClear},
+        {NS_sprm::LN_CChs,                &SwWW8ImplReader::Read_CharSet},     
           // chp.fChsDiff and chp.chse;3 bytes;
+        {NS_sprm::LN_CSizePos,            nullptr},                            
           // chp.hps, chp.hpsPos;3 bytes;
+        {NS_sprm::SDxaColWidth::val,      nullptr},                            
           // sep.rgdxaColWidthSpacing;complex;
+                                                                               
          // 3 bytes;
+        {NS_sprm::SDxaColSpacing::val,    nullptr},                            
           // sep.rgdxaColWidthSpacing;complex;
+                                                                               
          // 3 bytes;
+        {NS_sprm::TTableWidth::val,       nullptr},                            
           // recorded as 3 bytes;
+        {NS_sprm::TWidthBefore::val,      nullptr},
+        {NS_sprm::TWidthIndent::val,      nullptr},
     };
 
-    static wwSprmDispatcher aSprmSrch(aSprms, SAL_N_ELEMENTS(aSprms));
+    static_assert(std::is_sorted(std::begin(aSprms), std::end(aSprms)));
+
+    static const wwSprmDispatcher aSprmSrch(aSprms, SAL_N_ELEMENTS(aSprms));
     return &aSprmSrch;
 }
 

Reply via email to