tdf#153094: Fix default character style index, and document it
Thanks Caolán for catching it, and providing the relevant
documentation pointers! See
https://gerrit.libreoffice.org/c/core/+/145806/1#message-c4a9649a8381bd1885d39923fe278b86bc07a228
Change-Id: I6379579befda583f609f87d973fcfaacf9f1fed6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145963
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
diff --git a/sw/source/filter/ww8/wrtw8sty.cxx b/sw/source/filter/ww8/wrtw8sty.cxx
index 90f12f3..9520bc7 100644
--- a/sw/source/filter/ww8/wrtw8sty.cxx
+++ b/sw/source/filter/ww8/wrtw8sty.cxx
@@ -121,15 +121,55 @@ public:
// Styles
// Immediately after reserved slots, character styles begin
#define WW8_RESERVED_SLOTS 15 // tdf#153094: the value is important
// According to [MS-DOC] v20221115 2.9.271 STSH,
// "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.
//
// istd sti of application-defined style (see sti in StdfBase)
// 0 0
// 1 1
// 2 2
// 3 3
// 4 4
// 5 5
// 6 6
// 7 7
// 8 8
// 9 9
// 10 65
// 11 105
// 12 107
// 13 Reserved for future use
// 14 Reserved for future use"
//
// And [MS-OE376] v20220816 2.1.236 Part 4 Section 2.7.3.9, name (Primary Style Name)
// specifies the following mapping:
//
// sti Style name Style type
// 0 Normal paragraph
// 1 heading 1 paragraph
// 2 heading 2 paragraph
// 3 heading 3 paragraph
// 4 heading 4 paragraph
// 5 heading 5 paragraph
// 6 heading 6 paragraph
// 7 heading 7 paragraph
// 8 heading 8 paragraph
// 9 heading 9 paragraph
// 65 Default Paragraph Font character
// 105 Normal Table table
// 107 No List numbering
#define WW8_RESERVED_SLOTS 15
// GetId( SwCharFormat ) for use in text -> zero is not allowed,
// use "Default Char Style" instead
sal_uInt16 MSWordExportBase::GetId( const SwCharFormat* pFormat ) const
{
sal_uInt16 nRet = m_pStyles->GetSlot( pFormat );
return ( nRet != 0x0fff ) ? nRet : WW8_RESERVED_SLOTS; // Default Char Style
return ( nRet != 0x0fff ) ? nRet : 10; // Default Char Style
}
// GetId( SwTextFormatColl ) for use in TextNodes -> zero is not allowed,