summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/text/sbasic/shared/05060700.xhp16
1 files changed, 8 insertions, 8 deletions
diff --git a/source/text/sbasic/shared/05060700.xhp b/source/text/sbasic/shared/05060700.xhp
index 36431748ae..b4d2c8b370 100644
--- a/source/text/sbasic/shared/05060700.xhp
+++ b/source/text/sbasic/shared/05060700.xhp
@@ -42,28 +42,28 @@
<table id="tbl_id3148944">
<tablerow>
<tablecell colspan="" rowspan="">
-<paragraph role="paragraph" id="par_id3153360" xml-lang="en-US">Event</paragraph>
+<paragraph role="tablehead" id="par_id3153360" xml-lang="en-US">Event</paragraph>
</tablecell>
<tablecell colspan="" rowspan="">
-<paragraph role="paragraph" id="par_id3154365" xml-lang="en-US">Event trigger</paragraph>
+<paragraph role="tablehead" id="par_id3154365" xml-lang="en-US">Event trigger</paragraph>
</tablecell>
<tablecell colspan="" rowspan="">
-<paragraph role="paragraph" id="par_id3159149" xml-lang="en-US">OLE object</paragraph>
+<paragraph role="tablehead" id="par_id3159149" xml-lang="en-US">OLE object</paragraph>
</tablecell>
<tablecell colspan="" rowspan="">
-<paragraph role="paragraph" id="par_id3148451" xml-lang="en-US">Graphics</paragraph>
+<paragraph role="tablehead" id="par_id3148451" xml-lang="en-US">Graphics</paragraph>
</tablecell>
<tablecell colspan="" rowspan="">
-<paragraph role="paragraph" id="par_id3125863" xml-lang="en-US">Frame</paragraph>
+<paragraph role="tablehead" id="par_id3125863" xml-lang="en-US">Frame</paragraph>
</tablecell>
<tablecell colspan="" rowspan="">
-<paragraph role="paragraph" id="par_id3154216" xml-lang="en-US">AutoText</paragraph>
+<paragraph role="tablehead" id="par_id3154216" xml-lang="en-US">AutoText</paragraph>
</tablecell>
<tablecell colspan="" rowspan="">
-<paragraph role="paragraph" id="par_id3145785" xml-lang="en-US">ImageMap area</paragraph>
+<paragraph role="tablehead" id="par_id3145785" xml-lang="en-US">ImageMap area</paragraph>
</tablecell>
<tablecell colspan="" rowspan="">
-<paragraph role="paragraph" id="par_id3153138" xml-lang="en-US">Hyperlink</paragraph>
+<paragraph role="tablehead" id="par_id3153138" xml-lang="en-US">Hyperlink</paragraph>
</tablecell>
</tablerow>
<tablerow>
value='feature/window-iter'>feature/window-iter LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
Diffstat (limited to 'sw')
-rw-r--r--sw/CppunitTest_sw_odfexport3.mk79
-rw-r--r--sw/CppunitTest_sw_odfexport4.mk79
-rw-r--r--sw/CppunitTest_sw_ooxmlexport22.mk22
-rw-r--r--sw/CppunitTest_sw_rtfimport2.mk69
-rw-r--r--sw/CppunitTest_sw_uibase_shells.mk1
-rw-r--r--sw/CppunitTest_sw_uiwriter10.mk14
-rw-r--r--sw/Library_swui.mk1
-rw-r--r--sw/Module_sw.mk5
-rw-r--r--sw/UIConfig_swriter.mk2
-rw-r--r--sw/inc/IDocumentRedlineAccess.hxx11
-rw-r--r--sw/inc/IDocumentSettingAccess.hxx2
-rw-r--r--sw/inc/cmdid.h5
-rw-r--r--sw/inc/crsrsh.hxx1
-rw-r--r--sw/inc/deletelistener.hxx61
-rw-r--r--sw/inc/docsh.hxx4
-rw-r--r--sw/inc/docstyle.hxx2
-rw-r--r--sw/inc/docufld.hxx13
-rw-r--r--sw/inc/editsh.hxx2
-rw-r--r--sw/inc/fchrfmt.hxx15
-rw-r--r--sw/inc/fesh.hxx4
-rw-r--r--sw/inc/fmtcol.hxx10
-rw-r--r--sw/inc/fmtftn.hxx2
-rw-r--r--sw/inc/fmtftntx.hxx2
-rw-r--r--sw/inc/grfatr.hxx4
-rw-r--r--sw/inc/inspectorproperties.hrc1
-rw-r--r--sw/inc/ndtxt.hxx13
-rw-r--r--sw/inc/node.hxx3
-rw-r--r--sw/inc/pagedesc.hxx4
-rw-r--r--sw/inc/pch/precompiled_swui.hxx2
-rw-r--r--sw/inc/rdfhelper.hxx2
-rw-r--r--sw/inc/redline.hxx3
-rw-r--r--sw/inc/section.hxx9
-rw-r--r--sw/inc/strings.hrc20
-rw-r--r--sw/inc/swabstdlg.hxx14
-rw-r--r--sw/inc/swdll.hxx2
-rw-r--r--sw/inc/swmodule.hxx2
-rw-r--r--sw/inc/swurl.hxx5
-rw-r--r--sw/inc/tgrditem.hxx2
-rw-r--r--sw/inc/txtatr.hxx4
-rw-r--r--sw/inc/unocoll.hxx2
-rw-r--r--sw/inc/unocrsrhelper.hxx6
-rw-r--r--sw/inc/unoprnms.hxx2
-rw-r--r--sw/inc/unotextrange.hxx9
-rw-r--r--sw/inc/unotxdoc.hxx7
-rw-r--r--sw/inc/view.hxx12
-rw-r--r--sw/inc/viewopt.hxx20
-rw-r--r--sw/inc/viewsh.hxx2
-rw-r--r--sw/qa/core/objectpositioning/data/as_char_image.docxbin0 -> 6070 bytes
-rw-r--r--sw/qa/core/objectpositioning/objectpositioning.cxx23
-rw-r--r--sw/qa/core/txtnode/data/comment-reply-copy.odtbin0 -> 10739 bytes
-rw-r--r--sw/qa/core/txtnode/txtnode.cxx39
-rw-r--r--sw/qa/core/uwriter.cxx14
-rw-r--r--sw/qa/extras/htmlexport/data/img_with_border.fodt24
-rw-r--r--sw/qa/extras/htmlexport/htmlexport2.cxx14
-rw-r--r--sw/qa/extras/layout/data/2024-01-19_merged-cells-on-separate-pages-vertical-alignment.odtbin0 -> 9988 bytes
-rw-r--r--sw/qa/extras/layout/data/CT-formatted-deletion.docxbin0 -> 13499 bytes
-rw-r--r--sw/qa/extras/layout/data/merge_hidden_redline.docxbin0 -> 15478 bytes
-rw-r--r--sw/qa/extras/layout/data/section-break-hidden-paragraphs.rtf68
-rw-r--r--sw/qa/extras/layout/data/table-in-section-split-loop.fodt161
-rw-r--r--sw/qa/extras/layout/data/table-in-section-truncated.fodt161
-rw-r--r--sw/qa/extras/layout/data/table-split-bug.fodt440
-rw-r--r--sw/qa/extras/layout/data/tdf144450.fodt168
-rw-r--r--sw/qa/extras/layout/data/tdf149089.fodt121
-rw-r--r--sw/qa/extras/layout/data/tdf164499.docxbin0 -> 27103 bytes
-rw-r--r--sw/qa/extras/layout/data/tdf164903.docxbin0 -> 63544 bytes
-rw-r--r--sw/qa/extras/layout/data/tdf164905.docxbin0 -> 46831 bytes
-rw-r--r--sw/qa/extras/layout/data/tdf164907_rowHeightAtLeast.docxbin0 -> 22247 bytes
-rw-r--r--sw/qa/extras/layout/data/tdf164932.fodt97
-rw-r--r--sw/qa/extras/layout/data/tdf165089.fodt116
-rw-r--r--sw/qa/extras/layout/data/tdf165354_column.fodt305
-rw-r--r--sw/qa/extras/layout/data/tdf165354_frames_on_right_pages_no_hyphenation.fodt322
-rw-r--r--sw/qa/extras/layout/data/tdf165354_frames_on_same_page_hyphenation.fodt313
-rw-r--r--sw/qa/extras/layout/data/tdf165354_frames_on_same_page_no_hyphenation.fodt313
-rw-r--r--sw/qa/extras/layout/data/tdf165354_frames_on_spread_hyphenation.fodt329
-rw-r--r--sw/qa/extras/layout/data/tdf165354_long_paragraph.fodt215
-rw-r--r--sw/qa/extras/layout/data/tdf165354_long_paragraph_2.fodt219
-rw-r--r--sw/qa/extras/layout/data/tdf165354_long_paragraph_3.fodt219
-rw-r--r--sw/qa/extras/layout/data/tdf165354_page.fodt296
-rw-r--r--sw/qa/extras/layout/data/tdf165354_page_in_last_column.fodt302
-rw-r--r--sw/qa/extras/layout/data/tdf165354_page_in_not_last_column.fodt305
-rw-r--r--sw/qa/extras/layout/data/tdf165354_page_in_table.fodt324
-rw-r--r--sw/qa/extras/layout/data/tdf165354_spread-left-page.fodt303
-rw-r--r--sw/qa/extras/layout/data/tdf165354_spread.fodt295
-rw-r--r--sw/qa/extras/layout/layout.cxx100
-rw-r--r--sw/qa/extras/layout/layout2.cxx323
-rw-r--r--sw/qa/extras/layout/layout3.cxx348
-rw-r--r--sw/qa/extras/layout/layout4.cxx7
-rw-r--r--sw/qa/extras/layout/layout5.cxx171
-rw-r--r--sw/qa/extras/odfexport/data/DUMMY2.odtbin0 -> 11086 bytes
-rw-r--r--sw/qa/extras/odfexport/data/DUMMY2B.odtbin0 -> 11132 bytes
-rw-r--r--sw/qa/extras/odfexport/data/UnderlineTrailingSpace.fodt55
-rw-r--r--sw/qa/extras/odfexport/data/tdf121119.odmbin0 -> 8602 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf164712.odtbin0 -> 11449 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf165354_page.fodt296
-rw-r--r--sw/qa/extras/odfexport/data/tdf71583.odtbin0 -> 10153 bytes
-rw-r--r--sw/qa/extras/odfexport/odfexport.cxx1436
-rw-r--r--sw/qa/extras/odfexport/odfexport2.cxx1164
-rw-r--r--sw/qa/extras/odfexport/odfexport3.cxx1921
-rw-r--r--sw/qa/extras/odfexport/odfexport4.cxx1497
-rw-r--r--sw/qa/extras/odfimport/odfimport.cxx2
-rw-r--r--sw/qa/extras/ooxmlexport/data/CT-with-frame.docxbin0 -> 13631 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/UnderlineTrailingSpace.docxbin0 -> 14850 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf162070_export.docxbin0 -> 18161 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf164176.docxbin0 -> 13788 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf164901.docxbin0 -> 34568 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf165059_broken.docxbin0 -> 5524 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf165354.docxbin0 -> 13980 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf165642_glossaryFootnote.docxbin0 -> 7981 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport.cxx2
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport12.cxx51
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport14.cxx18
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport2.cxx100
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport20.cxx9
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport21.cxx81
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport22.cxx49
-rw-r--r--sw/qa/extras/ooxmlimport/ooxmlimport.cxx2
-rw-r--r--sw/qa/extras/rtfexport/data/math-mso2007.rtf12
-rw-r--r--sw/qa/extras/rtfexport/rtfexport.cxx54
-rw-r--r--sw/qa/extras/rtfimport/data/165333.rtf12
-rw-r--r--sw/qa/extras/rtfimport/data/165483.rtf12
-rw-r--r--sw/qa/extras/rtfimport/data/read-only-protect.rtf214
-rw-r--r--sw/qa/extras/rtfimport/data/tblrepeat.rtf541
-rw-r--r--sw/qa/extras/rtfimport/rtfimport.cxx971
-rw-r--r--sw/qa/extras/rtfimport/rtfimport2.cxx1073
-rw-r--r--sw/qa/extras/tiledrendering/data/3pages.odtbin0 -> 10092 bytes
-rw-r--r--sw/qa/extras/tiledrendering/tiledrendering2.cxx349
-rw-r--r--sw/qa/extras/uiwriter/data/DUMMY2.odtbin0 -> 11086 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/DUMMY2B.odtbin0 -> 11132 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/tdf121119.odmbin0 -> 8602 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/tdf122756.odtbin0 -> 12356 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/tdf156348.odtbin0 -> 9359 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/tdf158198.odtbin0 -> 10922 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/tdf163340_2.odtbin0 -> 12279 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/tdf164140.fodt117
-rw-r--r--sw/qa/extras/uiwriter/data/tdf164620.docxbin0 -> 10635 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/tdf165351.fodt158
-rw-r--r--sw/qa/extras/uiwriter/uiwriter10.cxx2078
-rw-r--r--sw/qa/extras/uiwriter/uiwriter3.cxx42
-rw-r--r--sw/qa/extras/uiwriter/uiwriter4.cxx1
-rw-r--r--sw/qa/extras/uiwriter/uiwriter5.cxx2039
-rw-r--r--sw/qa/extras/uiwriter/uiwriter6.cxx32
-rw-r--r--sw/qa/extras/uiwriter/uiwriter7.cxx13
-rw-r--r--sw/qa/extras/uiwriter/uiwriter8.cxx30
-rw-r--r--sw/qa/extras/uiwriter/uiwriter9.cxx346
-rw-r--r--sw/qa/extras/unowriter/data/hyperlink.fodt9
-rw-r--r--sw/qa/extras/unowriter/data/tdf164921.odtbin0 -> 10966 bytes
-rw-r--r--sw/qa/extras/unowriter/unowriter.cxx149
-rw-r--r--sw/qa/extras/ww8export/data/tdf85435.docbin55296 -> 0 bytes
-rw-r--r--sw/qa/extras/ww8export/ww8export.cxx11
-rw-r--r--sw/qa/extras/ww8export/ww8export4.cxx6
-rw-r--r--sw/qa/uibase/shells/basesh.cxx114
-rw-r--r--sw/qa/uibase/shells/shells.cxx113
-rw-r--r--sw/qa/uibase/uiview/data/tdf146549.odtbin0 -> 11460 bytes
-rw-r--r--sw/qa/uibase/uiview/uiview.cxx49
-rw-r--r--sw/qa/uibase/uno/uno.cxx27
-rw-r--r--sw/qa/uibase/wrtsh/wrtsh.cxx6
-rw-r--r--sw/qa/uitest/data/tdf157569.docxbin12158 -> 12536 bytes
-rw-r--r--sw/qa/uitest/options/optionsDialog.py1
-rw-r--r--sw/qa/uitest/styleInspector/styleInspector.py20
-rw-r--r--sw/qa/uitest/styleInspector/tdf137513.py2
-rw-r--r--sw/qa/uitest/writer_tests/trackedChanges.py2
-rw-r--r--sw/qa/uitest/writer_tests3/save_readonly_with_password.py2
-rw-r--r--sw/qa/uitest/writer_tests5/tdf163325.py1
-rw-r--r--sw/qa/uitest/writer_tests6/tdf157569.py2
-rw-r--r--sw/qa/uitest/writer_tests7/tdf90401.py2
-rw-r--r--sw/qa/uitest/writer_tests8/tdf158794.py37
-rw-r--r--sw/qa/writerfilter/dmapper/DomainMapper.cxx25
-rw-r--r--sw/qa/writerfilter/dmapper/data/font-family.rtf12
-rw-r--r--sw/sdi/_textsh.sdi13
-rw-r--r--sw/sdi/_viewsh.sdi25
-rw-r--r--sw/sdi/swriter.sdi88
-rw-r--r--sw/source/core/access/AccessibilityCheck.cxx35
-rw-r--r--sw/source/core/access/AccessibilityIssue.cxx37
-rw-r--r--sw/source/core/access/acccell.cxx8
-rw-r--r--sw/source/core/access/acccontext.cxx9
-rw-r--r--sw/source/core/access/accdoc.cxx2
-rw-r--r--sw/source/core/access/accframebase.cxx7
-rw-r--r--sw/source/core/access/acchyperlink.cxx35
-rw-r--r--sw/source/core/access/accmap.cxx2
-rw-r--r--sw/source/core/access/accnotexthyperlink.cxx47
-rw-r--r--sw/source/core/access/accpara.cxx10
-rw-r--r--sw/source/core/bastyp/calc.cxx2
-rw-r--r--sw/source/core/crsr/annotationmark.cxx12
-rw-r--r--sw/source/core/crsr/bookmark.cxx2
-rw-r--r--sw/source/core/crsr/crsrsh.cxx21
-rw-r--r--sw/source/core/crsr/crstrvl.cxx52
-rw-r--r--sw/source/core/crsr/pam.cxx6
-rw-r--r--sw/source/core/crsr/viscrs.cxx4
-rw-r--r--sw/source/core/doc/DocumentContentOperationsManager.cxx76
-rw-r--r--sw/source/core/doc/DocumentFieldsManager.cxx11
-rw-r--r--sw/source/core/doc/DocumentRedlineManager.cxx214
-rw-r--r--sw/source/core/doc/DocumentSettingManager.cxx12
-rw-r--r--sw/source/core/doc/DocumentTimerManager.cxx1
-rw-r--r--sw/source/core/doc/doc.cxx23
-rw-r--r--sw/source/core/doc/docedt.cxx9
-rw-r--r--sw/source/core/doc/docfmt.cxx6
-rw-r--r--sw/source/core/doc/docnew.cxx5
-rw-r--r--sw/source/core/doc/docnum.cxx19
-rw-r--r--sw/source/core/doc/docredln.cxx5
-rw-r--r--sw/source/core/doc/fmtcol.cxx22
-rw-r--r--sw/source/core/doc/rdfhelper.cxx45
-rw-r--r--sw/source/core/doc/textboxhelper.cxx3
-rw-r--r--sw/source/core/docnode/node.cxx10
-rw-r--r--sw/source/core/docnode/node2lay.cxx7
-rw-r--r--sw/source/core/docnode/section.cxx61
-rw-r--r--sw/source/core/edit/edfcol.cxx44
-rw-r--r--sw/source/core/edit/edredln.cxx19
-rw-r--r--sw/source/core/fields/docufld.cxx170
-rw-r--r--sw/source/core/fields/reffld.cxx3
-rw-r--r--sw/source/core/frmedt/fefly1.cxx4
-rw-r--r--sw/source/core/frmedt/feshview.cxx12
-rw-r--r--sw/source/core/inc/AccessibilityCheck.hxx2
-rw-r--r--sw/source/core/inc/AccessibilityIssue.hxx1
-rw-r--r--sw/source/core/inc/DocumentRedlineManager.hxx10
-rw-r--r--sw/source/core/inc/DocumentSettingManager.hxx1
-rw-r--r--sw/source/core/inc/fntcache.hxx6
-rw-r--r--sw/source/core/inc/frame.hxx1
-rw-r--r--sw/source/core/inc/layouter.hxx1
-rw-r--r--sw/source/core/inc/rootfrm.hxx1
-rw-r--r--sw/source/core/inc/scriptinfo.hxx96
-rw-r--r--sw/source/core/inc/swfont.hxx17
-rw-r--r--sw/source/core/inc/txtfrm.hxx15
-rw-r--r--sw/source/core/inc/viewimp.hxx1
-rw-r--r--sw/source/core/layout/anchoreddrawobject.cxx2
-rw-r--r--sw/source/core/layout/atrfrm.cxx24
-rw-r--r--sw/source/core/layout/fly.cxx10
-rw-r--r--sw/source/core/layout/frmtool.cxx5
-rw-r--r--sw/source/core/layout/layact.cxx24
-rw-r--r--sw/source/core/layout/layouter.cxx14
-rw-r--r--sw/source/core/layout/newfrm.cxx2
-rw-r--r--sw/source/core/layout/pagechg.cxx9
-rw-r--r--sw/source/core/layout/paintfrm.cxx53
-rw-r--r--sw/source/core/layout/ssfrm.cxx2
-rw-r--r--sw/source/core/layout/tabfrm.cxx54
-rw-r--r--sw/source/core/layout/trvlfrm.cxx66
-rw-r--r--sw/source/core/layout/wsfrm.cxx24
-rw-r--r--sw/source/core/objectpositioning/anchoredobjectposition.cxx2
-rw-r--r--sw/source/core/ole/ndole.cxx5
-rw-r--r--sw/source/core/text/EnhancedPDFExportHelper.cxx139
-rw-r--r--sw/source/core/text/guess.cxx18
-rw-r--r--sw/source/core/text/guess.hxx16
-rw-r--r--sw/source/core/text/inftxt.cxx53
-rw-r--r--sw/source/core/text/inftxt.hxx14
-rw-r--r--sw/source/core/text/itradj.cxx279
-rw-r--r--sw/source/core/text/itrcrsr.cxx7
-rw-r--r--sw/source/core/text/itrform2.cxx53
-rw-r--r--sw/source/core/text/pordrop.hxx2
-rw-r--r--sw/source/core/text/porexp.cxx4
-rw-r--r--sw/source/core/text/porexp.hxx2
-rw-r--r--sw/source/core/text/porfld.cxx4
-rw-r--r--sw/source/core/text/porfld.hxx2
-rw-r--r--sw/source/core/text/porftn.hxx2
-rw-r--r--sw/source/core/text/porglue.cxx8
-rw-r--r--sw/source/core/text/porglue.hxx2
-rw-r--r--sw/source/core/text/porlay.cxx385
-rw-r--r--sw/source/core/text/porlay.hxx8
-rw-r--r--sw/source/core/text/porlin.cxx8
-rw-r--r--sw/source/core/text/porlin.hxx8
-rw-r--r--sw/source/core/text/pormulti.cxx6
-rw-r--r--sw/source/core/text/porrst.cxx27
-rw-r--r--sw/source/core/text/porrst.hxx2
-rw-r--r--sw/source/core/text/portxt.cxx121
-rw-r--r--sw/source/core/text/portxt.hxx12
-rw-r--r--sw/source/core/text/possiz.hxx20
-rw-r--r--sw/source/core/text/redlnitr.cxx132
-rw-r--r--sw/source/core/text/txtdrop.cxx4
-rw-r--r--sw/source/core/text/txtfld.cxx8
-rw-r--r--sw/source/core/text/txtfrm.cxx116
-rw-r--r--sw/source/core/text/txtftn.cxx2
-rw-r--r--sw/source/core/text/txthyph.cxx6
-rw-r--r--sw/source/core/text/widorp.cxx49
-rw-r--r--sw/source/core/txtnode/OnlineAccessibilityCheck.cxx4
-rw-r--r--sw/source/core/txtnode/fmtatr2.cxx72
-rw-r--r--sw/source/core/txtnode/fntcache.cxx47
-rw-r--r--sw/source/core/txtnode/justify.cxx40
-rw-r--r--sw/source/core/txtnode/justify.hxx12
-rw-r--r--sw/source/core/txtnode/ndtxt.cxx51
-rw-r--r--sw/source/core/txtnode/swfont.cxx5
-rw-r--r--sw/source/core/txtnode/thints.cxx8
-rw-r--r--sw/source/core/txtnode/txtatr2.cxx56
-rw-r--r--sw/source/core/txtnode/txtedt.cxx14
-rw-r--r--sw/source/core/undo/docundo.cxx3
-rw-r--r--sw/source/core/undo/untbl.cxx33
-rw-r--r--sw/source/core/undo/untblk.cxx4
-rw-r--r--sw/source/core/unocore/unobkm.cxx42
-rw-r--r--sw/source/core/unocore/unochart.cxx23
-rw-r--r--sw/source/core/unocore/unocoll.cxx32
-rw-r--r--sw/source/core/unocore/unocrsrhelper.cxx39
-rw-r--r--sw/source/core/unocore/unofield.cxx19
-rw-r--r--sw/source/core/unocore/unoflatpara.cxx61
-rw-r--r--sw/source/core/unocore/unoftn.cxx4
-rw-r--r--sw/source/core/unocore/unoidx.cxx37
-rw-r--r--sw/source/core/unocore/unomapproperties.hxx2
-rw-r--r--sw/source/core/unocore/unoobj.cxx8
-rw-r--r--sw/source/core/unocore/unoobj2.cxx24
-rw-r--r--sw/source/core/unocore/unoparagraph.cxx2
-rw-r--r--sw/source/core/unocore/unoport.cxx8
-rw-r--r--sw/source/core/unocore/unoportenum.cxx12
-rw-r--r--sw/source/core/unocore/unosect.cxx10
-rw-r--r--sw/source/core/unocore/unostyle.cxx9
-rw-r--r--sw/source/core/unocore/unotbl.cxx10
-rw-r--r--sw/source/core/view/vdraw.cxx7
-rw-r--r--sw/source/core/view/viewsh.cxx43
-rw-r--r--sw/source/core/view/vnew.cxx9
-rw-r--r--sw/source/filter/html/htmlbas.cxx6
-rw-r--r--sw/source/filter/html/htmlfldw.cxx9
-rw-r--r--sw/source/filter/html/htmlflywriter.cxx3
-rw-r--r--sw/source/filter/html/htmlform.cxx4
-rw-r--r--sw/source/filter/html/htmlforw.cxx2
-rw-r--r--sw/source/filter/html/swhtml.hxx13
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx149
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.hxx8
-rw-r--r--sw/source/filter/ww8/docxexport.cxx59
-rw-r--r--sw/source/filter/ww8/docxexportfilter.cxx30
-rw-r--r--sw/source/filter/ww8/wrtw8nds.cxx25
-rw-r--r--sw/source/filter/ww8/wrtww8.cxx33
-rw-r--r--sw/source/filter/ww8/wrtww8.hxx5
-rw-r--r--sw/source/filter/ww8/wrtww8gr.cxx17
-rw-r--r--sw/source/filter/ww8/ww8atr.cxx8
-rw-r--r--sw/source/filter/ww8/ww8par.cxx2
-rw-r--r--sw/source/filter/ww8/ww8par2.cxx12
-rw-r--r--sw/source/filter/ww8/ww8par2.hxx4
-rw-r--r--sw/source/filter/ww8/ww8par6.cxx22
-rw-r--r--sw/source/filter/xml/wrtxml.cxx7
-rw-r--r--sw/source/filter/xml/xmltexti.cxx24
-rw-r--r--sw/source/ui/chrdlg/swuiccoll.cxx6
-rw-r--r--sw/source/ui/config/mailconfigpage.cxx2
-rw-r--r--sw/source/ui/config/optcomp.cxx6
-rw-r--r--sw/source/ui/dialog/swdlgfact.cxx18
-rw-r--r--sw/source/ui/dialog/swdlgfact.hxx3
-rw-r--r--sw/source/ui/frmdlg/frmpage.cxx15
-rw-r--r--sw/source/ui/inc/bookmark.hxx1
-rw-r--r--sw/source/ui/index/cnttab.cxx30
-rw-r--r--sw/source/ui/misc/bookmark.cxx12
-rw-r--r--sw/source/ui/misc/glossary.cxx15
-rw-r--r--sw/source/ui/misc/pagenumberdlg.cxx19
-rw-r--r--sw/source/ui/misc/pggrid.cxx14
-rw-r--r--sw/source/ui/utlui/copyfielddlg.cxx58
-rw-r--r--sw/source/ui/vba/vbacontentcontrol.cxx26
-rw-r--r--sw/source/ui/vba/vbaformfield.cxx17
-rw-r--r--sw/source/ui/vba/vbaheaderfooterhelper.cxx7
-rw-r--r--sw/source/ui/vba/vbasections.cxx5
-rw-r--r--sw/source/ui/vba/vbaselection.cxx2
-rw-r--r--sw/source/ui/vba/vbatables.cxx3
-rw-r--r--sw/source/uibase/app/docsh.cxx41
-rw-r--r--sw/source/uibase/app/docstyle.cxx21
-rw-r--r--sw/source/uibase/app/swdll.cxx11
-rw-r--r--sw/source/uibase/app/swdllimpl.hxx2
-rw-r--r--sw/source/uibase/app/swmodule.cxx2
-rw-r--r--sw/source/uibase/config/usrpref.cxx15
-rw-r--r--sw/source/uibase/config/viewopt.cxx134
-rw-r--r--sw/source/uibase/dbui/dbmgr.cxx28
-rw-r--r--sw/source/uibase/dbui/mailmergehelper.cxx2
-rw-r--r--sw/source/uibase/dochdl/swdtflvr.cxx19
-rw-r--r--sw/source/uibase/docvw/HeaderFooterWin.cxx5
-rw-r--r--sw/source/uibase/docvw/PostItMgr.cxx34
-rw-r--r--sw/source/uibase/docvw/SidebarTxtControl.cxx8
-rw-r--r--sw/source/uibase/docvw/edtwin.cxx8
-rw-r--r--sw/source/uibase/docvw/edtwin2.cxx8
-rw-r--r--sw/source/uibase/docvw/romenu.cxx6
-rw-r--r--sw/source/uibase/docvw/romenu.hxx1
-rw-r--r--sw/source/uibase/fldui/fldmgr.cxx1
-rw-r--r--sw/source/uibase/frmdlg/colex.cxx4
-rw-r--r--sw/source/uibase/inc/copyfielddlg.hxx37
-rw-r--r--sw/source/uibase/inc/pagenumberdlg.hxx3
-rw-r--r--sw/source/uibase/inc/usrpref.hxx17
-rw-r--r--sw/source/uibase/inc/wrtsh.hxx5
-rw-r--r--sw/source/uibase/lingu/olmenu.cxx28
-rw-r--r--sw/source/uibase/ribbar/workctrl.cxx5
-rw-r--r--sw/source/uibase/shells/annotsh.cxx5
-rw-r--r--sw/source/uibase/shells/basesh.cxx86
-rw-r--r--sw/source/uibase/shells/drawsh.cxx10
-rw-r--r--sw/source/uibase/shells/drwbassh.cxx2
-rw-r--r--sw/source/uibase/shells/textfld.cxx44
-rw-r--r--sw/source/uibase/shells/textidx.cxx15
-rw-r--r--sw/source/uibase/shells/textsh1.cxx21
-rw-r--r--sw/source/uibase/shells/txtattr.cxx33
-rw-r--r--sw/source/uibase/sidebar/A11yCheckIssuesPanel.hxx2
-rw-r--r--sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx25
-rw-r--r--sw/source/uibase/sidebar/WriterInspectorTextPanel.hxx7
-rw-r--r--sw/source/uibase/table/chartins.cxx6
-rw-r--r--sw/source/uibase/uiview/formatclipboard.cxx6
-rw-r--r--sw/source/uibase/uiview/view.cxx29
-rw-r--r--sw/source/uibase/uiview/view0.cxx37
-rw-r--r--sw/source/uibase/uiview/view2.cxx22
-rw-r--r--sw/source/uibase/uiview/viewdraw.cxx14
-rw-r--r--sw/source/uibase/uiview/viewling.cxx13
-rw-r--r--sw/source/uibase/uiview/viewsrch.cxx2
-rw-r--r--sw/source/uibase/uiview/viewstat.cxx18
-rw-r--r--sw/source/uibase/uno/SwXDocumentSettings.cxx18
-rw-r--r--sw/source/uibase/uno/loktxdoc.cxx28
-rw-r--r--sw/source/uibase/uno/unotxdoc.cxx47
-rw-r--r--sw/source/uibase/uno/unotxvw.cxx12
-rw-r--r--sw/source/uibase/utlui/attrdesc.cxx6
-rw-r--r--sw/source/uibase/utlui/content.cxx44
-rw-r--r--sw/source/uibase/utlui/unotools.cxx7
-rw-r--r--sw/source/uibase/wrtsh/select.cxx4
-rw-r--r--sw/source/uibase/wrtsh/wrtsh1.cxx15
-rw-r--r--sw/source/uibase/wrtsh/wrtsh2.cxx37
-rw-r--r--sw/source/writerfilter/dmapper/DomainMapper.cxx33
-rw-r--r--sw/source/writerfilter/dmapper/DomainMapperTableHandler.cxx6
-rw-r--r--sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx102
-rw-r--r--sw/source/writerfilter/dmapper/PropertyIds.cxx1
-rw-r--r--sw/source/writerfilter/dmapper/PropertyIds.hxx1
-rw-r--r--sw/source/writerfilter/dmapper/SettingsTable.cxx29
-rw-r--r--sw/source/writerfilter/dmapper/SettingsTable.hxx2
-rw-r--r--sw/source/writerfilter/ooxml/OOXMLDocumentImpl.cxx16
-rw-r--r--sw/source/writerfilter/rtftok/rtfdispatchflag.cxx16
-rw-r--r--sw/source/writerfilter/rtftok/rtfdispatchvalue.cxx6
-rw-r--r--sw/source/writerfilter/rtftok/rtfdocumentimpl.cxx51
-rw-r--r--sw/source/writerfilter/rtftok/rtfsprm.cxx9
-rw-r--r--sw/uiconfig/sglobal/popupmenu/insertfield.xml1
-rw-r--r--sw/uiconfig/sglobal/toolbar/drawbar.xml1
-rw-r--r--sw/uiconfig/swform/popupmenu/insertfield.xml1
-rw-r--r--sw/uiconfig/swform/toolbar/drawbar.xml1
-rw-r--r--sw/uiconfig/swreport/popupmenu/insertfield.xml1
-rw-r--r--sw/uiconfig/swreport/toolbar/drawbar.xml1
-rw-r--r--sw/uiconfig/swriter/popupmenu/insertfield.xml1
-rw-r--r--sw/uiconfig/swriter/popupmenu/recordtrackedchanges.xml13
-rw-r--r--sw/uiconfig/swriter/toolbar/drawbar.xml1
-rw-r--r--sw/uiconfig/swriter/ui/bibliographyentry.ui4
-rw-r--r--sw/uiconfig/swriter/ui/columnwidth.ui99
-rw-r--r--sw/uiconfig/swriter/ui/copyfielddialog.ui157
-rw-r--r--sw/uiconfig/swriter/ui/hfmenubutton.ui8
-rw-r--r--sw/uiconfig/swriter/ui/inserttable.ui265
-rw-r--r--sw/uiconfig/swriter/ui/notebookbar.ui51
-rw-r--r--sw/uiconfig/swriter/ui/notebookbar_groupedbar_compact.ui44
-rw-r--r--sw/uiconfig/swriter/ui/pagefooterpanel.ui2
-rw-r--r--sw/uiconfig/swriter/ui/pagenumberdlg.ui28
-rw-r--r--sw/uiconfig/swriter/ui/readonlymenu.ui14
-rw-r--r--sw/uiconfig/swriter/ui/rowheight.ui71
-rw-r--r--sw/uiconfig/swriter/ui/tocentriespage.ui24
-rw-r--r--sw/uiconfig/swriter/ui/wordcount-mobile.ui53
-rw-r--r--sw/uiconfig/swxform/popupmenu/insertfield.xml1
-rw-r--r--sw/uiconfig/swxform/toolbar/drawbar.xml1
435 files changed, 20788 insertions, 8381 deletions
diff --git a/sw/CppunitTest_sw_odfexport3.mk b/sw/CppunitTest_sw_odfexport3.mk
new file mode 100644
index 000000000000..8a2569fca36c
--- /dev/null
+++ b/sw/CppunitTest_sw_odfexport3.mk
@@ -0,0 +1,79 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sw_odfexport3))
+
+$(eval $(call gb_CppunitTest_use_common_precompiled_header,sw_odfexport3))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sw_odfexport3, \
+ sw/qa/extras/odfexport/odfexport3 \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sw_odfexport3, \
+ comphelper \
+ cppu \
+ cppuhelper \
+ editeng \
+ sal \
+ sfx \
+ subsequenttest \
+ svl \
+ sw \
+ swqahelper \
+ test \
+ tl \
+ unotest \
+ utl \
+ vcl \
+))
+
+$(eval $(call gb_CppunitTest_use_externals,sw_odfexport3,\
+ boost_headers \
+ libxml2 \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sw_odfexport3,\
+ -I$(SRCDIR)/sw/inc \
+ -I$(SRCDIR)/sw/source/core/inc \
+ -I$(SRCDIR)/sw/qa/inc \
+ -I$(SRCDIR)/sw/source/uibase/inc \
+ $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sw_odfexport3,\
+ udkapi \
+ offapi \
+ oovbaapi \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,sw_odfexport3))
+$(eval $(call gb_CppunitTest_use_vcl,sw_odfexport3))
+
+$(eval $(call gb_CppunitTest_use_rdb,sw_odfexport3,services))
+
+$(eval $(call gb_CppunitTest_use_custom_headers,sw_odfexport3,\
+ officecfg/registry \
+))
+
+$(eval $(call gb_CppunitTest_use_configuration,sw_odfexport3))
+
+$(eval $(call gb_CppunitTest_use_uiconfigs,sw_odfexport3, \
+ modules/swriter \
+ svx \
+))
+
+$(eval $(call gb_CppunitTest_use_more_fonts,sw_odfexport3))
+
+$(eval $(call gb_CppunitTest_add_arguments,sw_odfexport3, \
+ -env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/CppunitTest_sw_odfexport4.mk b/sw/CppunitTest_sw_odfexport4.mk
new file mode 100644
index 000000000000..87000676e9f5
--- /dev/null
+++ b/sw/CppunitTest_sw_odfexport4.mk
@@ -0,0 +1,79 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sw_odfexport4))
+
+$(eval $(call gb_CppunitTest_use_common_precompiled_header,sw_odfexport4))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sw_odfexport4, \
+ sw/qa/extras/odfexport/odfexport4 \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sw_odfexport4, \
+ comphelper \
+ cppu \
+ cppuhelper \
+ editeng \
+ sal \
+ sfx \
+ subsequenttest \
+ svl \
+ sw \
+ swqahelper \
+ test \
+ tl \
+ unotest \
+ utl \
+ vcl \
+))
+
+$(eval $(call gb_CppunitTest_use_externals,sw_odfexport4,\
+ boost_headers \
+ libxml2 \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sw_odfexport4,\
+ -I$(SRCDIR)/sw/inc \
+ -I$(SRCDIR)/sw/source/core/inc \
+ -I$(SRCDIR)/sw/qa/inc \
+ -I$(SRCDIR)/sw/source/uibase/inc \
+ $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sw_odfexport4,\
+ udkapi \
+ offapi \
+ oovbaapi \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,sw_odfexport4))
+$(eval $(call gb_CppunitTest_use_vcl,sw_odfexport4))
+
+$(eval $(call gb_CppunitTest_use_rdb,sw_odfexport4,services))
+
+$(eval $(call gb_CppunitTest_use_custom_headers,sw_odfexport4,\
+ officecfg/registry \
+))
+
+$(eval $(call gb_CppunitTest_use_configuration,sw_odfexport4))
+
+$(eval $(call gb_CppunitTest_use_uiconfigs,sw_odfexport4, \
+ modules/swriter \
+ svx \
+))
+
+$(eval $(call gb_CppunitTest_use_more_fonts,sw_odfexport4))
+
+$(eval $(call gb_CppunitTest_add_arguments,sw_odfexport4, \
+ -env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/CppunitTest_sw_ooxmlexport22.mk b/sw/CppunitTest_sw_ooxmlexport22.mk
new file mode 100644
index 000000000000..e1137f9c302c
--- /dev/null
+++ b/sw/CppunitTest_sw_ooxmlexport22.mk
@@ -0,0 +1,22 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call sw_ooxmlexport_test,22))
+
+$(eval $(call gb_CppunitTest_use_custom_headers,sw_ooxmlexport22,\
+ officecfg/registry \
+))
+
+ifneq ($(filter MORE_FONTS,$(BUILD_TYPE)),)
+$(eval $(call gb_CppunitTest_set_non_application_font_use,sw_ooxmlexport22,abort))
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/CppunitTest_sw_rtfimport2.mk b/sw/CppunitTest_sw_rtfimport2.mk
new file mode 100644
index 000000000000..c186948f002f
--- /dev/null
+++ b/sw/CppunitTest_sw_rtfimport2.mk
@@ -0,0 +1,69 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sw_rtfimport2))
+
+$(eval $(call gb_CppunitTest_use_common_precompiled_header,sw_rtfimport2))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sw_rtfimport2, \
+ sw/qa/extras/rtfimport/rtfimport2 \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sw_rtfimport2, \
+ comphelper \
+ cppu \
+ cppuhelper \
+ sal \
+ sfx \
+ subsequenttest \
+ i18nlangtag \
+ svl \
+ sw \
+ swqahelper \
+ test \
+ unotest \
+ vcl \
+ tl \
+ utl \
+))
+
+$(eval $(call gb_CppunitTest_use_externals,sw_rtfimport2,\
+ boost_headers \
+ libxml2 \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sw_rtfimport2,\
+ -I$(SRCDIR)/sw/inc \
+ -I$(SRCDIR)/sw/source/core/inc \
+ -I$(SRCDIR)/sw/qa/inc \
+ $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sw_rtfimport2,\
+ udkapi \
+ offapi \
+ oovbaapi \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,sw_rtfimport2))
+$(eval $(call gb_CppunitTest_use_vcl,sw_rtfimport2))
+
+$(eval $(call gb_CppunitTest_use_rdb,sw_rtfimport2,services))
+
+$(eval $(call gb_CppunitTest_use_configuration,sw_rtfimport2))
+
+$(eval $(call gb_CppunitTest_use_uiconfigs,sw_rtfimport2,\
+ modules/swriter \
+))
+
+$(eval $(call gb_CppunitTest_use_more_fonts,sw_rtfimport2))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/CppunitTest_sw_uibase_shells.mk b/sw/CppunitTest_sw_uibase_shells.mk
index e26cc90770fa..d9aed3755ac3 100644
--- a/sw/CppunitTest_sw_uibase_shells.mk
+++ b/sw/CppunitTest_sw_uibase_shells.mk
@@ -14,6 +14,7 @@ $(eval $(call gb_CppunitTest_CppunitTest,sw_uibase_shells))
$(eval $(call gb_CppunitTest_use_common_precompiled_header,sw_uibase_shells))
$(eval $(call gb_CppunitTest_add_exception_objects,sw_uibase_shells, \
+ sw/qa/uibase/shells/basesh \
sw/qa/uibase/shells/textfld \
sw/qa/uibase/shells/textsh \
sw/qa/uibase/shells/textsh1 \
diff --git a/sw/CppunitTest_sw_uiwriter10.mk b/sw/CppunitTest_sw_uiwriter10.mk
new file mode 100644
index 000000000000..557c15d2b1ca
--- /dev/null
+++ b/sw/CppunitTest_sw_uiwriter10.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call sw_uiwriter_test,10))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/Library_swui.mk b/sw/Library_swui.mk
index 2c6d8512fe44..cf025735337e 100644
--- a/sw/Library_swui.mk
+++ b/sw/Library_swui.mk
@@ -168,6 +168,7 @@ $(eval $(call gb_Library_add_exception_objects,swui,\
sw/source/ui/table/tabledlg \
sw/source/ui/table/tautofmt \
sw/source/ui/utlui/swrenamexnameddlg \
+ sw/source/ui/utlui/copyfielddlg \
))
ifneq (,$(filter DBCONNECTIVITY,$(BUILD_TYPE)))
diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk
index 6d4ed9f55967..1e8ea282486f 100644
--- a/sw/Module_sw.mk
+++ b/sw/Module_sw.mk
@@ -99,6 +99,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_ooxmlexport19 \
CppunitTest_sw_ooxmlexport20 \
CppunitTest_sw_ooxmlexport21 \
+ CppunitTest_sw_ooxmlexport22 \
CppunitTest_sw_ooxmlexport_template \
CppunitTest_sw_ooxmlfieldexport \
CppunitTest_sw_ooxmllinks \
@@ -113,8 +114,11 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_ww8export4 \
CppunitTest_sw_ww8import \
CppunitTest_sw_rtfimport \
+ CppunitTest_sw_rtfimport2 \
CppunitTest_sw_odfexport \
CppunitTest_sw_odfexport2 \
+ CppunitTest_sw_odfexport3 \
+ CppunitTest_sw_odfexport4 \
CppunitTest_sw_odfimport \
CppunitTest_sw_txtexport \
CppunitTest_sw_txtencexport \
@@ -128,6 +132,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_uiwriter7 \
CppunitTest_sw_uiwriter8 \
CppunitTest_sw_uiwriter9 \
+ CppunitTest_sw_uiwriter10 \
CppunitTest_sw_layoutwriter \
CppunitTest_sw_layoutwriter2 \
CppunitTest_sw_layoutwriter3 \
diff --git a/sw/UIConfig_swriter.mk b/sw/UIConfig_swriter.mk
index d9df23bf27a4..f6a9b99d55c7 100644
--- a/sw/UIConfig_swriter.mk
+++ b/sw/UIConfig_swriter.mk
@@ -31,6 +31,7 @@ $(eval $(call gb_UIConfig_add_popupmenufiles,modules/swriter,\
sw/uiconfig/swriter/popupmenu/table \
sw/uiconfig/swriter/popupmenu/text \
sw/uiconfig/swriter/popupmenu/showtrackedchanges \
+ sw/uiconfig/swriter/popupmenu/recordtrackedchanges \
))
$(eval $(call gb_UIConfig_add_statusbarfiles,modules/swriter,\
@@ -138,6 +139,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/swriter,\
sw/uiconfig/swriter/ui/contentcontroldropdown \
sw/uiconfig/swriter/ui/contentcontrollistitemdlg \
sw/uiconfig/swriter/ui/converttexttable \
+ sw/uiconfig/swriter/ui/copyfielddialog \
sw/uiconfig/swriter/ui/createaddresslist \
sw/uiconfig/swriter/ui/createauthorentry \
sw/uiconfig/swriter/ui/createautomarkdialog \
diff --git a/sw/inc/IDocumentRedlineAccess.hxx b/sw/inc/IDocumentRedlineAccess.hxx
index 9d97eb43ff7e..804678479ab1 100644
--- a/sw/inc/IDocumentRedlineAccess.hxx
+++ b/sw/inc/IDocumentRedlineAccess.hxx
@@ -38,12 +38,13 @@ class SwPaM;
struct SwPosition;
class SwStartNode;
class SwNode;
+class SwViewShell;
enum class RedlineFlags
{
NONE = 0x000, ///< no RedlineFlags
On = 0x001, ///< RedlineFlags on
- Ignore = 0x002, ///< ignore Redlines
+ Ignore = 0x002, ///< ignore Redlines (only set from code, temporarily)
ShowInsert = 0x010, ///< show all inserts
ShowDelete = 0x020, ///< show all deletes
ShowMask = ShowInsert | ShowDelete,
@@ -99,21 +100,21 @@ public:
@returns
the currently set redline mode
*/
- virtual RedlineFlags GetRedlineFlags() const = 0;
+ virtual RedlineFlags GetRedlineFlags(const SwViewShell* pViewShell = nullptr) const = 0;
/** Set a new redline mode.
@param eMode
[in] the new redline mode.
*/
- virtual void SetRedlineFlags_intern(/*[in]*/RedlineFlags eMode) = 0;
+ virtual void SetRedlineFlags_intern(/*[in]*/RedlineFlags eMode, bool bRecordAllViews = true, bool bRecordModeChange = false) = 0;
/** Set a new redline mode.
@param eMode
[in] the new redline mode.
*/
- virtual void SetRedlineFlags(/*[in]*/RedlineFlags eMode) = 0;
+ virtual void SetRedlineFlags(/*[in]*/RedlineFlags eMode, bool bRecordAllViews = true, bool bRecordModeChange = false) = 0;
/** Query if redlining is on.
@@ -235,6 +236,8 @@ public:
virtual void UpdateRedlineContentNode(/*[in]*/ SwRedlineTable::size_type nStartPos,
/*[in]*/ SwRedlineTable::size_type nEndPos) const = 0;
+ virtual void dumpAsXml(xmlTextWriterPtr pWriter) const = 0;
+
protected:
virtual ~IDocumentRedlineAccess() {};
diff --git a/sw/inc/IDocumentSettingAccess.hxx b/sw/inc/IDocumentSettingAccess.hxx
index 9c053e845441..1314f60479bc 100644
--- a/sw/inc/IDocumentSettingAccess.hxx
+++ b/sw/inc/IDocumentSettingAccess.hxx
@@ -139,10 +139,10 @@ enum class DocumentSettingId
PAINT_HELL_OVER_HEADER_FOOTER,
// tdf#155229 calculate minimum row height including horizontal border width
MIN_ROW_HEIGHT_INCL_BORDER,
- // tdf#129808 MS Word always includes ext leading for text grid line height
MS_WORD_COMP_GRID_METRICS,
// tdf#161233 pictures with wrap polygon should not be clipped
NO_CLIPPING_WITH_WRAP_POLYGON,
+ MS_WORD_UL_TRAIL_SPACE,
};
/** Provides access to settings of a document
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index f50754b6e274..abfe12fa9e78 100644
--- a/sw/inc/cmdid.h
+++ b/sw/inc/cmdid.h
@@ -152,6 +152,7 @@ class SwUINumRuleItem;
#define FN_REDLINE_ACCEPT_TONEXT (FN_EDIT2 + 45) /* Redlining Accept and jump to next*/
#define FN_REDLINE_REJECT_TONEXT (FN_EDIT2 + 46) /* Redlining Reject and jump to next*/
#define FN_TRANSFORM_DOCUMENT_STRUCTURE (FN_EDIT2 + 47) /* overwrite text of content control, and more*/
+#define FN_COPY_FIELD (FN_EDIT2 + 48) /* show field content in readonly documents to copy content*/
// Region: View
#define FN_DRAW_WRAP_DLG TypedWhichId<SfxInt16Item>(FN_VIEW + 3) /* Draw wrapping dlg */
@@ -205,6 +206,9 @@ class SwUINumRuleItem;
#define FN_SET_TRACKED_DELETIONS_IN_MARGIN (FN_VIEW + 68) /* Show final text (deletions in margin) */
#define FN_SET_TRACKED_INSERTIONS_IN_MARGIN (FN_VIEW + 69) /* Show original text (insertions in margin) */
#define FN_OUTLINE_LEVELS_SHOWN (FN_VIEW + 70)
+#define FN_RECORD_TRACKED_CHANGES_MENU (FN_VIEW + 71) /* Menu for the track changes record modes */
+#define FN_TRACK_CHANGES_IN_THIS_VIEW (FN_VIEW + 72) /* Record track changes only in this view */
+#define FN_TRACK_CHANGES_IN_ALL_VIEWS (FN_VIEW + 73) /* Record track changes only in all views */
// Region: Insert
#define FN_INSERT_BOOKMARK (FN_INSERT + 2 ) /* Bookmark */
@@ -337,6 +341,7 @@ class SwUINumRuleItem;
#define FN_DELETE_FIELDS (FN_INSERT2 + 40)
#define FN_DELETE_SECTIONS (FN_INSERT2 + 41)
#define FN_DELETE_CONTENT_CONTROL (FN_INSERT2 + 42) /* Delete content control formatting */
+#define FN_INSERT_FLD_RANGE_PGCOUNT (FN_INSERT2 + 43) /*insert field page count in range*/
// Region: Format
#define FN_AUTOFORMAT_APPLY (FN_FORMAT + 1 ) /* apply autoformat options */
diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
index 773379e1eb0a..a9a2671c83c6 100644
--- a/sw/inc/crsrsh.hxx
+++ b/sw/inc/crsrsh.hxx
@@ -236,7 +236,6 @@ private:
bool m_bBasicHideCursor : 1; // true -> HideCursor from Basic
bool m_bSetCursorInReadOnly : 1;// true -> Cursor is allowed in ReadOnly-Areas
bool m_bOverwriteCursor : 1; // true -> show Overwrite Cursor
- bool m_bIsCursorPosChanged : 1; // true -> if the cursor position is changed last cursor update
// true -> send accessible events when cursor changes
// (set to false when using internal-only helper cursor)
diff --git a/sw/inc/deletelistener.hxx b/sw/inc/deletelistener.hxx
index 261c85763b54..da79383d75bd 100644
--- a/sw/inc/deletelistener.hxx
+++ b/sw/inc/deletelistener.hxx
@@ -13,57 +13,54 @@
#include <svl/lstner.hxx>
#include "calbck.hxx"
-class SwDeleteListener final : public SwClient
+namespace sw
+{
+template <typename T> class WeakBroadcastingPtr final : public SvtListener
{
private:
- SwModify* m_pModify;
-
- virtual void SwClientNotify(const SwModify&, const SfxHint& rHint) override
+ T* m_pBroadcasting;
+ void StartListeningIfNonnull()
{
- if (rHint.GetId() == SfxHintId::SwObjectDying)
- {
- m_pModify->Remove(*this);
- m_pModify = nullptr;
- }
+ if (m_pBroadcasting)
+ StartListening(m_pBroadcasting->GetNotifier());
}
public:
- SwDeleteListener(SwModify& rModify)
- : m_pModify(&rModify)
+ WeakBroadcastingPtr(T* pBroadcasting)
+ : m_pBroadcasting(pBroadcasting)
{
- m_pModify->Add(*this);
+ StartListeningIfNonnull();
}
-
- bool WasDeleted() const { return !m_pModify; }
-
- virtual ~SwDeleteListener() override
+ WeakBroadcastingPtr(const WeakBroadcastingPtr& rOther)
+ : m_pBroadcasting(rOther.m_pBroadcasting)
{
- if (!m_pModify)
- return;
- m_pModify->Remove(*this);
+ StartListeningIfNonnull();
}
-};
-
-class SvtDeleteListener final : public SvtListener
-{
-private:
- bool m_bObjectDeleted;
-
-public:
- explicit SvtDeleteListener(SvtBroadcaster& rNotifier)
- : m_bObjectDeleted(false)
+ void Assign(T* pBroadcasting)
{
- StartListening(rNotifier);
+ if (m_pBroadcasting)
+ EndListening(m_pBroadcasting->GetNotifier());
+ m_pBroadcasting = pBroadcasting;
+ StartListeningIfNonnull();
+ }
+ WeakBroadcastingPtr& operator=(const WeakBroadcastingPtr& rOther)
+ {
+ Assign(rOther.m_pBroadcasting);
+ return *this;
}
virtual void Notify(const SfxHint& rHint) override
{
if (rHint.GetId() == SfxHintId::Dying)
- m_bObjectDeleted = true;
+ m_pBroadcasting = nullptr;
}
- bool WasDeleted() const { return m_bObjectDeleted; }
+ T* operator->() { return m_pBroadcasting; }
+ const T* operator->() const { return m_pBroadcasting; }
+ T& operator*() { return *m_pBroadcasting; }
+ explicit operator bool() const { return m_pBroadcasting; }
};
+}
class SfxDeleteListener final : public SfxListener
{
diff --git a/sw/inc/docsh.hxx b/sw/inc/docsh.hxx
index d755d14e9b67..d67471627c5c 100644
--- a/sw/inc/docsh.hxx
+++ b/sw/inc/docsh.hxx
@@ -321,9 +321,9 @@ public:
/** passwword protection for Writer (derived from SfxObjectShell)
see also: FN_REDLINE_ON, FN_REDLINE_ON */
- virtual bool IsChangeRecording() const override;
+ virtual bool IsChangeRecording(SfxViewShell* pViewShell = nullptr, bool bRecordAllViews = true) const override;
virtual bool HasChangeRecordProtection() const override;
- virtual void SetChangeRecording( bool bActivate, bool bLockAllViews = false ) override;
+ virtual void SetChangeRecording( bool bActivate, bool bLockAllViews = false, bool bRecordAllViews = true ) override;
virtual void SetProtectionPassword( const OUString &rPassword ) override;
virtual bool GetProtectionHash( /*out*/ css::uno::Sequence< sal_Int8 > &rPasswordHash ) override;
diff --git a/sw/inc/docstyle.hxx b/sw/inc/docstyle.hxx
index e45c599d2a0b..f5a7a70a350f 100644
--- a/sw/inc/docstyle.hxx
+++ b/sw/inc/docstyle.hxx
@@ -113,6 +113,8 @@ public:
virtual sal_uInt32 GetHelpId( OUString& rFile ) override;
virtual void SetHelpId( const OUString& r, sal_uInt32 nId ) override;
+ virtual sal_Int32 GetSpotlightId() override;
+
/** Preset the members without physical access.
Used by StyleSheetPool. */
void PresetName(const OUString& rName) { aName = rName; }
diff --git a/sw/inc/docufld.hxx b/sw/inc/docufld.hxx
index 83986b735ae3..2e762987b01a 100644
--- a/sw/inc/docufld.hxx
+++ b/sw/inc/docufld.hxx
@@ -51,12 +51,14 @@ enum SwDocStatSubType
{
DS_BEGIN,
DS_PAGE = DS_BEGIN,
+ // page count in current section
+ DS_PAGE_RANGE,
DS_PARA,
DS_WORD,
DS_CHAR,
DS_TBL,
DS_GRF,
- DS_OLE,
+ DS_OLE
};
typedef sal_uInt16 SwDocInfoSubType;
@@ -255,21 +257,24 @@ class SAL_DLLPUBLIC_RTTI SwDocStatFieldType final : public SwFieldType
public:
SwDocStatFieldType(SwDoc&);
- OUString Expand(sal_uInt16 nSubType, SvxNumType nFormat) const;
+ OUString Expand(sal_uInt16 nSubType, SvxNumType nFormat,
+ sal_uInt16 nVirtPageCount) const;
virtual std::unique_ptr<SwFieldType> Copy() const override;
void SetNumFormat( SvxNumType eFormat ) { m_nNumberingType = eFormat; }
+ void UpdateRangeFields(SwRootFrame const*const pLayout);
};
class SW_DLLPUBLIC SwDocStatField final : public SwField
{
sal_uInt16 m_nSubType;
+ sal_uInt16 m_nVirtPageCount;
public:
SwDocStatField( SwDocStatFieldType*,
- sal_uInt16 nSubType, sal_uInt32 nFormat);
+ sal_uInt16 nSubType, sal_uInt32 nFormat, sal_uInt16 nVirtPageCount = 0);
- void ChangeExpansion( const SwFrame* pFrame );
+ void ChangeExpansion( const SwFrame* pFrame, sal_uInt16 nVirtPageCount);
virtual OUString ExpandImpl(SwRootFrame const* pLayout) const override;
virtual std::unique_ptr<SwField> Copy() const override;
diff --git a/sw/inc/editsh.hxx b/sw/inc/editsh.hxx
index 9d3a54c076b9..67e699a4deec 100644
--- a/sw/inc/editsh.hxx
+++ b/sw/inc/editsh.hxx
@@ -950,7 +950,7 @@ public:
/// For Redlining.
SW_DLLPUBLIC RedlineFlags GetRedlineFlags() const;
- SW_DLLPUBLIC void SetRedlineFlags( RedlineFlags eMode );
+ SW_DLLPUBLIC void SetRedlineFlags( RedlineFlags eMode, bool bRecordAllViews = true );
bool IsRedlineOn() const;
SW_DLLPUBLIC SwRedlineTable::size_type GetRedlineCount() const;
const SwRangeRedline& GetRedline( SwRedlineTable::size_type nPos ) const;
diff --git a/sw/inc/fchrfmt.hxx b/sw/inc/fchrfmt.hxx
index 96c5f9b3d905..26a5226d6b86 100644
--- a/sw/inc/fchrfmt.hxx
+++ b/sw/inc/fchrfmt.hxx
@@ -20,7 +20,7 @@
#define INCLUDED_SW_INC_FCHRFMT_HXX
#include <svl/poolitem.hxx>
-#include "calbck.hxx"
+#include <svl/listener.hxx>
#include "format.hxx"
#include "charfmt.hxx"
@@ -29,10 +29,11 @@ class IntlWrapper;
/// This pool item subclass can appear in the hint array of a text node. It refers to a character
/// style. It's owned by SwTextCharFormat.
-class SW_DLLPUBLIC SwFormatCharFormat final : public SfxPoolItem, public SwClient
+class SW_DLLPUBLIC SwFormatCharFormat final : public SfxPoolItem, public SvtListener
{
friend class SwTextCharFormat;
SwTextCharFormat* m_pTextAttribute; ///< My text attribute.
+ SwCharFormat* m_pCharFormat;
public:
/// single argument ctors shall be explicit.
@@ -44,7 +45,7 @@ public:
SwFormatCharFormat( const SwFormatCharFormat& rAttr );
private:
- virtual void SwClientNotify(const SwModify&, const SfxHint&) override;
+ virtual void Notify(const SfxHint&) override;
/// @@@ public copy ctor, but no copy assignment?
SwFormatCharFormat & operator= (const SwFormatCharFormat &) = delete;
@@ -63,12 +64,14 @@ public:
virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
virtual bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
- void SetCharFormat( SwFormat* pFormat )
+ void SetCharFormat( SwCharFormat* pFormat )
{
assert(!pFormat->IsDefault()); // expose cases that lead to use-after-free
- pFormat->Add(*this);
+ EndListeningAll();
+ StartListening(pFormat->GetNotifier());
+ m_pCharFormat = pFormat;
}
- SwCharFormat* GetCharFormat() const { return const_cast<SwCharFormat*>(static_cast<const SwCharFormat*>(GetRegisteredIn())); }
+ SwCharFormat* GetCharFormat() const { return m_pCharFormat; }
void dumpAsXml(xmlTextWriterPtr pWriter) const override;
};
diff --git a/sw/inc/fesh.hxx b/sw/inc/fesh.hxx
index c1b1ae7e9881..e5c114474425 100644
--- a/sw/inc/fesh.hxx
+++ b/sw/inc/fesh.hxx
@@ -387,7 +387,7 @@ public:
SW_DLLPUBLIC bool IsFrameSelected() const;
bool GetFlyFrameAttr( SfxItemSet &rSet ) const;
SW_DLLPUBLIC bool SetFlyFrameAttr( SfxItemSet &rSet );
- static SfxItemSetFixed<RES_VERT_ORIENT, RES_ANCHOR> makeItemSetFromFormatAnchor(SfxItemPool& rPool, const SwFormatAnchor &rAnchor);
+ static SfxItemSet makeItemSetFromFormatAnchor(SfxItemPool& rPool, const SwFormatAnchor &rAnchor);
void ResetFlyFrameAttr( const SfxItemSet* pSet );
SW_DLLPUBLIC const SwFrameFormat *NewFlyFrame( const SfxItemSet &rSet, bool bAnchValid = false,
SwFrameFormat *pParent = nullptr );
@@ -672,7 +672,7 @@ public:
void SetRowSplit( const SwFormatRowSplit &rSz );
std::unique_ptr<SwFormatRowSplit> GetRowSplit() const;
- void SetBoxAlign( sal_uInt16 nOrient );
+ SW_DLLPUBLIC void SetBoxAlign(sal_uInt16 nOrient);
sal_uInt16 GetBoxAlign() const; ///< USHRT_MAX if ambiguous.
bool BalanceRowHeight( bool bTstOnly, const bool bOptimize = false );
diff --git a/sw/inc/fmtcol.hxx b/sw/inc/fmtcol.hxx
index db39befc3d68..5c61255ee695 100644
--- a/sw/inc/fmtcol.hxx
+++ b/sw/inc/fmtcol.hxx
@@ -23,6 +23,7 @@
#include "format.hxx"
#include "hintids.hxx"
#include "paratr.hxx"
+#include "deletelistener.hxx"
#include <rtl/ustring.hxx>
#include <tools/solar.h>
@@ -178,16 +179,17 @@ enum class Master_CollCondition
PARA_IN_ENDNOTE
};
-class SW_DLLPUBLIC SwCollCondition final : public SwClient
+class SW_DLLPUBLIC SwCollCondition final
{
Master_CollCondition m_nCondition;
sal_uInt32 m_nSubCondition;
+ sw::WeakBroadcastingPtr<SwTextFormatColl> m_pCollection;
public:
SwCollCondition( SwTextFormatColl* pColl, Master_CollCondition nMasterCond,
sal_uInt32 nSubCond );
- virtual ~SwCollCondition() override;
+ ~SwCollCondition();
/// @@@ public copy ctor, but no copy assignment?
SwCollCondition( const SwCollCondition& rCpy );
@@ -202,8 +204,8 @@ public:
sal_uInt32 GetSubCondition() const { return m_nSubCondition; }
void SetCondition( Master_CollCondition nCond, sal_uInt32 nSubCond );
- SwTextFormatColl* GetTextFormatColl() const { return const_cast<SwTextFormatColl*>(static_cast<const SwTextFormatColl*>(GetRegisteredIn())); }
- void RegisterToFormat( SwFormat& );
+ SwTextFormatColl* GetTextFormatColl() const { return const_cast<SwTextFormatColl*>(m_pCollection.operator->()); }
+ void RegisterToFormat( SwTextFormatColl& );
};
using SwFormatCollConditions = std::vector<std::unique_ptr<SwCollCondition>>;
diff --git a/sw/inc/fmtftn.hxx b/sw/inc/fmtftn.hxx
index c751ee03a730..bf2e744814bd 100644
--- a/sw/inc/fmtftn.hxx
+++ b/sw/inc/fmtftn.hxx
@@ -44,7 +44,7 @@ class SwXTextRange;
/// for the footnote content is defined by m_pTextAttr.
class SW_DLLPUBLIC SwFormatFootnote final
: public SfxPoolItem
- , public SvtBroadcaster
+ , public sw::BroadcasterMixin
{
friend class SwTextFootnote;
SwTextFootnote* m_pTextAttr; ///< My TextAttribute.
diff --git a/sw/inc/fmtftntx.hxx b/sw/inc/fmtftntx.hxx
index 26106ef6aae9..601879239bb1 100644
--- a/sw/inc/fmtftntx.hxx
+++ b/sw/inc/fmtftntx.hxx
@@ -51,6 +51,8 @@ protected:
: SfxEnumItem( nWhichL, ePos ), m_nOffset( 0 )
{}
+ virtual SfxItemType ItemType() const override = 0;
+
public:
virtual sal_uInt16 GetValueCount() const override;
diff --git a/sw/inc/grfatr.hxx b/sw/inc/grfatr.hxx
index edc2b3a10d84..62f7585fec56 100644
--- a/sw/inc/grfatr.hxx
+++ b/sw/inc/grfatr.hxx
@@ -154,6 +154,8 @@ protected:
: SfxInt16Item( nWhichL, nVal )
{}
+ virtual SfxItemType ItemType() const override = 0;
+
public:
// pure virtual methods from SfxInt16Item
virtual bool GetPresentation( SfxItemPresentation ePres,
@@ -265,6 +267,8 @@ class SwDrawModeGrf_Base: public SfxEnumItem<GraphicDrawMode> {
protected:
SwDrawModeGrf_Base(GraphicDrawMode nMode):
SfxEnumItem(RES_GRFATR_DRAWMODE, nMode) {}
+
+ virtual SfxItemType ItemType() const override = 0;
};
class SW_DLLPUBLIC SwDrawModeGrf final : public SwDrawModeGrf_Base
diff --git a/sw/inc/inspectorproperties.hrc b/sw/inc/inspectorproperties.hrc
index 88f535847970..3404018a8c19 100644
--- a/sw/inc/inspectorproperties.hrc
+++ b/sw/inc/inspectorproperties.hrc
@@ -212,6 +212,7 @@
#define RID_PARA_HYPHENATION_ZONE NC_("RID_ATTRIBUTE_NAMES_MAP", "Para Hyphenation Zone")
#define RID_PARA_HYPHENATION_KEEP NC_("RID_ATTRIBUTE_NAMES_MAP", "Para Hyphenation Keep")
#define RID_PARA_HYPHENATION_KEEP_TYPE NC_("RID_ATTRIBUTE_NAMES_MAP", "Para Hyphenation Keep Type")
+#define RID_PARA_HYPHENATION_KEEP_LINE NC_("RID_ATTRIBUTE_NAMES_MAP", "Para Hyphenation Keep Line")
#define RID_PARA_INTEROP_GRAB_BAG NC_("RID_ATTRIBUTE_NAMES_MAP", "Para Interop Grab Bag")
#define RID_PARA_IS_AUTO_FIRST_LINE_INDENT NC_("RID_ATTRIBUTE_NAMES_MAP", "Para is Auto First Line Indent")
#define RID_PARA_IS_CHARACTER_DISTANCE NC_("RID_ATTRIBUTE_NAMES_MAP", "Para is Character Distance")
diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx
index 0678c4086cd6..5a435a793b21 100644
--- a/sw/inc/ndtxt.hxx
+++ b/sw/inc/ndtxt.hxx
@@ -37,6 +37,7 @@
#include <memory>
#include <vector>
#include <functional>
+#include <map>
class SfxHint;
class SwNumRule;
@@ -383,6 +384,16 @@ public:
const SwPosition &rStart,
sal_Int32 nLen,
const bool bForceCopyOfAllAttrs = false );
+ /*
+ After copying a text portion with its comments, the replies will still reference to their original parent.
+ We need to set their reference to their copied-parent.
+ idMapForComments and nameMapForComments variables hold the original ids of comments as keys.
+ And they hold the new ids and names of comments as values.
+ So we can find a reply's (child comment) new parent (value) by looking up its original parent (key).
+ */
+ static void EstablishParentChildRelationsOfComments(const SwTextNode* pDest,
+ std::map<sal_Int32, sal_Int32>& idMapForComments,
+ std::map<sal_Int32, OUString>& nameMapForComments);
void CutText(SwTextNode * const pDest,
const SwContentIndex & rStart, const sal_Int32 nLen);
@@ -457,7 +468,7 @@ public:
const sal_Int32 nIndex,
::sw::GetTextAttrMode const eMode = ::sw::GetTextAttrMode::Expand) const;
- bool Spell(SwSpellArgs*);
+ bool Spell(SwSpellArgs* , bool bIsReadOnly);
bool Convert( SwConversionArgs & );
inline SwTextFormatColl *GetTextColl() const;
diff --git a/sw/inc/node.hxx b/sw/inc/node.hxx
index a19d48e247c1..9ddadf952050 100644
--- a/sw/inc/node.hxx
+++ b/sw/inc/node.hxx
@@ -449,8 +449,7 @@ public:
std::pair<Point, bool> const* pViewPosAndCalcFrame = nullptr) const;
/** @return the real size of the frame or an empty rectangle if
no layout exists. Needed for export filters. */
- SW_DLLPUBLIC SwRect FindLayoutRect( const bool bPrtArea = false,
- const Point* pPoint = nullptr ) const;
+ SW_DLLPUBLIC SwRect FindLayoutRect( const Point* pPoint = nullptr ) const;
SW_DLLPUBLIC SwRect FindPageFrameRect() const;
/** Method creates all views of document for given node. The content
diff --git a/sw/inc/pagedesc.hxx b/sw/inc/pagedesc.hxx
index f2da66539b96..f18ae6375ece 100644
--- a/sw/inc/pagedesc.hxx
+++ b/sw/inc/pagedesc.hxx
@@ -160,11 +160,11 @@ class SW_DLLPUBLIC SwPageDesc final
mutable StashedPageDesc m_aStashedHeader;
mutable StashedPageDesc m_aStashedFooter;
- sw::WriterMultiListener m_aDepends; ///< Because of grid alignment (Registerhaltigkeit).
+ sw::WriterMultiListener m_aDepends; ///< Because of grid alignment (register accuracy / register-true).
mutable const SwTextFormatColl* m_pTextFormatColl;
SwPageDesc *m_pFollow;
sal_uInt16 m_nRegHeight; ///< Sentence spacing and fontascent of style.
- sal_uInt16 m_nRegAscent; ///< For grid alignment (Registerhaltigkeit).
+ sal_uInt16 m_nRegAscent; ///< For grid alignment (register accuracy / register-true).
drawing::TextVerticalAdjust m_nVerticalAdjustment; // doc/docx: vertically center / justify / bottom
UseOnPage m_eUse;
bool m_IsLandscape;
diff --git a/sw/inc/pch/precompiled_swui.hxx b/sw/inc/pch/precompiled_swui.hxx
index 0ed7216a6b27..96a8e8bd929b 100644
--- a/sw/inc/pch/precompiled_swui.hxx
+++ b/sw/inc/pch/precompiled_swui.hxx
@@ -96,7 +96,7 @@
#include <sal/saldllapi.h>
#include <sal/types.h>
#include <sal/typesizes.h>
-#include <vcl/AccessibleBrowseBoxObjType.hxx>
+#include <vcl/accessibility/AccessibleBrowseBoxObjType.hxx>
#include <vcl/BinaryDataContainer.hxx>
#include <vcl/BitmapColor.hxx>
#include <vcl/GraphicAttributes.hxx>
diff --git a/sw/inc/rdfhelper.hxx b/sw/inc/rdfhelper.hxx
index 8152ef6765c5..dd7267758846 100644
--- a/sw/inc/rdfhelper.hxx
+++ b/sw/inc/rdfhelper.hxx
@@ -39,7 +39,7 @@ class SW_DLLPUBLIC SwRDFHelper
public:
/// Gets all graph-names in RDF of a given type.
static css::uno::Sequence<css::uno::Reference<css::rdf::XURI>>
- getGraphNames(const css::uno::Reference<css::rdf::XDocumentMetadataAccess>& xDocumentMetadataAccess,
+ getGraphNames(const rtl::Reference<SwXTextDocument>& xModel,
const css::uno::Reference<css::rdf::XURI>& xType);
/// Gets all graph-names in RDF of a given type.
diff --git a/sw/inc/redline.hxx b/sw/inc/redline.hxx
index 20befbaa43d7..6a88a0a3ccd1 100644
--- a/sw/inc/redline.hxx
+++ b/sw/inc/redline.hxx
@@ -252,7 +252,8 @@ public:
void ShowOriginal(sal_uInt16 nLoop, size_t nMyPos, bool bForced = false);
/// Calculates the intersection with text node number nNdIdx.
- void CalcStartEnd(SwNodeOffset nNdIdx, sal_Int32& rStart, sal_Int32& rEnd) const;
+ /// @return true if the entire redline precedes nNdIdx
+ bool CalcStartEnd(SwNodeOffset nNdIdx, sal_Int32& rStart, sal_Int32& rEnd) const;
enum class Invalidation { Add, Remove };
/// Initiate the layout.
diff --git a/sw/inc/section.hxx b/sw/inc/section.hxx
index 0c45e470d247..b2f5fb53a54a 100644
--- a/sw/inc/section.hxx
+++ b/sw/inc/section.hxx
@@ -67,6 +67,7 @@ private:
OUString m_sLinkFileName;
OUString m_sLinkFilePassword; // Must be changed to Sequence.
css::uno::Sequence <sal_Int8> m_Password;
+ sal_uInt16 m_nPage; // loaded meta page count for page anchored flys in master document
/// It seems this flag caches the current final "hidden" state.
bool m_bHiddenFlag : 1;
@@ -133,6 +134,9 @@ public:
bool IsConnectFlag() const { return m_bConnectFlag; }
void SetConnectFlag(bool const bFlag){ m_bConnectFlag = bFlag; }
+ sal_uInt16 GetPageNum() const { return m_nPage; }
+ void SetPageNum(sal_uInt16 nPageNum){ m_nPage = nPageNum; }
+
void dumpAsXml(xmlTextWriterPtr pWriter) const;
};
@@ -213,6 +217,11 @@ public:
css::uno::Sequence<sal_Int8> const& GetPassword() const
{ return m_Data.GetPassword(); }
+ sal_uInt16 GetPageNum() const
+ { return m_Data.GetPageNum(); }
+ void SetPageNum(sal_uInt16 nPage)
+ { m_Data.SetPageNum(nPage); }
+
// Data server methods.
void SetRefObject( SwServerObject* pObj );
const SwServerObject* GetObject() const { return m_RefObj.get(); }
diff --git a/sw/inc/strings.hrc b/sw/inc/strings.hrc
index 633efd926094..526c1f3ab8f6 100644
--- a/sw/inc/strings.hrc
+++ b/sw/inc/strings.hrc
@@ -337,8 +337,8 @@
#define STR_NUMERIC NC_("STR_NUMERIC", "Numeric")
#define STR_ROW NC_("STR_ROW", "Rows")
#define STR_COL NC_("STR_COL", "Column")
-#define STR_AUTHMRK_EDIT NC_("STR_AUTHMRK_EDIT", "Edit Bibliography Entry")
-#define STR_AUTHMRK_INSERT NC_("STR_AUTHMRK_INSERT", "Insert Bibliography Entry")
+#define STR_AUTHMRK_EDIT NC_("STR_AUTHMRK_EDIT", "Edit Citation")
+#define STR_AUTHMRK_INSERT NC_("STR_AUTHMRK_INSERT", "Insert Citation")
#define STR_ACCESS_PAGESETUP_SPACING NC_("STR_ACCESS_PAGESETUP_SPACING", "Spacing between %1 and %2")
#define STR_ACCESS_COLUMN_WIDTH NC_("STR_ACCESS_COLUMN_WIDTH", "Column %1 Width")
#define STR_CAPTION_TABLE NC_("STR_CAPTION_TABLE", "%PRODUCTNAME Writer Table")
@@ -588,7 +588,7 @@
#define STR_NOTE NC_("STR_NOTE", "comment")
#define STR_REFERENCE NC_("STR_REFERENCE", "cross-reference")
#define STR_SCRIPT NC_("STR_SCRIPT", "script")
-#define STR_AUTHORITY_ENTRY NC_("STR_AUTHORITY_ENTRY", "bibliography entry")
+#define STR_AUTHORITY_ENTRY NC_("STR_AUTHORITY_ENTRY", "citation")
#define STR_SPECIALCHAR NC_("STR_SPECIALCHAR", "special character")
#define STR_FOOTNOTE NC_("STR_FOOTNOTE", "footnote")
#define STR_GRAPHIC NC_("STR_GRAPHIC", "image")
@@ -865,7 +865,7 @@
#define STR_IDXMRK_EDIT NC_("STR_IDXMRK_EDIT", "Edit Index Entry")
#define STR_IDXMRK_INSERT NC_("STR_IDXMRK_INSERT", "Insert Index Entry")
-#define STR_QUERY_CHANGE_AUTH_ENTRY NC_("STR_QUERY_CHANGE_AUTH_ENTRY", "The document already contains the bibliography entry but with different data. Do you want to adjust the existing entries?")
+#define STR_QUERY_CHANGE_AUTH_ENTRY NC_("STR_QUERY_CHANGE_AUTH_ENTRY", "The document already contains the citation but with different data. Do you want to adjust the existing entries?")
#define STR_COMMENTS_LABEL NC_("STR_COMMENTS_LABEL", "Comments")
#define STR_SHOW_COMMENTS NC_("STR_SHOW_COMMENTS", "Show comments")
@@ -993,7 +993,7 @@
#define STR_USERFLD NC_("STR_USERFLD", "User Field")
#define STR_POSTITFLD NC_("STR_POSTITFLD", "Note")
#define STR_SCRIPTFLD NC_("STR_SCRIPTFLD", "Script")
-#define STR_AUTHORITY NC_("STR_AUTHORITY", "Bibliography entry")
+#define STR_AUTHORITY NC_("STR_AUTHORITY", "Citation")
#define STR_HIDDENPARAFLD NC_("STR_HIDDENPARAFLD", "Hidden Paragraph")
// range DocumentInfo
#define STR_DOCINFOFLD NC_("STR_DOCINFOFLD", "DocInformation")
@@ -1012,6 +1012,7 @@
#define FLD_STAT_GRF NC_("FLD_STAT_GRF", "Image")
#define FLD_STAT_OBJ NC_("FLD_STAT_OBJ", "OLE objects")
#define FLD_STAT_PAGE NC_("FLD_STAT_PAGE", "Pages")
+#define FLD_STAT_PAGE_RANGE NC_("FLD_STAT_PAGE", "Pages in range")
// SubCmd DDETypes
#define FMT_DDE_HOT NC_("FMT_DDE_HOT", "DDE automatic")
#define FMT_DDE_NORMAL NC_("FMT_DDE_NORMAL", "DDE manual")
@@ -1383,7 +1384,7 @@
#define STR_TOKEN_HELP_CHAPTER_INFO NC_("STR_TOKEN_HELP_CHAPTER_INFO", "Heading info")
#define STR_TOKEN_HELP_LINK_START NC_("STR_TOKEN_HELP_LINK_START", "Hyperlink start")
#define STR_TOKEN_HELP_LINK_END NC_("STR_TOKEN_HELP_LINK_END", "Hyperlink end")
-#define STR_TOKEN_HELP_AUTHORITY NC_("STR_TOKEN_HELP_AUTHORITY", "Bibliography entry: ")
+#define STR_TOKEN_HELP_AUTHORITY NC_("STR_TOKEN_HELP_AUTHORITY", "Citation: ")
#define STR_CHARSTYLE NC_("STR_CHARSTYLE", "Character Style: ")
#define STR_STRUCTURE NC_("STR_STRUCTURE", "Structure text")
#define STR_ADDITIONAL_ACCNAME_STRING1 NC_("STR_ADDITIONAL_ACCNAME_STRING1", "Press Ctrl+Alt+A to move focus for more operations")
@@ -1532,6 +1533,7 @@
#define STR_COMPAT_OPT_CONTINUOUS_ENDNOTES NC_("STR_COMPAT_OPT_CONTINUOUS_ENDNOTES", "Render endnotes at the end of document inline, rather than on a separate page")
#define STR_COMPAT_OPT_MSWORDCOMPGRIDMETRICS NC_("STR_COMPAT_OPT_MSWORDCOMPGRIDMETRICS", "Use Word-compatible font metrics for text grid")
#define STR_COMPAT_OPT_IGNORETABSANDBLANKSFORLINECALCULATION NC_("STR_COMPAT_OPT_IGNORETABSANDBLANKSFORLINECALCULATION", "Make whitespace character height not affect line height")
+#define STR_COMPAT_OPT_UNDERLINETRAILINGSPACE NC_("STR_COMPAT_OPT_UNDERLINETRAILINGSPACE", "Underline Word-compatible trailing blanks")
#define STR_TABLE_PANEL_ALIGN_AUTO NC_("sidebartableedit|alignautolabel", "Automatic")
#define STR_TABLE_PANEL_ALIGN_LEFT NC_("sidebartableedit|alignleftlabel", "Left")
@@ -1552,6 +1554,12 @@
#define STR_QUERY_INSMODE_TITLE NC_("STR_QUERY_INSMODE_TITLE", "You are switching to the overwrite mode")
#define STR_QUERY_INSMODE_TEXT NC_("STR_QUERY_INSMODE_TEXT", "The overwrite mode allows to type over text. It is indicated by a block cursor and at the statusbar. Press Insert again to switch back.")
#define STR_QUERY_INSMODE_QUESTION NC_("STR_QUERY_INSMODE_QUESTION", "Do you want to continue?")
+
+// To translators: title and question for confirmation whether to delete all comments / all comments by author; text intentionally empty
+#define STR_QUERY_DELALLCOMMENTS_TITLE NC_("STR_QUERY_DELALLCOMMENTS_TITLE", "Confirm delete")
+#define STR_QUERY_DELALLCOMMENTS_QUESTION NC_("STR_QUERY_DELALLCOMMENTS_QUESTION", "Are you sure you want to delete all comments?")
+#define STR_QUERY_DELALLCOMMENTSAUTHOR_QUESTION NC_("STR_QUERY_DELALLCOMMENTS_QUESTION", "Are you sure you want to delete all comments by %AUTHOR?")
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/inc/swabstdlg.hxx b/sw/inc/swabstdlg.hxx
index 229b2fdc042d..3f4e1cd5b10d 100644
--- a/sw/inc/swabstdlg.hxx
+++ b/sw/inc/swabstdlg.hxx
@@ -241,6 +241,7 @@ public:
virtual int GetPageNumberAlignment() const = 0;
virtual bool GetMirrorOnEvenPages() const = 0;
virtual bool GetIncludePageTotal() const = 0;
+ virtual bool GetIncludePageRangeTotal() const = 0;
virtual bool GetFitIntoExistingMargins() const = 0;
virtual SvxNumType GetPageNumberType() const = 0;
virtual void SetPageNumberType(SvxNumType nSet) = 0;
@@ -367,6 +368,16 @@ public:
};
/**
+ * Interface for copy field value dialog in read only documents. It's implemented by
+ * AbstractCopyFieldDlg_Impl
+ */
+class AbstractCopyFieldDlg : public VclAbstractDialog
+{
+protected:
+ virtual ~AbstractCopyFieldDlg() override = default;
+};
+
+/**
* Interface for e.g. the form -> content control -> properties -> add dialog. It's implemented by
* AbstractSwContentControlListItemDlg_Impl, but SwContentControlDlg only knows about this interface
* and the SwAbstractDialogFactory::CreateSwContentControlListItemDlg() factory.
@@ -547,6 +558,9 @@ public:
virtual VclPtr<AbstractSwRenameXNamedDlg> CreateSwRenameXNamedDlg(weld::Widget* pParent,
css::uno::Reference< css::container::XNamed > & xNamed,
css::uno::Reference< css::container::XNameAccess > & xNameAccess) = 0;
+
+ virtual VclPtr<AbstractCopyFieldDlg> CreateCopyFieldDlg(weld::Widget* pParent, const rtl::OUString& rFieldValue ) = 0;
+
virtual VclPtr<AbstractSwModalRedlineAcceptDlg> CreateSwModalRedlineAcceptDlg(weld::Window *pParent) = 0;
virtual VclPtr<AbstractSwPageNumberDlg> CreateSwPageNumberDlg(weld::Window* pParent) = 0;
diff --git a/sw/inc/swdll.hxx b/sw/inc/swdll.hxx
index 08fda1af91d6..5898d5f7ae0e 100644
--- a/sw/inc/swdll.hxx
+++ b/sw/inc/swdll.hxx
@@ -34,8 +34,6 @@ class Filters;
namespace SwGlobals
{
void SW_DLLPUBLIC ensure();
-
-sw::Filters& getFilters();
}
#endif
diff --git a/sw/inc/swmodule.hxx b/sw/inc/swmodule.hxx
index c77fa3d0d7b7..6d39a3dc76c5 100644
--- a/sw/inc/swmodule.hxx
+++ b/sw/inc/swmodule.hxx
@@ -232,7 +232,7 @@ public:
virtual std::optional<SfxItemSet> CreateItemSet( sal_uInt16 nId ) override;
virtual void ApplyItemSet( sal_uInt16 nId, const SfxItemSet& rSet ) override;
virtual std::unique_ptr<SfxTabPage> CreateTabPage( sal_uInt16 nId, weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet ) override;
- SW_DLLPUBLIC virtual std::optional<SfxStyleFamilies> CreateStyleFamilies() override;
+ SW_DLLPUBLIC virtual SfxStyleFamilies CreateStyleFamilies() override;
// Pool is created here and set at SfxShell.
void InitAttrPool();
diff --git a/sw/inc/swurl.hxx b/sw/inc/swurl.hxx
index 87375f30c8b7..6051a6da32df 100644
--- a/sw/inc/swurl.hxx
+++ b/sw/inc/swurl.hxx
@@ -23,6 +23,7 @@
#include <o3tl/typed_flags_set.hxx>
class SwViewShell;
+class SwWrtShell;
enum class LoadUrlFlags {
NONE = 0x00,
@@ -32,7 +33,9 @@ namespace o3tl {
template<> struct typed_flags<LoadUrlFlags> : is_typed_flags<LoadUrlFlags, 0x01> {};
}
-void LoadURL( SwViewShell& rSh, const OUString& rName,
+bool LoadURL( SwWrtShell& rSh, const OUString& rName,
+ LoadUrlFlags nFilter, const OUString& rTargetFrameName );
+bool LoadURL( SwViewShell* rSh, const OUString& rName,
LoadUrlFlags nFilter, const OUString& rTargetFrameName );
#endif
diff --git a/sw/inc/tgrditem.hxx b/sw/inc/tgrditem.hxx
index 0836fb731d8b..c787b165c7f8 100644
--- a/sw/inc/tgrditem.hxx
+++ b/sw/inc/tgrditem.hxx
@@ -27,7 +27,7 @@
class IntlWrapper;
-enum SwTextGrid { GRID_NONE, GRID_LINES_ONLY, GRID_LINES_CHARS };
+enum class SwTextGrid { NONE, LinesOnly, LinesAndChars };
class SW_DLLPUBLIC SwTextGridItem final : public SfxPoolItem
{
diff --git a/sw/inc/txtatr.hxx b/sw/inc/txtatr.hxx
index cf425589387a..dae1a61b1723 100644
--- a/sw/inc/txtatr.hxx
+++ b/sw/inc/txtatr.hxx
@@ -80,10 +80,10 @@ public:
};
-class SW_DLLPUBLIC SwTextRuby final: public SwTextAttrNesting, public SwClient
+class SW_DLLPUBLIC SwTextRuby final: public SwTextAttrNesting, public SvtListener
{
SwTextNode* m_pTextNode;
- virtual void SwClientNotify(const SwModify&, const SfxHint&) override;
+ virtual void Notify(const SfxHint&) override;
public:
SwTextRuby(
const SfxPoolItemHolder& rAttr,
diff --git a/sw/inc/unocoll.hxx b/sw/inc/unocoll.hxx
index b190f3e4ca1f..5bc0f5c0726a 100644
--- a/sw/inc/unocoll.hxx
+++ b/sw/inc/unocoll.hxx
@@ -126,6 +126,7 @@ enum class SwServiceType {
FieldTypeDocInfoDescription = 59,
FieldTypeDocInfoCreateAuthor = 60,
FieldTypeDocInfoCreateDateTime = 61,
+ FieldTypePageCountRange = 62,
FieldTypeDummy1 = 63,
FieldTypeDummy2 = 64,
FieldTypeDummy3 = 65,
@@ -215,6 +216,7 @@ enum class SwServiceType {
#define CSS_TEXT_TEXTFIELD_DATABASE_NAME "com.sun.star.text.textfield.DatabaseName"
#define CSS_TEXT_TEXTFIELD_TABLE_FORMULA "com.sun.star.text.textfield.TableFormula"
#define CSS_TEXT_TEXTFIELD_PAGE_COUNT "com.sun.star.text.textfield.PageCount"
+#define CSS_TEXT_TEXTFIELD_PAGE_COUNT_RANGE "com.sun.star.text.textfield.PageCountRange"
#define CSS_TEXT_TEXTFIELD_PARAGRAPH_COUNT "com.sun.star.text.textfield.ParagraphCount"
#define CSS_TEXT_TEXTFIELD_WORD_COUNT "com.sun.star.text.textfield.WordCount"
#define CSS_TEXT_TEXTFIELD_CHARACTER_COUNT "com.sun.star.text.textfield.CharacterCount"
diff --git a/sw/inc/unocrsrhelper.hxx b/sw/inc/unocrsrhelper.hxx
index e9fea3d32c9c..5ec7d6636536 100644
--- a/sw/inc/unocrsrhelper.hxx
+++ b/sw/inc/unocrsrhelper.hxx
@@ -184,7 +184,7 @@ namespace SwUnoCursorHelper
css::uno::Any GetPropertyValue(
SwPaM& rPaM,
const SfxItemPropertySet & rPropSet,
- const OUString& rPropertyName);
+ std::u16string_view rPropertyName);
/// @throws css::beans::UnknownPropertyException
/// @throws css::uno::RuntimeException
css::uno::Sequence< css::beans::PropertyState > GetPropertyStates(
@@ -205,14 +205,14 @@ namespace SwUnoCursorHelper
void SetPropertyToDefault(
SwPaM & rPaM,
const SfxItemPropertySet & rPropSet,
- const OUString& rPropertyName);
+ std::u16string_view rPropertyName);
/// @throws css::beans::UnknownPropertyException
/// @throws css::lang::WrappedTargetException
/// @throws css::uno::RuntimeException
css::uno::Any GetPropertyDefault(
SwPaM const & rPaM,
const SfxItemPropertySet & rPropSet,
- const OUString& rPropertyName);
+ std::u16string_view rPropertyName);
bool SetPageDesc(
const css::uno::Any& rValue,
diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx
index b262018c41f6..82bd0b806c93 100644
--- a/sw/inc/unoprnms.hxx
+++ b/sw/inc/unoprnms.hxx
@@ -83,6 +83,7 @@ inline constexpr OUString UNO_NAME_PARA_HYPHENATION_NO_LAST_WORD
= u"ParaHyphenationNoLastWord"_ustr;
inline constexpr OUString UNO_NAME_PARA_HYPHENATION_KEEP = u"ParaHyphenationKeep"_ustr;
inline constexpr OUString UNO_NAME_PARA_HYPHENATION_KEEP_TYPE = u"ParaHyphenationKeepType"_ustr;
+inline constexpr OUString UNO_NAME_PARA_HYPHENATION_KEEP_LINE = u"ParaHyphenationKeepLine"_ustr;
inline constexpr OUString UNO_NAME_LEFT_MARGIN = u"LeftMargin"_ustr;
inline constexpr OUString UNO_NAME_RIGHT_MARGIN = u"RightMargin"_ustr;
inline constexpr OUString UNO_NAME_GUTTER_MARGIN = u"GutterMargin"_ustr;
@@ -309,6 +310,7 @@ inline constexpr OUString UNO_NAME_NUMBERING_TYPE = u"NumberingType"_ustr;
inline constexpr OUString UNO_NAME_OFFSET = u"Offset"_ustr;
inline constexpr OUString UNO_NAME_ON = u"On"_ustr;
inline constexpr OUString UNO_NAME_OPAQUE = u"Opaque"_ustr;
+inline constexpr OUString UNO_NAME_PAGE_COUNT_RANGE = u"PageCountRange"_ustr;
inline constexpr OUString UNO_NAME_PAGE_TOGGLE = u"PageToggle"_ustr;
inline constexpr OUString UNO_NAME_PAGE_DESC_NAME = u"PageDescName"_ustr;
inline constexpr OUString UNO_NAME_PAGE_NUMBER_OFFSET = u"PageNumberOffset"_ustr;
diff --git a/sw/inc/unotextrange.hxx b/sw/inc/unotextrange.hxx
index b9f2cd2d0d73..1b7eea967fe7 100644
--- a/sw/inc/unotextrange.hxx
+++ b/sw/inc/unotextrange.hxx
@@ -114,14 +114,15 @@ public:
enum RangePosition
{
RANGE_IN_TEXT, // "ordinary" css::text::TextRange
- RANGE_IN_CELL, // position created with a cell that has no uno object
RANGE_IS_TABLE, // anchor of a table
RANGE_IS_SECTION, // anchor of a section
+ RANGE_IS_BOOKMARK, ///< anchor of a bookmark
};
SwXTextRange(SwPaM const & rPam,
const css::uno::Reference< css::text::XText > & xParent,
- const enum RangePosition eRange = RANGE_IN_TEXT);
+ const enum RangePosition eRange = RANGE_IN_TEXT,
+ bool isInCell = false);
// only for RANGE_IS_TABLE
SwXTextRange(SwTableFormat& rTableFormat);
// only for RANGE_IS_SECTION
@@ -136,7 +137,8 @@ public:
static rtl::Reference< SwXTextRange > CreateXTextRange(
SwDoc & rDoc,
- const SwPosition& rPos, const SwPosition *const pMark);
+ const SwPosition& rPos, const SwPosition *const pMark,
+ RangePosition eRange = RANGE_IN_TEXT);
// XServiceInfo
virtual OUString SAL_CALL getImplementationName() override;
@@ -209,6 +211,7 @@ public:
private:
const SfxItemPropertySet& m_rPropSet;
const enum RangePosition m_eRangePosition;
+ bool const m_isRangeInCell; //< position created with a cell that has no uno object
SwDoc& m_rDoc;
css::uno::Reference<css::text::XText> m_xParentText;
const SwFrameFormat* m_pTableOrSectionFormat;
diff --git a/sw/inc/unotxdoc.hxx b/sw/inc/unotxdoc.hxx
index 5815515d8d90..57f4bbd026c3 100644
--- a/sw/inc/unotxdoc.hxx
+++ b/sw/inc/unotxdoc.hxx
@@ -62,7 +62,6 @@
#include <editeng/UnoForbiddenCharsTable.hxx>
#include <cppuhelper/implbase.hxx>
#include <vcl/ITiledRenderable.hxx>
-#include <com/sun/star/tiledrendering/XTiledRenderable.hpp>
#include <com/sun/star/text/XPasteBroadcaster.hpp>
#include "unobaseclass.hxx"
@@ -173,8 +172,7 @@ SwXTextDocumentBaseClass;
class SW_DLLPUBLIC SwXTextDocument final : public SwXTextDocumentBaseClass,
public SvxFmMSFactory,
- public vcl::ITiledRenderable,
- public css::tiledrendering::XTiledRenderable
+ public vcl::ITiledRenderable
{
private:
class Impl;
@@ -495,9 +493,6 @@ public:
/// @see vcl::ITiledRenderable::getSearchResultRectangles().
std::vector<basegfx::B2DRange> getSearchResultRectangles(const char* pPayload) override;
- // css::tiledrendering::XTiledRenderable
- virtual void SAL_CALL paintTile( const ::css::uno::Any& Parent, ::sal_Int32 nOutputWidth, ::sal_Int32 nOutputHeight, ::sal_Int32 nTilePosX, ::sal_Int32 nTilePosY, ::sal_Int32 nTileWidth, ::sal_Int32 nTileHeight ) override;
-
/// @see vcl::ITiledRenderable::executeContentControlEvent().
void executeContentControlEvent(const StringMap& aArguments) override;
diff --git a/sw/inc/view.hxx b/sw/inc/view.hxx
index 220c97af2627..a70668a09048 100644
--- a/sw/inc/view.hxx
+++ b/sw/inc/view.hxx
@@ -456,7 +456,7 @@ public:
tools::Long SetHScrollMax(tools::Long lMax);
void SpellError(LanguageType eLang);
- bool ExecSpellPopup( const Point& rPt );
+ bool ExecSpellPopup(const Point& rPt, bool bIsMouseEvent);
void ExecSmartTagPopup( const Point& rPt );
DECL_DLLPRIVATE_LINK( OnlineSpellCallback, SpellCallbackInfo&, void );
@@ -556,6 +556,8 @@ public:
void SetSelDrawSlot();
void FlipDrawSelMode() { m_bDrawSelMode = !m_bDrawSelMode; }
void NoRotate(); // turn off rotate mode
+ void ToggleRotate(); // switch between move and rotate mode
+
bool EnterDrawTextMode(const Point& aDocPos);
/// Same as EnterDrawTextMode(), but takes an SdrObject instead of guessing it by document position.
bool EnterShapeDrawTextMode(SdrObject* pObject);
@@ -692,8 +694,10 @@ public:
void NotifyCursor(SfxViewShell* pViewShell) const override;
/// See SfxViewShell::GetColorConfigColor().
::Color GetColorConfigColor(svtools::ColorConfigEntry nColorType) const override;
- void ShowUIElement(const OUString& sElementURL) const;
+ void SetUIElementVisibility(const OUString& sElementURL, bool bShow) const;
+ void ShowUIElement(const OUString& sElementURL) const;
+ void HideUIElement(const OUString& sElementURL) const;
enum CachedStringID
{
@@ -729,7 +733,9 @@ public:
virtual void flushPendingLOKInvalidateTiles() override;
virtual std::optional<OString> getLOKPayload(int nType, int nViewId) const override;
- bool IsHighlightCharDF() { return m_bIsHighlightCharDF; }
+ bool IsHighlightCharDF() const { return m_bIsHighlightCharDF; }
+ bool IsSpotlightParaStyles() const { return m_bIsSpotlightParaStyles; }
+ bool IsSpotlightCharStyles() const { return m_bIsSpotlightCharStyles; }
private:
AutoTimer m_aBringToAttentionBlinkTimer;
diff --git a/sw/inc/viewopt.hxx b/sw/inc/viewopt.hxx
index bc273d58c4f2..fecb5e204f32 100644
--- a/sw/inc/viewopt.hxx
+++ b/sw/inc/viewopt.hxx
@@ -65,6 +65,10 @@ struct ViewOptFlags1
bool bTreatSubOutlineLevelsAsContent : 1;
bool bShowInlineTooltips : 1; //tooltips on tracked changes
bool bViewMetachars : 1;
+
+ /// Track changes: recording is on
+ bool bRedlineRecordingOn : 1;
+
bool bPageback : 1;
bool bShowOutlineContentVisibilityButton : 1;
bool bShowChangesInMargin : 1; //tracked deletions in margin
@@ -74,6 +78,7 @@ struct ViewOptFlags1
bool bSectionBoundaries : 1; // section boundaries
bool bTableBoundaries : 1; // table boundaries
bool bShowBoundaries : 1; // show all boundaries
+ bool bClickChangeRotation : 1; // change with single click into rotate mode
ViewOptFlags1()
: bUseHeaderFooterMenu(false)
@@ -103,6 +108,7 @@ struct ViewOptFlags1
, bTreatSubOutlineLevelsAsContent(false)
, bShowInlineTooltips(false)
, bViewMetachars(false)
+ , bRedlineRecordingOn(false)
, bPageback(true)
, bShowOutlineContentVisibilityButton(false)
, bShowChangesInMargin(false)
@@ -111,7 +117,8 @@ struct ViewOptFlags1
, bTextBoundariesFull(false)
, bSectionBoundaries(true)
, bTableBoundaries(true)
- , bShowBoundaries(false)
+ , bShowBoundaries(true)
+ , bClickChangeRotation(false)
{}
bool operator==(const ViewOptFlags1& rOther) const
@@ -143,6 +150,7 @@ struct ViewOptFlags1
&& bTreatSubOutlineLevelsAsContent == rOther.bTreatSubOutlineLevelsAsContent
&& bShowInlineTooltips == rOther.bShowInlineTooltips
&& bViewMetachars == rOther.bViewMetachars
+ && bRedlineRecordingOn == rOther.bRedlineRecordingOn
&& bPageback == rOther.bPageback
&& bShowOutlineContentVisibilityButton == rOther.bShowOutlineContentVisibilityButton
&& bShowChangesInMargin == rOther.bShowChangesInMargin
@@ -151,7 +159,8 @@ struct ViewOptFlags1
&& bTextBoundariesFull == rOther.bTextBoundariesFull
&& bSectionBoundaries == rOther.bSectionBoundaries
&& bTableBoundaries == rOther.bTableBoundaries
- && bShowBoundaries == rOther.bShowBoundaries;
+ && bShowBoundaries == rOther.bShowBoundaries
+ && bClickChangeRotation == rOther.bClickChangeRotation;
}
void dumpAsXml(xmlTextWriterPtr pWriter) const;
@@ -562,6 +571,10 @@ public:
void SetViewMetaChars( bool b)
{ m_nCoreOptions.bViewMetachars = b; }
+ bool IsRedlineRecordingOn() const { return m_nCoreOptions.bRedlineRecordingOn; }
+
+ void SetRedlineRecordingOn(bool b) { m_nCoreOptions.bRedlineRecordingOn = b; }
+
bool IsSynchronize() const
{ return m_nCoreOptions.bSynchronize; }
void SetSynchronize( bool b )
@@ -682,6 +695,9 @@ public:
bool IsShowBoundaries() const { return m_nCoreOptions.bShowBoundaries; }
void SetShowBoundaries( bool b ) { m_nCoreOptions.bShowBoundaries = b; }
+ bool IsClickChangeRotation() const { return m_nCoreOptions.bClickChangeRotation; }
+ void SetClickChangeRotation( bool b ) { m_nCoreOptions.bClickChangeRotation = b; }
+
#ifdef DBG_UTIL
// Correspond to statements in ui/config/cfgvw.src.
bool IsTest1() const { return m_bTest1; }
diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx
index 7b2565f18703..a96d26721aa8 100644
--- a/sw/inc/viewsh.hxx
+++ b/sw/inc/viewsh.hxx
@@ -471,6 +471,8 @@ public:
SW_DLLPUBLIC void SetIgnoreTabsAndBlanksForLineCalculation(bool bIgnoreTabsAndBlanksForLineCalculation);
+ SW_DLLPUBLIC void SetMsWordUlTrailSpace(bool val);
+
// DOCUMENT COMPATIBILITY FLAGS END
// Calls Idle-formatter of Layout.
diff --git a/sw/qa/core/objectpositioning/data/as_char_image.docx b/sw/qa/core/objectpositioning/data/as_char_image.docx
new file mode 100644
index 000000000000..e5e02d2168e1
--- /dev/null
+++ b/sw/qa/core/objectpositioning/data/as_char_image.docx
Binary files differ
diff --git a/sw/qa/core/objectpositioning/objectpositioning.cxx b/sw/qa/core/objectpositioning/objectpositioning.cxx
index 565a3fe4fca6..3b412cfc48f3 100644
--- a/sw/qa/core/objectpositioning/objectpositioning.cxx
+++ b/sw/qa/core/objectpositioning/objectpositioning.cxx
@@ -12,6 +12,7 @@
#include <com/sun/star/text/VertOrientation.hpp>
#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#include <comphelper/propertysequence.hxx>
#include <editeng/ulspitem.hxx>
#include <wrtsh.hxx>
@@ -489,6 +490,28 @@ CPPUNIT_TEST_FIXTURE(Test, testDoNotCaptureDrawObjsOnPageDrawWrapNone)
// some <1px difference).
CPPUNIT_ASSERT_GREATER(nPage2Top - MINFLY, nDrawObjTop);
}
+
+CPPUNIT_TEST_FIXTURE(Test, testInsertShapeOnAsCharImg_tdf16890)
+{
+ // Given a document with an image anchored as character
+ createSwDoc("as_char_image.docx");
+ SwDoc* pDoc = getSwDoc();
+
+ // Insert a shape over it
+ uno::Sequence<beans::PropertyValue> aArgs(
+ comphelper::InitPropertySequence({ { "KeyModifier", uno::Any(KEY_MOD1) } }));
+ dispatchCommand(mxComponent, ".uno:BasicShapes.rectangle", aArgs);
+
+ // Check that the new shape is anchored at para (i.e. has an anchor node)
+ const auto& rFrmFormats = *pDoc->GetSpzFrameFormats();
+ CPPUNIT_ASSERT_EQUAL(size_t(o3tl::make_unsigned(2)), rFrmFormats.size());
+ auto pShape = rFrmFormats[1];
+ CPPUNIT_ASSERT(pShape);
+ // Without the accompanying fix in place, this test would have failed with:
+ // assertion failed
+ // - Expression: pShape->GetAnchor().GetAnchorNode()
+ CPPUNIT_ASSERT(pShape->GetAnchor().GetAnchorNode());
+}
}
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/qa/core/txtnode/data/comment-reply-copy.odt b/sw/qa/core/txtnode/data/comment-reply-copy.odt
new file mode 100644
index 000000000000..0a046e2f85fc
--- /dev/null
+++ b/sw/qa/core/txtnode/data/comment-reply-copy.odt
Binary files differ
diff --git a/sw/qa/core/txtnode/txtnode.cxx b/sw/qa/core/txtnode/txtnode.cxx
index 1882602c8d93..7f1e6fd59fb5 100644
--- a/sw/qa/core/txtnode/txtnode.cxx
+++ b/sw/qa/core/txtnode/txtnode.cxx
@@ -41,6 +41,9 @@
#include <rootfrm.hxx>
#include <pagefrm.hxx>
#include <txtfrm.hxx>
+#include <PostItMgr.hxx>
+#include <AnnotationWin.hxx>
+#include <docufld.hxx>
/// Covers sw/source/core/txtnode/ fixes.
class SwCoreTxtnodeTest : public SwModelTestBase
@@ -231,7 +234,8 @@ CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testSplitNodeSuperscriptCopy)
SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
pWrtShell->Insert(u"1st"_ustr);
pWrtShell->Left(SwCursorSkipMode::Chars, /*bSelect=*/true, 2, /*bBasicCall=*/false);
- SfxItemSetFixed<RES_CHRATR_ESCAPEMENT, RES_CHRATR_ESCAPEMENT> aSet(pWrtShell->GetAttrPool());
+ SfxItemSet aSet(SfxItemSet::makeFixedSfxItemSet<RES_CHRATR_ESCAPEMENT, RES_CHRATR_ESCAPEMENT>(
+ pWrtShell->GetAttrPool()));
SvxEscapementItem aItem(SvxEscapement::Superscript, RES_CHRATR_ESCAPEMENT);
aSet.Put(aItem);
pWrtShell->SetAttrSet(aSet);
@@ -549,6 +553,39 @@ CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testPlainContentControlCopy)
mxComponent.clear();
}
+CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testCopyCommentsWithReplies)
+{
+ createSwDoc("comment-reply-copy.odt");
+
+ SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
+ SwDocShell* pShell = pTextDoc->GetDocShell();
+ SwWrtShell* pWrtShell = pShell->GetWrtShell();
+ SwDoc aClipboard;
+ pWrtShell->SelAll();
+ pWrtShell->Copy(aClipboard);
+ pWrtShell->SttEndDoc(/*bStart=*/false); // Send the cursor to the end of the document.
+ pWrtShell->Paste(aClipboard);
+
+ // Now we have selected all text (which is one line) and pasted it to the end.
+ // A comment and its reply should also be copied to the end of the document.
+ // We will check if our reply is referencing its copied parent instead of the source parent.
+
+ SwPostItMgr* postItManager = pWrtShell->GetPostItMgr();
+
+ std::vector<const SwPostItField*> comments;
+
+ Scheduler::ProcessEventsToIdle();
+
+ for (const auto& pItem : *postItManager) // There should be 4.
+ {
+ comments.push_back(pItem->mpPostIt->GetPostItField());
+ }
+
+ // parents (original-copied), replies (original-copied)
+ CPPUNIT_ASSERT_EQUAL(comments[0]->GetName(), comments[1]->GetParentName());
+ CPPUNIT_ASSERT_EQUAL(comments[2]->GetName(), comments[3]->GetParentName());
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/core/uwriter.cxx b/sw/qa/core/uwriter.cxx
index 8a03254e7c5d..e4be7b98737e 100644
--- a/sw/qa/core/uwriter.cxx
+++ b/sw/qa/core/uwriter.cxx
@@ -131,7 +131,6 @@ public:
void test64kPageDescs();
void testTdf92308();
void testTableCellComparison();
- void testTdf156211();
void testFillRubyList();
void testSetRubyList();
@@ -171,7 +170,6 @@ public:
CPPUNIT_TEST(test64kPageDescs);
CPPUNIT_TEST(testTdf92308);
CPPUNIT_TEST(testTableCellComparison);
- CPPUNIT_TEST(testTdf156211);
CPPUNIT_TEST(testFillRubyList);
CPPUNIT_TEST(testSetRubyList);
CPPUNIT_TEST_SUITE_END();
@@ -1979,18 +1977,6 @@ void SwDocTest::tearDown()
BootstrapFixture::tearDown();
}
-void SwDocTest::testTdf156211()
-{
- SwScriptInfo oSI;
- oSI.SetNoKashidaLine(TextFrameIndex{ 89 }, TextFrameIndex{ 95 });
-
- CPPUNIT_ASSERT(!oSI.IsKashidaLine(TextFrameIndex{ 95 }));
-
- oSI.ClearNoKashidaLine(TextFrameIndex{ 0 }, TextFrameIndex{ 89 });
-
- CPPUNIT_ASSERT(!oSI.IsKashidaLine(TextFrameIndex{ 95 }));
-}
-
void SwDocTest::testFillRubyList()
{
SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1);
diff --git a/sw/qa/extras/htmlexport/data/img_with_border.fodt b/sw/qa/extras/htmlexport/data/img_with_border.fodt
new file mode 100644
index 000000000000..fd3fbfe36dcd
--- /dev/null
+++ b/sw/qa/extras/htmlexport/data/img_with_border.fodt
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:styles>
+ <style:style style:name="Graphics" style:family="graphic">
+ <style:graphic-properties svg:x="0" svg:y="0" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="center" style:horizontal-rel="paragraph" fo:padding="0.5mm" fo:border="0.06pt solid #000000"/>
+ </style:style>
+ </office:styles>
+ <office:body>
+ <office:text>
+ <text:p><draw:frame draw:style-name="Graphics" draw:name="1px" text:anchor-type="char" svg:width="1cm" svg:height="1cm"><draw:image draw:mime-type="image/png">
+ <office:binary-data>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1B
+ AACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5F
+ VCA1LjEuNBLfpoMAAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAo
+ AQMAAQAAAAIAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAYAAAAAEAAABgAAAAAQAA
+ AFBhaW50Lk5FVCA1LjEuNAADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAA
+ AAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAADX5rshveZftAAAAAxJREFUGFdj
+ +P//PwAF/gL+pzWBhAAAAABJRU5ErkJg
+ </office:binary-data>
+ </draw:image>
+ </draw:frame></text:p>
+ </office:text>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/sw/qa/extras/htmlexport/htmlexport2.cxx b/sw/qa/extras/htmlexport/htmlexport2.cxx
index 550c9644af97..75ee544f5875 100644
--- a/sw/qa/extras/htmlexport/htmlexport2.cxx
+++ b/sw/qa/extras/htmlexport/htmlexport2.cxx
@@ -1622,6 +1622,20 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testReqifNoTargetInA)
assertXPathNoAttribute(pXmlDoc, "//reqif-xhtml:a", "target");
}
+CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testReqifNoObjectBorderExport)
+{
+ // Given a document with an image with black border
+ createSwDoc("img_with_border.fodt");
+
+ // When exporting to XHTML:
+ ExportToReqif();
+
+ // Check that there's no 'font' element that used to be exported, containing the border color:
+ xmlDocUniquePtr pXmlDoc = WrapReqifFromTempFile();
+ // Without the accompanying fix in place, this test would have failed
+ assertXPath(pXmlDoc, "//reqif-xhtml:font", 0);
+}
+
} // end of anonymous namespace
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/qa/extras/layout/data/2024-01-19_merged-cells-on-separate-pages-vertical-alignment.odt b/sw/qa/extras/layout/data/2024-01-19_merged-cells-on-separate-pages-vertical-alignment.odt
new file mode 100644
index 000000000000..e316e93fe087
--- /dev/null
+++ b/sw/qa/extras/layout/data/2024-01-19_merged-cells-on-separate-pages-vertical-alignment.odt
Binary files differ
diff --git a/sw/qa/extras/layout/data/CT-formatted-deletion.docx b/sw/qa/extras/layout/data/CT-formatted-deletion.docx
new file mode 100644
index 000000000000..585d7ba27cab
--- /dev/null
+++ b/sw/qa/extras/layout/data/CT-formatted-deletion.docx
Binary files differ
diff --git a/sw/qa/extras/layout/data/merge_hidden_redline.docx b/sw/qa/extras/layout/data/merge_hidden_redline.docx
new file mode 100644
index 000000000000..7a7013321402
--- /dev/null
+++ b/sw/qa/extras/layout/data/merge_hidden_redline.docx
Binary files differ
diff --git a/sw/qa/extras/layout/data/section-break-hidden-paragraphs.rtf b/sw/qa/extras/layout/data/section-break-hidden-paragraphs.rtf
new file mode 100644
index 000000000000..f8526dafe5ea
--- /dev/null
+++ b/sw/qa/extras/layout/data/section-break-hidden-paragraphs.rtf
@@ -0,0 +1,68 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang2057\deflangfe1028\themelang2057\themelangfe1028\themelangcs1025
+{\fonttbl{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
+{\f14\fbidi \fnil\fcharset136\fprq2{\*\panose 02010601000101010101}PMingLiU{\*\falt Arial Unicode MS};}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
+{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f294\fbidi \fnil\fcharset136\fprq2{\*\panose 00000000000000000000}@PMingLiU;}
+{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};}{\fdbmajor\f31501\fbidi \fnil\fcharset136\fprq2{\*\panose 02010601000101010101}PMingLiU{\*\falt Arial Unicode MS};}
+{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};}
+{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};}{\fdbminor\f31505\fbidi \fnil\fcharset136\fprq2{\*\panose 02010601000101010101}PMingLiU{\*\falt Arial Unicode MS};}
+{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}{\f305\fbidi \fswiss\fcharset238\fprq2 Arial CE;}
+{\f306\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}{\f308\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f309\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f310\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}
+{\f311\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f312\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f313\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f635\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}
+{\f636\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f638\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f639\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f642\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}
+{\f643\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f665\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f666\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f668\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}
+{\f669\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f670\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f671\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\f672\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\f673\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}
+{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}
+{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}
+{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}
+{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}
+{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}
+{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}
+{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}
+{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}
+{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}
+{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}
+{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}
+{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}
+{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}
+{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
+{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\fbiminor\f31579\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}
+{\fbiminor\f31581\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\fbiminor\f31582\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\fbiminor\f31583\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}
+{\fbiminor\f31584\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\fbiminor\f31585\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\fbiminor\f31586\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}
+{\f295\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}{\f296\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}{\f298\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}
+{\f299\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}{\f300\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\f301\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}
+{\f302\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}{\f303\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}}
+{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote
+{\stylesheet{
+\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang2057\langfe1028\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp2057\langfenp1028
+\snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang2057\langfe1028\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp2057\langfenp1028 \snext11 \ssemihidden \sunhideused
+Normal Table;}{\*\ts15\tsrowd\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
+\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang2057\langfe1028\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp2057\langfenp1028
+\sbasedon11 \snext15 \spriority39 Table Grid;}}
+
+\paperw11906\paperh16838\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
+\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen
+\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
+{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sftnbj
+\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
+\fs22\lang2057\langfe1028\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp2057\langfenp1028 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1031\langfe1028\langnp1031\hich\af31506\dbch\af31505\loch\f31506 First\sect }\sectd \ltrsect
+\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sftnbj \pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025
+\ltrch\fcs0 \fs22\lang2057\langfe1028\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp2057\langfenp1028 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \v\lang1031\langfe1028\langnp1031
+\par \par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \v\lang1031\langfe1028\langnp1031
+\par \ltrrow}\trowd \irow0\irowband0\lastrow \ltrrow\ts15\trgaph108\trleft5\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
+\trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10
+\clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9016\clshdrawnil \cellx9021\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\yts15 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
+\fs22\lang2057\langfe1028\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp2057\langfenp1028 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1031\langfe1028\langnp1031\hich\af31506\dbch\af31505\loch\f31506 Table\cell }\pard\plain \ltrpar
+\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang2057\langfe1028\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp2057\langfenp1028 {
+\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1031\langfe1028\langnp1031\trowd \irow0\irowband0\lastrow \ltrrow\ts15\trgaph108\trleft5\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh
+\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl
+\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth9016\clshdrawnil \cellx9021\row }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
+\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1031\langfe1028\langnp1031\hich\af31506\dbch\af31505\loch\f31506 End}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1031\langfe1028\langnp1031
+\par }
+}
diff --git a/sw/qa/extras/layout/data/table-in-section-split-loop.fodt b/sw/qa/extras/layout/data/table-in-section-split-loop.fodt
new file mode 100644
index 000000000000..c56254aba03a
--- /dev/null
+++ b/sw/qa/extras/layout/data/table-in-section-split-loop.fodt
@@ -0,0 +1,161 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:initial-creator>gcc</meta:initial-creator><meta:creation-date>2025-01-28T13:52:39.048482856</meta:creation-date><dc:date>2025-01-28T14:44:09.682881525</dc:date><dc:creator>gcc</dc:creator><meta:editing-duration>PT12M50S</meta:editing-duration><meta:editing-cycles>7</meta:editing-cycles><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/4b681ded88231674d8b7c133dd211f3c024a7118</meta:generator><meta:document-statistic meta:table-count="1" meta:image-count="0" meta:object-count="0" meta:page-count="2" meta:paragraph-count="2" meta:word-count="157" meta:character-count="834" meta:non-whitespace-character-count="663"/></office:meta>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Lucida Sans1" svg:font-family="'Lucida Sans'" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="'Noto Serif CJK SC'" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lucida Sans1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lucida Sans1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:orphans="0" fo:widows="0" text:number-lines="false" text:line-number="0"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" loext:num-list-format="%1%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" loext:num-list-format="%2%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" loext:num-list-format="%3%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" loext:num-list-format="%4%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" loext:num-list-format="%5%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" loext:num-list-format="%6%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" loext:num-list-format="%7%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" loext:num-list-format="%8%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" loext:num-list-format="%9%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" loext:num-list-format="%10%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="Table1" style:family="table">
+ <style:table-properties style:width="6.5cm" table:align="margins"/>
+ </style:style>
+ <style:style style:name="Table1.A" style:family="table-column">
+ <style:table-column-properties style:column-width="6.5cm" style:rel-column-width="65535*"/>
+ </style:style>
+ <style:style style:name="Table1.1" style:family="table-row">
+ <style:table-row-properties style:min-row-height="0.002cm"/>
+ </style:style>
+ <style:style style:name="Table1.A1" style:family="table-cell">
+ <style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.5pt solid #000000" fo:border-right="0.5pt solid #000000" fo:border-top="0.5pt solid #000000" fo:border-bottom="none"/>
+ </style:style>
+ <style:style style:name="Table1.2" style:family="table-row">
+ <style:table-row-properties style:min-row-height="1.644cm"/>
+ </style:style>
+ <style:style style:name="Table1.A2" style:family="table-cell">
+ <style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.5pt solid #000000" fo:border-right="0.5pt solid #000000" fo:border-top="none" fo:border-bottom="0.5pt solid #000000"/>
+ </style:style>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Contents">
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Table_20_Contents">
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="Sect1" style:family="section">
+ <style:section-properties fo:background-color="#158466" text:dont-balance-text-columns="false" style:editable="false">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ <style:background-image/>
+ </style:section-properties>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="10.5cm" fo:page-height="14.801cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:section text:style-name="Sect1" text:name="Section1">
+ <table:table table:name="Table1" table:style-name="Table1">
+ <table:table-column table:style-name="Table1.A"/>
+ <table:table-row table:style-name="Table1.1">
+ <table:table-cell table:style-name="Table1.A1" office:value-type="string">
+ <text:p text:style-name="P1">There<text:line-break/> is<text:line-break/> quite<text:line-break/> some<text:line-break/> text<text:line-break/> here<text:line-break/> to<text:line-break/> take<text:line-break/> up<text:line-break/> some<text:line-break/> but<text:line-break/> not<text:line-break/> all<text:line-break/> of<text:line-break/> the<text:line-break/> available<text:line-break/> space</text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="Table1.2">
+ <table:table-cell table:style-name="Table1.A2" office:value-type="string">
+ <text:p text:style-name="P2">He heard quiet steps behind him. That didn't bode well. Who could be <text:soft-page-break/>following him this late at night and in this deadbeat part of town? And at this particular moment, just after he pulled off the big time and was making off with the greenbacks. Was there another crook who'd had the same idea, and was now watching him and waiting for a chance to grab the fruit of his labor? Or did the steps behind him mean that one of many law officers in town was on to him and just waiting to pounce and snap those cuffs on his wrists? He nervously looked all around. Suddenly he saw the alley. Like lightning he darted off to the left and disappeared between the two warehouses almost falling over the trash can lying in the middle of the sidewalk.</text:p>
+ </table:table-cell>
+ </table:table-row>
+ </table:table>
+ </text:section>
+ <text:p text:style-name="Standard"/>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/table-in-section-truncated.fodt b/sw/qa/extras/layout/data/table-in-section-truncated.fodt
new file mode 100644
index 000000000000..238dcd18b1fb
--- /dev/null
+++ b/sw/qa/extras/layout/data/table-in-section-truncated.fodt
@@ -0,0 +1,161 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<office:document xmlns:officeooo="http://openoffice.org/2009/office" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ooo="http://openoffice.org/2004/office" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:creation-date>2025-02-27T18:20:34.001095028</meta:creation-date><dc:date>2025-02-27T18:27:39.896741375</dc:date><meta:editing-duration>PT6M11S</meta:editing-duration><meta:editing-cycles>4</meta:editing-cycles><meta:generator>CIB_OfficeDev/6.4.0.24$Linux_X86_64 LibreOffice_project/f75130dcf240f3fe0d11d4374e1ad4e36d92e416</meta:generator><meta:document-statistic meta:table-count="1" meta:image-count="0" meta:object-count="0" meta:page-count="2" meta:paragraph-count="4" meta:word-count="10" meta:character-count="53" meta:non-whitespace-character-count="47"/></office:meta>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Lucida Sans" svg:font-family="'Lucida Sans'" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="'Noto Serif CJK SC'" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lucida Sans" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lucida Sans" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="Table1" style:family="table">
+ <style:table-properties style:width="6.5cm" table:align="margins"/>
+ </style:style>
+ <style:style style:name="Table1.A" style:family="table-column">
+ <style:table-column-properties style:column-width="6.5cm" style:rel-column-width="65535*"/>
+ </style:style>
+ <style:style style:name="Table1.A1" style:family="table-cell">
+ <style:table-cell-properties fo:padding="0.097cm" fo:border="0.05pt solid #000000"/>
+ </style:style>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard">
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="Sect1" style:family="section">
+ <style:section-properties style:editable="false">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ </style:section-properties>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="10.5cm" fo:page-height="14.801cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="P3">before section</text:p>
+ <text:section text:style-name="Sect1" text:name="Section1">
+ <table:table table:name="Table1" table:style-name="Table1">
+ <table:table-column table:style-name="Table1.A"/>
+ <table:table-row>
+ <table:table-cell table:style-name="Table1.A1" office:value-type="string">
+ <text:p text:style-name="P1">in table in section</text:p>
+ <text:p text:style-name="P1"><text:soft-page-break/></text:p>
+ <text:p text:style-name="P1">end table</text:p>
+ </table:table-cell>
+ </table:table-row>
+ </table:table>
+ <text:p text:style-name="P1">end section</text:p>
+ </text:section>
+ </office:text>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/sw/qa/extras/layout/data/table-split-bug.fodt b/sw/qa/extras/layout/data/table-split-bug.fodt
new file mode 100644
index 000000000000..935899af2a82
--- /dev/null
+++ b/sw/qa/extras/layout/data/table-split-bug.fodt
@@ -0,0 +1,440 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<office:document xmlns:officeooo="http://openoffice.org/2009/office" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ooo="http://openoffice.org/2004/office" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">21987</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">17704</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
+ <config:config-item config:name="ViewLeft" config:type="long">3401</config:config-item>
+ <config:config-item config:name="ViewTop" config:type="long">11201</config:config-item>
+ <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleRight" config:type="long">21985</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">17702</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">3</config:config-item>
+ <config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item>
+ <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ZoomFactor" config:type="short">84</config:config-item>
+ <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">true</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string">ADRESSEN</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string">Adreßbuch</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item-map-indexed config:name="ForbiddenCharacters">
+ <config:config-item-map-entry>
+ <config:config-item config:name="Language" config:type="string">de</config:config-item>
+ <config:config-item config:name="Country" config:type="string">DE</config:config-item>
+ <config:config-item config:name="Variant" config:type="string"/>
+ <config:config-item config:name="BeginLine" config:type="string"/>
+ <config:config-item config:name="EndLine" config:type="string"/>
+ </config:config-item-map-entry>
+ <config:config-item-map-entry>
+ <config:config-item config:name="Language" config:type="string">en</config:config-item>
+ <config:config-item config:name="Country" config:type="string">US</config:config-item>
+ <config:config-item config:name="Variant" config:type="string"/>
+ <config:config-item config:name="BeginLine" config:type="string"/>
+ <config:config-item config:name="EndLine" config:type="string"/>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">15857532</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">691202</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:font-face-decls>
+ <style:font-face style:name="Arial" svg:font-family="Arial" style:font-pitch="variable"/>
+ <style:font-face style:name="Arial Unicode MS" svg:font-family="'Arial Unicode MS'" style:font-pitch="variable"/>
+ <style:font-face style:name="HG Mincho Light J" svg:font-family="'HG Mincho Light J'" style:font-pitch="variable"/>
+ <style:font-face style:name="Thorndale" svg:font-family="Thorndale" style:font-family-generic="roman" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <draw:gradient draw:name="gradient" draw:style="linear" draw:start-color="#000000" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
+ <draw:hatch draw:name="hatch" draw:style="single" draw:color="#3465a4" draw:distance="0.02cm" draw:rotation="0"/>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#808080" draw:fill-color="#cfe7f5" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="true"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties fo:color="#000000" style:font-name="Thorndale" fo:font-size="12pt" fo:language="de" fo:country="DE" style:font-name-asian="HG Mincho Light J" style:font-size-asian="12pt" style:language-asian="zxx" style:country-asian="none" style:font-name-complex="Arial Unicode MS" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.27cm" style:writing-mode="lr-tb"/>
+ <style:text-properties fo:color="#000000" style:font-name="Thorndale" fo:font-size="12pt" fo:language="de" fo:country="DE" style:font-name-asian="HG Mincho Light J" style:font-size-asian="12pt" style:language-asian="zxx" style:country-asian="none" style:font-name-complex="Arial Unicode MS" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="separating"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="always"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" loext:contextual-spacing="false"/>
+ <style:text-properties style:font-name="Arial" fo:font-family="Arial" style:font-pitch="variable" fo:font-weight="350"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:hyphenation-ladder-count="no-limit"/>
+ <style:text-properties style:font-name="Arial" fo:font-family="Arial" style:font-pitch="variable" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false"/>
+ </style:style>
+ <style:style style:name="Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties>
+ <style:tab-stops>
+ <style:tab-stop style:position="8.5cm" style:type="center"/>
+ <style:tab-stop style:position="17.002cm" style:type="right"/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="extra">
+ <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:text-indent="0cm" style:auto-text-indent="false"/>
+ </style:style>
+ <style:style style:name="TVS_20_Standard" style:display-name="TVS Standard" style:family="paragraph" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:page-number="auto"/>
+ <style:text-properties style:font-name="Arial" fo:font-family="Arial" style:font-pitch="variable" fo:hyphenate="true" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" loext:hyphenation-no-caps="false"/>
+ </style:style>
+ <style:style style:name="TVS_20_KopfzeileFKB_5f_S2" style:display-name="TVS KopfzeileFKB_S2" style:family="paragraph" style:parent-style-name="TVS_20_Standard">
+ <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
+ <style:text-properties fo:font-size="8pt"/>
+ </style:style>
+ <style:style style:name="TVS_20_Anrede" style:display-name="TVS Anrede" style:family="paragraph" style:parent-style-name="TVS_20_Standard" style:next-style-name="TVS_20_Freitext">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.42cm" loext:contextual-spacing="false" fo:line-height="150%"/>
+ </style:style>
+ <style:style style:name="TVS_20_Freitext" style:display-name="TVS Freitext" style:family="paragraph" style:parent-style-name="TVS_20_Standard">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:line-height="150%" fo:text-align="justify" style:justify-single-word="false"/>
+ </style:style>
+ <style:style style:name="TVS_20_Betreff" style:display-name="TVS Betreff" style:family="paragraph" style:parent-style-name="TVS_20_Standard" style:next-style-name="TVS_20_Anrede" style:master-page-name="">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="1.06cm" loext:contextual-spacing="false" fo:line-height="150%" style:page-number="auto"/>
+ <style:text-properties fo:font-weight="bold"/>
+ </style:style>
+ <style:style style:name="Fließtext" style:family="paragraph" style:parent-style-name="Text_20_body" style:default-outline-level="">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.635cm" loext:contextual-spacing="false"/>
+ </style:style>
+ <style:style style:name="Footnote_20_Symbol" style:display-name="Footnote Symbol" style:family="text"/>
+ <style:style style:name="Endnote_20_Symbol" style:display-name="Endnote Symbol" style:family="text"/>
+ <style:style style:name="TVS_20_Fett" style:display-name="TVS Fett" style:family="text">
+ <style:text-properties fo:font-weight="bold"/>
+ </style:style>
+ <style:style style:name="Footnote_20_anchor" style:display-name="Footnote anchor" style:family="text">
+ <style:text-properties style:text-position="super 58%"/>
+ </style:style>
+ <style:style style:name="Endnote_20_anchor" style:display-name="Endnote anchor" style:family="text">
+ <style:text-properties style:text-position="super 58%"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties/>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" text:citation-style-name="Footnote_20_Symbol" text:citation-body-style-name="Footnote_20_anchor" text:master-page-name="Standard" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" text:citation-style-name="Endnote_20_Symbol" text:citation-body-style-name="Endnote_20_anchor" text:master-page-name="Endnote" style:num-format="1" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <style:default-page-layout>
+ <style:page-layout-properties style:writing-mode="lr-tb" style:layout-grid-standard-mode="true"/>
+ </style:default-page-layout>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="Tabelle19" style:family="table">
+ <style:table-properties style:width="16.302cm" table:align="margins"/>
+ </style:style>
+ <style:style style:name="Tabelle19.A" style:family="table-column">
+ <style:table-column-properties style:column-width="0.504cm" style:rel-column-width="2028*"/>
+ </style:style>
+ <style:style style:name="Tabelle19.B" style:family="table-column">
+ <style:table-column-properties style:column-width="15.797cm" style:rel-column-width="63507*"/>
+ </style:style>
+ <style:style style:name="Tabelle19.1" style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:style>
+ <style:style style:name="Tabelle19.A1" style:family="table-cell">
+ <style:table-cell-properties fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0.101cm" fo:padding-bottom="0.199cm" fo:border="none" style:writing-mode="page"/>
+ </style:style>
+ <style:style style:name="P13" style:family="paragraph" style:parent-style-name="TVS_20_Freitext" style:master-page-name="">
+ <loext:graphic-properties draw:fill-hatch-name="hatch"/>
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:text-align="justify" style:justify-single-word="false" style:page-number="auto"/>
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="P24" style:family="paragraph" style:parent-style-name="Fließtext">
+ <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:line-height="150%" fo:text-align="start" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false" style:writing-mode="lr-tb"/>
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="P26" style:family="paragraph" style:parent-style-name="Fließtext">
+ <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false" fo:line-height="150%" fo:text-align="start" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false" style:writing-mode="lr-tb"/>
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="P27" style:family="paragraph" style:parent-style-name="TVS_20_Freitext">
+ <loext:graphic-properties draw:fill="none" draw:fill-hatch-name="hatch"/>
+ <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.42cm" loext:contextual-spacing="false" fo:line-height="150%" fo:text-align="justify" style:justify-single-word="false" fo:hyphenation-ladder-count="no-limit" fo:text-indent="0cm" style:auto-text-indent="false" fo:background-color="transparent">
+ <style:tab-stops>
+ <style:tab-stop style:position="0.499cm"/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" loext:hyphenation-no-caps="false"/>
+ </style:style>
+ <style:style style:name="P28" style:family="paragraph" style:parent-style-name="Table_20_Contents">
+ <style:paragraph-properties fo:text-align="justify" style:justify-single-word="false"/>
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="P30" style:family="paragraph" style:parent-style-name="TVS_20_Freitext">
+ <style:paragraph-properties fo:text-align="justify" style:justify-single-word="false"/>
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="P31" style:family="paragraph" style:parent-style-name="TVS_20_Freitext">
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="P37" style:family="paragraph" style:parent-style-name="TVS_20_Freitext">
+ <loext:graphic-properties draw:fill-gradient-name="gradient" draw:fill-hatch-name="hatch"/>
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.42cm" loext:contextual-spacing="false"/>
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="P38" style:family="paragraph" style:parent-style-name="TVS_20_Freitext">
+ <loext:graphic-properties draw:fill-gradient-name="gradient" draw:fill-hatch-name="hatch"/>
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.42cm" loext:contextual-spacing="false" fo:text-align="justify" style:justify-single-word="false"/>
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="P39" style:family="paragraph" style:parent-style-name="TVS_20_Freitext">
+ <loext:graphic-properties draw:fill-gradient-name="gradient" draw:fill-hatch-name="hatch"/>
+ <style:paragraph-properties fo:margin-top="0.42cm" fo:margin-bottom="0.42cm" loext:contextual-spacing="false" fo:text-align="center" style:justify-single-word="false"/>
+ <style:text-properties/>
+ </style:style>
+ <style:style style:name="P40" style:family="paragraph" style:parent-style-name="TVS_20_Freitext">
+ <loext:graphic-properties draw:fill-hatch-name="hatch"/>
+ <style:paragraph-properties fo:margin-top="0.42cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:text-align="justify" style:justify-single-word="false"/>
+ <style:text-properties style:font-name="Arial"/>
+ </style:style>
+ <style:style style:name="P41" style:family="paragraph" style:parent-style-name="TVS_20_Freitext" style:master-page-name="">
+ <loext:graphic-properties draw:fill-hatch-name="hatch"/>
+ <style:paragraph-properties fo:margin-top="0.42cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:text-align="justify" style:justify-single-word="false" style:page-number="auto" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Arial"/>
+ </style:style>
+ <style:style style:name="P46" style:family="paragraph" style:parent-style-name="TVS_20_Betreff" style:master-page-name="FABrief_5f_S1">
+ <style:paragraph-properties style:page-number="auto"/>
+ </style:style>
+ <style:style style:name="T7" style:family="text">
+ <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="Sect1" style:family="section">
+ <style:section-properties style:editable="false">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ </style:section-properties>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:paper-tray-name="[From printer settings]" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" fo:border="none" fo:padding="0cm" style:shadow="none" fo:background-color="transparent" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="44" style:layout-grid-base-height="0.55cm" style:layout-grid-ruby-height="0cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="true" style:layout-grid-display="true" style:layout-grid-base-width="0.37cm" style:layout-grid-snap-to="true" draw:fill="none" draw:fill-color="#cfe7f5" style:footnote-max-height="0cm">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="none" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:page-layout style:name="pm2" style:page-usage="mirrored">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:paper-tray-name="[From printer settings]" style:print-orientation="portrait" fo:margin-top="1.3cm" fo:margin-bottom="1.799cm" fo:margin-left="2.9cm" fo:margin-right="1.799cm" fo:border="none" fo:padding="0cm" style:shadow="none" fo:background-color="transparent" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="44" style:layout-grid-base-height="0.55cm" style:layout-grid-ruby-height="0cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="true" style:layout-grid-display="true" style:layout-grid-base-width="0.37cm" style:layout-grid-snap-to="true" draw:fill="none" draw:fill-color="#cfe7f5" style:footnote-max-height="0cm">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="none" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style>
+ <style:header-footer-properties svg:height="1.9cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="1.401cm" fo:border="none" fo:padding="0cm" style:shadow="none" fo:background-color="transparent" style:dynamic-spacing="false" draw:fill="none" draw:fill-color="#cfe7f5"/>
+ </style:header-style>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:page-layout style:name="pm4">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="44" style:layout-grid-base-height="0.55cm" style:layout-grid-ruby-height="0cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="true" style:layout-grid-display="true" style:layout-grid-base-width="0.37cm" style:layout-grid-snap-to="true" style:footnote-max-height="0cm">
+ <style:footnote-sep style:line-style="none" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:page-layout style:name="pm7">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:paper-tray-name="[From printer settings]" style:print-orientation="portrait" fo:margin-top="10.7cm" fo:margin-bottom="2.2cm" fo:margin-left="2.9cm" fo:margin-right="1.799cm" fo:border="none" fo:padding="0cm" style:shadow="none" fo:background-color="transparent" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="44" style:layout-grid-base-height="0.55cm" style:layout-grid-ruby-height="0cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="true" style:layout-grid-display="true" style:layout-grid-base-width="0.37cm" style:layout-grid-snap-to="true" draw:fill="none" draw:fill-color="#cfe7f5" style:footnote-max-height="0cm">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="none" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style>
+ <style:header-footer-properties svg:height="2.401cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.3cm" fo:border="none" fo:padding="0cm" style:shadow="none" fo:background-color="transparent" style:dynamic-spacing="false" draw:fill="none" draw:fill-color="#cfe7f5"/>
+ </style:footer-style>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ <style:master-page style:name="FABrief_5f_S2" style:display-name="FABrief_S2" style:page-layout-name="pm2">
+ <style:header>
+ <text:p text:style-name="TVS_20_KopfzeileFKB_5f_S2">- <text:page-number text:select-page="current">3</text:page-number><text:s/>-</text:p>
+ </style:header>
+ </style:master-page>
+ <style:master-page style:name="Endnote" style:page-layout-name="pm4"/>
+ <style:master-page style:name="FABrief_5f_S1" style:display-name="FABrief_S1" style:page-layout-name="pm7" style:next-style-name="FABrief_5f_S2">
+ <style:footer>
+ <text:p text:style-name="Footer"/>
+ </style:footer>
+ </style:master-page>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+
+ <text:section text:style-name="Sect1" text:name="CopyA">
+ <text:p text:style-name="P46"><text:span text:style-name="TVS_20_Fett">Herrn Diego Säbelzahn</text:span></text:p>
+ <text:p text:style-name="TVS_20_Betreff"><text:line-break/></text:p>
+ <text:p text:style-name="TVS_20_Anrede">Sehr geehrte Damen und Herren,</text:p>
+ <text:section text:style-name="Sect1" text:name="CopyESt">
+ <text:p text:style-name="P37"><text:line-break/><text:line-break/></text:p>
+ </text:section>
+ <text:p text:style-name="P13"/>
+ <text:p text:style-name="P39"><text:span text:style-name="T7">bis zum </text:span></text:p>
+ <text:p text:style-name="P38">ein:</text:p>
+ <table:table table:name="Tabelle19" table:style-name="Tabelle19">
+ <table:table-column table:style-name="Tabelle19.A"/>
+ <table:table-column table:style-name="Tabelle19.B"/>
+ <table:table-row table:style-name="Tabelle19.1">
+ <table:table-cell table:style-name="Tabelle19.A1" office:value-type="string">
+ <text:p text:style-name="P28">-</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="Tabelle19.A1" office:value-type="string">
+ <text:p text:style-name="P31">Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla</text:p>
+ <text:p text:style-name="P31">A</text:p>
+ <text:p text:style-name="P31">B</text:p>
+ <text:p text:style-name="P24">C</text:p>
+ <text:p text:style-name="P24">D</text:p>
+ <text:p text:style-name="P24">E</text:p>
+ <text:p text:style-name="P24">F</text:p>
+ <text:p text:style-name="P24">G</text:p>
+ <text:p text:style-name="P24">H</text:p>
+ <text:p text:style-name="P26">I</text:p>
+ <text:p text:style-name="P31">J</text:p>
+ <text:p text:style-name="P31">K</text:p>
+ </table:table-cell>
+ </table:table-row>
+ </table:table>
+ <text:section text:style-name="Sect1" text:name="CopyFreitext" text:display="none">
+ <text:p text:style-name="P30">- <text:placeholder text:placeholder-type="text">&lt;TEXT&gt;</text:placeholder></text:p>
+ </text:section>
+ <text:p text:style-name="P40">Sie</text:p>
+ <text:p text:style-name="P41">Das</text:p>
+ <text:p text:style-name="P27">Be</text:p>
+ </text:section>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf144450.fodt b/sw/qa/extras/layout/data/tdf144450.fodt
new file mode 100644
index 000000000000..598d179363bb
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf144450.fodt
@@ -0,0 +1,168 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:creation-date>2025-02-12T10:58:58.191028084</meta:creation-date><dc:date>2025-02-12T11:06:48.424292523</dc:date><meta:editing-duration>PT7M50S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/2e93642a5f37f03ddd9530c0fd4d4b29243a0585</meta:generator><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="12" meta:paragraph-count="11" meta:word-count="77" meta:character-count="374" meta:non-whitespace-character-count="308"/></office:meta>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans1" svg:font-family="'Noto Sans'" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans2" svg:font-family="'Noto Sans'" style:font-adornments="Regular" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="'Noto Serif CJK SC'" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in" draw:start-line-spacing-horizontal="0.1114in" draw:start-line-spacing-vertical="0.1114in" draw:end-line-spacing-horizontal="0.1114in" draw:end-line-spacing-vertical="0.1114in" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0in" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Noto Sans1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="0.4925in" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Noto Sans1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.1965in" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties style:page-number="auto" fo:break-before="page" style:snap-to-layout-grid="false"/>
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:line-height="115%" fo:break-before="page"/>
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:style style:name="P4" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:line-height="150%" fo:break-before="page"/>
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:style style:name="P5" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:line-height="200%" fo:break-before="page"/>
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:style style:name="P6" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:line-height="250%" fo:break-before="page"/>
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:style style:name="P7" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties style:line-height-at-least="0in" fo:break-before="page"/>
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:style style:name="P8" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties style:line-height-at-least="0.0098in" fo:break-before="page"/>
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:style style:name="P9" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties style:line-height-at-least="4in" fo:break-before="page"/>
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:style style:name="P10" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:line-height="1in" fo:break-before="page"/>
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:style style:name="P11" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:line-height="2in" fo:break-before="page"/>
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:style style:name="P12" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:break-before="page"/>
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="40pt" style:font-name-asian="Noto Sans2" style:font-size-asian="40pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="8.2701in" fo:page-height="11.6902in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="12" style:layout-grid-base-height="0.5555in" style:layout-grid-ruby-height="0.139in" style:layout-grid-mode="line" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0in" loext:margin-gutter="0in">
+ <style:columns fo:column-count="1" fo:column-gap="0in"/>
+ <style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:p text:style-name="P1">AAAA AAAA AAAA AAAA AAAA AAAA AAAA</text:p>
+ <text:p text:style-name="P2">AAAA AAAA AAAA AAAA AAAA AAAA AAAA</text:p>
+ <text:p text:style-name="P3">AAAA AAAA AAAA AAAA AAAA AAAA AAAA</text:p>
+ <text:p text:style-name="P4">AAAA AAAA AAAA AAAA AAAA AAAA AAAA</text:p>
+ <text:p text:style-name="P5">AAAA AAAA AAAA AAAA AAAA AAAA AAAA</text:p>
+ <text:p text:style-name="P6">AAAA AAAA AAAA AAAA AAAA AAAA AAAA</text:p>
+ <text:p text:style-name="P7">AAAA AAAA AAAA AAAA AAAA AAAA AAAA</text:p>
+ <text:p text:style-name="P8">AAAA AAAA AAAA AAAA AAAA AAAA AAAA</text:p>
+ <text:p text:style-name="P9">AAAA AAAA AAAA AAAA AAAA AAAA AAAA</text:p>
+ <text:p text:style-name="P10">AAAA AAAA AAAA AAAA AAAA AAAA AAAA</text:p>
+ <text:p text:style-name="P11">AAAA AAAA AAAA AAAA AAAA AAAA AAAA</text:p>
+ <text:p text:style-name="P12"/>
+ </office:text>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/sw/qa/extras/layout/data/tdf149089.fodt b/sw/qa/extras/layout/data/tdf149089.fodt
new file mode 100644
index 000000000000..e3aa2bd353c3
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf149089.fodt
@@ -0,0 +1,121 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:creation-date>2025-02-13T04:23:16.326282421</meta:creation-date><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/1b9abff28de5e0e0d4ff3583facbb7db78b5f4be</meta:generator><dc:date>2025-02-13T04:27:41.902739947</dc:date><meta:editing-duration>PT4M23S</meta:editing-duration><meta:editing-cycles>7</meta:editing-cycles><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="1" meta:word-count="3" meta:character-count="13" meta:non-whitespace-character-count="11"/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">true</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans Arabic" svg:font-family="'Noto Sans Arabic'" style:font-adornments="Regular" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans1" svg:font-family="'Noto Sans'" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans2" svg:font-family="'Noto Sans'" style:font-adornments="Regular" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="'Noto Serif CJK SC'" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in" draw:start-line-spacing-horizontal="0.1114in" draw:start-line-spacing-vertical="0.1114in" draw:end-line-spacing-horizontal="0.1114in" draw:end-line-spacing-vertical="0.1114in" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0in" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Noto Sans1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="0.4925in" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Noto Sans1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" loext:num-list-format="%1%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" loext:num-list-format="%2%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" loext:num-list-format="%3%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" loext:num-list-format="%4%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" loext:num-list-format="%5%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" loext:num-list-format="%6%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" loext:num-list-format="%7%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" loext:num-list-format="%8%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" loext:num-list-format="%9%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" loext:num-list-format="%10%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.1965in" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+ <style:text-properties style:font-name="Noto Sans2" fo:font-size="60pt" style:font-name-asian="Noto Sans2" style:font-size-asian="60pt" style:font-name-complex="Noto Sans Arabic" style:font-size-complex="60pt"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="8.2681in" fo:page-height="11.6929in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.278in" style:layout-grid-ruby-height="0.139in" style:layout-grid-mode="both" style:layout-grid-ruby-below="false" style:layout-grid-print="true" style:layout-grid-display="true" style:footnote-max-height="0in" loext:margin-gutter="0in">
+ <style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:p text:style-name="P1">Test ألف Test</text:p>
+ </office:text>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/sw/qa/extras/layout/data/tdf164499.docx b/sw/qa/extras/layout/data/tdf164499.docx
new file mode 100644
index 000000000000..d970bb29affa
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf164499.docx
Binary files differ
diff --git a/sw/qa/extras/layout/data/tdf164903.docx b/sw/qa/extras/layout/data/tdf164903.docx
new file mode 100644
index 000000000000..a7f7f4dac518
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf164903.docx
Binary files differ
diff --git a/sw/qa/extras/layout/data/tdf164905.docx b/sw/qa/extras/layout/data/tdf164905.docx
new file mode 100644
index 000000000000..9dca805ae13d
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf164905.docx
Binary files differ
diff --git a/sw/qa/extras/layout/data/tdf164907_rowHeightAtLeast.docx b/sw/qa/extras/layout/data/tdf164907_rowHeightAtLeast.docx
new file mode 100644
index 000000000000..e42a7e34d405
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf164907_rowHeightAtLeast.docx
Binary files differ
diff --git a/sw/qa/extras/layout/data/tdf164932.fodt b/sw/qa/extras/layout/data/tdf164932.fodt
new file mode 100644
index 000000000000..7a2347d25613
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf164932.fodt
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" />
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" />
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="H2" style:family="paragraph" style:parent-style-name="Standard" style:default-outline-level="2" style:list-style-name="WWNum5" style:list-level="2">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.423cm" style:contextual-spacing="false"/>
+ <style:text-properties fo:font-size="11pt" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" />
+ </style:style>
+ <style:style style:name="Frame_20_contents" style:display-name="Frame contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"/>
+ <style:style style:name="Inline_20_Heading" style:display-name="Inline Heading" style:family="graphic">
+ <style:graphic-properties fo:min-width="0.041cm" fo:min-height="0.041cm" text:anchor-type="as-char" svg:y="0cm" fo:margin-left="0cm" fo:margin-right="0cm" style:vertical-pos="middle" style:vertical-rel="text" fo:background-color="transparent" draw:fill="none"/>
+ </style:style>
+ <text:list-style style:name="WWNum5">
+ <text:list-level-style-number text:level="1" text:style-name="ListLabel_20_37" loext:num-list-format="ARTICLE %1%" style:num-prefix="ARTICLE " style:num-format="I">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="nothing"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="2" text:style-name="ListLabel_20_38" loext:is-legal="true" loext:num-list-format="SECTION %1%.%2%" style:num-prefix="SECTION " style:num-format="01, 02, 03, ..." text:display-levels="2">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.08cm" fo:text-indent="2.54cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ </text:list-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="H2" style:list-style-name="WWNum5"/>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties text:display="none"/>
+ </style:style>
+ <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Inline_20_Heading">
+ <style:graphic-properties style:vertical-pos="middle" style:vertical-rel="text" style:horizontal-pos="from-left" style:horizontal-rel="paragraph-content"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:p text:style-name="Standard"><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="as-char" draw:z-index="0">
+ <draw:text-box fo:min-height="0.041cm" fo:min-width="0.041cm">
+ <text:list text:style-name="WWNum5">
+ <text:list-item>
+ <text:list>
+ <text:list-item>
+ <text:h text:style-name="P1" text:outline-level="2" loext:marker-style-name="T1"><text:bookmark-start text:name="_Toc491880157"/><text:bookmark-start text:name="_Toc468834435"/><text:bookmark-start text:name="_Toc468835163"/>Defined Terms<text:bookmark-end text:name="_Toc491880157"/><text:bookmark-end text:name="_Toc468834435"/><text:bookmark-end text:name="_Toc468835163"/></text:h>
+ </text:list-item>
+ </text:list>
+ </text:list-item>
+ </text:list>
+ </draw:text-box>
+ </draw:frame></text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165089.fodt b/sw/qa/extras/layout/data/tdf165089.fodt
new file mode 100644
index 000000000000..6f528edd5aa9
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165089.fodt
@@ -0,0 +1,116 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:creation-date>2025-02-18T03:52:44.547523508</meta:creation-date><dc:date>2025-02-18T03:54:02.752685367</dc:date><meta:editing-duration>PT1M19S</meta:editing-duration><meta:editing-cycles>2</meta:editing-cycles><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/d380cd542a11ab9874fa0b5727186e4f41e69f21</meta:generator><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="1" meta:word-count="6" meta:character-count="24" meta:non-whitespace-character-count="19"/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">true</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans1" svg:font-family="'Noto Sans'" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="'Noto Serif CJK SC'" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in" draw:start-line-spacing-horizontal="0.1114in" draw:start-line-spacing-vertical="0.1114in" draw:end-line-spacing-horizontal="0.1114in" draw:end-line-spacing-vertical="0.1114in" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0in" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Noto Sans1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="0.4925in" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Noto Sans1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.1965in" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+ <style:text-properties fo:font-size="40pt" style:font-size-asian="35pt" style:font-size-complex="40pt"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="8.2681in" fo:page-height="11.6929in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="4" style:layout-grid-base-height="0.5555in" style:layout-grid-ruby-height="0.139in" style:layout-grid-mode="line" style:layout-grid-ruby-below="false" style:layout-grid-print="true" style:layout-grid-display="true" style:footnote-max-height="0in" loext:margin-gutter="0in">
+ <style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:p text:style-name="P1">Should be at top of page</text:p>
+ </office:text>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/sw/qa/extras/layout/data/tdf165354_column.fodt b/sw/qa/extras/layout/data/tdf165354_column.fodt
new file mode 100644
index 000000000000..ba351d53247b
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_column.fodt
@@ -0,0 +1,305 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="2" meta:paragraph-count="1" meta:word-count="41" meta:character-count="221" meta:non-whitespace-character-count="180"/><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/f2099fb566e1fe646dc4a4dae22c85058191ace3</meta:generator></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">197337</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">95031</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">1510949</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">2021145</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC" svg:font-family="&apos;Noto Sans CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="swiss"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="lr-tb"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="true" style:writing-mode="lr-tb"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="560"/>
+ </style:style>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="&apos;Noto Sans CJK SC&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <style:default-page-layout>
+ <style:page-layout-properties style:writing-mode="lr-tb" style:layout-grid-standard-mode="true"/>
+ </style:default-page-layout>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties officeooo:paragraph-rsid="001cc2ec" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="561" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="62pt"/>
+ </style:style>
+ <style:style style:name="Sect1" style:family="section">
+ <style:section-properties text:dont-balance-text-columns="false" style:editable="false">
+ <style:columns fo:column-count="2" fo:column-gap="0.497cm">
+ <style:column style:rel-width="32767*" fo:start-indent="0cm" fo:end-indent="0.248cm"/>
+ <style:column style:rel-width="32768*" fo:start-indent="0.248cm" fo:end-indent="0cm"/>
+ </style:columns>
+ </style:section-properties>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="20.814cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="22" style:layout-grid-base-height="1.058cm" style:layout-grid-ruby-height="0cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:layout-grid-base-width="0.706cm" style:layout-grid-snap-to="true" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:section text:style-name="Sect1" text:name="Section1">
+ <text:p text:style-name="P1"><text:span text:style-name="T1">Something is out there in space. It merely moves along in outer space inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. <text:s/>Earth is. The Earth is no different to any other celestial body</text:span></text:p>
+ </text:section>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_frames_on_right_pages_no_hyphenation.fodt b/sw/qa/extras/layout/data/tdf165354_frames_on_right_pages_no_hyphenation.fodt
new file mode 100644
index 000000000000..472ff1973ba8
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_frames_on_right_pages_no_hyphenation.fodt
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="3" meta:paragraph-count="1" meta:word-count="38" meta:character-count="208" meta:non-whitespace-character-count="170"/><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/c07f3e1140c46379c6126b12a9985eaa24ddbe2c</meta:generator></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">2</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">2</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">595440</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">1238809</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC" svg:font-family="&apos;Noto Sans CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="&apos;Noto Sans CJK SC&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Frame_20_contents" style:display-name="Frame contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"/>
+ <style:style style:name="Frame" style:family="graphic">
+ <style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" fo:margin-left="0.201cm" fo:margin-right="0.201cm" fo:margin-top="0.201cm" fo:margin-bottom="0.201cm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph-content" fo:background-color="transparent" draw:fill="none" draw:fill-color="#729fcf" fo:padding="0.15cm" fo:border="0.06pt solid #000000"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+ <style:text-properties officeooo:paragraph-rsid="000f52cf"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:margin-left="0.15cm" fo:margin-right="0.15cm" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:font-size="48pt" officeooo:paragraph-rsid="000d59e2" style:font-size-asian="48pt" style:font-size-complex="48pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="561" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:break-before="page"/>
+ <style:text-properties officeooo:paragraph-rsid="000f52cf"/>
+ </style:style>
+ <style:style style:name="P4" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="true"/>
+ <style:text-properties officeooo:paragraph-rsid="000915f0" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="561" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="66pt"/>
+ </style:style>
+ <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties fo:margin-left="0.199cm" fo:margin-right="0.199cm" fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:background-color="#ffffd7" draw:fill="solid" draw:fill-color="#ffffd7" fo:padding="0.15cm" fo:border="0.06pt solid #ffffff" draw:wrap-influence-on-position="once-concurrent" loext:allow-overlap="true">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ </style:graphic-properties>
+ </style:style>
+ <style:style style:name="fr2" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:background-color="#ffdbb6" draw:fill="solid" draw:fill-color="#ffdbb6" fo:padding="0.15cm" fo:border="none"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:p text:style-name="P1"><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="paragraph" svg:x="-0.554cm" svg:y="-0.67cm" svg:width="8.486cm" svg:height="25.553cm" draw:z-index="1">
+ <draw:text-box draw:chain-next-name="Frame2">
+ <text:p text:style-name="P2">Space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. <text:s/>Earth is. The Earth is no different to any other celestial body</text:p>
+ </draw:text-box>
+ </draw:frame></text:p>
+ <text:p text:style-name="P3"/>
+ <text:p text:style-name="P3"><draw:frame draw:style-name="fr2" draw:name="Frame2" text:anchor-type="paragraph" svg:x="8.999cm" svg:y="-0.61cm" svg:width="8.486cm" draw:z-index="0">
+ <draw:text-box fo:min-height="17.699cm">
+ <text:p text:style-name="P4" loext:marker-style-name="T1"/>
+ </draw:text-box>
+ </draw:frame></text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_frames_on_same_page_hyphenation.fodt b/sw/qa/extras/layout/data/tdf165354_frames_on_same_page_hyphenation.fodt
new file mode 100644
index 000000000000..fda1607256a3
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_frames_on_same_page_hyphenation.fodt
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="1" meta:word-count="38" meta:character-count="208" meta:non-whitespace-character-count="170"/><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/2102a28f93206e1faa6d6eb4ef8edc03608d4f68</meta:generator></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">0</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">595440</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">975542</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC" svg:font-family="&apos;Noto Sans CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="&apos;Noto Sans CJK SC&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Frame_20_contents" style:display-name="Frame contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"/>
+ <style:style style:name="Frame" style:family="graphic">
+ <style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" fo:margin-left="0.201cm" fo:margin-right="0.201cm" fo:margin-top="0.201cm" fo:margin-bottom="0.201cm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph-content" fo:background-color="transparent" draw:fill="none" draw:fill-color="#729fcf" fo:padding="0.15cm" fo:border="0.06pt solid #000000"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:margin-left="0.15cm" fo:margin-right="0.15cm" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="page" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:font-size="48pt" officeooo:paragraph-rsid="000d59e2" style:font-size-asian="48pt" style:font-size-complex="48pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="561" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="page" loext:hyphenation-keep-line="true"/>
+ <style:text-properties officeooo:paragraph-rsid="000915f0" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="561" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="66pt"/>
+ </style:style>
+ <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties fo:margin-left="0.199cm" fo:margin-right="0.199cm" fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:background-color="#ffffd7" draw:fill="solid" draw:fill-color="#ffffd7" fo:padding="0.15cm" fo:border="0.06pt solid #ffffff" draw:wrap-influence-on-position="once-concurrent" loext:allow-overlap="true">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ </style:graphic-properties>
+ </style:style>
+ <style:style style:name="fr2" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:background-color="#ffdbb6" draw:fill="solid" draw:fill-color="#ffdbb6" fo:padding="0.15cm" fo:border="none"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:p text:style-name="Standard"><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="paragraph" svg:x="-0.554cm" svg:y="-0.67cm" svg:width="8.486cm" svg:height="25.553cm" draw:z-index="0">
+ <draw:text-box draw:chain-next-name="Frame2">
+ <text:p text:style-name="P1">Space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. <text:s/>Earth is. The Earth is no different to any other celestial body</text:p>
+ </draw:text-box>
+ </draw:frame><draw:frame draw:style-name="fr2" draw:name="Frame2" text:anchor-type="paragraph" svg:x="8.999cm" svg:y="-0.61cm" svg:width="8.486cm" draw:z-index="1">
+ <draw:text-box fo:min-height="17.699cm">
+ <text:p text:style-name="P2" loext:marker-style-name="T1"/>
+ </draw:text-box>
+ </draw:frame></text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_frames_on_same_page_no_hyphenation.fodt b/sw/qa/extras/layout/data/tdf165354_frames_on_same_page_no_hyphenation.fodt
new file mode 100644
index 000000000000..b46a87e99f2b
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_frames_on_same_page_no_hyphenation.fodt
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="1" meta:word-count="38" meta:character-count="208" meta:non-whitespace-character-count="170"/><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/2102a28f93206e1faa6d6eb4ef8edc03608d4f68</meta:generator></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">0</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">595440</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">1041039</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC" svg:font-family="&apos;Noto Sans CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="&apos;Noto Sans CJK SC&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Frame_20_contents" style:display-name="Frame contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"/>
+ <style:style style:name="Frame" style:family="graphic">
+ <style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" fo:margin-left="0.201cm" fo:margin-right="0.201cm" fo:margin-top="0.201cm" fo:margin-bottom="0.201cm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph-content" fo:background-color="transparent" draw:fill="none" draw:fill-color="#729fcf" fo:padding="0.15cm" fo:border="0.06pt solid #000000"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:margin-left="0.15cm" fo:margin-right="0.15cm" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:font-size="48pt" officeooo:paragraph-rsid="000d59e2" style:font-size-asian="48pt" style:font-size-complex="48pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="561" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="true"/>
+ <style:text-properties officeooo:paragraph-rsid="000915f0" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="561" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="66pt"/>
+ </style:style>
+ <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties fo:margin-left="0.199cm" fo:margin-right="0.199cm" fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:background-color="#ffffd7" draw:fill="solid" draw:fill-color="#ffffd7" fo:padding="0.15cm" fo:border="0.06pt solid #ffffff" draw:wrap-influence-on-position="once-concurrent" loext:allow-overlap="true">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ </style:graphic-properties>
+ </style:style>
+ <style:style style:name="fr2" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:background-color="#ffdbb6" draw:fill="solid" draw:fill-color="#ffdbb6" fo:padding="0.15cm" fo:border="none"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:p text:style-name="Standard"><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="paragraph" svg:x="-0.554cm" svg:y="-0.67cm" svg:width="8.486cm" svg:height="25.553cm" draw:z-index="0">
+ <draw:text-box draw:chain-next-name="Frame2">
+ <text:p text:style-name="P1">Space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. <text:s/>Earth is. The Earth is no different to any other celestial body</text:p>
+ </draw:text-box>
+ </draw:frame><draw:frame draw:style-name="fr2" draw:name="Frame2" text:anchor-type="paragraph" svg:x="8.999cm" svg:y="-0.61cm" svg:width="8.486cm" draw:z-index="1">
+ <draw:text-box fo:min-height="17.699cm">
+ <text:p text:style-name="P2" loext:marker-style-name="T1"/>
+ </draw:text-box>
+ </draw:frame></text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_frames_on_spread_hyphenation.fodt b/sw/qa/extras/layout/data/tdf165354_frames_on_spread_hyphenation.fodt
new file mode 100644
index 000000000000..3aff174ed524
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_frames_on_spread_hyphenation.fodt
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="3" meta:paragraph-count="1" meta:word-count="38" meta:character-count="208" meta:non-whitespace-character-count="170"/><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/c07f3e1140c46379c6126b12a9985eaa24ddbe2c</meta:generator></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">2</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">2</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">595440</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">1345198</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC" svg:font-family="&apos;Noto Sans CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="&apos;Noto Sans CJK SC&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Frame_20_contents" style:display-name="Frame contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"/>
+ <style:style style:name="Frame" style:family="graphic">
+ <style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" fo:margin-left="0.201cm" fo:margin-right="0.201cm" fo:margin-top="0.201cm" fo:margin-bottom="0.201cm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph-content" fo:background-color="transparent" draw:fill="none" draw:fill-color="#729fcf" fo:padding="0.15cm" fo:border="0.06pt solid #000000"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+ <style:text-properties officeooo:paragraph-rsid="000f52cf"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:margin-left="0.15cm" fo:margin-right="0.15cm" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:font-size="48pt" officeooo:paragraph-rsid="000d59e2" style:font-size-asian="48pt" style:font-size-complex="48pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="561" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:break-before="page"/>
+ <style:text-properties officeooo:paragraph-rsid="000f52cf"/>
+ </style:style>
+ <style:style style:name="P4" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="true"/>
+ <style:text-properties officeooo:paragraph-rsid="000915f0" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="561" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="66pt"/>
+ </style:style>
+ <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties fo:margin-left="0.199cm" fo:margin-right="0.199cm" fo:margin-top="0.199cm" fo:margin-bottom="0.199cm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:background-color="#ffd8ce" draw:fill="solid" draw:fill-color="#ffd8ce" fo:padding="0.15cm" fo:border="0.06pt solid #ffffff" draw:wrap-influence-on-position="once-concurrent" loext:allow-overlap="true">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ </style:graphic-properties>
+ </style:style>
+ <style:style style:name="fr2" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:background-color="#ffffd7" draw:fill="solid" draw:fill-color="#ffffd7" fo:padding="0.15cm" fo:border="none"/>
+ </style:style>
+ <style:style style:name="fr3" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:background-color="#ffdbb6" draw:fill="solid" draw:fill-color="#ffdbb6" fo:padding="0.15cm" fo:border="none"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:p text:style-name="P1"><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="paragraph" svg:x="-0.554cm" svg:y="-0.67cm" svg:width="8.486cm" svg:height="13.681cm" draw:z-index="0">
+ <draw:text-box draw:chain-next-name="Frame2">
+ <text:p text:style-name="P2">Space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. <text:s/>Earth is. The Earth is no different to any other celestial body</text:p>
+ </draw:text-box>
+ </draw:frame></text:p>
+ <text:p text:style-name="P3"><draw:frame draw:style-name="fr2" draw:name="Frame2" text:anchor-type="paragraph" svg:x="8.999cm" svg:y="-0.61cm" svg:width="8.486cm" svg:height="13.085cm" draw:z-index="1">
+ <draw:text-box draw:chain-next-name="Frame3">
+ <text:p text:style-name="P4" loext:marker-style-name="T1"/>
+ </draw:text-box>
+ </draw:frame></text:p>
+ <text:p text:style-name="P3"><draw:frame draw:style-name="fr3" draw:name="Frame3" text:anchor-type="paragraph" svg:x="8.999cm" svg:y="-0.61cm" svg:width="8.486cm" draw:z-index="2">
+ <draw:text-box fo:min-height="17.699cm">
+ <text:p text:style-name="P4" loext:marker-style-name="T1"/>
+ </draw:text-box>
+ </draw:frame></text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_long_paragraph.fodt b/sw/qa/extras/layout/data/tdf165354_long_paragraph.fodt
new file mode 100644
index 000000000000..4697d877adef
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_long_paragraph.fodt
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">16245</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">68698</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">38887</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
+ <config:config-item config:name="ViewLeft" config:type="long">36348</config:config-item>
+ <config:config-item config:name="ViewTop" config:type="long">16417</config:config-item>
+ <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">16245</config:config-item>
+ <config:config-item config:name="VisibleRight" config:type="long">68696</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">55130</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ViewLayoutColumns" config:type="short">2</config:config-item>
+ <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ZoomFactor" config:type="short">56</config:config-item>
+ <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="KeepRatio" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LegacySingleLineFontwork" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConnectorUseSnapRect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreBreakAfterMultilineField" config:type="boolean">false</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">681377</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">774965</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="swiss"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:font-size="49pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread" loext:hyphenation-keep-line="true"/>
+ <style:text-properties fo:font-size="49pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="20.814cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:p text:style-name="P1"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2">The Earth is no different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. The Earthisno different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, <text:soft-page-break/>except that it has an atmosphere. The Earth is no different to any other celestial body out…</text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_long_paragraph_2.fodt b/sw/qa/extras/layout/data/tdf165354_long_paragraph_2.fodt
new file mode 100644
index 000000000000..fa4c5abbdfb4
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_long_paragraph_2.fodt
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">18519</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">68698</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">38887</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
+ <config:config-item config:name="ViewLeft" config:type="long">43083</config:config-item>
+ <config:config-item config:name="ViewTop" config:type="long">34918</config:config-item>
+ <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">18519</config:config-item>
+ <config:config-item config:name="VisibleRight" config:type="long">68696</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">57404</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ViewLayoutColumns" config:type="short">2</config:config-item>
+ <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ZoomFactor" config:type="short">56</config:config-item>
+ <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="KeepRatio" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LegacySingleLineFontwork" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConnectorUseSnapRect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreBreakAfterMultilineField" config:type="boolean">false</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">681377</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">782905</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="swiss"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" />
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:font-size="49pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread" loext:hyphenation-keep-line="true"/>
+ <style:text-properties fo:font-size="49pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="page" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:font-size="49pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="20.814cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:p text:style-name="P1"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P3">The Earth is no different to any other celestial body out there in space. It merely moves along in space iner<text:soft-page-break/>tially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. The Earthisno different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space ex<text:soft-page-break/>cept that it has an atmosphere. The Earth is no different to any other celestial body out…</text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_long_paragraph_3.fodt b/sw/qa/extras/layout/data/tdf165354_long_paragraph_3.fodt
new file mode 100644
index 000000000000..7bc191b909e3
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_long_paragraph_3.fodt
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">18519</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">68698</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">38887</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
+ <config:config-item config:name="ViewLeft" config:type="long">43083</config:config-item>
+ <config:config-item config:name="ViewTop" config:type="long">34918</config:config-item>
+ <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">18519</config:config-item>
+ <config:config-item config:name="VisibleRight" config:type="long">68696</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">57404</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ViewLayoutColumns" config:type="short">2</config:config-item>
+ <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ZoomFactor" config:type="short">56</config:config-item>
+ <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="KeepRatio" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LegacySingleLineFontwork" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConnectorUseSnapRect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreBreakAfterMultilineField" config:type="boolean">false</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">681377</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">782905</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="swiss"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" />
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:font-size="49pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread" loext:hyphenation-keep-line="true"/>
+ <style:text-properties fo:font-size="49pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:font-size="49pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="20.814cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:p text:style-name="P1"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P2"/>
+ <text:p text:style-name="P3">The Earth is no different to any other celestial body out there in space. It merely moves along in space iner<text:soft-page-break/>tially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. The Earthisno different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space except that it has an atmosphere. The Earth is no different to any other celestial body out…</text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_page.fodt b/sw/qa/extras/layout/data/tdf165354_page.fodt
new file mode 100644
index 000000000000..ca235c159da4
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_page.fodt
@@ -0,0 +1,296 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="3" meta:paragraph-count="2" meta:word-count="95" meta:character-count="511" meta:non-whitespace-character-count="418"/><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/c07f3e1140c46379c6126b12a9985eaa24ddbe2c</meta:generator></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">0</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">347835</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">347835</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC" svg:font-family="&apos;Noto Sans CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="swiss"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="&apos;Noto Sans CJK SC&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%" fo:text-align="justify" style:justify-single-word="false"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:text-properties fo:font-size="18pt" fo:font-weight="bold"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="49pt"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="20.814cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:h text:style-name="Heading_20_1" text:outline-level="1"><text:span text:style-name="T1">Hyphenate last word of the page</text:span><text:span text:style-name="T1"/></text:h>
+ <text:p text:style-name="P1"><text:span text:style-name="T1">The Earth is no different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, </text:span><text:soft-page-break/><text:span text:style-name="T1">except that it has an atmosphere. The Earth is no different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. The Earth is </text:span><text:soft-page-break/><text:span text:style-name="T1">no different to any other celestial body out…</text:span></text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_page_in_last_column.fodt b/sw/qa/extras/layout/data/tdf165354_page_in_last_column.fodt
new file mode 100644
index 000000000000..8d9cbb87ac20
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_page_in_last_column.fodt
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:creation-date>2022-05-24T07:51:40</meta:creation-date><dc:language>hu-HU</dc:language><dc:date>2024-04-10T16:18:21.407517677</dc:date><meta:editing-cycles>12</meta:editing-cycles><meta:editing-duration>PT30M48S</meta:editing-duration><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/2102a28f93206e1faa6d6eb4ef8edc03608d4f68</meta:generator><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="2" meta:paragraph-count="1" meta:word-count="41" meta:character-count="221" meta:non-whitespace-character-count="180"/><meta:user-defined meta:name="AppVersion">16.0000</meta:user-defined><meta:user-defined meta:name="ContentTypeId">0x01010085BF02F4C75C8B46B51578A787841FFC</meta:user-defined><meta:template xlink:type="simple" xlink:actuate="onRequest" xlink:title="Normal" xlink:href=""/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">197337</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">95031</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">1510949</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">2000824</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC" svg:font-family="&apos;Noto Sans CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="swiss"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="lr-tb"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="true" style:writing-mode="lr-tb"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="560"/>
+ </style:style>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="&apos;Noto Sans CJK SC&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="page" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties officeooo:paragraph-rsid="001c2603" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="561" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="66pt"/>
+ </style:style>
+ <style:style style:name="Sect1" style:family="section">
+ <style:section-properties text:dont-balance-text-columns="false" style:editable="false">
+ <style:columns fo:column-count="2" fo:column-gap="0.497cm">
+ <style:column style:rel-width="32767*" fo:start-indent="0cm" fo:end-indent="0.248cm"/>
+ <style:column style:rel-width="32768*" fo:start-indent="0.248cm" fo:end-indent="0cm"/>
+ </style:columns>
+ </style:section-properties>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="20.814cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="22" style:layout-grid-base-height="1.058cm" style:layout-grid-ruby-height="0cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:section text:style-name="Sect1" text:name="Section1">
+ <text:p text:style-name="P1"><text:span text:style-name="T1">The Earth is no different to any other celestial body out there in space. It merely moves along in a space an inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. <text:s/>Earth is.</text:span></text:p>
+ </text:section>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_page_in_not_last_column.fodt b/sw/qa/extras/layout/data/tdf165354_page_in_not_last_column.fodt
new file mode 100644
index 000000000000..704e7c663876
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_page_in_not_last_column.fodt
@@ -0,0 +1,305 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="2" meta:paragraph-count="1" meta:word-count="41" meta:character-count="221" meta:non-whitespace-character-count="180"/><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/2102a28f93206e1faa6d6eb4ef8edc03608d4f68</meta:generator></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">197337</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">95031</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">1510949</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">1908058</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC" svg:font-family="&apos;Noto Sans CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="swiss"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="lr-tb"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="true" style:writing-mode="lr-tb"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="560"/>
+ </style:style>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="&apos;Noto Sans CJK SC&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <style:default-page-layout>
+ <style:page-layout-properties style:writing-mode="lr-tb" style:layout-grid-standard-mode="true"/>
+ </style:default-page-layout>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="page" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties officeooo:paragraph-rsid="001cc2ec" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="561" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="66pt"/>
+ </style:style>
+ <style:style style:name="Sect1" style:family="section">
+ <style:section-properties text:dont-balance-text-columns="false" style:editable="false">
+ <style:columns fo:column-count="2" fo:column-gap="0.497cm">
+ <style:column style:rel-width="32767*" fo:start-indent="0cm" fo:end-indent="0.248cm"/>
+ <style:column style:rel-width="32768*" fo:start-indent="0.248cm" fo:end-indent="0cm"/>
+ </style:columns>
+ </style:section-properties>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="20.814cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="22" style:layout-grid-base-height="1.058cm" style:layout-grid-ruby-height="0cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:layout-grid-base-width="0.706cm" style:layout-grid-snap-to="true" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:section text:style-name="Sect1" text:name="Section1">
+ <text:p text:style-name="P1"><text:span text:style-name="T1">out there in space. It merely moves along in a space an inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. <text:s/>Earth is. The Earth is no different to any other celestial body</text:span></text:p>
+ </text:section>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_page_in_table.fodt b/sw/qa/extras/layout/data/tdf165354_page_in_table.fodt
new file mode 100644
index 000000000000..b5ff1384e50b
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_page_in_table.fodt
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:document-statistic meta:table-count="1" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="2" meta:word-count="96" meta:character-count="517" meta:non-whitespace-character-count="423"/><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/2102a28f93206e1faa6d6eb4ef8edc03608d4f68</meta:generator></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">0</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">1243834</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">1544097</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="swiss"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%" fo:text-align="justify" style:justify-single-word="false"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list"/>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ </style:style>
+ <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:text-properties fo:font-size="18pt" fo:font-weight="bold"/>
+ </style:style>
+ <style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:orphans="0" fo:widows="0" text:number-lines="false" text:line-number="0"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="Table1" style:family="table">
+ <style:table-properties style:width="16.81cm" table:align="margins"/>
+ </style:style>
+ <style:style style:name="Table1.A" style:family="table-column">
+ <style:table-column-properties style:column-width="16.81cm" style:rel-column-width="65535*"/>
+ </style:style>
+ <style:style style:name="Table1.A1" style:family="table-cell">
+ <style:table-cell-properties fo:padding="0cm" fo:border="0.5pt solid #000000"/>
+ </style:style>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Heading_20_1" style:master-page-name="">
+ <style:paragraph-properties fo:margin-top="1.12cm" fo:margin-bottom="0.84cm" style:contextual-spacing="false" style:page-number="auto"/>
+ <style:text-properties officeooo:paragraph-rsid="0012faba"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="page" loext:hyphenation-keep-line="true"/>
+ <style:text-properties officeooo:paragraph-rsid="001714b6" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Heading_20_1" style:list-style-name="">
+ <style:text-properties fo:font-size="2pt"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="49pt"/>
+ </style:style>
+ <style:style style:name="T2" style:family="text">
+ <style:text-properties fo:font-size="49pt" officeooo:rsid="0014428c"/>
+ </style:style>
+ <style:style style:name="T3" style:family="text">
+ <style:text-properties fo:font-size="49pt" officeooo:rsid="001714b6"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="20.81cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.799cm" fo:margin-bottom="1.7cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <table:table table:name="Table1" table:style-name="Table1">
+ <table:table-column table:style-name="Table1.A"/>
+ <table:table-row>
+ <table:table-cell table:style-name="Table1.A1" office:value-type="string">
+ <text:h text:style-name="P1" text:outline-level="1" loext:marker-style-name="T1"><text:span text:style-name="T2">Don’t h</text:span><text:span text:style-name="T1">yphenate </text:span><text:span text:style-name="T2">the </text:span><text:span text:style-name="T1">last word </text:span><text:span text:style-name="T2">of page</text:span></text:h>
+ <text:p text:style-name="P2"><text:span text:style-name="T1">The Earth is no different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, except that it has an at</text:span><text:span text:style-name="T1">mosphere. The Earth is no different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. The Earth is no different to an</text:span><text:span text:style-name="T3">y other celestial body out…</text:span></text:p>
+ </table:table-cell>
+ </table:table-row>
+ </table:table>
+ <text:h text:style-name="P3" text:outline-level="1" loext:marker-style-name="T1"/>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_spread-left-page.fodt b/sw/qa/extras/layout/data/tdf165354_spread-left-page.fodt
new file mode 100644
index 000000000000..c21eccbd7c88
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_spread-left-page.fodt
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><dc:date>2024-04-10T14:00:54.132053888</dc:date><meta:editing-duration>PT2M25S</meta:editing-duration><meta:editing-cycles>4</meta:editing-cycles><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/c07f3e1140c46379c6126b12a9985eaa24ddbe2c</meta:generator><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="3" meta:paragraph-count="2" meta:word-count="95" meta:character-count="511" meta:non-whitespace-character-count="418"/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">189443</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">91230</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">1932522</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">2058448</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="swiss"/>
+ <style:font-face style:name="DejaVu Sans" svg:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="swiss"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="swiss"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Arial" fo:font-family="Arial" style:font-family-generic="swiss" fo:font-size="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%" fo:text-align="justify" style:justify-single-word="false"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-name="DejaVu Sans" fo:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="swiss"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-name="DejaVu Sans" fo:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="swiss" fo:font-size="12pt" fo:font-style="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-name="DejaVu Sans" fo:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="swiss"/>
+ </style:style>
+ <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:text-properties fo:font-size="18pt" fo:font-weight="bold"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" loext:num-list-format="%1%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Heading_20_1" style:list-style-name="">
+ <style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Heading_20_1">
+ <style:paragraph-properties fo:break-before="page"/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="49pt"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="20.814cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:h text:style-name="P1" text:outline-level="1"><text:span text:style-name="T1"/></text:h>
+ <text:h text:style-name="P2" text:outline-level="1"><text:span text:style-name="T1">Hyphenate last word of the page</text:span><text:span text:style-name="T1"/></text:h>
+ <text:p text:style-name="P3"><text:span text:style-name="T1">The Earth is no different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, </text:span><text:span text:style-name="T1">except that it has an at</text:span><text:span text:style-name="T1">mosphere. The Earth is no different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. The Earth is </text:span><text:span text:style-name="T1">no different to any other celestial body out…</text:span></text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/data/tdf165354_spread.fodt b/sw/qa/extras/layout/data/tdf165354_spread.fodt
new file mode 100644
index 000000000000..950ee88fda69
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf165354_spread.fodt
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><dc:date>2024-04-10T14:00:36.781594440</dc:date><meta:editing-duration>PT2M8S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/c07f3e1140c46379c6126b12a9985eaa24ddbe2c</meta:generator><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="3" meta:paragraph-count="2" meta:word-count="95" meta:character-count="511" meta:non-whitespace-character-count="418"/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">189443</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">91230</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">1932522</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">2144074</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="swiss"/>
+ <style:font-face style:name="DejaVu Sans" svg:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="swiss"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="swiss"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Arial" fo:font-family="Arial" style:font-family-generic="swiss" fo:font-size="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%" fo:text-align="justify" style:justify-single-word="false"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-name="DejaVu Sans" fo:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="swiss"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-name="DejaVu Sans" fo:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="swiss" fo:font-size="12pt" fo:font-style="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-name="DejaVu Sans" fo:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="swiss"/>
+ </style:style>
+ <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:text-properties fo:font-size="18pt" fo:font-weight="bold"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" loext:num-list-format="%1%" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit" loext:hyphenation-compound-remain-char-count="2"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="49pt"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="20.814cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:h text:style-name="Heading_20_1" text:outline-level="1"><text:span text:style-name="T1">Hyphenate last word of the page</text:span><text:span text:style-name="T1"/></text:h>
+ <text:p text:style-name="P1"><text:span text:style-name="T1">The Earth is no different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, </text:span><text:soft-page-break/><text:span text:style-name="T1">except that it has an atmosphere. The Earth is no different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. The Earth is </text:span><text:soft-page-break/><text:span text:style-name="T1">no different to any other celestial body out…</text:span></text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index f54d38504b36..17055fa287ed 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -8,10 +8,14 @@
*/
#include <swmodeltestbase.hxx>
+
+#include <osl/process.h>
+#include <comphelper/scopeguard.hxx>
#include <comphelper/propertysequence.hxx>
#include <vcl/scheduler.hxx>
#include <svx/svddef.hxx>
+#include <layouter.hxx>
#include <fmtanchr.hxx>
#include <fmtfsize.hxx>
#include <fmtcntnt.hxx>
@@ -277,6 +281,102 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, TestTdf136588)
u"effectively by modern-day small to ");
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTableSplitBug)
+{
+ createSwDoc("table-split-bug.fodt");
+
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc,
+ "/root/page[1]/body/section[3]/tab[1]/row[1]/cell[1]//txt[1]/infos/bounds",
+ "height", u"276");
+ assertXPath(pXmlDoc, "/root/page[1]/body/section[3]/tab[1]/row[1]/cell[1]/infos/bounds",
+ "height", u"1274");
+ }
+
+ SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
+ pWrtShell->Down(false, 1);
+ pWrtShell->Right(SwCursorSkipMode::Chars, /*bSelect=*/true, 1, /*bBasicCall=*/false);
+ pWrtShell->Delete();
+
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ // the problem was that the paragraph in the left cell had height 0
+ assertXPath(pXmlDoc,
+ "/root/page[1]/body/section[3]/tab[1]/row[1]/cell[1]//txt[1]/infos/bounds",
+ "height", u"276");
+ assertXPath(pXmlDoc, "/root/page[1]/body/section[3]/tab[1]/row[1]/cell[1]/infos/bounds",
+ "height", u"1688");
+ }
+
+ pWrtShell->Undo();
+
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ // the problem was that the paragraph in the left cell had height 0
+ assertXPath(pXmlDoc,
+ "/root/page[1]/body/section[3]/tab[1]/row[1]/cell[1]//txt[1]/infos/bounds",
+ "height", u"276");
+ assertXPath(pXmlDoc, "/root/page[1]/body/section[3]/tab[1]/row[1]/cell[1]/infos/bounds",
+ "height", u"1274");
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTableInSectionTruncated)
+{
+ createSwDoc("table-in-section-truncated.fodt");
+
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt", 20);
+ assertXPath(pXmlDoc, "/root/page[1]/body/section/txt", 0);
+ assertXPath(pXmlDoc, "/root/page[1]/body/section/tab/row/cell/txt", 1);
+ assertXPath(pXmlDoc, "/root/page[2]/body/section/tab/row/cell/txt", 2);
+ assertXPath(pXmlDoc, "/root/page[2]/body/section/txt", 1);
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt", 0);
+
+ assertXPath(pXmlDoc, "/root/page[2]/body/section/infos/bounds", "bottom", u"11032");
+ }
+
+ SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
+ pWrtShell->Down(false, 19);
+ dispatchCommand(mxComponent, u".uno:InsertPagebreak"_ustr, {});
+
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt", 20);
+ assertXPath(pXmlDoc, "/root/page[1]/body/section/txt", 0);
+ assertXPath(pXmlDoc, "/root/page[1]/body/section/tab/row/cell/txt", 0);
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt", 1);
+ assertXPath(pXmlDoc, "/root/page[2]/body/section/tab/row/cell/txt", 3);
+ assertXPath(pXmlDoc, "/root/page[2]/body/section/txt", 1);
+
+ assertXPath(pXmlDoc, "/root/page[2]/body/section/infos/bounds", "top", u"10369");
+ assertXPath(pXmlDoc, "/root/page[2]/body/section/tab/infos/bounds", "top", u"10369");
+ assertXPath(pXmlDoc, "/root/page[2]/body/section/tab/infos/bounds", "height", u"940");
+ assertXPath(pXmlDoc, "/root/page[2]/body/section/txt/infos/bounds", "bottom", u"11584");
+ // problem was that the section bottom did not grow enough (only 11309)
+ assertXPath(pXmlDoc, "/root/page[2]/body/section/infos/bounds", "bottom", u"11584");
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTableInSectionSplitLoop)
+{
+ createSwDoc("table-in-section-split-loop.fodt");
+
+ static OUString constexpr var{ u"TEST_NO_LOOP_CONTROLS"_ustr };
+ osl_setEnvironment(var.pData, u"1"_ustr.pData);
+ comphelper::ScopeGuard g([] { osl_clearEnvironment(var.pData); });
+
+ CPPUNIT_ASSERT_EQUAL(0, SwLayouter::GetLastLoopControlStage());
+
+ SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
+ pWrtShell->Right(SwCursorSkipMode::Chars, /*bSelect=*/true, 1, /*bBasicCall=*/false);
+ pWrtShell->Delete();
+
+ CPPUNIT_ASSERT_EQUAL(0, SwLayouter::GetLastLoopControlStage());
+}
+
CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testRedlineFlysInBody)
{
createSwDoc();
diff --git a/sw/qa/extras/layout/layout2.cxx b/sw/qa/extras/layout/layout2.cxx
index 5dc1e6fff241..9b0401f42aa9 100644
--- a/sw/qa/extras/layout/layout2.cxx
+++ b/sw/qa/extras/layout/layout2.cxx
@@ -18,8 +18,13 @@
#include <editeng/unolingu.hxx>
#include <i18nlangtag/languagetag.hxx>
#include <o3tl/string_view.hxx>
+#include <vcl/scheduler.hxx>
#include <rootfrm.hxx>
+#include <pagefrm.hxx>
+#include <bodyfrm.hxx>
+#include <txtfrm.hxx>
+#include <ndtxt.hxx>
#include <wrtsh.hxx>
#include <IDocumentLayoutAccess.hxx>
#include <IDocumentRedlineAccess.hxx>
@@ -518,6 +523,25 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf129357)
assertXPathContent(pXmlDoc, "/metafile/push/push/push/push/push/textarray[2]/text", u"-");
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf165322)
+{
+ createSwDoc("CT-formatted-deletion.docx");
+ SwDocShell* pShell = getSwDocShell();
+
+ // Dump the rendering of the first page as an XML file.
+ std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile();
+ MetafileXmlDump dumper;
+
+ xmlDocUniquePtr pXmlDoc = dumpAndParse(dumper, *xMetaFile);
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // paragraph with 2 redlines was not marked as deleted
+ assertXPath(pXmlDoc,
+ "//text[text() = 'Nunc viverra imperdiet enim. Fusce est. Vivamus a "
+ "tellus.']/parent::textarray/preceding-sibling::font[1]",
+ "strikeout", u"1");
+}
+
CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testRedlineNumberInNumbering)
{
createSwDoc("tdf42748.fodt");
@@ -707,24 +731,25 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf152872)
// 5 is empty and hidden
assertXPath(pXmlDoc, "/root/page/body/txt[2]/infos/bounds", "height", u"0");
- dispatchCommand(mxComponent, u".uno:ControlCodes"_ustr, {});
+ SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
+ SwViewOption aViewOptions(*pWrtShell->GetViewOptions());
+ aViewOptions.SetShowHiddenChar(true);
+ aViewOptions.SetViewMetaChars(true);
+ pWrtShell->ApplyViewOptions(aViewOptions);
pXmlDoc = parseLayoutDump();
assertXPath(pXmlDoc, "/root/page[1]/body/txt", 5);
assertXPath(pXmlDoc, "/root/page/body/txt[1]/SwParaPortion/SwLineLayout", "portion", u"C ");
assertXPath(pXmlDoc, "/root/page/body/txt[2]/SwParaPortion/SwLineLayout", "portion", u"D");
- // 3 is an empty paragraph with RES_CHRATR_HIDDEN which results in 0-height
- // frame; ideally it should only be hidden when control codes are hidden
- // and be a full-height frame now, but that needs more work...
- assertXPath(pXmlDoc, "/root/page/body/txt[3]/infos/bounds", "height", u"0");
+ // 3 is an empty paragraph with RES_CHRATR_HIDDEN
+ assertXPath(pXmlDoc, "/root/page/body/txt[3]/infos/bounds", "height", u"398");
assertXPath(pXmlDoc, "/root/page/body/txt[4]/SwParaPortion/SwLineLayout", "portion", u"E");
- // 5 is an empty paragraph with RES_CHRATR_HIDDEN which results in 0-height
- // frame; ideally it should only be hidden when control codes are hidden
- // and be a full-height frame now, but that needs more work...
- assertXPath(pXmlDoc, "/root/page/body/txt[5]/infos/bounds", "height", u"0");
+ // 5 is an empty paragraph with RES_CHRATR_HIDDEN
+ assertXPath(pXmlDoc, "/root/page/body/txt[5]/infos/bounds", "height", u"398");
- dispatchCommand(mxComponent, u".uno:ControlCodes"_ustr, {});
+ aViewOptions.SetViewMetaChars(false);
+ pWrtShell->ApplyViewOptions(aViewOptions);
pXmlDoc = parseLayoutDump();
@@ -734,6 +759,284 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf152872)
assertXPath(pXmlDoc, "/root/page/body/txt[2]/infos/bounds", "height", u"0");
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testHiddenParaBreaks)
+{
+ createSwDoc("section-break-hidden-paragraphs.rtf");
+
+ SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
+ SwViewOption aViewOptions(*pWrtShell->GetViewOptions());
+ aViewOptions.SetShowHiddenChar(true);
+ aViewOptions.SetViewMetaChars(true);
+ pWrtShell->ApplyViewOptions(aViewOptions);
+ Scheduler::ProcessEventsToIdle();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt", 1);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout", "portion",
+ u"First");
+ // actually Word shows an additional paragraph before the table
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt", 3);
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt[1]/SwParaPortion/SwLineLayout", "portion", u"");
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt[1]/infos/bounds", "top", u"18846");
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt[1]/infos/bounds", "height", u"269");
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt[2]/infos/bounds", "top", u"19115");
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt[2]/infos/bounds", "height", u"450");
+ assertXPath(pXmlDoc, "/root/page[2]/body/tab[1]/infos/bounds", "top", u"19565");
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt[3]/SwParaPortion/SwLineLayout", "portion", u"End");
+
+ aViewOptions.SetViewMetaChars(false);
+ pWrtShell->ApplyViewOptions(aViewOptions);
+ Scheduler::ProcessEventsToIdle();
+
+ pXmlDoc = parseLayoutDump();
+
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt", 1);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout", "portion",
+ u"First");
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt", 2);
+ // this one is merged; if it were 2 0-height frames that would work too
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt[1]/infos/bounds", "top", u"18846");
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt[1]/infos/bounds", "height", u"0");
+ assertXPath(pXmlDoc, "/root/page[2]/body/tab[1]/infos/bounds", "top", u"18846");
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt[2]/SwParaPortion/SwLineLayout", "portion", u"End");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testHiddenParaProps)
+{
+ createSwDoc("merge_hidden_redline.docx");
+
+ SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
+ SwViewOption aViewOptions(*pWrtShell->GetViewOptions());
+ aViewOptions.SetShowHiddenChar(true);
+ aViewOptions.SetViewMetaChars(true);
+ pWrtShell->ApplyViewOptions(aViewOptions);
+
+ // note: do not use layout dump here, because it doesn't work:
+ // SwTextFrame::Format doesn't actually create the SwMarginPortion for
+ // non-left-aligned frames; instead, it sets SetFormatAdj() flag and later
+ // *SwTextPainter* checks via GetAdjusted() if the flag is set and calls
+ // CalcAdjLine() which inserts the SwMarginPortion.
+
+ SwRootFrame* pRoot = pWrtShell->GetLayout();
+ CPPUNIT_ASSERT(pRoot->GetLower()->IsPageFrame());
+ SwPageFrame* pPage = static_cast<SwPageFrame*>(pRoot->GetLower());
+ CPPUNIT_ASSERT(pPage->GetLower()->IsBodyFrame());
+ SwBodyFrame* pBody = static_cast<SwBodyFrame*>(pPage->GetLower());
+ CPPUNIT_ASSERT(pBody->GetLower()->IsTextFrame());
+ SwTextFrame* pTextFrame = dynamic_cast<SwTextFrame*>(pBody->GetLower());
+
+ CPPUNIT_ASSERT_EQUAL(u"1 hidden, delete-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ // TODO: redlines don't merge like in Word yet
+ CPPUNIT_ASSERT_EQUAL(u"Abcdef"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"ghi"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"2 visible, delete-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abcghi"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"def"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"3 delete-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"def"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"ghi"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"4 delete-merge, delete-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abc"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"def"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u""_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"5 visible, hidden-merge, visible"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abc"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Center,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"def"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Left,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"6 hidden-merge, visible"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abc"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Center,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"def"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Left,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"7 visible, hidden-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abcdef"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Center,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"ghi"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Left,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"8 visible, delete-merge, visible, hidden-merge, visible"_ustr,
+ pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abc"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Right,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"def"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Center,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"ghi"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Left,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"9 hidden-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abc"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Center,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"def"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Left,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"10 visible, hidden-merge, visible, delete-merge, visible"_ustr,
+ pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abc"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Right,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"def"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Center,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"ghi"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Left,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+
+ aViewOptions.SetShowHiddenChar(false);
+ pWrtShell->ApplyViewOptions(aViewOptions);
+
+ // the problem was that the wrong SwTextNode was used for properties
+ pTextFrame = dynamic_cast<SwTextFrame*>(pBody->GetLower());
+ CPPUNIT_ASSERT_EQUAL(u"1 hidden, delete-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ // TODO: redlines don't merge like in Word yet
+ CPPUNIT_ASSERT_EQUAL(u"Abcdef"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"ghi"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"2 visible, delete-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abcghi"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"def"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"3 delete-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"def"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"ghi"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"4 delete-merge, delete-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abc"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"def"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u""_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"5 visible, hidden-merge, visible"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abcdef"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Center,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"6 hidden-merge, visible"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abcdef"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Left,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"7 visible, hidden-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abcdefghi"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Center,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"8 visible, delete-merge, visible, hidden-merge, visible"_ustr,
+ pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abc"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Right,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"defghi"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Center,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"9 hidden-merge"_ustr, pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abcdef"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Left,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"10 visible, hidden-merge, visible, delete-merge, visible"_ustr,
+ pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abcdef"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Right,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"ghi"_ustr, pTextFrame->GetText());
+ CPPUNIT_ASSERT_EQUAL(
+ SvxAdjust::Left,
+ pTextFrame->GetTextNodeForParaProps()->GetSwAttrSet().Get(RES_PARATR_ADJUST).GetAdjust());
+
+ dispatchCommand(mxComponent, u".uno:ShowTrackedChanges"_ustr, {});
+
+ pTextFrame = dynamic_cast<SwTextFrame*>(pBody->GetLower());
+ for (int i = 0; i < 18; ++i)
+ {
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ }
+ // the problem was that this redline (following hidden) wasn't merged
+ CPPUNIT_ASSERT_EQUAL(u"10 visible, hidden-merge, visible, delete-merge, visible"_ustr,
+ pTextFrame->GetText());
+ pTextFrame = dynamic_cast<SwTextFrame*>(pTextFrame->GetNext());
+ CPPUNIT_ASSERT_EQUAL(u"abcdefghi"_ustr, pTextFrame->GetText());
+}
+
CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf151954)
{
createSwDoc("tdf151954.docx");
diff --git a/sw/qa/extras/layout/layout3.cxx b/sw/qa/extras/layout/layout3.cxx
index af6dac583f29..269d01e8d82b 100644
--- a/sw/qa/extras/layout/layout3.cxx
+++ b/sw/qa/extras/layout/layout3.cxx
@@ -479,17 +479,31 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf161810)
auto pTextArrayAction = static_cast<MetaTextArrayAction*>(pAction);
auto pDXArray = pTextArrayAction->GetDXArray();
- // There should be 73 chars on the first line
- CPPUNIT_ASSERT_EQUAL(size_t(73), pDXArray.size());
+ // There should be 70 chars on the first line
+ // (tdf#164499 no space shrinking in lines with tabulation)
+ CPPUNIT_ASSERT_EQUAL(size_t(70), pDXArray.size());
- // Assert we are using the expected position for the last char
- // This was 9369, now 9165, according to the fixed space shrinking
- CPPUNIT_ASSERT_LESS(sal_Int32(9300), sal_Int32(pDXArray[72]));
break;
}
}
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf164905)
+{
+ createSwDoc("tdf164905.docx");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ // This was 9 (resulting broken ToC layout)
+ assertXPath(pXmlDoc, "//SwGluePortion", 3);
+ // For example, it was an unnecessary glue portion here
+ assertXPath(pXmlDoc,
+ "/root/page/body/section[2]/txt[1]/SwParaPortion/SwLineLayout/SwGluePortion", 0);
+}
+
CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf163149)
{
createSwDoc("tdf163149.docx");
@@ -535,6 +549,26 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf163149)
}
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf164499)
+{
+ createSwDoc("tdf164499.docx");
+
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // no shrinking in tabulated text lines
+
+ // This was 1 (no line break in heading 2.5.5)
+ assertXPath(pXmlDoc, "/root/page[1]/body/section/txt[18]/SwParaPortion/SwLineLayout", 2);
+ // line break in heading 2.5.5: the second line contains only the page number
+ assertXPath(pXmlDoc, "/root/page[1]/body/section/txt[18]/SwParaPortion/SwLineLayout[2]",
+ "portion", u"*1");
+}
+
CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf132599_always)
{
uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
@@ -642,6 +676,310 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf132599_frames_on_spread_hyphenation
"portion", u"cept that it ");
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_page)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_page.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // loext:hyphenation-keep-line="true"
+ // first: shifted hyphenated word
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/SwParaPortion/SwLineLayout[9]", "portion",
+ u"except that it has an ");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_spread)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_spread.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // loext:hyphenation-keep-line="true"
+ // first: shifted hyphenated word at end of the spread (right page)
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/SwParaPortion/SwLineLayout[9]", "portion",
+ u"except that it has an ");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_spread_left_page)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_spread-left-page.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // loext:hyphenation-keep-line="true"
+ // first: no shifted hyphenated word at the end of the first page of the spread (left page)
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt[2]/SwParaPortion/SwLineLayout[9]", "portion",
+ u"except that it has an at");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_column)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_column.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // loext:hyphenation-keep-type="column" hyphenation-keep-line="true"
+ // 2nd frame: shifted hyphenated word (no hyphenation at the end of the first column)
+ assertXPath(pXmlDoc,
+ "/root/page[1]/body/section/column[2]/body/txt/SwParaPortion/SwLineLayout[1]",
+ "portion", u"iner");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_page_in_last_column)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_page_in_last_column.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // loext:hyphenation-keep-type="page" hyphenation-keep-line="true"
+ // the end line of the first page is a column boundary,
+ // but at the page boundary, too, so disable its hyphenation
+ // 2nd frame: shifted hyphenated word (no hyphenation at the end of the first column)
+ assertXPath(pXmlDoc,
+ "/root/page[2]/body/section/column[1]/body/txt/SwParaPortion/SwLineLayout[1]",
+ "portion", u"iner");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_page_in_not_last_column)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_page_in_not_last_column.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // loext:hyphenation-keep-type="page" hyphenation-keep-line="true"
+ // 2nd frame: no shifted hyphenated word (hyphenation at the end of the first column)
+ assertXPath(pXmlDoc,
+ "/root/page[1]/body/section/column[2]/body/txt/SwParaPortion/SwLineLayout[1]",
+ "portion", u"tially. ");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_page_in_table)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_page_in_table.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // loext:hyphenation-keep-type="page" hyphenation-keep-line="true"
+ // 2nd frame: no shifted hyphenated word (hyphenation at the end of the first column)
+ assertXPath(pXmlDoc, "/root/page[2]/body/tab/row/cell/txt/SwParaPortion/SwLineLayout[1]",
+ "portion", u"atmosphere. The Earth ");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_frames_on_same_page_no_hyphenation)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_frames_on_same_page_no_hyphenation.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // loext:hyphenation-keep-type="column" hyphenation-keep-line="true"
+ // 2nd frame: shifted hyphenated word (no hyphenation at the end of the first frame)
+ assertXPath(pXmlDoc, "/root/page/body/txt/anchored/fly[2]/txt/SwParaPortion/SwLineLayout[1]",
+ "portion", u"except that ");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_frames_on_same_page_hyphenation)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_frames_on_same_page_hyphenation.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // loext:hyphenation-keep-type="page" hyphenation-keep-line="true"
+ // 2nd frame: not shifted hyphenated word (hyphenation at the end of the first frame),
+ assertXPath(pXmlDoc, "/root/page/body/txt/anchored/fly[2]/txt/SwParaPortion/SwLineLayout[1]",
+ "portion", u"cept that it ");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_frames_on_spread_hyphenation)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_frames_on_spread_hyphenation.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // loext:hyphenation-keep-type="spread" hyphenation-keep-line="true"
+ // 2nd frame on left page and 3rd frame on right page -> not shifted hyphenated word
+ // 2nd frame: not shifted hyphenated word (hyphenation at the end of the first frame),
+ assertXPath(pXmlDoc, "/root/page[3]/body/txt/anchored/fly/txt/SwParaPortion/SwLineLayout[1]",
+ "portion", u"cept that it ");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, tdf165354_frames_on_right_pages_no_hyphenation)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_frames_on_right_pages_no_hyphenation.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // loext:hyphenation-keep-line="true"
+ // It was "space, ex": missing layout update of the last line with disabled hyphenation
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt/anchored/fly/txt/SwParaPortion/SwLineLayout[12]",
+ "portion", u"space, ");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_long_paragraph)
+{
+ // disabled hyphenation on page 1 (no hyphenation at all on page 2,
+ // only in first line of page 3, which resulted broken layout)
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_long_paragraph.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // 3-page paragraph, loext:hyphenation-keep-line="true"
+ // This started with "tially" (not disabled hyphenation, because of
+ // the first hyphenated line on the third page)
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt/SwParaPortion/SwLineLayout[1]", "portion",
+ u"inertially. Even just one ");
+
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt/SwParaPortion/SwLineLayout[12]", "portion",
+ u"of the Earth is space, ");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_long_paragraph_2)
+{
+ // disabled hyphenation on page 1 and page 2
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_long_paragraph_2.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // 3-page paragraph, loext:hyphenation-keep-line="true"
+ // This started with "tially" (not disabled hyphenation, because of
+ // the first hyphenated line on the third page)
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt/SwParaPortion/SwLineLayout[1]", "portion",
+ u"inertially. Even just one ");
+
+ // disabled hyphenation by loext:hyphenation-keep-type="page"
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt/SwParaPortion/SwLineLayout[12]", "portion",
+ u"of the Earth is space ");
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf165354_long_paragraph_3)
+{
+ // disabled hyphenation on page 1, enabled on page 2
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ createSwDoc("tdf165354_long_paragraph_3.fodt");
+ // Ensure that all text portions are calculated before testing.
+ SwViewShell* pViewShell = getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
+ CPPUNIT_ASSERT(pViewShell);
+ pViewShell->Reformat();
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // 3-page paragraph, loext:hyphenation-keep-line="true"
+ // This started with "tially" (not disabled hyphenation, because of
+ // the first hyphenated line on the third page)
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt/SwParaPortion/SwLineLayout[1]", "portion",
+ u"inertially. Even just one ");
+
+ // not disabled hyphenation by loext:hyphenation-keep-type="spread"
+ assertXPath(pXmlDoc, "/root/page[2]/body/txt/SwParaPortion/SwLineLayout[12]", "portion",
+ u"of the Earth is space ex");
+}
+
CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf106234)
{
createSwDoc("tdf106234.fodt");
diff --git a/sw/qa/extras/layout/layout4.cxx b/sw/qa/extras/layout/layout4.cxx
index 36af7e749aae..eb9abea5a538 100644
--- a/sw/qa/extras/layout/layout4.cxx
+++ b/sw/qa/extras/layout/layout4.cxx
@@ -1610,6 +1610,13 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf155229RowAtLeast)
CPPUNIT_ASSERT_EQUAL(sal_Int32(15494), nTableHeight);
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf164907_rowHeightAtLeast)
+{
+ createSwDoc("tdf164907_rowHeightAtLeast.docx");
+
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+}
+
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf157829LTR)
{
// Verify that line breaking inside a bidi portion triggers underflow to previous bidi portions
diff --git a/sw/qa/extras/layout/layout5.cxx b/sw/qa/extras/layout/layout5.cxx
index 1ad056f4b2a7..f1f7a60e1a98 100644
--- a/sw/qa/extras/layout/layout5.cxx
+++ b/sw/qa/extras/layout/layout5.cxx
@@ -742,6 +742,67 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf117245)
assertXPath(pXmlDoc, "/root/page/body/txt[2]/SwParaPortion/SwLineLayout", 1);
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf159029)
+{
+ createSwDoc("2024-01-19_merged-cells-on-separate-pages-vertical-alignment.odt");
+
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/tab[1]/row[1]/cell[2]/infos/bounds", "top",
+ u"1970");
+ assertXPath(pXmlDoc, "/root/page[1]/body/tab[1]/row[1]/cell[2]/txt[1]/infos/bounds", "top",
+ u"1970");
+ }
+
+ // set vert orient
+ SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
+ pWrtShell->GotoTable("Table1");
+ pWrtShell->Right(SwCursorSkipMode::Cells, /*bSelect=*/false, 1, /*bBasicCall=*/false);
+ pWrtShell->SetBoxAlign(css::text::VertOrientation::BOTTOM);
+
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/tab[1]/row[1]/cell[2]/infos/bounds", "top",
+ u"1970");
+ assertXPath(pXmlDoc, "/root/page[1]/body/tab[1]/row[1]/cell[2]/txt[1]/infos/bounds", "top",
+ u"15494");
+ }
+
+ // delete
+ pWrtShell->SttEndDoc(true);
+ pWrtShell->DelRight();
+
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/tab[1]/row[1]/cell[2]/infos/bounds", "top",
+ u"1694");
+ // the problem was that this moved to the top of the cell
+ assertXPath(pXmlDoc, "/root/page[1]/body/tab[1]/row[1]/cell[2]/txt[1]/infos/bounds", "top",
+ u"15494");
+ }
+
+ pWrtShell->Undo();
+
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/tab[1]/row[1]/cell[2]/infos/bounds", "top",
+ u"1970");
+ // the problem was that this moved to the top of the cell
+ assertXPath(pXmlDoc, "/root/page[1]/body/tab[1]/row[1]/cell[2]/txt[1]/infos/bounds", "top",
+ u"15494");
+ }
+
+ pWrtShell->Redo();
+
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/tab[1]/row[1]/cell[2]/infos/bounds", "top",
+ u"1694");
+ assertXPath(pXmlDoc, "/root/page[1]/body/tab[1]/row[1]/cell[2]/txt[1]/infos/bounds", "top",
+ u"15494");
+ }
+}
+
CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf118672)
{
createSwDoc("tdf118672.odt");
@@ -1148,6 +1209,28 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf124261)
#endif
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf164932)
+{
+ // text frame with AutoText setting must use the left offset
+ // of the list style of its text content
+ createSwDoc("tdf164932.fodt");
+ auto pDump = parseLayoutDump();
+ // This was 4 (three lines in the text frame anchored as character in the first line
+ assertXPath(pDump, "//SwLineLayout", 2);
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf164903)
+{
+ // ignore top margin of inline heading, like MSO does
+ createSwDoc("tdf164903.docx");
+ auto pDump = parseLayoutDump();
+ auto nInlineHeadingHeight
+ = getXPath(pDump, "/root/page[1]/body/txt[6]/infos/bounds", "height").toInt32();
+ // This was 493 (adding top margin to the height of the Inline Heading frame)
+ CPPUNIT_ASSERT_GREATER(sal_Int32(250), nInlineHeadingHeight);
+ CPPUNIT_ASSERT_LESS(sal_Int32(260), nInlineHeadingHeight);
+}
+
CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf135991)
{
createSwDoc("tdf135991.odt");
@@ -1397,6 +1480,94 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testFoMargin)
CPPUNIT_ASSERT_LESS(sal_Int32(13400), nPage2Height);
}
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf144450)
+{
+ createSwDoc("tdf144450.fodt");
+ auto pXmlDoc = parseLayoutDump();
+
+ // Basic case: default, single-line spacing
+ auto nCase1 = getXPath(pXmlDoc, "/root/page[1]/body/txt[1]/infos/bounds", "height").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(3995), nCase1);
+ CPPUNIT_ASSERT_LESS(sal_Int32(4005), nCase1);
+
+ // Default spacing with snap-to-grid disabled
+ auto nCase2 = getXPath(pXmlDoc, "/root/page[2]/body/txt[1]/infos/bounds", "height").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(2175), nCase2);
+ CPPUNIT_ASSERT_LESS(sal_Int32(2185), nCase2);
+
+ // 1.15-line spacing
+ auto nCase3 = getXPath(pXmlDoc, "/root/page[3]/body/txt[1]/infos/bounds", "height").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(4295), nCase3);
+ CPPUNIT_ASSERT_LESS(sal_Int32(4305), nCase3);
+
+ // 1.5-line spacing
+ auto nCase4 = getXPath(pXmlDoc, "/root/page[4]/body/txt[1]/infos/bounds", "height").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(4995), nCase4);
+ CPPUNIT_ASSERT_LESS(sal_Int32(5005), nCase4);
+
+ // 2.0-line spacing
+ auto nCase5 = getXPath(pXmlDoc, "/root/page[5]/body/txt[1]/infos/bounds", "height").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(5995), nCase5);
+ CPPUNIT_ASSERT_LESS(sal_Int32(6005), nCase5);
+
+ // Prop spacing, 2.5x
+ auto nCase6 = getXPath(pXmlDoc, "/root/page[6]/body/txt[1]/infos/bounds", "height").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(6995), nCase6);
+ CPPUNIT_ASSERT_LESS(sal_Int32(7005), nCase6);
+
+ // At-least 0 spacing: this is a special case that disables extra grid spacing
+ auto nCase7 = getXPath(pXmlDoc, "/root/page[7]/body/txt[1]/infos/bounds", "height").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(2575), nCase7);
+ CPPUNIT_ASSERT_LESS(sal_Int32(2585), nCase7);
+
+ // At-least 0.01": should match the basic case
+ auto nCase8 = getXPath(pXmlDoc, "/root/page[8]/body/txt[1]/infos/bounds", "height").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(3995), nCase8);
+ CPPUNIT_ASSERT_LESS(sal_Int32(4005), nCase8);
+
+ // At-least 4"
+ auto nCase9 = getXPath(pXmlDoc, "/root/page[9]/body/txt[1]/infos/bounds", "height").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(11515), nCase9);
+ CPPUNIT_ASSERT_LESS(sal_Int32(11525), nCase9);
+
+ // Fixed 1"
+ auto nCase10 = getXPath(pXmlDoc, "/root/page[10]/body/txt[1]/infos/bounds", "height").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(2875), nCase10);
+ CPPUNIT_ASSERT_LESS(sal_Int32(2885), nCase10);
+
+ // Fixed 2"
+ auto nCase11 = getXPath(pXmlDoc, "/root/page[11]/body/txt[1]/infos/bounds", "height").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(5755), nCase11);
+ CPPUNIT_ASSERT_LESS(sal_Int32(5765), nCase11);
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf149089)
+{
+ createSwDoc("tdf149089.fodt");
+ auto pXmlDoc = parseLayoutDump();
+
+ // Tests that kern portions aren't inserted for lines-and-chars grids when the
+ // MS_WORD_COMP_GRID_METRICS compatibility flag is set.
+ //
+ // Without the fix, this would be 4
+ sal_Int32 nKernPors
+ = getXPathContent(pXmlDoc, "count(//SwLinePortion[@type='PortionType::Kern'])").toInt32();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nKernPors);
+}
+
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf165089)
+{
+ createSwDoc("tdf165089.fodt");
+ auto pXmlDoc = parseLayoutDump();
+
+ // Tests that the grid is not centered when the MS_WORD_COMP_GRID_METRICS flag is set.
+ //
+ // Without the fix, this would be 6703
+ auto nTop = getXPath(pXmlDoc, "/root/page/body/txt/infos/bounds", "top").toInt32();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(1400), nTop);
+ CPPUNIT_ASSERT_LESS(sal_Int32(1450), nTop);
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/odfexport/data/DUMMY2.odt b/sw/qa/extras/odfexport/data/DUMMY2.odt
new file mode 100644
index 000000000000..9e616cc80767
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/DUMMY2.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/DUMMY2B.odt b/sw/qa/extras/odfexport/data/DUMMY2B.odt
new file mode 100644
index 000000000000..92d6c15c51f1
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/DUMMY2B.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/UnderlineTrailingSpace.fodt b/sw/qa/extras/odfexport/data/UnderlineTrailingSpace.fodt
new file mode 100644
index 000000000000..aeff5412cd2a
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/UnderlineTrailingSpace.fodt
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:settings>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">true</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Sans" fo:font-size="10.5pt" fo:language="zxx" fo:country="none" style:letter-kerning="true" style:font-name-asian="Liberation Sans" style:font-size-asian="10.5pt" style:language-asian="zxx" style:country-asian="none" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0" fo:margin-bottom="0" style:contextual-spacing="false" fo:text-align="justify" style:justify-single-word="false" style:writing-mode="lr-tb"/>
+ </style:style>
+ <style:style style:name="MyListLabel" style:family="text">
+ <style:text-properties style:font-name="Liberation Sans"/>
+ </style:style>
+ <text:list-style style:name="MyListStyle">
+ <text:list-level-style-bullet text:level="1" text:style-name="MyListLabel" style:num-suffix="•" text:bullet-char="•">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" fo:text-indent="-7mm" fo:margin-left="7mm"/>
+ </style:list-level-properties>
+ <style:text-properties fo:font-name="Liberation Sans"/>
+ </text:list-level-style-bullet>
+ </text:list-style>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="210mm" fo:page-height="297mm" fo:margin-top="1in" fo:margin-bottom="1in" fo:margin-left="1.25in" fo:margin-right="1.25in" style:writing-mode="lr-tb"/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:list text:style-name="MyListStyle">
+ <text:list-item>
+ <text:p>下划线 <text:span text:style-name="T1"><text:s text:c="70"/></text:span></text:p>
+ </text:list-item>
+ </text:list>
+ <text:p><text:span text:style-name="T1"><text:s text:c="10"/></text:span></text:p>
+ <text:p><text:span text:style-name="T1"><text:s text:c="1000"/></text:span></text:p>
+ </office:text>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/sw/qa/extras/odfexport/data/tdf121119.odm b/sw/qa/extras/odfexport/data/tdf121119.odm
new file mode 100644
index 000000000000..ea7784a20058
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf121119.odm
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf164712.odt b/sw/qa/extras/odfexport/data/tdf164712.odt
new file mode 100644
index 000000000000..9f2c63456e43
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf164712.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf165354_page.fodt b/sw/qa/extras/odfexport/data/tdf165354_page.fodt
new file mode 100644
index 000000000000..ca235c159da4
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf165354_page.fodt
@@ -0,0 +1,296 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="3" meta:paragraph-count="2" meta:word-count="95" meta:character-count="511" meta:non-whitespace-character-count="418"/><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/c07f3e1140c46379c6126b12a9985eaa24ddbe2c</meta:generator></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">0</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompGridMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PaintHellOverHeaderFooter" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="NoNumberingShowFollowBy" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MinRowHeightInclBorder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HyphenateURLs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ImagePreferredDPI" config:type="int">0</config:config-item>
+ <config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordUlTrailSpace" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AutoFirstLineIndentDisregardLineSpace" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoClippingWithWrapPolygon" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="JustifyLinesWithShrinking" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">347835</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="UseVariableWidthNBSP" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="NoGapAfterNoteNumber" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreHiddenCharsForLineCalculation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DropCapPunctuation" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">347835</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC" svg:font-family="&apos;Noto Sans CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="swiss"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="false"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="&apos;Noto Sans CJK SC&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" style:contextual-spacing="false" fo:line-height="115%" fo:text-align="justify" style:justify-single-word="false"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:text-properties fo:font-size="18pt" fo:font-weight="bold"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <loext:theme loext:name="Office">
+ <loext:theme-colors loext:name="LibreOffice">
+ <loext:color loext:name="dark1" loext:color="#000000"/>
+ <loext:color loext:name="light1" loext:color="#ffffff"/>
+ <loext:color loext:name="dark2" loext:color="#000000"/>
+ <loext:color loext:name="light2" loext:color="#ffffff"/>
+ <loext:color loext:name="accent1" loext:color="#18a303"/>
+ <loext:color loext:name="accent2" loext:color="#0369a3"/>
+ <loext:color loext:name="accent3" loext:color="#a33e03"/>
+ <loext:color loext:name="accent4" loext:color="#8e03a3"/>
+ <loext:color loext:name="accent5" loext:color="#c99c00"/>
+ <loext:color loext:name="accent6" loext:color="#c9211e"/>
+ <loext:color loext:name="hyperlink" loext:color="#0000ee"/>
+ <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/>
+ </loext:theme-colors>
+ </loext:theme>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="page" loext:hyphenation-keep-type="column" loext:hyphenation-keep-line="true" style:page-number="auto"/>
+ <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties fo:font-size="49pt"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="20.814cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text text:use-soft-page-breaks="true">
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:h text:style-name="Heading_20_1" text:outline-level="1"><text:span text:style-name="T1">Hyphenate last word of the page</text:span><text:span text:style-name="T1"/></text:h>
+ <text:p text:style-name="P1"><text:span text:style-name="T1">The Earth is no different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, </text:span><text:soft-page-break/><text:span text:style-name="T1">except that it has an atmosphere. The Earth is no different to any other celestial body out there in space. It merely moves along in space inertially. Even just one inch above the surface of the Earth is space, except that it has an atmosphere. The Earth is </text:span><text:soft-page-break/><text:span text:style-name="T1">no different to any other celestial body out…</text:span></text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/odfexport/data/tdf71583.odt b/sw/qa/extras/odfexport/data/tdf71583.odt
new file mode 100644
index 000000000000..034d4fa536c8
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf71583.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx
index d6e4c323ba58..b1fc22e16ef2 100644
--- a/sw/qa/extras/odfexport/odfexport.cxx
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -12,26 +12,23 @@
#include <memory>
#include <swmodeltestbase.hxx>
-#include <com/sun/star/awt/FontSlant.hpp>
#include <com/sun/star/awt/Gradient2.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
#include <com/sun/star/container/XIndexReplace.hpp>
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/PointSequenceSequence.hpp>
-#include <com/sun/star/drawing/GraphicExportFilter.hpp>
-#include <com/sun/star/drawing/XGraphicExportFilter.hpp>
-#include <com/sun/star/drawing/BarCode.hpp>
-#include <com/sun/star/drawing/BarCodeErrorCorrection.hpp>
#include <com/sun/star/table/ShadowFormat.hpp>
-#include <com/sun/star/table/XCellRange.hpp>
+#include <com/sun/star/text/XBookmarksSupplier.hpp>
#include <com/sun/star/text/RelOrientation.hpp>
#include <com/sun/star/text/XDocumentIndex.hpp>
+#include <com/sun/star/text/XTextSectionsSupplier.hpp>
+#include <com/sun/star/text/XTextTablesSupplier.hpp>
#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
#include <com/sun/star/graphic/XGraphic.hpp>
#include <officecfg/Office/Common.hxx>
#include <com/sun/star/document/XEmbeddedObjectSupplier.hpp>
#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
#include <com/sun/star/text/XTextField.hpp>
-#include <com/sun/star/text/WritingMode2.hpp>
#include <com/sun/star/util/XModifiable.hpp>
#include <com/sun/star/text/XTextFieldsSupplier.hpp>
#include <com/sun/star/container/XIndexContainer.hpp>
@@ -40,32 +37,18 @@
#include <com/sun/star/text/XDocumentIndexesSupplier.hpp>
#include <com/sun/star/text/XTextDocument.hpp>
#include <com/sun/star/util/XRefreshable.hpp>
-#include <com/sun/star/container/XContentEnumerationAccess.hpp>
#include <com/sun/star/text/XTextTable.hpp>
#include <comphelper/storagehelper.hxx>
#include <comphelper/fileformat.h>
-#include <comphelper/propertysequence.hxx>
#include <comphelper/documentconstants.hxx>
-#include <unotools/streamwrap.hxx>
#include <svl/PasswordHelper.hxx>
-#include <comphelper/sequenceashashmap.hxx>
-#include <vcl/filter/PDFiumLibrary.hxx>
#include <comphelper/scopeguard.hxx>
-#include <basegfx/utils/gradienttools.hxx>
#include <docmodel/uno/UnoGradientTools.hxx>
#include <docufld.hxx> // for SwHiddenTextField::ParseIfFieldDefinition() method call
-#include <unoprnms.hxx>
-#include <sortedobjs.hxx>
-#include <flyfrm.hxx>
#include <ftnidx.hxx>
#include <txtftn.hxx>
-#include <unotxdoc.hxx>
-#include <docsh.hxx>
-#include <IDocumentLayoutAccess.hxx>
-#include <rootfrm.hxx>
-#include <o3tl/string_view.hxx>
namespace
{
@@ -1398,1417 +1381,6 @@ DECLARE_ODFEXPORT_TEST(testTextFrameVertAdjust, "textframe-vertadjust.odt")
CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_BOTTOM, getProperty<drawing::TextVerticalAdjust>(xFrame, u"TextVerticalAdjust"_ustr));
}
-DECLARE_ODFEXPORT_TEST(testTdf111891_frameVertStyle, "tdf111891_frameVertStyle.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getShapes());
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- uno::Reference<beans::XPropertySet> xFrame(getShape(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_BOTTOM, getProperty<drawing::TextVerticalAdjust>(xFrame, u"TextVerticalAdjust"_ustr));
-}
-
-DECLARE_ODFEXPORT_TEST(testShapeRelsize, "shape-relsize.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getShapes());
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- uno::Reference<drawing::XShape> xShape = getShape(1);
- // These were all 0, as style:rel-width/height was ignored on import for shapes.
- CPPUNIT_ASSERT_EQUAL(sal_Int16(40), getProperty<sal_Int16>(xShape, u"RelativeWidth"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int16(20), getProperty<sal_Int16>(xShape, u"RelativeHeight"_ustr));
-
- // Relation was "page" for both width and height, should be "paragraph" for width.
- CPPUNIT_ASSERT_EQUAL(text::RelOrientation::FRAME, getProperty<sal_Int16>(xShape, u"RelativeWidthRelation"_ustr));
- // And make sure that height stays "page".
- CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xShape, u"RelativeHeightRelation"_ustr));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTextboxRoundedCorners)
-{
- auto verify = [this]() {
- CPPUNIT_ASSERT_EQUAL(1, getShapes());
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- uno::Reference<drawing::XShape> xShape = getShape(1);
- comphelper::SequenceAsHashMap aCustomShapeGeometry(getProperty< uno::Sequence<beans::PropertyValue> >(xShape, u"CustomShapeGeometry"_ustr));
-
- // Test that the shape is a rounded rectangle.
- CPPUNIT_ASSERT_EQUAL(u"round-rectangle"_ustr, aCustomShapeGeometry[u"Type"_ustr].get<OUString>());
-
- // The shape text should start with a table, with "a" in its A1 cell.
- uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xShape, uno::UNO_QUERY_THROW)->getText();
- uno::Reference<text::XTextTable> xTable(getParagraphOrTable(1, xText), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xCell(xTable->getCellByName(u"A1"_ustr), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"a"_ustr, xCell->getString());
- };
-
- createSwDoc("textbox-rounded-corners.odt");
- verify();
- saveAndReload(mpFilter);
- verify();
-
- // Table inside a textbox should be in the extension namespace.
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
- // This failed, as draw:custom-shape had a table:table child.
- assertXPath(pXmlDoc, "//draw:custom-shape/loext:table", "name", u"Table1");
-}
-
-// test that import whitespace collapsing is compatible with old docs
-DECLARE_ODFEXPORT_TEST(testWhitespace, "whitespace.odt")
-{
- CPPUNIT_ASSERT_EQUAL(4, getShapes());
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- uno::Reference<container::XEnumerationAccess> xPara;
- uno::Reference<container::XEnumeration> xPortions;
- uno::Reference<text::XTextRange> xPortion;
- xPara.set(getParagraphOrTable(1), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(2), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
- CPPUNIT_ASSERT_EQUAL(u"http://example.com/"_ustr, getProperty<OUString>(xPortion, u"HyperLinkURL"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(3), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Ruby"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(OUString(), xPortion->getString());
- CPPUNIT_ASSERT_EQUAL(u"foo"_ustr, getProperty<OUString>(xPortion, u"RubyText"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Ruby"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(OUString(), xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(4), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"InContentMetadata"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- {
- // what a stupid idea to require recursively enumerating this
- uno::Reference<container::XEnumerationAccess> xMeta(
- getProperty<uno::Reference<text::XTextContent>>(xPortion, u"InContentMetadata"_ustr), uno::UNO_QUERY);
- uno::Reference<container::XEnumeration> xMetaPortions =
- xMeta->createEnumeration();
- uno::Reference<text::XTextRange> xMP(xMetaPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xMP, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" "_ustr, xMP->getString());
- CPPUNIT_ASSERT(!xMetaPortions->hasMoreElements());
- }
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(5), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"TextField"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- {
- // what a stupid idea to require recursively enumerating this
- uno::Reference<container::XEnumerationAccess> xMeta(
- getProperty<uno::Reference<text::XTextContent>>(xPortion, u"TextField"_ustr), uno::UNO_QUERY);
- uno::Reference<container::XEnumeration> xMetaPortions =
- xMeta->createEnumeration();
- uno::Reference<text::XTextRange> xMP(xMetaPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xMP, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" "_ustr, xMP->getString());
- CPPUNIT_ASSERT(!xMetaPortions->hasMoreElements());
- }
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(7), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Frame"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(8), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Frame"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(9), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Frame"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(10), uno::UNO_QUERY);
- uno::Reference<container::XContentEnumerationAccess> xCEA(xPara, uno::UNO_QUERY);
- uno::Reference<container::XEnumeration> xFrames(
- xCEA->createContentEnumeration(u"com.sun.star.text.TextContent"_ustr));
- xFrames->nextElement(); // one at-paragraph frame
- CPPUNIT_ASSERT(!xFrames->hasMoreElements());
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(11), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Footnote"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(12), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"TextField"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(13), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Annotation"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"AnnotationEnd"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(15), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(16), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(17), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Redline"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Redline"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(18), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Redline"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Redline"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(19), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"ReferenceMark"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(20), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"ReferenceMark"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"ReferenceMark"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(21), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"DocumentIndexMark"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-
- xPara.set(getParagraphOrTable(22), uno::UNO_QUERY);
- xPortions.set(xPara->createEnumeration());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"DocumentIndexMark"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"DocumentIndexMark"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
- xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
- CPPUNIT_ASSERT(!xPortions->hasMoreElements());
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf136645, "tdf136645.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- xmlDocUniquePtr pXmlDoc = parseLayoutDump();
-
- // Without the fix in place, this would have failed with
- //- Expected: 2640
- //- Actual : 3000
- CPPUNIT_ASSERT_EQUAL(sal_Int32(2640), getXPath(pXmlDoc, "/root/page/body/section/column[1]/body/infos/bounds", "width").toInt32());
-
- //- Expected: 6000
- //- Actual : 6360
- CPPUNIT_ASSERT_EQUAL(sal_Int32(6000), getXPath(pXmlDoc, "/root/page/body/section/column[2]/body/infos/bounds", "width").toInt32());
-}
-
-DECLARE_ODFEXPORT_TEST(testBtlrCell, "btlr-cell.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // Without the accompanying fix in place, this test would have failed, as
- // the btlr text direction in the A1 cell was lost on ODF import and
- // export.
- uno::Reference<text::XTextTablesSupplier> xSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XNameAccess> xTables = xSupplier->getTextTables();
- uno::Reference<text::XTextTable> xTable(xTables->getByName(u"Table1"_ustr), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xA1(xTable->getCellByName(u"A1"_ustr), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(text::WritingMode2::BT_LR, getProperty<sal_Int16>(xA1, u"WritingMode"_ustr));
-
- uno::Reference<beans::XPropertySet> xB1(xTable->getCellByName(u"B1"_ustr), uno::UNO_QUERY);
- auto nActual = getProperty<sal_Int16>(xB1, u"WritingMode"_ustr);
- CPPUNIT_ASSERT(nActual == text::WritingMode2::LR_TB || nActual == text::WritingMode2::CONTEXT);
-
- uno::Reference<beans::XPropertySet> xC1(xTable->getCellByName(u"C1"_ustr), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(text::WritingMode2::TB_RL, getProperty<sal_Int16>(xC1, u"WritingMode"_ustr));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testBtlrFrame)
-{
- auto verify = [this](bool bIsExport = false) {
- CPPUNIT_ASSERT_EQUAL(1, getShapes());
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // Without the accompanying fix in place, this test would have failed, as
- // the btlr text direction in the text frame was lost on ODF import and
- // export.
- uno::Reference<beans::XPropertySet> xTextFrame(getShape(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xTextFrame.is());
-
- auto nActual = getProperty<sal_Int16>(xTextFrame, u"WritingMode"_ustr);
- CPPUNIT_ASSERT_EQUAL(text::WritingMode2::BT_LR, nActual);
-
- // Without the accompanying fix in place, this test would have failed, as the fly frame had
- // mbVertical==true, but mbVertLRBT==false, even if the writing direction in the doc model was
- // btlr.
- SwDoc* pDoc = getSwDoc();
-
- SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout();
- CPPUNIT_ASSERT(pLayout);
-
- SwFrame* pPageFrame = pLayout->GetLower();
- CPPUNIT_ASSERT(pPageFrame);
- CPPUNIT_ASSERT(pPageFrame->IsPageFrame());
-
- SwFrame* pBodyFrame = pPageFrame->GetLower();
- CPPUNIT_ASSERT(pBodyFrame);
- CPPUNIT_ASSERT(pBodyFrame->IsBodyFrame());
-
- SwFrame* pBodyTextFrame = pBodyFrame->GetLower();
- CPPUNIT_ASSERT(pBodyTextFrame);
- CPPUNIT_ASSERT(pBodyTextFrame->IsTextFrame());
-
- CPPUNIT_ASSERT(pBodyTextFrame->GetDrawObjs());
- const SwSortedObjs& rAnchored = *pBodyTextFrame->GetDrawObjs();
- CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rAnchored.size());
-
- auto* pFlyFrame = dynamic_cast<SwFlyFrame*>(rAnchored[0]);
- CPPUNIT_ASSERT(pFlyFrame);
- CPPUNIT_ASSERT(pFlyFrame->IsVertLRBT());
-
- if (!bIsExport)
- // Not yet exported, don't modify the doc model for test purposes.
- return;
-
- // Make sure that btlr -> tbrl transition clears the "BT" flag.
- xTextFrame->setPropertyValue(u"WritingMode"_ustr, uno::Any(text::WritingMode2::TB_LR));
- pFlyFrame = dynamic_cast<SwFlyFrame*>(rAnchored[0]);
- CPPUNIT_ASSERT(pFlyFrame);
- CPPUNIT_ASSERT(!pFlyFrame->IsVertLRBT());
- };
-
- createSwDoc("btlr-frame.odt");
- verify();
- saveAndReload(mpFilter);
- verify(/*bIsExport*/ true);
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf129520)
-{
- loadAndReload("tdf129520.docx");
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- CPPUNIT_ASSERT_EQUAL(u"M"_ustr, getParagraph(1)->getString());
-
- // Without this fix in place, this test would have failed with
- // - Expected: Ma
- // - Actual :
- CPPUNIT_ASSERT_EQUAL(u"Ma"_ustr, getParagraph(2)->getString());
- CPPUNIT_ASSERT_EQUAL(u"1815"_ustr, getParagraph(3)->getString());
-}
-
-DECLARE_ODFEXPORT_TEST(testFdo86963, "fdo86963.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // Export of this document failed with beans::UnknownPropertyException.
- CPPUNIT_ASSERT_EQUAL(1, getShapes());
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf135338_firstLeftPageFooter, "tdf135338_firstLeftPageFooter.odt")
-{
- CPPUNIT_ASSERT_EQUAL(6, getPages());
- // The first page is a left page only style, but it should still show the first page footer
- // instead of the left footer text "EVEN/LEFT (Left page only)"
- xmlDocUniquePtr pXmlDoc = parseLayoutDump();
- assertXPathContent(pXmlDoc, "/root/page[2]/footer/txt/text()", u"First (Left page only)");
-}
-
-DECLARE_ODFEXPORT_TEST(testGerrit13858, "gerrit13858.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getShapes());
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // Just make sure the output is valid.
-}
-DECLARE_ODFEXPORT_TEST(testOdtBorderTypes, "border_types.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- static const sal_Int32 lineStyles[] = { 0, 1, 2, 14, 16, 17, 3, 15 };
- uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XEnumerationAccess> xParaEnumAccess(textDocument->getText(), uno::UNO_QUERY);
- // list of paragraphs
- uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
- do
- {
- uno::Reference<lang::XServiceInfo> xServiceInfo;
- if (xParaEnum->nextElement() >>= xServiceInfo)
- {
- if (xServiceInfo->supportsService(u"com.sun.star.text.TextTable"_ustr))
- {
- uno::Reference<table::XCellRange> const xCellRange(xServiceInfo, uno::UNO_QUERY_THROW);
-
- for (sal_Int32 row = 0; row < 15; row += 2)
- {
- uno::Reference<table::XCell> xCell = xCellRange->getCellByPosition(1, row);
- uno::Reference< beans::XPropertySet > xPropSet(xCell, uno::UNO_QUERY_THROW);
-
- uno::Any aTopBorder = xPropSet->getPropertyValue(u"TopBorder"_ustr);
- table::BorderLine2 aTopBorderLine;
- if (aTopBorder >>= aTopBorderLine)
- {
- sal_Int32 lineStyle = aTopBorderLine.LineStyle;
- CPPUNIT_ASSERT_EQUAL(lineStyles[row / 2], lineStyle);
- }
- } //end of the 'for' loop
- }
- }
- } while (xParaEnum->hasMoreElements());
-}
-
-DECLARE_ODFEXPORT_TEST(testMasterPageWithDrawingPage, "sw_hatch.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- uno::Reference<container::XNameAccess> xStyles(getStyles(u"PageStyles"_ustr));
- uno::Reference<beans::XPropertySet> xStyle(xStyles->getByName(u"Standard"_ustr), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_HATCH, getProperty<drawing::FillStyle>(xStyle, u"FillStyle"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"Blue -45 Degrees"_ustr, getProperty<OUString>(xStyle, u"FillHatchName"_ustr));
- CPPUNIT_ASSERT(!getProperty<sal_Bool>(xStyle, u"FillBackground"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int16(0), getProperty<sal_Int16>(xStyle, u"FillTransparence"_ustr));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testPageStyleBackgroundFullSizeOOo)
-{
- loadAndReload("pagestyle_background_ooo33.odt");
- CPPUNIT_ASSERT_EQUAL(3, getPages());
- xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
- // Standard
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"border");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"solid");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-color", u"#99ccff");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "opacity", u"100%");
- // Endnote
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"border");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "repeat", u"repeat");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-image-ref-point", u"top-left");
- // Footnote
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"border");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "repeat", u"stretch");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-image-ref-point", u"top-left");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testPageStyleBackgroundFullSizeLO64)
-{
- loadAndReload("pagestyle_background_lo64.odt");
- CPPUNIT_ASSERT_EQUAL(6, getPages());
- xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
- // Standard
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"full");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"solid");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-color", u"#99ccff");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "opacity", u"100%");
- // Endnote
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"full");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "repeat", u"repeat");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-image-ref-point", u"top-left");
- // Footnote
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"border");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "repeat", u"stretch");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-image-ref-point", u"top-left");
- // Landscape
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Landscape']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"border");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Landscape']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Landscape']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "repeat", u"no-repeat");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Landscape']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-image-ref-point", u"top-left");
- // Index
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Index']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"full");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Index']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"gradient");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Index']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "gradient-step-count", u"0");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Index']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "opacity", u"100%");
- // First Page
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"full");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"hatch");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-hatch-solid", u"false");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "opacity", u"100%");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testPageStyleBackgroundFullSizeLO70)
-{
- loadAndReload("pagestyle_background_lo70.odt");
- CPPUNIT_ASSERT_EQUAL(6, getPages());
- xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
- // Standard
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"full");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"solid");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-color", u"#99ccff");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Standard']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "opacity", u"100%");
- // Endnote
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"full");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "repeat", u"repeat");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Endnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-image-ref-point", u"top-left");
- // Footnote
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"border");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "repeat", u"stretch");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Footnote']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-image-ref-point", u"top-left");
- // Landscape
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Landscape']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"border");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Landscape']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Landscape']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "repeat", u"no-repeat");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Landscape']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-image-ref-point", u"top-left");
- // Index
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Index']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"full");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Index']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"gradient");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Index']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "gradient-step-count", u"0");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='Index']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "opacity", u"100%");
- // First Page
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "background-size", u"full");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill", u"hatch");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "fill-hatch-solid", u"false");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:family='drawing-page' and @style:name = "
- "/office:document-styles/office:master-styles/style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
- "]/style:drawing-page-properties", "opacity", u"100%");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testFillBitmapUnused)
-{
- loadAndReload("fillbitmap3.odt");
- CPPUNIT_ASSERT_EQUAL(4, getShapes());
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // nav_5f_home and all its references are completely gone
- xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
-
- // paragraph style
- assertXPath(pXmlDoc,
- "/office:document-styles/office:styles/style:style[@style:name='Text_20_body']/loext:graphic-properties", "fill", u"solid");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:styles/style:style[@style:name='Text_20_body']/loext:graphic-properties", "fill-color", u"#c0c0c0");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:styles/style:style[@style:name='Text_20_body']/loext:graphic-properties[@draw:fill-image-name]", 0);
-
- // page style page-layout
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm1']/style:page-layout-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm1']/style:page-layout-properties", "fill-image-name", u"nav_5f_up");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm1']/style:header-style/style:header-footer-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm1']/style:header-style/style:header-footer-properties", "fill-image-name", u"nav_5f_up");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm1']/style:footer-style/style:header-footer-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm1']/style:footer-style/style:header-footer-properties", "fill-image-name", u"nav_5f_up");
-
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm2']/style:page-layout-properties", "fill", u"solid");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm2']/style:page-layout-properties[@draw:fill-image-name]", 0);
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm2']/style:header-style/style:header-footer-properties", "fill", u"solid");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm2']/style:header-style/style:header-footer-properties[@draw:fill-image-name]", 0);
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm2']/style:footer-style/style:header-footer-properties", "fill", u"solid");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:page-layout[@style:name='Mpm2']/style:footer-style/style:header-footer-properties[@draw:fill-image-name]", 0);
-
- // page style drawing-page
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:name='Mdp1']/style:drawing-page-properties", "fill", u"bitmap");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:name='Mdp1']/style:drawing-page-properties", "fill-image-name", u"nav_5f_up");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:name='Mdp2']/style:drawing-page-properties", "fill", u"solid");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:name='Mdp2']/style:drawing-page-properties", "fill-color", u"#c0c0c0");
- assertXPath(pXmlDoc,
- "/office:document-styles/office:automatic-styles/style:style[@style:name='Mdp2']/style:drawing-page-properties[@draw:fill-image-name]", 0);
-
- // the named items
- assertXPath(pXmlDoc,
- "/office:document-styles/office:styles/draw:fill-image", 1);
- assertXPath(pXmlDoc,
- "/office:document-styles/office:styles/draw:fill-image", "name", u"nav_5f_up");
-}
-
-DECLARE_ODFEXPORT_TEST(testCellUserDefineAttr, "userdefattr-tablecell.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- uno::Reference<text::XTextTable> xTable(getParagraphOrTable(1), uno::UNO_QUERY);
- uno::Reference<table::XCell> const xCellA1(xTable->getCellByName(u"A1"_ustr), uno::UNO_SET_THROW);
- uno::Reference<table::XCell> const xCellB1(xTable->getCellByName(u"B1"_ustr), uno::UNO_SET_THROW);
- uno::Reference<table::XCell> const xCellC1(xTable->getCellByName(u"C1"_ustr), uno::UNO_SET_THROW);
- getUserDefineAttribute(uno::Any(xCellA1), u"proName"_ustr, u"v1"_ustr);
- getUserDefineAttribute(uno::Any(xCellB1), u"proName"_ustr, u"v2"_ustr);
- getUserDefineAttribute(uno::Any(xCellC1), u"proName"_ustr, u"v3"_ustr);
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testEmbeddedPdf)
-{
- auto pPdfium = vcl::pdf::PDFiumLibrary::get();
- if (!pPdfium)
- {
- return;
- }
-
- auto verify = [this]() {
- CPPUNIT_ASSERT_EQUAL(1, getShapes());
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- uno::Reference<drawing::XShape> xShape = getShape(1);
- // This failed, pdf+png replacement graphics pair didn't survive an ODT roundtrip.
- auto xReplacementGraphic = getProperty<uno::Reference<graphic::XGraphic>>(xShape, u"ReplacementGraphic"_ustr);
- CPPUNIT_ASSERT(xReplacementGraphic.is());
-
- auto xGraphic = getProperty<uno::Reference<graphic::XGraphic>>(xShape, u"Graphic"_ustr);
- CPPUNIT_ASSERT(xGraphic.is());
- // This was image/x-vclgraphic, not exposing the info that the image is a PDF one.
- CPPUNIT_ASSERT_EQUAL(u"application/pdf"_ustr, getProperty<OUString>(xGraphic, u"MimeType"_ustr));
- };
-
- createSwDoc("embedded-pdf.odt");
- verify();
- saveAndReload(mpFilter);
- verify();
-
- uno::Sequence<uno::Any> aArgs{ uno::Any(maTempFile.GetURL()) };
- uno::Reference<container::XNameAccess> xNameAccess(m_xSFactory->createInstanceWithArguments(u"com.sun.star.packages.zip.ZipFileAccess"_ustr, aArgs), uno::UNO_QUERY);
- bool bHasBitmap = false;
- const uno::Sequence<OUString> aNames = xNameAccess->getElementNames();
- for (const auto& rElementName : aNames)
- {
- if (rElementName.startsWith("Pictures") && rElementName.endsWith("png"))
- {
- bHasBitmap = true;
- break;
- }
- }
- // This failed, replacement was an svm file.
- CPPUNIT_ASSERT(bHasBitmap);
-}
-
-DECLARE_ODFEXPORT_TEST(testTableStyles1, "table_styles_1.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // Table styles basic graphic test.
- // Doesn't cover all attributes.
- uno::Reference<style::XStyleFamiliesSupplier> XFamiliesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XNameAccess> xFamilies(XFamiliesSupplier->getStyleFamilies());
- uno::Reference<container::XNameAccess> xCellFamily(xFamilies->getByName(u"CellStyles"_ustr), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xCell1Style;
- xCellFamily->getByName(u"Test style.1"_ustr) >>= xCell1Style;
-
- sal_Int32 nInt32 = 0xF0F0F0;
- table::BorderLine2 oBorder;
-
- CPPUNIT_ASSERT_EQUAL(Color(0xCC0000), getProperty<Color>(xCell1Style, u"BackColor"_ustr));
- xCell1Style->getPropertyValue(u"WritingMode"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(4), nInt32);
- xCell1Style->getPropertyValue(u"VertOrient"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
- xCell1Style->getPropertyValue(u"BorderDistance"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
- xCell1Style->getPropertyValue(u"LeftBorderDistance"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
- xCell1Style->getPropertyValue(u"RightBorderDistance"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
- xCell1Style->getPropertyValue(u"TopBorderDistance"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
- xCell1Style->getPropertyValue(u"BottomBorderDistance"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
- xCell1Style->getPropertyValue(u"RightBorder"_ustr) >>= oBorder;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), oBorder.Color);
- xCell1Style->getPropertyValue(u"LeftBorder"_ustr) >>= oBorder;
- CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, oBorder.Color));
- xCell1Style->getPropertyValue(u"TopBorder"_ustr) >>= oBorder;
- CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, oBorder.Color));
- xCell1Style->getPropertyValue(u"BottomBorder"_ustr) >>= oBorder;
- CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, oBorder.Color));
-}
-
-DECLARE_ODFEXPORT_TEST(testTableStyles2, "table_styles_2.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // Table styles paragraph and char tests
- // Doesn't cover all attributes.
- // Problem: underline for table autoformat doesn't work.
- uno::Reference<style::XStyleFamiliesSupplier> XFamiliesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XNameAccess> xFamilies(XFamiliesSupplier->getStyleFamilies());
- uno::Reference<container::XNameAccess> xTableFamily(xFamilies->getByName(u"TableStyles"_ustr), uno::UNO_QUERY);
- uno::Reference<container::XNameAccess> xTableStyle(xTableFamily->getByName(u"Test style2"_ustr), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xCell1Style;
-
- float fFloat = 0.;
- bool bBool = true;
- sal_Int16 nInt16 = 0xF0;
- sal_Int32 nInt32 = 0xF0F0F0;
- OUString sString;
- awt::FontSlant eCharPosture;
-
- // cell 1
- xTableStyle->getByName(u"first-row-start-column"_ustr) >>= xCell1Style;
- xCell1Style->getPropertyValue(u"ParaAdjust"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
- CPPUNIT_ASSERT_EQUAL(Color(0xFF6600), getProperty<Color>(xCell1Style, u"CharColor"_ustr));
- xCell1Style->getPropertyValue(u"CharContoured"_ustr) >>= bBool;
- CPPUNIT_ASSERT_EQUAL(false, bBool);
- xCell1Style->getPropertyValue(u"CharShadowed"_ustr) >>= bBool;
- CPPUNIT_ASSERT_EQUAL(true, bBool);
- xCell1Style->getPropertyValue(u"CharStrikeout"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nInt32);
- xCell1Style->getPropertyValue(u"CharUnderline"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
- // underline color is not working for table autoformats
- // xCell1Style->getPropertyValue("CharUnderlineHasColor") >>= bBool;
- // CPPUNIT_ASSERT_EQUAL(bool(false), bBool);
- // xCell1Style->getPropertyValue("CharUnderlineColor") >>= nInt64;
- // CPPUNIT_ASSERT_EQUAL(sal_Int64(-1), nInt64);
- // standard font
- xCell1Style->getPropertyValue(u"CharHeight"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(18.), fFloat);
- xCell1Style->getPropertyValue(u"CharWeight"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
- xCell1Style->getPropertyValue(u"CharPosture"_ustr) >>= eCharPosture;
- CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
- xCell1Style->getPropertyValue(u"CharFontName"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Courier"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontStyleName"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(OUString(), sString);
- xCell1Style->getPropertyValue(u"CharFontFamily"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
- xCell1Style->getPropertyValue(u"CharFontPitch"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(1), nInt16);
- // cjk font
- xCell1Style->getPropertyValue(u"CharHeightAsian"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(18.), fFloat);
- xCell1Style->getPropertyValue(u"CharWeightAsian"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
- xCell1Style->getPropertyValue(u"CharPostureAsian"_ustr) >>= eCharPosture;
- CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
- xCell1Style->getPropertyValue(u"CharFontNameAsian"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Courier"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontStyleNameAsian"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Regularna"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontFamilyAsian"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
- xCell1Style->getPropertyValue(u"CharFontPitchAsian"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(1), nInt16);
- // ctl font
- xCell1Style->getPropertyValue(u"CharHeightComplex"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(18.), fFloat);
- xCell1Style->getPropertyValue(u"CharWeightComplex"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
- xCell1Style->getPropertyValue(u"CharPostureComplex"_ustr) >>= eCharPosture;
- CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
- xCell1Style->getPropertyValue(u"CharFontNameComplex"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Courier"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontStyleNameComplex"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Regularna"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontFamilyComplex"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
- xCell1Style->getPropertyValue(u"CharFontPitchComplex"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(1), nInt16);
-
- // cell 2
- xTableStyle->getByName(u"first-row"_ustr) >>= xCell1Style;
- xCell1Style->getPropertyValue(u"ParaAdjust"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(3), nInt32);
- CPPUNIT_ASSERT_EQUAL(Color(0x9900FF), getProperty<Color>(xCell1Style, u"CharColor"_ustr));
- xCell1Style->getPropertyValue(u"CharContoured"_ustr) >>= bBool;
- CPPUNIT_ASSERT_EQUAL(true, bBool);
- xCell1Style->getPropertyValue(u"CharShadowed"_ustr) >>= bBool;
- CPPUNIT_ASSERT_EQUAL(false, bBool);
- xCell1Style->getPropertyValue(u"CharStrikeout"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
- xCell1Style->getPropertyValue(u"CharUnderline"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(2), nInt32);
- // underline color test place
- // standard font
- xCell1Style->getPropertyValue(u"CharHeight"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
- xCell1Style->getPropertyValue(u"CharWeight"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(150.), fFloat);
- xCell1Style->getPropertyValue(u"CharPosture"_ustr) >>= eCharPosture;
- CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
- xCell1Style->getPropertyValue(u"CharFontName"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Liberation Serif"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontStyleName"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(OUString(), sString);
- xCell1Style->getPropertyValue(u"CharFontFamily"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(3), nInt16);
- xCell1Style->getPropertyValue(u"CharFontPitch"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
- // cjk font
- xCell1Style->getPropertyValue(u"CharHeightAsian"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
- xCell1Style->getPropertyValue(u"CharWeightAsian"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(150.), fFloat);
- xCell1Style->getPropertyValue(u"CharPostureAsian"_ustr) >>= eCharPosture;
- CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
- xCell1Style->getPropertyValue(u"CharFontNameAsian"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Liberation Serif"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontStyleNameAsian"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Pogrubiona"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontFamilyAsian"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(3), nInt16);
- xCell1Style->getPropertyValue(u"CharFontPitchAsian"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
- // ctl font
- xCell1Style->getPropertyValue(u"CharHeightComplex"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
- xCell1Style->getPropertyValue(u"CharWeightComplex"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(150.), fFloat);
- xCell1Style->getPropertyValue(u"CharPostureComplex"_ustr) >>= eCharPosture;
- CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
- xCell1Style->getPropertyValue(u"CharFontNameComplex"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Liberation Serif"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontStyleNameComplex"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Pogrubiona"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontFamilyComplex"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(3), nInt16);
- xCell1Style->getPropertyValue(u"CharFontPitchComplex"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
-
- // cell 3
- xTableStyle->getByName(u"first-row-even-column"_ustr) >>= xCell1Style;
- xCell1Style->getPropertyValue(u"ParaAdjust"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nInt32);
- CPPUNIT_ASSERT_EQUAL(COL_BLACK, getProperty<Color>(xCell1Style, u"CharColor"_ustr));
- xCell1Style->getPropertyValue(u"CharContoured"_ustr) >>= bBool;
- CPPUNIT_ASSERT_EQUAL(true, bBool);
- xCell1Style->getPropertyValue(u"CharShadowed"_ustr) >>= bBool;
- CPPUNIT_ASSERT_EQUAL(true, bBool);
- xCell1Style->getPropertyValue(u"CharStrikeout"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
- xCell1Style->getPropertyValue(u"CharUnderline"_ustr) >>= nInt32;
- CPPUNIT_ASSERT_EQUAL(sal_Int32(6), nInt32);
- // underline color test place
- // standard font
- xCell1Style->getPropertyValue(u"CharHeight"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
- xCell1Style->getPropertyValue(u"CharWeight"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
- xCell1Style->getPropertyValue(u"CharPosture"_ustr) >>= eCharPosture;
- CPPUNIT_ASSERT_EQUAL(awt::FontSlant_ITALIC, eCharPosture);
- xCell1Style->getPropertyValue(u"CharFontName"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Open Sans"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontStyleName"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(OUString(), sString);
- xCell1Style->getPropertyValue(u"CharFontFamily"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(0), nInt16);
- xCell1Style->getPropertyValue(u"CharFontPitch"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
- // cjk font
- xCell1Style->getPropertyValue(u"CharHeightAsian"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
- xCell1Style->getPropertyValue(u"CharWeightAsian"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
- xCell1Style->getPropertyValue(u"CharPostureAsian"_ustr) >>= eCharPosture;
- CPPUNIT_ASSERT_EQUAL(awt::FontSlant_ITALIC, eCharPosture);
- xCell1Style->getPropertyValue(u"CharFontNameAsian"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Open Sans"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontStyleNameAsian"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Kursywa"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontFamilyAsian"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(0), nInt16);
- xCell1Style->getPropertyValue(u"CharFontPitchAsian"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
- // ctl font
- xCell1Style->getPropertyValue(u"CharHeightComplex"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
- xCell1Style->getPropertyValue(u"CharWeightComplex"_ustr) >>= fFloat;
- CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
- xCell1Style->getPropertyValue(u"CharPostureComplex"_ustr) >>= eCharPosture;
- CPPUNIT_ASSERT_EQUAL(awt::FontSlant_ITALIC, eCharPosture);
- xCell1Style->getPropertyValue(u"CharFontNameComplex"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Open Sans"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontStyleNameComplex"_ustr) >>= sString;
- CPPUNIT_ASSERT_EQUAL(u"Kursywa"_ustr, sString);
- xCell1Style->getPropertyValue(u"CharFontFamilyComplex"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(0), nInt16);
- xCell1Style->getPropertyValue(u"CharFontPitchComplex"_ustr) >>= nInt16;
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTableStyles3)
-{
- loadAndReload("table_styles_3.odt");
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // This test checks if default valued attributes aren't exported.
- xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
-
- // <style:paragraph-properties>
- // For this element the only exported attributes are: "border-left", "border-bottom"
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "background-color");
- // border-left place
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "border-right");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "border-top");
- // border-bottom place
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "padding");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "padding-left");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "padding-right");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "padding-top");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "padding-bottom");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "writing-mode");
-
- // <style:paragraph-properties> should be absent, because it has only "text-align" attribute, which shouldn't be exported.
- // Assume that style:paragraph-properties and style:text-properties exists.
- assertXPathChildren(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']", 2);
-
- // <style:text-properties>
- // For this element the only exported attributes are: "use-window-font-color place", "font-size-asian", "font-name-asian", "font-family-asian", "font-name-complex", "font-family-complex"
- // use-window-font-color place
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-shadow");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-outline");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-line-through-style");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-line-through-type");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-underline-style");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-underline-color");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-size");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-weight");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-family");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-family-generic");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-pitch");
- // font-size-asian place
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-weight-asian");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style-asian");
- // font-name-asian place
- // font-family-asian place
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style-name-asian");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-family-generic-asian");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-pitch-asian");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-size-complex");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-weight-complex");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style-complex");
- // font-name-complex place
- // font-family-complex place
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style-name-complex");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-family-generic-complex");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-pitch-complex");
-
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTableStyles4)
-{
- createSwDoc("table_styles_4.odt");
- // Test if loaded styles overwrite existing styles
- uno::Reference<style::XStyleFamiliesSupplier> XFamiliesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XNameAccess> xFamilies(XFamiliesSupplier->getStyleFamilies());
- uno::Reference<container::XNameAccess> xTableFamily(xFamilies->getByName(u"TableStyles"_ustr), uno::UNO_QUERY);
- uno::Reference<container::XNameAccess> xTableStyle(xTableFamily->getByName(u"Green"_ustr), uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xCell1Style;
-
- xTableStyle->getByName(u"first-row-start-column"_ustr) >>= xCell1Style;
- CPPUNIT_ASSERT_EQUAL(COL_LIGHTGREEN, getProperty<Color>(xCell1Style, u"BackColor"_ustr));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTableStyles5)
-{
- loadAndReload("table_styles_5.odt");
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // Test if cell styles doesn't have a style:parent-style-name attribute.
- xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
-
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.1']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.2']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.3']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.4']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.5']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.6']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.7']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.8']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.9']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.10']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.11']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.12']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.13']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.14']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.15']", "parent-style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.16']", "parent-style-name");
-
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf145226)
-{
- loadAndReload("tdf145226.fodt");
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
-
- assertXPathNoAttribute(pXmlDoc, "/office:document-content/office:body/office:text/table:table/table:table-row[1]", "style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-content/office:body/office:text/table:table/table:table-row[2]", "style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-content/office:body/office:text/table:table/table:table-row[3]", "style-name");
- assertXPathNoAttribute(pXmlDoc, "/office:document-content/office:body/office:text/table:table/table:table-row[4]", "style-name");
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf101710, "tdf101710.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // Test that number format of cell styles can be imported and exported.
- uno::Reference<beans::XPropertySet> xStyle(getStyles(u"CellStyles"_ustr)->getByName(u"Test Style.11"_ustr), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(sal_uInt32(10104), getProperty<sal_uInt32>(xStyle, u"NumberFormat"_ustr));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf129568)
-{
- loadAndReload("tdf129568.fodt");
- // Test that export doesn't fail, and that style is imported and in use.
- uno::Reference<style::XStyle> xStyle(getStyles(u"CellStyles"_ustr)->getByName(u"Default Style.1"_ustr), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xStyle->isInUse());
- CPPUNIT_ASSERT_EQUAL(COL_YELLOW, getProperty<Color>(xStyle, u"BackColor"_ustr));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf129568ui)
-{
- loadAndReload("tdf129568-ui.fodt");
- // Same as above, but styles referenced by UI name.
- uno::Reference<style::XStyle> xStyle(getStyles(u"CellStyles"_ustr)->getByName(u"Default Style.1"_ustr), uno::UNO_QUERY);
- CPPUNIT_ASSERT(xStyle->isInUse());
- CPPUNIT_ASSERT_EQUAL(COL_YELLOW, getProperty<Color>(xStyle, u"BackColor"_ustr));
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf132642_keepWithNextTable, "tdf132642_keepWithNextTable.odt")
-{
- // Since the row is very big, it should split over two pages.
- // Since up to this point we haven't tried to make it match MS formats, it should start on page 1.
- CPPUNIT_ASSERT_EQUAL_MESSAGE("Row splits over 2 pages", 2, getPages());
-}
-
-DECLARE_ODFEXPORT_TEST(testArabicZeroNumberingRTF, "arabic-zero-numbering.rtf")
-{
- auto xNumberingRules = getProperty<uno::Reference<container::XIndexAccess>>(
- getParagraph(1), u"NumberingRules"_ustr);
- comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
- // Without the accompanying fix in place, this test would have failed with:
- // - Expected: 64
- // - Actual : 4
- // i.e. numbering type was ARABIC, not ARABIC_ZERO.
- CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
- aMap[u"NumberingType"_ustr].get<sal_uInt16>());
-}
-
-
-DECLARE_ODFEXPORT_TEST(testArabicZeroNumbering, "arabic-zero-numbering.docx")
-{
- auto xNumberingRules
- = getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), u"NumberingRules"_ustr);
- comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
- // Without the accompanying fix in place, this test would have failed with:
- // - Expected: 64
- // - Actual : 4
- // i.e. numbering type was ARABIC, not ARABIC_ZERO.
- CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
- aMap[u"NumberingType"_ustr].get<sal_uInt16>());
-}
-
-DECLARE_ODFEXPORT_TEST(testArabicZero3Numbering, "arabic-zero3-numbering.docx")
-{
- auto xNumberingRules
- = getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), u"NumberingRules"_ustr);
- comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
- // Without the accompanying fix in place, this test would have failed with:
- // - Expected: 65
- // - Actual : 4
- // i.e. numbering type was ARABIC, not ARABIC_ZERO3.
- CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO3),
- aMap[u"NumberingType"_ustr].get<sal_uInt16>());
-}
-
-DECLARE_ODFEXPORT_TEST(testArabicZero4Numbering, "arabic-zero4-numbering.docx")
-{
- auto xNumberingRules
- = getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), u"NumberingRules"_ustr);
- comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
- // Without the accompanying fix in place, this test would have failed with:
- // - Expected: 66
- // - Actual : 4
- // i.e. numbering type was ARABIC, not ARABIC_ZERO4.
- CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO4),
- aMap[u"NumberingType"_ustr].get<sal_uInt16>());
-}
-
-DECLARE_ODFEXPORT_TEST(testArabicZero5Numbering, "arabic-zero5-numbering.docx")
-{
- auto xNumberingRules
- = getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), u"NumberingRules"_ustr);
- comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
- // Without the accompanying fix in place, this test would have failed with:
- // - Expected: 67
- // - Actual : 4
- // i.e. numbering type was ARABIC, not ARABIC_ZERO5.
- CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO5),
- aMap[u"NumberingType"_ustr].get<sal_uInt16>());
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testImageMimetype)
-{
- loadAndReload("image-mimetype.odt");
- CPPUNIT_ASSERT_EQUAL(1, getShapes());
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // Test that the loext:mimetype attribute is written for exported images, tdf#109202
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
- // Original image (svg)
- assertXPath(pXmlDoc, "/office:document-content/office:body/office:text/text:p/draw:frame/draw:image[@draw:mime-type='image/svg+xml']");
-}
-
} // end of anonymous namespace
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/odfexport/odfexport2.cxx b/sw/qa/extras/odfexport/odfexport2.cxx
index 2dcac38ae108..59a5561c72b0 100644
--- a/sw/qa/extras/odfexport/odfexport2.cxx
+++ b/sw/qa/extras/odfexport/odfexport2.cxx
@@ -9,39 +9,24 @@
#include <swmodeltestbase.hxx>
-#include <com/sun/star/awt/FontSlant.hpp>
#include <com/sun/star/drawing/BarCode.hpp>
#include <com/sun/star/drawing/BarCodeErrorCorrection.hpp>
#include <com/sun/star/drawing/GraphicExportFilter.hpp>
#include <com/sun/star/drawing/XGraphicExportFilter.hpp>
#include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/linguistic2/XHyphenator.hpp>
-#include <com/sun/star/style/VerticalAlignment.hpp>
-#include <com/sun/star/text/ColumnSeparatorStyle.hpp>
#include <com/sun/star/text/XBookmarksSupplier.hpp>
#include <com/sun/star/text/XChapterNumberingSupplier.hpp>
-#include <com/sun/star/text/XDocumentIndex.hpp>
-#include <com/sun/star/text/XDocumentIndexesSupplier.hpp>
-#include <com/sun/star/text/XTextColumns.hpp>
-#include <com/sun/star/text/XTextField.hpp>
#include <com/sun/star/text/XTextFieldsSupplier.hpp>
#include <com/sun/star/text/XTextTable.hpp>
#include <com/sun/star/text/XTextTablesSupplier.hpp>
#include <com/sun/star/util/XRefreshable.hpp>
-#include <unotools/localedatawrapper.hxx>
#include <unotools/streamwrap.hxx>
-#include <comphelper/configuration.hxx>
#include <comphelper/processfactory.hxx>
#include <comphelper/propertysequence.hxx>
#include <comphelper/sequenceashashmap.hxx>
#include <editeng/unolingu.hxx>
-#include <officecfg/Office/Common.hxx>
-#include <wrtsh.hxx>
-#include <rootfrm.hxx>
#include <unoprnms.hxx>
-#include <unotxdoc.hxx>
-#include <docsh.hxx>
-#include <IDocumentFieldsAccess.hxx>
namespace
{
@@ -168,7 +153,7 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf132599_spread)
return;
// fo:hyphenation-keep="page" loext:hyphenation-keep-type="spread"
- loadAndReload("tdf132599_page.fodt");
+ loadAndReload("tdf132599_spread.fodt");
// shift last line of right page, resulting 3 pages
CPPUNIT_ASSERT_EQUAL(3, getPages());
}
@@ -300,6 +285,19 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf132599_auto_in_text_body_style)
CPPUNIT_ASSERT_EQUAL(2, getPages());
}
+CPPUNIT_TEST_FIXTURE(Test, testTdf165354_page)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ // fo:hyphenation-keep="page" defined in direct paragraph formatting
+ loadAndReload("tdf165354_page.fodt");
+ // This was 3 in tdf132599, but now 2, shifting only the last hyphenated word,
+ // not the full line, because of loext:hyphenation-keep-line=true
+ CPPUNIT_ASSERT_EQUAL(2, getPages());
+}
+
CPPUNIT_TEST_FIXTURE(Test, testTdf158885_compound_remain)
{
loadAndReload("tdf158885_compound-remain.fodt");
@@ -729,1140 +727,6 @@ CPPUNIT_TEST_FIXTURE(Test, tdf124470)
assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/style:style[@style:family='paragraph']", 1);
}
-CPPUNIT_TEST_FIXTURE(Test, tdf135942)
-{
- loadAndReload("nestedTableInFooter.odt");
- // All table autostyles should be collected, including nested, and must not crash.
-
- CPPUNIT_ASSERT_EQUAL(1, getPages());
-
- xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
-
- assertXPath(pXmlDoc, "/office:document-styles/office:automatic-styles/style:style[@style:family='table']", 2);
-}
-
-CPPUNIT_TEST_FIXTURE(Test, tdf150927)
-{
- // Similar to tdf135942
-
- loadAndReload("table-in-frame-in-table-in-header-base.odt");
- // All table autostyles should be collected, including nested, and must not crash.
-
- CPPUNIT_ASSERT_EQUAL(1, getPages());
-
- xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
-
- assertXPath(pXmlDoc, "/office:document-styles/office:automatic-styles/style:style[@style:family='table']", 2);
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testPersonalMetaData)
-{
- // 1. Remove personal info, keep user info
- auto pBatch(comphelper::ConfigurationChanges::create());
- officecfg::Office::Common::Security::Scripting::RemovePersonalInfoOnSaving::set(true, pBatch);
- officecfg::Office::Common::Security::Scripting::KeepDocUserInfoOnSaving::set(true, pBatch);
- pBatch->commit();
-
- loadAndReload("personalmetadata.odt");
- xmlDocUniquePtr pXmlDoc = parseExport(u"meta.xml"_ustr);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:initial-creator", 1);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:creation-date", 1);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/dc:date", 1);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/dc:creator", 1);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:printed-by", 1);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:print-date", 1);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:editing-duration", 0);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:editing-cycles", 0);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:template", 0);
- pXmlDoc = parseExport(u"settings.xml"_ustr);
- assertXPath(
- pXmlDoc,
- "/office:document-settings/office:settings/config:config-item-set[2]/config:config-item[@config:name='PrinterName']",
- 0);
- assertXPath(
- pXmlDoc,
- "/office:document-settings/office:settings/config:config-item-set[2]/config:config-item[@config:name='PrinterSetup']",
- 0);
-
- // 2. Remove user info too
- officecfg::Office::Common::Security::Scripting::KeepDocUserInfoOnSaving::set(false, pBatch);
- pBatch->commit();
-
- loadAndReload("personalmetadata.odt");
- pXmlDoc = parseExport(u"meta.xml"_ustr);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:initial-creator", 0);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:creation-date", 0);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/dc:date", 0);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/dc:creator", 0);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:printed-by", 0);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:print-date", 0);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:editing-duration", 0);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:editing-cycles", 0);
- assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:template", 0);
- pXmlDoc = parseExport(u"settings.xml"_ustr);
- assertXPath(
- pXmlDoc,
- "/office:document-settings/office:settings/config:config-item-set[2]/config:config-item[@config:name='PrinterName']",
- 0);
- assertXPath(
- pXmlDoc,
- "/office:document-settings/office:settings/config:config-item-set[2]/config:config-item[@config:name='PrinterSetup']",
- 0);
-}
-
-CPPUNIT_TEST_FIXTURE(Test, tdf151100)
-{
- // Similar to tdf135942
-
- loadAndReload("tdf151100.docx");
- // All table autostyles should be collected, including nested, and must not crash.
-
- CPPUNIT_ASSERT_EQUAL(1, getPages());
-
- xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
-
- assertXPath(pXmlDoc, "/office:document-styles/office:automatic-styles/style:style[@style:family='table']", 1);
-}
-
-DECLARE_ODFEXPORT_TEST(testGutterLeft, "gutter-left.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- uno::Reference<beans::XPropertySet> xPageStyle;
- getStyles(u"PageStyles"_ustr)->getByName(u"Standard"_ustr) >>= xPageStyle;
- sal_Int32 nGutterMargin{};
- xPageStyle->getPropertyValue(u"GutterMargin"_ustr) >>= nGutterMargin;
- // Without the accompanying fix in place, this test would have failed with:
- // - Expected: 1270
- // - Actual : 0
- // i.e. gutter margin was lost.
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1270), nGutterMargin);
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf52065_centerTabs, "testTdf52065_centerTabs.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- xmlDocUniquePtr pXmlDoc = parseLayoutDump();
- sal_Int32 nTabStop = getXPath(pXmlDoc, "//body/txt[4]/SwParaPortion/SwLineLayout/child::*[3]", "width").toInt32();
- // Without the fix, the text was unseen, with a tabstop width of 64057. It should be 3057
- CPPUNIT_ASSERT(nTabStop < 4000);
- CPPUNIT_ASSERT(3000 < nTabStop);
- assertXPath(pXmlDoc, "//body/txt[4]/SwParaPortion/SwLineLayout/child::*[4]", "portion", u"Pečiatka zamestnávateľa");
-
- // tdf#149547: __XXX___invalid CharacterStyles should not be imported/exported
- CPPUNIT_ASSERT(!getStyles(u"CharacterStyles"_ustr)->hasByName(u"__XXX___invalid"_ustr));
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf104254_noHeaderWrapping, "tdf104254_noHeaderWrapping.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getShapes());
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- xmlDocUniquePtr pXmlDoc = parseLayoutDump();
-
- sal_Int32 nParaHeight = getXPath(pXmlDoc, "//header/txt[1]/infos/bounds", "height").toInt32();
- // The wrapping on header images is supposed to be ignored (since OOo for MS compat reasons),
- // thus making the text run underneath the image. Before, height was 1104. Now it is 552.
- CPPUNIT_ASSERT_MESSAGE("Paragraph should fit on a single line", nParaHeight < 600);
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf131025_noZerosInTable, "tdf131025_noZerosInTable.odt")
-{
- uno::Reference<text::XTextTablesSupplier> xSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XNameAccess> xTables = xSupplier->getTextTables();
- uno::Reference<text::XTextTable> xTable(xTables->getByName(u"Table1"_ustr), uno::UNO_QUERY);
-
- uno::Reference<text::XTextRange> xCell(xTable->getCellByName(u"C3"_ustr), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"5 gp"_ustr, xCell->getString());
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf153090, "Custom-Style-TOC.docx")
-{
- uno::Reference<text::XDocumentIndexesSupplier> xIndexSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xIndexes(xIndexSupplier->getDocumentIndexes());
- uno::Reference<text::XDocumentIndex> xTOC(xIndexes->getByIndex(0), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"_CustomImageCaption"_ustr, getProperty<OUString>(xTOC, u"CreateFromParagraphStyle"_ustr));
- // tdf#153659 this was imported as "table of figures" instead of "Figure Index 1"
- // thus custom settings were not retained after ToF update
- CPPUNIT_ASSERT_EQUAL(u"Figure Index 1"_ustr, getProperty<OUString>(getParagraph(1), u"ParaStyleName"_ustr));
-
- xTOC->update();
- OUString const tocContent(xTOC->getAnchor()->getString());
- CPPUNIT_ASSERT(tocContent.indexOf("1. Abb. Ein Haus") != -1);
- CPPUNIT_ASSERT(tocContent.indexOf("2. Abb.Ein Schiff!") != -1);
- CPPUNIT_ASSERT(tocContent.indexOf(u"1. ábra Small house with Hungarian description category") != -1);
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf143793_noBodyWrapping, "tdf143793_noBodyWrapping.odt")
-{
- CPPUNIT_ASSERT_EQUAL(2, getShapes());
- // Preserve old document wrapping. Compat "Use OOo 1.1 text wrapping around objects"
- // Originally, the body text did not wrap around spill-over header images
- CPPUNIT_ASSERT_EQUAL_MESSAGE( "Fits on one page", 1, getPages() );
-
- xmlDocUniquePtr pXmlDoc = parseLayoutDump();
-
- sal_Int32 nParaHeight = getXPath(pXmlDoc, "//page[1]/header/txt[1]/infos/bounds", "height").toInt32();
- // The header text should wrap around the header image in OOo 1.1 and prior,
- // thus taking up two lines instead of one. One line is 276. It should be 552.
- CPPUNIT_ASSERT_MESSAGE("Header text should fill two lines", nParaHeight > 400);
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf137199)
-{
- loadAndReload("tdf137199.docx");
- CPPUNIT_ASSERT_EQUAL(u">1<"_ustr, getProperty<OUString>(getParagraph(1), u"ListLabelString"_ustr));
-
- CPPUNIT_ASSERT_EQUAL(u"1)"_ustr, getProperty<OUString>(getParagraph(2), u"ListLabelString"_ustr));
-
- CPPUNIT_ASSERT_EQUAL(u"HELLO1WORLD!"_ustr, getProperty<OUString>(getParagraph(3), u"ListLabelString"_ustr));
-
- CPPUNIT_ASSERT_EQUAL(u"HELLO2WORLD!"_ustr, getProperty<OUString>(getParagraph(4), u"ListLabelString"_ustr));
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf143605, "tdf143605.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // With numbering type "none" there should be just prefix & suffix
- CPPUNIT_ASSERT_EQUAL(u"."_ustr, getProperty<OUString>(getParagraph(1), u"ListLabelString"_ustr));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf57317_autoListName)
-{
- createSwDoc("tdf57317_autoListName.odt");
- // The list style (from styles.xml) overrides a duplicate named auto-style
- //uno::Any aNumStyle = getStyles("NumberingStyles")->getByName("L1");
- //CPPUNIT_ASSERT(aNumStyle.hasValue());
- uno::Reference<beans::XPropertySet> xPara(getParagraph(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u">1<"_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"L1"_ustr, getProperty<OUString>(xPara, u"NumberingStyleName"_ustr));
-
- dispatchCommand(mxComponent, u".uno:SelectAll"_ustr, {});
- dispatchCommand(mxComponent, u".uno:DefaultBullet"_ustr, {});
-
- // This was failing with a duplicate auto numbering style name of L1 instead of a unique name,
- // thus it was showing the same info as before the bullet modification.
- saveAndReload(u"writer8"_ustr);
- xPara.set(getParagraph(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u""_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
-
- uno::Reference<container::XIndexAccess> xLevels(xPara->getPropertyValue(u"NumberingRules"_ustr),
- uno::UNO_QUERY);
- uno::Sequence<beans::PropertyValue> aProps;
- xLevels->getByIndex(0) >>= aProps;
- for (beans::PropertyValue const& rProp : aProps)
- {
- if (rProp.Name == "BulletChar")
- return;
- }
- CPPUNIT_FAIL("no BulletChar property");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testListFormatDocx)
-{
- loadAndReload("listformat.docx");
- // Ensure in resulting ODT we also have not just prefix/suffix, but custom delimiters
- CPPUNIT_ASSERT_EQUAL(u">1<"_ustr, getProperty<OUString>(getParagraph(1), u"ListLabelString"_ustr));
- CPPUNIT_ASSERT_EQUAL(u">>1/1<<"_ustr, getProperty<OUString>(getParagraph(2), u"ListLabelString"_ustr));
- CPPUNIT_ASSERT_EQUAL(u">>1/1/1<<"_ustr, getProperty<OUString>(getParagraph(3), u"ListLabelString"_ustr));
- CPPUNIT_ASSERT_EQUAL(u">>1/1/2<<"_ustr, getProperty<OUString>(getParagraph(4), u"ListLabelString"_ustr));
-
- // Check also that in numbering styles we have num-list-format defined
- xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
- assertXPath(pXmlDoc, "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
- "text:list-level-style-number[@text:level='1']", "num-list-format", u">%1%<");
- assertXPath(pXmlDoc, "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
- "text:list-level-style-number[@text:level='2']", "num-list-format", u">>%1%/%2%<<");
- assertXPath(pXmlDoc, "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
- "text:list-level-style-number[@text:level='3']", "num-list-format", u">>%1%/%2%/%3%<<");
-
- // But for compatibility there are still prefix/suffix
- assertXPath(pXmlDoc, "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
- "text:list-level-style-number[@text:level='1']", "num-prefix", u">");
- assertXPath(pXmlDoc, "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
- "text:list-level-style-number[@text:level='1']", "num-suffix", u"<");
- assertXPath(pXmlDoc, "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
- "text:list-level-style-number[@text:level='2']", "num-prefix", u">>");
- assertXPath(pXmlDoc, "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
- "text:list-level-style-number[@text:level='2']", "num-suffix", u"<<");
- assertXPath(pXmlDoc, "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
- "text:list-level-style-number[@text:level='3']", "num-prefix", u">>");
- assertXPath(pXmlDoc, "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
- "text:list-level-style-number[@text:level='3']", "num-suffix", u"<<");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testShapeWithHyperlink)
-{
- loadAndSave("shape-with-hyperlink.odt");
- CPPUNIT_ASSERT_EQUAL(1, getShapes());
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
- // Check how conversion from prefix/suffix to list format did work
- assertXPath(pXmlDoc, "/office:document-content/office:body/office:text/text:p/draw:a",
- "href", u"http://shape.com/");
-}
-
-DECLARE_ODFEXPORT_TEST(testShapesHyperlink, "shapes-hyperlink.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- CPPUNIT_ASSERT_EQUAL(5, getShapes());
- uno::Reference<beans::XPropertySet> const xPropSet1(getShape(1), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"http://libreoffice.org/"_ustr, getProperty<OUString>(xPropSet1, u"Hyperlink"_ustr));
-
- uno::Reference<beans::XPropertySet> const xPropSet2(getShape(2), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"http://libreoffice2.org/"_ustr, getProperty<OUString>(xPropSet2, u"Hyperlink"_ustr));
-
- uno::Reference<beans::XPropertySet> const xPropSet3(getShape(3), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"http://libreoffice3.org/"_ustr, getProperty<OUString>(xPropSet3, u"Hyperlink"_ustr));
-
- uno::Reference<beans::XPropertySet> const xPropSet4(getShape(4), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"http://libreoffice4.org/"_ustr, getProperty<OUString>(xPropSet4, u"Hyperlink"_ustr));
-
- uno::Reference<beans::XPropertySet> const xPropSet5(getShape(5), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"http://libreoffice5.org/"_ustr, getProperty<OUString>(xPropSet5, u"Hyperlink"_ustr));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testListFormatOdt)
-{
- auto verify = [this]() {
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- // Ensure in resulting ODT we also have not just prefix/suffix, but custom delimiters
- CPPUNIT_ASSERT_EQUAL(u">1<"_ustr, getProperty<OUString>(getParagraph(1), u"ListLabelString"_ustr));
- CPPUNIT_ASSERT_EQUAL(u">>1.1<<"_ustr, getProperty<OUString>(getParagraph(2), u"ListLabelString"_ustr));
- CPPUNIT_ASSERT_EQUAL(u">>1.1.1<<"_ustr, getProperty<OUString>(getParagraph(3), u"ListLabelString"_ustr));
- CPPUNIT_ASSERT_EQUAL(u">>1.1.2<<"_ustr, getProperty<OUString>(getParagraph(4), u"ListLabelString"_ustr));
- };
-
- createSwDoc("listformat.odt");
- verify();
- saveAndReload(mpFilter);
- verify();
-
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
- // Check how conversion from prefix/suffix to list format did work
- assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
- "text:list-level-style-number[@text:level='1']", "num-list-format", u">%1%<");
- assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
- "text:list-level-style-number[@text:level='2']", "num-list-format", u">>%1%.%2%<<");
- assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
- "text:list-level-style-number[@text:level='3']", "num-list-format", u">>%1%.%2%.%3%<<");
-
- // But for compatibility there are still prefix/suffix as they were before
- assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
- "text:list-level-style-number[@text:level='1']", "num-prefix", u">");
- assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
- "text:list-level-style-number[@text:level='1']", "num-suffix", u"<");
- assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
- "text:list-level-style-number[@text:level='2']", "num-prefix", u">>");
- assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
- "text:list-level-style-number[@text:level='2']", "num-suffix", u"<<");
- assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
- "text:list-level-style-number[@text:level='3']", "num-prefix", u">>");
- assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
- "text:list-level-style-number[@text:level='3']", "num-suffix", u"<<");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testStyleLink)
-{
- // Given a document with a para and a char style that links each other, when loading that
- // document:
- createSwDoc("style-link.fodt");
-
- // Then make sure the char style links the para one:
- uno::Any aCharStyle = getStyles(u"CharacterStyles"_ustr)->getByName(u"List Paragraph Char"_ustr);
- // Without the accompanying fix in place, this test would have failed with:
- // - Expected: List Paragraph
- // - Actual :
- // i.e. the linked style was lost on import.
- CPPUNIT_ASSERT_EQUAL(u"List Paragraph"_ustr, getProperty<OUString>(aCharStyle, u"LinkStyle"_ustr));
- uno::Any aParaStyle = getStyles(u"ParagraphStyles"_ustr)->getByName(u"List Paragraph"_ustr);
- // Without the accompanying fix in place, this test would have failed with:
- // - Expected: List Paragraph Char
- // - Actual :
- // i.e. the linked style was lost on import.
- CPPUNIT_ASSERT_EQUAL(u"List Paragraph Char"_ustr, getProperty<OUString>(aParaStyle, u"LinkStyle"_ustr));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, tdf120972)
-{
- loadAndReload("table_number_format_3.docx");
-
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
- OUString cDecimal(SvtSysLocale().GetLocaleData().getNumDecimalSep()[0]);
- assertXPath(
- pXmlDoc,
- "//style:style[@style:name='P1']/style:paragraph-properties/style:tab-stops/style:tab-stop",
- "char", cDecimal);
- assertXPath(
- pXmlDoc,
- "//style:style[@style:name='P2']/style:paragraph-properties/style:tab-stops/style:tab-stop",
- "char", cDecimal);
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf114287, "tdf114287.odt")
-{
- uno::Reference<container::XIndexAccess> const xLevels1(
- getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(2), u"NumberingRules"_ustr));
- uno::Reference<container::XNamed> const xNum1(xLevels1, uno::UNO_QUERY);
- ::comphelper::SequenceAsHashMap props1(xLevels1->getByIndex(0));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-700), props1[u"FirstLineIndent"_ustr].get<sal_Int32>());
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1330), props1[u"IndentAt"_ustr].get<sal_Int32>());
-
- // 1: automatic style applies list-style-name and margin-left
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-1000), getProperty<sal_Int32>(getParagraph(2), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(5001), getProperty<sal_Int32>(getParagraph(2), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(2), u"ParaRightMargin"_ustr));
-
- // list is continued
- uno::Reference<container::XNamed> const xNum2(
- getProperty<uno::Reference<container::XNamed>>(getParagraph(9), u"NumberingRules"_ustr));
- CPPUNIT_ASSERT_EQUAL(xNum1->getName(), xNum2->getName());
-
- // 2: style applies list-style-name and margin-left, list applies list-style-name
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-1000), getProperty<sal_Int32>(getParagraph(9), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(5001), getProperty<sal_Int32>(getParagraph(9), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(9), u"ParaRightMargin"_ustr));
-
- // list is continued
- uno::Reference<container::XNamed> const xNum3(
- getProperty<uno::Reference<container::XNamed>>(getParagraph(16), u"NumberingRules"_ustr));
- CPPUNIT_ASSERT_EQUAL(xNum1->getName(), xNum3->getName());
-
- // 3: style applies margin-left, automatic style applies list-style-name
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-1000), getProperty<sal_Int32>(getParagraph(16), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(5001), getProperty<sal_Int32>(getParagraph(16), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(16), u"ParaRightMargin"_ustr));
-
- xmlDocUniquePtr pXmlDoc = parseLayoutDump();
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/infos/prtBounds", "left", u"2268");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/infos/prtBounds", "right", u"11339");
- // the list style name of the list is the same as the list style name of the
- // paragraph, but in any case the margins of the paragraph take precedence
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[9]/infos/prtBounds", "left", u"2268");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[9]/infos/prtBounds", "right", u"11339");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[16]/infos/prtBounds", "left", u"357");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[16]/infos/prtBounds", "right", u"11339");
-}
-
-DECLARE_ODFEXPORT_TEST(testSectionColumnSeparator, "section-columns-separator.fodt")
-{
- // tdf#150235: due to wrong types used in column export, 'style:height' and 'style:style'
- // attributes were exported incorrectly for 'style:column-sep' element
- auto xSection = getProperty<uno::Reference<uno::XInterface>>(getParagraph(1), u"TextSection"_ustr);
- auto xColumns = getProperty<uno::Reference<text::XTextColumns>>(xSection, u"TextColumns"_ustr);
- CPPUNIT_ASSERT(xColumns);
- CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xColumns->getColumnCount());
-
- // Without the accompanying fix in place, this test would have failed with:
- // - Expected: 50
- // - Actual : 100
- CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(50),
- getProperty<sal_Int32>(xColumns, u"SeparatorLineRelativeHeight"_ustr));
- // Without the accompanying fix in place, this test would have failed with:
- // - Expected: 2
- // - Actual : 0
- CPPUNIT_ASSERT_EQUAL(css::text::ColumnSeparatorStyle::DOTTED,
- getProperty<sal_Int16>(xColumns, u"SeparatorLineStyle"_ustr));
-
- // Check the rest of the properties, too
- CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xColumns, u"IsAutomatic"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(600), getProperty<sal_Int32>(xColumns, u"AutomaticDistance"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(9), getProperty<sal_Int32>(xColumns, u"SeparatorLineWidth"_ustr));
- CPPUNIT_ASSERT_EQUAL(Color(0x99, 0xAA, 0xBB),
- getProperty<Color>(xColumns, u"SeparatorLineColor"_ustr));
- CPPUNIT_ASSERT_EQUAL(
- css::style::VerticalAlignment_BOTTOM,
- getProperty<css::style::VerticalAlignment>(xColumns, u"SeparatorLineVerticalAlignment"_ustr));
- CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xColumns, u"SeparatorLineIsOn"_ustr));
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf78510, "WordTest_edit.odt")
-{
- uno::Reference<container::XIndexAccess> const xLevels1(
- getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), u"NumberingRules"_ustr));
- ::comphelper::SequenceAsHashMap props1(xLevels1->getByIndex(0));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-1000), props1[u"FirstLineIndent"_ustr].get<sal_Int32>());
- CPPUNIT_ASSERT_EQUAL(sal_Int32(2000), props1[u"IndentAt"_ustr].get<sal_Int32>());
-
- // 1: inherited from paragraph style and overridden by list
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(1), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1270), getProperty<sal_Int32>(getParagraph(1), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(1), u"ParaRightMargin"_ustr));
- // 2: as 1 + paragraph sets firstline
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1000), getProperty<sal_Int32>(getParagraph(2), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1270), getProperty<sal_Int32>(getParagraph(2), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(2), u"ParaRightMargin"_ustr));
- // 3: as 1 + paragraph sets textleft
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(3), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(3000), getProperty<sal_Int32>(getParagraph(3), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(3), u"ParaRightMargin"_ustr));
- // 4: as 1 + paragraph sets firstline, textleft
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-2000), getProperty<sal_Int32>(getParagraph(4), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(3000), getProperty<sal_Int32>(getParagraph(4), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(4), u"ParaRightMargin"_ustr));
- // 5: as 1 + paragraph sets firstline
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-2000), getProperty<sal_Int32>(getParagraph(5), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1270), getProperty<sal_Int32>(getParagraph(5), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(5), u"ParaRightMargin"_ustr));
- // 6: as 1
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(6), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1270), getProperty<sal_Int32>(getParagraph(6), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(6), u"ParaRightMargin"_ustr));
-
- uno::Reference<container::XIndexAccess> const xLevels8(
- getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(8), u"NumberingRules"_ustr));
- ::comphelper::SequenceAsHashMap props8(xLevels8->getByIndex(0));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1000), props8[u"FirstLineIndent"_ustr].get<sal_Int32>());
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1000), props8[u"IndentAt"_ustr].get<sal_Int32>());
-
- // 8: inherited from paragraph style and overridden by list
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(8), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1270), getProperty<sal_Int32>(getParagraph(8), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(8), u"ParaRightMargin"_ustr));
- // 9: as 8 + paragraph sets firstline
- CPPUNIT_ASSERT_EQUAL(sal_Int32(2000), getProperty<sal_Int32>(getParagraph(9), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1270), getProperty<sal_Int32>(getParagraph(9), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(9), u"ParaRightMargin"_ustr));
- // 10: as 8 + paragraph sets textleft
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(10), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(3000), getProperty<sal_Int32>(getParagraph(10), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(10), u"ParaRightMargin"_ustr));
- // 11: as 8 + paragraph sets firstline, textleft
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-2000), getProperty<sal_Int32>(getParagraph(11), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(3000), getProperty<sal_Int32>(getParagraph(11), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(11), u"ParaRightMargin"_ustr));
- // 12: as 8 + paragraph sets firstline
- CPPUNIT_ASSERT_EQUAL(sal_Int32(-2000), getProperty<sal_Int32>(getParagraph(12), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1270), getProperty<sal_Int32>(getParagraph(12), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(12), u"ParaRightMargin"_ustr));
- // 13: as 8
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(13), u"ParaFirstLineIndent"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(1270), getProperty<sal_Int32>(getParagraph(13), u"ParaLeftMargin"_ustr));
- CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(getParagraph(13), u"ParaRightMargin"_ustr));
-
- // unfortunately it appears that the portions don't have a position
- // so it's not possible to check the first-line-offset that's applied
- // (the first-line-indent is computed on the fly in SwTextMargin when
- // painting)
- {
- xmlDocUniquePtr pXmlDoc = parseLayoutDump();
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/infos/prtBounds", "left", u"567");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/infos/prtBounds", "right", u"9359");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/infos/prtBounds", "left", u"1134");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/infos/prtBounds", "right", u"9359");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[3]/infos/prtBounds", "left", u"1134");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[3]/infos/prtBounds", "right", u"9359");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[4]/infos/prtBounds", "left", u"567");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[4]/infos/prtBounds", "right", u"9359");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[5]/infos/prtBounds", "left", u"0");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[5]/infos/prtBounds", "right", u"9359");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[6]/infos/prtBounds", "left", u"567");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[6]/infos/prtBounds", "right", u"9359");
-
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[8]/infos/prtBounds", "left", u"567");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[8]/infos/prtBounds", "right", u"9359");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[9]/infos/prtBounds", "left", u"567");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[9]/infos/prtBounds", "right", u"9359");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[10]/infos/prtBounds", "left", u"1701");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[10]/infos/prtBounds", "right", u"9359");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[11]/infos/prtBounds", "left", u"567");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[11]/infos/prtBounds", "right", u"9359");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[12]/infos/prtBounds", "left", u"-567");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[12]/infos/prtBounds", "right", u"9359");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[13]/infos/prtBounds", "left", u"567");
- assertXPath(pXmlDoc, "/root/page[1]/body/txt[13]/infos/prtBounds", "right", u"9359");
- }
-
- // now check the positions where text is actually painted -
- // wonder how fragile this is...
- // FIXME some platform difference, 1st one is 2306 on Linux, 3087 on WNT ?
- // some Mac has 3110
-#if !defined(_WIN32) && !defined(MACOSX)
- {
- std::shared_ptr<GDIMetaFile> pMetaFile = getSwDocShell()->GetPreviewMetaFile();
- MetafileXmlDump aDumper;
- xmlDocUniquePtr pXmlDoc = dumpAndParse(aDumper, *pMetaFile);
-
- // 1: inherited from paragraph style and overridden by list
- // bullet char is extra
-
- assertXPath(pXmlDoc, "//textarray[1]", "x", u"2306");
- // text is after a tab from list - haven't checked if that is correct?
- assertXPath(pXmlDoc, "//textarray[2]", "x", u"2873");
- // second line
- assertXPath(pXmlDoc, "//textarray[3]", "x", u"2873");
- // 2: as 1 + paragraph sets firstline
- assertXPath(pXmlDoc, "//textarray[4]", "x", u"3440");
- assertXPath(pXmlDoc, "//textarray[5]", "x", u"3593");
- assertXPath(pXmlDoc, "//textarray[6]", "x", u"2873");
- // 3: as 1 + paragraph sets textleft
- assertXPath(pXmlDoc, "//textarray[7]", "x", u"2873");
- assertXPath(pXmlDoc, "//textarray[8]", "x", u"3440");
- assertXPath(pXmlDoc, "//textarray[9]", "x", u"3440");
- // 4: as 1 + paragraph sets firstline, textleft
- assertXPath(pXmlDoc, "//textarray[10]", "x", u"2306");
- assertXPath(pXmlDoc, "//textarray[11]", "x", u"3440");
- assertXPath(pXmlDoc, "//textarray[12]", "x", u"3440");
- // 5: as 1 + paragraph sets firstline
- assertXPath(pXmlDoc, "//textarray[13]", "x", u"1739");
- assertXPath(pXmlDoc, "//textarray[14]", "x", u"2873");
- assertXPath(pXmlDoc, "//textarray[15]", "x", u"2873");
- // 6: as 1
- assertXPath(pXmlDoc, "//textarray[16]", "x", u"2306");
- assertXPath(pXmlDoc, "//textarray[17]", "x", u"2873");
-
- // 8: inherited from paragraph style and overridden by list
- assertXPath(pXmlDoc, "//textarray[18]", "x", u"2873");
- assertXPath(pXmlDoc, "//textarray[19]", "x", u"3746");
- assertXPath(pXmlDoc, "//textarray[20]", "x", u"2306");
- // 9: as 8 + paragraph sets firstline
- assertXPath(pXmlDoc, "//textarray[21]", "x", u"3440");
- assertXPath(pXmlDoc, "//textarray[22]", "x", u"3746");
- assertXPath(pXmlDoc, "//textarray[23]", "x", u"2306");
- // 10: as 8 + paragraph sets textleft
- assertXPath(pXmlDoc, "//textarray[24]", "x", u"4007");
- assertXPath(pXmlDoc, "//textarray[25]", "x", u"4880");
- assertXPath(pXmlDoc, "//textarray[26]", "x", u"3440");
- // 11: as 8 + paragraph sets firstline, textleft
- assertXPath(pXmlDoc, "//textarray[27]", "x", u"2306");
- assertXPath(pXmlDoc, "//textarray[28]", "x", u"3440");
- assertXPath(pXmlDoc, "//textarray[29]", "x", u"3440");
- // 12: as 8 + paragraph sets firstline
- assertXPath(pXmlDoc, "//textarray[30]", "x", u"1172");
- assertXPath(pXmlDoc, "//textarray[31]", "x", u"1739");
- assertXPath(pXmlDoc, "//textarray[32]", "x", u"2306");
- // 13: as 8
- assertXPath(pXmlDoc, "//textarray[33]", "x", u"2873");
- assertXPath(pXmlDoc, "//textarray[34]", "x", u"3746");
- }
-#endif
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testParagraphMarkerMarkupRoundtrip)
-{
- loadAndReload("ParagraphMarkerMarkup.fodt");
- // Test that the markup stays at save-and-reload
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
- OUString autostyle
- = getXPath(pXmlDoc, "//office:body/office:text/text:p", "marker-style-name");
- OString style_text_properties
- = "/office:document-content/office:automatic-styles/style:style[@style:name='"
- + autostyle.toUtf8() + "']/style:text-properties";
- assertXPath(pXmlDoc, style_text_properties, "font-size", u"9pt");
- assertXPath(pXmlDoc, style_text_properties, "color", u"#ff0000");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testCommentStyles)
-{
- createSwDoc();
-
- auto xFactory(mxComponent.queryThrow<lang::XMultiServiceFactory>());
- auto xComment(xFactory->createInstance(u"com.sun.star.text.textfield.Annotation"_ustr).queryThrow<text::XTextContent>());
- auto xCommentText(getProperty<uno::Reference<text::XTextRange>>(xComment, u"TextRange"_ustr));
- xCommentText->setString(u"Hello World"_ustr);
- xCommentText.queryThrow<beans::XPropertySet>()->setPropertyValue(u"ParaStyleName"_ustr, uno::Any(u"Heading"_ustr));
-
- xComment->attach(getParagraph(1)->getEnd());
-
- saveAndReload(u"writer8"_ustr);
-
- auto xFields(mxComponent.queryThrow<text::XTextFieldsSupplier>()->getTextFields()->createEnumeration());
- xComment.set(xFields->nextElement().queryThrow<text::XTextContent>());
- CPPUNIT_ASSERT(xComment.queryThrow<lang::XServiceInfo>()->supportsService(u"com.sun.star.text.textfield.Annotation"_ustr));
-
- xCommentText.set(getProperty<uno::Reference<text::XTextRange>>(xComment, u"TextRange"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"Heading"_ustr, getProperty<OUString>(xCommentText, u"ParaStyleName"_ustr));
-
- auto xStyleFamilies(mxComponent.queryThrow<style::XStyleFamiliesSupplier>()->getStyleFamilies());
- auto xParaStyles(xStyleFamilies->getByName(u"ParagraphStyles"_ustr));
- auto xStyle(xParaStyles.queryThrow<container::XNameAccess>()->getByName(u"Heading"_ustr));
- CPPUNIT_ASSERT_EQUAL(getProperty<float>(xStyle, u"CharHeight"_ustr), getProperty<float>(xCommentText, u"CharHeight"_ustr));
- CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DEFAULT_VALUE,
- xCommentText.queryThrow<beans::XPropertyState>()->getPropertyState(u"CharHeight"_ustr));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf150408_IsLegal)
-{
- loadAndReload("IsLegal.fodt");
-
- // Second level's numbering should use Arabic numbers for first level reference
- auto xPara = getParagraph(1);
- CPPUNIT_ASSERT_EQUAL(u"CH I"_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
- xPara = getParagraph(2);
- CPPUNIT_ASSERT_EQUAL(u"Sect 1.01"_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
- xPara = getParagraph(3);
- CPPUNIT_ASSERT_EQUAL(u"CH II"_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
- xPara = getParagraph(4);
- CPPUNIT_ASSERT_EQUAL(u"Sect 2.01"_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
-
- // Test that the markup stays at save-and-reload
- xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
- assertXPath(
- pXmlDoc,
- "/office:document-styles/office:styles/text:outline-style/text:outline-level-style[2]",
- "is-legal", u"true");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf159382)
-{
- // Testing NoGapAfterNoteNumber compat option
-
- createSwDoc("footnote_spacing_hanging_para.docx");
- // 1. Make sure that DOCX import sets NoGapAfterNoteNumber option, and creates
- // correct layout
- {
- uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
- uno::Reference<beans::XPropertySet> xSettings(
- xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
- CPPUNIT_ASSERT_EQUAL(uno::Any(true), xSettings->getPropertyValue(
- u"NoGapAfterNoteNumber"_ustr));
-
- xmlDocUniquePtr pXmlDoc = parseLayoutDump();
- sal_Int32 width
- = getXPath(pXmlDoc,
- "/root/page/ftncont/ftn/txt/SwParaPortion/SwLineLayout/SwFieldPortion",
- "width")
- .toInt32();
- CPPUNIT_ASSERT(width);
- CPPUNIT_ASSERT_LESS(sal_Int32(100), width); // It was 720, i.e. 0.5 inch
- }
-
- saveAndReload(mpFilter);
- // 2. Make sure that exported document has NoGapAfterNoteNumber option set,
- // and has correct layout
- {
- xmlDocUniquePtr pXmlDoc = parseExport(u"settings.xml"_ustr);
- assertXPathContent(
- pXmlDoc,
- "//config:config-item[@config:name='NoGapAfterNoteNumber']", u"true");
-
- uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
- uno::Reference<beans::XPropertySet> xSettings(
- xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
- CPPUNIT_ASSERT_EQUAL(uno::Any(true), xSettings->getPropertyValue(
- u"NoGapAfterNoteNumber"_ustr));
-
- pXmlDoc = parseLayoutDump();
- sal_Int32 width = getXPath(
- pXmlDoc, "/root/page/ftncont/ftn/txt/SwParaPortion/SwLineLayout/SwFieldPortion",
- "width").toInt32();
- CPPUNIT_ASSERT(width);
- CPPUNIT_ASSERT_LESS(sal_Int32(100), width);
- }
-
- createSwDoc("footnote_spacing_hanging_para.doc");
- // 3. Make sure that DOC import sets NoGapAfterNoteNumber option, and creates
- // correct layout
- {
- uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
- uno::Reference<beans::XPropertySet> xSettings(
- xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
- CPPUNIT_ASSERT_EQUAL(uno::Any(true), xSettings->getPropertyValue(
- u"NoGapAfterNoteNumber"_ustr));
-
- xmlDocUniquePtr pXmlDoc = parseLayoutDump();
- sal_Int32 width
- = getXPath(pXmlDoc,
- "/root/page/ftncont/ftn/txt/SwParaPortion/SwLineLayout/SwFieldPortion",
- "width")
- .toInt32();
- CPPUNIT_ASSERT(width);
- CPPUNIT_ASSERT_LESS(sal_Int32(100), width);
- }
-
- createSwDoc("footnote_spacing_hanging_para.rtf");
- // 4. Make sure that RTF import sets NoGapAfterNoteNumber option, and creates
- // correct layout
- {
- uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
- uno::Reference<beans::XPropertySet> xSettings(
- xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
- CPPUNIT_ASSERT_EQUAL(uno::Any(true), xSettings->getPropertyValue(
- u"NoGapAfterNoteNumber"_ustr));
-
- xmlDocUniquePtr pXmlDoc = parseLayoutDump();
- sal_Int32 width
- = getXPath(pXmlDoc,
- "/root/page/ftncont/ftn/txt/SwParaPortion/SwLineLayout/SwFieldPortion",
- "width")
- .toInt32();
- CPPUNIT_ASSERT(width);
- CPPUNIT_ASSERT_LESS(sal_Int32(100), width);
- }
-
- createSwDoc();
- // 5. Make sure that a new Writer document has this setting set to false
- {
- uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
- uno::Reference<beans::XPropertySet> xSettings(
- xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
- CPPUNIT_ASSERT_EQUAL(uno::Any(false), xSettings->getPropertyValue(
- u"NoGapAfterNoteNumber"_ustr));
- }
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf159438)
-{
- // Given a text with bookmarks, where an end of one bookmark is the position of another,
- // and the start of a third
- loadAndReload("bookmark_order.fodt");
- auto xPara = getParagraph(1);
-
- // Check that the order of runs is correct (bookmarks don't overlap)
-
- {
- auto run = getRun(xPara, 1);
- CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(run, u"IsStart"_ustr));
- CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsCollapsed"_ustr));
- auto named = getProperty<uno::Reference<container::XNamed>>(run, u"Bookmark"_ustr);
- CPPUNIT_ASSERT_EQUAL(u"bookmark1"_ustr, named->getName());
- }
-
- {
- auto run = getRun(xPara, 2);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"foo"_ustr, run->getString());
- }
-
- {
- auto run = getRun(xPara, 3);
- CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsStart"_ustr));
- CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsCollapsed"_ustr));
- auto named = getProperty<uno::Reference<container::XNamed>>(run, u"Bookmark"_ustr);
- CPPUNIT_ASSERT_EQUAL(u"bookmark1"_ustr, named->getName());
- }
-
- {
- auto run = getRun(xPara, 4);
- CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(run, u"IsStart"_ustr));
- CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(run, u"IsCollapsed"_ustr));
- auto named = getProperty<uno::Reference<container::XNamed>>(run, u"Bookmark"_ustr);
- CPPUNIT_ASSERT_EQUAL(u"bookmark2"_ustr, named->getName());
- }
-
- {
- auto run = getRun(xPara, 5);
- CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(run, u"IsStart"_ustr));
- CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsCollapsed"_ustr));
- auto named = getProperty<uno::Reference<container::XNamed>>(run, u"Bookmark"_ustr);
- CPPUNIT_ASSERT_EQUAL(u"bookmark3"_ustr, named->getName());
- }
-
- {
- auto run = getRun(xPara, 6);
- CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(u"bar"_ustr, run->getString());
- }
-
- {
- auto run = getRun(xPara, 7);
- CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
- CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsStart"_ustr));
- CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsCollapsed"_ustr));
- auto named = getProperty<uno::Reference<container::XNamed>>(run, u"Bookmark"_ustr);
- CPPUNIT_ASSERT_EQUAL(u"bookmark3"_ustr, named->getName());
- }
-
- // Test that the markup stays at save-and-reload
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
-
- assertXPathNodeName(pXmlDoc, "//office:body/office:text/text:p/*[1]",
- "bookmark-start");
- assertXPath(pXmlDoc, "//office:body/office:text/text:p/*[1]", "name",
- u"bookmark1");
-
- // Without the fix in place, this would fail with
- // - Expected: bookmark-end
- // - Actual : bookmark-start
- // - In XPath '//office:body/office:text/text:p/*[2]' name of node is incorrect
- assertXPathNodeName(pXmlDoc, "//office:body/office:text/text:p/*[2]", "bookmark-end");
- assertXPath(pXmlDoc, "//office:body/office:text/text:p/*[2]", "name",
- u"bookmark1");
-
- assertXPathNodeName(pXmlDoc, "//office:body/office:text/text:p/*[3]", "bookmark");
- assertXPath(pXmlDoc, "//office:body/office:text/text:p/*[3]", "name",
- u"bookmark2");
-
- assertXPathNodeName(pXmlDoc, "//office:body/office:text/text:p/*[4]",
- "bookmark-start");
- assertXPath(pXmlDoc, "//office:body/office:text/text:p/*[4]", "name",
- u"bookmark3");
-
- assertXPathNodeName(pXmlDoc, "//office:body/office:text/text:p/*[5]", "bookmark-end");
- assertXPath(pXmlDoc, "//office:body/office:text/text:p/*[5]", "name",
- u"bookmark3");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf160700)
-{
- // Given a document with an empty numbered paragraph, and a cross-reference to it
- loadAndReload("tdf160700.odt");
-
- // Refresh fields and ensure cross-reference to numbered para is okay
- auto xTextFieldsSupplier(mxComponent.queryThrow<text::XTextFieldsSupplier>());
- auto xFieldsAccess(xTextFieldsSupplier->getTextFields());
-
- xFieldsAccess.queryThrow<util::XRefreshable>()->refresh();
-
- auto xFields(xFieldsAccess->createEnumeration());
- CPPUNIT_ASSERT(xFields->hasMoreElements());
- auto xTextField(xFields->nextElement().queryThrow<text::XTextField>());
- // Save must not create markup with text:bookmark-end element before text:bookmark-start
- // Without the fix, this would fail with
- // - Expected: 1
- // - Actual : Error: Reference source not found
- // i.e., the bookmark wasn't imported, and the field had no proper source
- CPPUNIT_ASSERT_EQUAL(u"1"_ustr, xTextField->getPresentation(false));
-
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
- // Check that we export the bookmark in the empty paragraph as a single text:bookmark
- // element. Another valid markup is text:bookmark-start followed by text:bookmark-end
- // (in that order). The problem was, that text:bookmark-end was before text:bookmark-start.
- assertXPathChildren(pXmlDoc, "//office:text/text:list/text:list-item/text:p", 1);
- assertXPath(pXmlDoc, "//office:text/text:list/text:list-item/text:p/text:bookmark");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf160253_ordinary_numbering)
-{
- // Given a document with a list, and an out-of-the-list paragraph in the middle, having an
- // endnote, which has a paragraph in another list.
- // Before the fix, this already failed with
- // Error: "list2916587379" is referenced by an IDREF, but not defined.
- loadAndReload("tdf160253_ordinary_numbering.fodt");
-
- // Make sure that the fourth paragraph has correct number - it was "1." before the fix
- CPPUNIT_ASSERT_EQUAL(u"3."_ustr,
- getProperty<OUString>(getParagraph(4), u"ListLabelString"_ustr));
-
- // Make sure that we emit an identifier for the first list, and refer to it in the continuation
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
- // This failed before the fix, because 'xml:id' attribute wasn't emitted
- OUString firstListId
- = getXPath(pXmlDoc, "//office:body/office:text/text:list[1]", "id");
- CPPUNIT_ASSERT(!firstListId.isEmpty());
- assertXPath(pXmlDoc, "//office:body/office:text/text:list[2]", "continue-list",
- firstListId);
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf160253_outline_numbering)
-{
- // Given a document with an outline (chapter) numbering, and a paragraph in the middle, having
- // an endnote, which has a paragraph in a list.
- // Before the fix, this already failed with
- // Error: "list2916587379" is referenced by an IDREF, but not defined.
- loadAndReload("tdf160253_outline_numbering.fodt");
-
- // Make sure that the third paragraph has correct number - it was "1" before the fix
- CPPUNIT_ASSERT_EQUAL(u"2"_ustr,
- getProperty<OUString>(getParagraph(3), u"ListLabelString"_ustr));
-
- // The difference with the ordinary numbering is that for outline numbering, the list element
- // isn't really necessary. It is a TODO to fix the output, and not export the list.
- // xmlDocUniquePtr pXmlDoc = parseExport("content.xml");
- // assertXPath(pXmlDoc, "//office:body/office:text/text:list", 0);
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTableInFrameAnchoredToPage)
-{
- // Given a table in a frame anchored to a page:
- // it must not assert on export because of missing format for an exported table
- loadAndReload("table_in_frame_to_page.fodt");
-
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
- auto AutoStyleUsedIn = [this, &pXmlDoc](const OString& path, const char* attr) -> OString
- {
- const OUString styleName = getXPath(pXmlDoc, path, attr);
- return "//office:automatic-styles/style:style[@style:name='" + styleName.toUtf8() + "']";
- };
- static constexpr OString xPathTextBox = "//office:body/office:text/draw:frame/draw:text-box"_ostr;
-
- // Check also, that autostyles defined inside that frame are stored correctly. If not, then
- // these paragraphs would refer to styles in <office::styles>, not in <office:automatic-styles>,
- // without the 'italic' and 'bold' attributes.
- OString P = AutoStyleUsedIn(xPathTextBox + "/text:p", "style-name");
- assertXPath(pXmlDoc, P + "/style:text-properties", "font-weight", u"bold");
-
- P = AutoStyleUsedIn(xPathTextBox + "/table:table/table:table-row[1]/table:table-cell[1]/text:p",
- "style-name");
- assertXPath(pXmlDoc, P + "/style:text-properties", "font-style", u"italic");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testDeletedTableAutostylesExport)
-{
- // Given a document with deleted table:
- // it must not assert on export because of missing format for an exported table
- loadAndReload("deleted_table.fodt");
-}
-
-DECLARE_ODFEXPORT_TEST(testTdf160877, "tdf160877.odt")
-{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
-
- uno::Reference<text::XText> xHeaderTextPage1 = getProperty<uno::Reference<text::XText>>(
- getStyles(u"PageStyles"_ustr)->getByName(u"Standard"_ustr), u"HeaderTextFirst"_ustr);
- CPPUNIT_ASSERT_EQUAL(u"Classification: General Business"_ustr, xHeaderTextPage1->getString());
-
- // Without the fix in place, this test would have failed with
- // - Expected: (Sign GB)Test
- // - Actual : Test
- CPPUNIT_ASSERT_EQUAL(u"(Sign GB)Test"_ustr, getParagraph(1)->getString());
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testMidnightRedlineDatetime)
-{
- // Given a document with a tracked change with a midnight datetime:
- // make sure that it succeeds export and import validation. Before the fix, this failed:
- // - Error: "2001-01-01" does not satisfy the "dateTime" type
- // because "2001-01-01T00:00:00" became "2001-01-01" on roundtrip.
- loadAndReload("midnight_redline.fodt");
-
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
- assertXPathContent(pXmlDoc,
- "//office:body/office:text/text:tracked-changes/text:changed-region/"
- "text:deletion/office:change-info/dc:date",
- u"2001-01-01T00:00:00");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf122452)
-{
- // FIXME: Error: element "text:insertion" was found where no element may occur
- skipValidation();
- loadAndReload("tdf122452.doc");
- SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
-
- // Without the fix in place this fails with:
- // Expected: 1
- // Actual: 0
- CPPUNIT_ASSERT_EQUAL_MESSAGE("Redlines should be Hidden", true, pWrtShell->GetLayout()->IsHideRedlines());
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf159027)
-{
- loadAndReload("tdf159027.odt");
- SwDoc* pDoc = getSwDoc();
- pDoc->getIDocumentFieldsAccess().UpdateFields(true);
-
- uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
- uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables( ), uno::UNO_QUERY);
- uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
- uno::Reference<text::XTextRange> xCellD9(xTextTable->getCellByName(u"D9"_ustr), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"70"_ustr, xCellD9->getString());
- uno::Reference<text::XTextRange> xCellE9(xTextTable->getCellByName(u"E9"_ustr), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"6"_ustr, xCellE9->getString());
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf163703)
-{
- // Given a document with italics autostyle in a comment
- loadAndReload("italics-in-comment.fodt");
-
- auto xFields(
- mxComponent.queryThrow<text::XTextFieldsSupplier>()->getTextFields()->createEnumeration());
- auto xComment(xFields->nextElement().queryThrow<text::XTextContent>());
- CPPUNIT_ASSERT(xComment.queryThrow<lang::XServiceInfo>()->supportsService(
- u"com.sun.star.text.textfield.Annotation"_ustr));
-
- auto xCommentText(getProperty<uno::Reference<css::text::XText>>(xComment, u"TextRange"_ustr));
- CPPUNIT_ASSERT(xCommentText);
- CPPUNIT_ASSERT_EQUAL(1, getParagraphs(xCommentText));
- auto xCommentPara(getParagraphOrTable(1, xCommentText).queryThrow<css::text::XTextRange>());
- CPPUNIT_ASSERT_EQUAL(u"lorem"_ustr, xCommentPara->getString());
-
- // Without the fix, this would fail with
- // - Expected: lo
- // - Actual : lorem
- // - run does not contain expected content
- // because direct formatting was dropped on export, and the comment was exported in one chunk
- auto x1stRun = getRun(xCommentPara, 1, "lo");
- CPPUNIT_ASSERT_EQUAL(css::awt::FontSlant_NONE,
- getProperty<css::awt::FontSlant>(x1stRun, u"CharPosture"_ustr));
-
- auto x2ndRun = getRun(xCommentPara, 2, "r");
- CPPUNIT_ASSERT_EQUAL(css::awt::FontSlant_ITALIC,
- getProperty<css::awt::FontSlant>(x2ndRun, u"CharPosture"_ustr));
-
- auto x3rdRun = getRun(xCommentPara, 3, "em");
- CPPUNIT_ASSERT_EQUAL(css::awt::FontSlant_NONE,
- getProperty<css::awt::FontSlant>(x3rdRun, u"CharPosture"_ustr));
-
- xmlDocUniquePtr pXml = parseExport(u"content.xml"_ustr);
- assertXPathContent(pXml, "//office:text/text:p/office:annotation/text:p", u"lorem");
- // Without the fix, this would fail with
- // - Expected: 1
- // - Actual : 0
- assertXPathChildren(pXml, "//office:text/text:p/office:annotation/text:p", 1);
- assertXPathContent(pXml, "//office:text/text:p/office:annotation/text:p/text:span", u"r");
- auto autostylename
- = getXPath(pXml, "//office:text/text:p/office:annotation/text:p/text:span", "style-name");
- OString autoStyleXPath = "//office:automatic-styles/style:style[@style:name='"
- + autostylename.toUtf8() + "']/style:text-properties";
- assertXPath(pXml, autoStyleXPath, "font-style", u"italic");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf36709)
-{
- // Verifies that loext:text-indent correctly round-trips
- loadAndReload("tdf36709.fodt");
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
-
- // Style P1 should have been rewritten as fo:text-indent
- assertXPath(pXmlDoc, "//style:style[@style:name='P1']/style:paragraph-properties[@fo:text-indent]", 1);
- assertXPath(pXmlDoc, "//style:style[@style:name='P1']/style:paragraph-properties[@loext:text-indent]", 0);
- assertXPath(pXmlDoc, "//style:style[@style:name='P1']/style:paragraph-properties", "text-indent", u"3in");
-
- // Style P2 should have round-tripped as loext:text-indent
- assertXPath(pXmlDoc, "//style:style[@style:name='P2']/style:paragraph-properties[@fo:text-indent]", 0);
- assertXPath(pXmlDoc, "//style:style[@style:name='P2']/style:paragraph-properties[@loext:text-indent]", 1);
- assertXPath(pXmlDoc, "//style:style[@style:name='P2']/style:paragraph-properties", "text-indent", u"6em");
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf163913)
-{
- // Verifies that loext:left-margin and loext:right-margin correctly round-trip
- loadAndReload("tdf163913.fodt");
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
-
- // Style P1 should have been rewritten as fo:margin-left
- assertXPath(pXmlDoc,
- "//style:style[@style:name='P1']/style:paragraph-properties[@fo:margin-left]", 1);
- assertXPath(pXmlDoc,
- "//style:style[@style:name='P1']/style:paragraph-properties[@loext:margin-left]",
- 0);
- assertXPath(pXmlDoc, "//style:style[@style:name='P1']/style:paragraph-properties",
- "margin-left", u"3in");
-
- // Style P2 should have round-tripped as loext:margin-left
- assertXPath(pXmlDoc,
- "//style:style[@style:name='P2']/style:paragraph-properties[@fo:margin-left]", 0);
- assertXPath(pXmlDoc,
- "//style:style[@style:name='P2']/style:paragraph-properties[@loext:margin-left]",
- 1);
- assertXPath(pXmlDoc, "//style:style[@style:name='P2']/style:paragraph-properties",
- "margin-left", u"6em");
-
- // Style P3 should have been rewritten as fo:margin-right
- assertXPath(pXmlDoc,
- "//style:style[@style:name='P3']/style:paragraph-properties[@fo:margin-right]", 1);
- assertXPath(pXmlDoc,
- "//style:style[@style:name='P3']/style:paragraph-properties[@loext:margin-right]",
- 0);
- assertXPath(pXmlDoc, "//style:style[@style:name='P3']/style:paragraph-properties",
- "margin-right", u"3in");
-
- // Style P4 should have round-tripped as loext:margin-right
- assertXPath(pXmlDoc,
- "//style:style[@style:name='P4']/style:paragraph-properties[@fo:margin-right]", 0);
- assertXPath(pXmlDoc,
- "//style:style[@style:name='P4']/style:paragraph-properties[@loext:margin-right]",
- 1);
- assertXPath(pXmlDoc, "//style:style[@style:name='P4']/style:paragraph-properties",
- "margin-right", u"6em");
-}
-
} // end of anonymous namespace
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/qa/extras/odfexport/odfexport3.cxx b/sw/qa/extras/odfexport/odfexport3.cxx
new file mode 100644
index 000000000000..82fcc59aae2e
--- /dev/null
+++ b/sw/qa/extras/odfexport/odfexport3.cxx
@@ -0,0 +1,1921 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <tools/color.hxx>
+#include <memory>
+#include <swmodeltestbase.hxx>
+
+#include <com/sun/star/awt/FontSlant.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/table/XCellRange.hpp>
+#include <com/sun/star/text/RelOrientation.hpp>
+#include <com/sun/star/text/XTextTablesSupplier.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <com/sun/star/text/WritingMode2.hpp>
+#include <com/sun/star/text/XTextDocument.hpp>
+#include <com/sun/star/container/XContentEnumerationAccess.hpp>
+#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
+#include <com/sun/star/text/XTextTable.hpp>
+
+#include <comphelper/sequenceashashmap.hxx>
+#include <vcl/filter/PDFiumLibrary.hxx>
+
+#include <sortedobjs.hxx>
+#include <flyfrm.hxx>
+#include <IDocumentLayoutAccess.hxx>
+#include <rootfrm.hxx>
+
+namespace
+{
+class Test : public SwModelTestBase
+{
+public:
+ Test()
+ : SwModelTestBase(u"/sw/qa/extras/odfexport/data/"_ustr, u"writer8"_ustr)
+ {
+ }
+};
+
+DECLARE_ODFEXPORT_TEST(testTdf111891_frameVertStyle, "tdf111891_frameVertStyle.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<beans::XPropertySet> xFrame(getShape(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(
+ drawing::TextVerticalAdjust_BOTTOM,
+ getProperty<drawing::TextVerticalAdjust>(xFrame, u"TextVerticalAdjust"_ustr));
+}
+
+DECLARE_ODFEXPORT_TEST(testShapeRelsize, "shape-relsize.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ // These were all 0, as style:rel-width/height was ignored on import for shapes.
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(40), getProperty<sal_Int16>(xShape, u"RelativeWidth"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(20), getProperty<sal_Int16>(xShape, u"RelativeHeight"_ustr));
+
+ // Relation was "page" for both width and height, should be "paragraph" for width.
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::FRAME,
+ getProperty<sal_Int16>(xShape, u"RelativeWidthRelation"_ustr));
+ // And make sure that height stays "page".
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME,
+ getProperty<sal_Int16>(xShape, u"RelativeHeightRelation"_ustr));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTextboxRoundedCorners)
+{
+ auto verify = [this]() {
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ comphelper::SequenceAsHashMap aCustomShapeGeometry(
+ getProperty<uno::Sequence<beans::PropertyValue>>(xShape, u"CustomShapeGeometry"_ustr));
+
+ // Test that the shape is a rounded rectangle.
+ CPPUNIT_ASSERT_EQUAL(u"round-rectangle"_ustr,
+ aCustomShapeGeometry[u"Type"_ustr].get<OUString>());
+
+ // The shape text should start with a table, with "a" in its A1 cell.
+ uno::Reference<text::XText> xText
+ = uno::Reference<text::XTextRange>(xShape, uno::UNO_QUERY_THROW)->getText();
+ uno::Reference<text::XTextTable> xTable(getParagraphOrTable(1, xText), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xCell(xTable->getCellByName(u"A1"_ustr), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"a"_ustr, xCell->getString());
+ };
+
+ createSwDoc("textbox-rounded-corners.odt");
+ verify();
+ saveAndReload(mpFilter);
+ verify();
+
+ // Table inside a textbox should be in the extension namespace.
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+ // This failed, as draw:custom-shape had a table:table child.
+ assertXPath(pXmlDoc, "//draw:custom-shape/loext:table", "name", u"Table1");
+}
+
+// test that import whitespace collapsing is compatible with old docs
+DECLARE_ODFEXPORT_TEST(testWhitespace, "whitespace.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(4, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<container::XEnumerationAccess> xPara;
+ uno::Reference<container::XEnumeration> xPortions;
+ uno::Reference<text::XTextRange> xPortion;
+ xPara.set(getParagraphOrTable(1), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(2), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
+ CPPUNIT_ASSERT_EQUAL(u"http://example.com/"_ustr,
+ getProperty<OUString>(xPortion, u"HyperLinkURL"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(3), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Ruby"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(OUString(), xPortion->getString());
+ CPPUNIT_ASSERT_EQUAL(u"foo"_ustr, getProperty<OUString>(xPortion, u"RubyText"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Ruby"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(OUString(), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(4), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"InContentMetadata"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ {
+ // what a stupid idea to require recursively enumerating this
+ uno::Reference<container::XEnumerationAccess> xMeta(
+ getProperty<uno::Reference<text::XTextContent>>(xPortion, u"InContentMetadata"_ustr),
+ uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xMetaPortions = xMeta->createEnumeration();
+ uno::Reference<text::XTextRange> xMP(xMetaPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xMP, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" "_ustr, xMP->getString());
+ CPPUNIT_ASSERT(!xMetaPortions->hasMoreElements());
+ }
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(5), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"TextField"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ {
+ // what a stupid idea to require recursively enumerating this
+ uno::Reference<container::XEnumerationAccess> xMeta(
+ getProperty<uno::Reference<text::XTextContent>>(xPortion, u"TextField"_ustr),
+ uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xMetaPortions = xMeta->createEnumeration();
+ uno::Reference<text::XTextRange> xMP(xMetaPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xMP, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" "_ustr, xMP->getString());
+ CPPUNIT_ASSERT(!xMetaPortions->hasMoreElements());
+ }
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(7), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Frame"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(8), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Frame"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(9), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Frame"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(10), uno::UNO_QUERY);
+ uno::Reference<container::XContentEnumerationAccess> xCEA(xPara, uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xFrames(
+ xCEA->createContentEnumeration(u"com.sun.star.text.TextContent"_ustr));
+ xFrames->nextElement(); // one at-paragraph frame
+ CPPUNIT_ASSERT(!xFrames->hasMoreElements());
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(11), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Footnote"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(12), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"TextField"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(13), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Annotation"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"AnnotationEnd"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(15), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(16), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(17), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Redline"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Redline"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(18), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Redline"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Redline"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(19), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"ReferenceMark"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(20), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"ReferenceMark"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"ReferenceMark"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(21), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"DocumentIndexMark"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(22), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"X "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"DocumentIndexMark"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" "_ustr, xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"DocumentIndexMark"_ustr,
+ getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, u"IsCollapsed"_ustr));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(xPortion, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u" X"_ustr, xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf136645, "tdf136645.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // Without the fix in place, this would have failed with
+ //- Expected: 2640
+ //- Actual : 3000
+ CPPUNIT_ASSERT_EQUAL(
+ sal_Int32(2640),
+ getXPath(pXmlDoc, "/root/page/body/section/column[1]/body/infos/bounds", "width")
+ .toInt32());
+
+ //- Expected: 6000
+ //- Actual : 6360
+ CPPUNIT_ASSERT_EQUAL(
+ sal_Int32(6000),
+ getXPath(pXmlDoc, "/root/page/body/section/column[2]/body/infos/bounds", "width")
+ .toInt32());
+}
+
+DECLARE_ODFEXPORT_TEST(testBtlrCell, "btlr-cell.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Without the accompanying fix in place, this test would have failed, as
+ // the btlr text direction in the A1 cell was lost on ODF import and
+ // export.
+ uno::Reference<text::XTextTablesSupplier> xSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xTables = xSupplier->getTextTables();
+ uno::Reference<text::XTextTable> xTable(xTables->getByName(u"Table1"_ustr), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xA1(xTable->getCellByName(u"A1"_ustr), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::BT_LR,
+ getProperty<sal_Int16>(xA1, u"WritingMode"_ustr));
+
+ uno::Reference<beans::XPropertySet> xB1(xTable->getCellByName(u"B1"_ustr), uno::UNO_QUERY);
+ auto nActual = getProperty<sal_Int16>(xB1, u"WritingMode"_ustr);
+ CPPUNIT_ASSERT(nActual == text::WritingMode2::LR_TB || nActual == text::WritingMode2::CONTEXT);
+
+ uno::Reference<beans::XPropertySet> xC1(xTable->getCellByName(u"C1"_ustr), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::TB_RL,
+ getProperty<sal_Int16>(xC1, u"WritingMode"_ustr));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testBtlrFrame)
+{
+ auto verify = [this](bool bIsExport = false) {
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Without the accompanying fix in place, this test would have failed, as
+ // the btlr text direction in the text frame was lost on ODF import and
+ // export.
+ uno::Reference<beans::XPropertySet> xTextFrame(getShape(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xTextFrame.is());
+
+ auto nActual = getProperty<sal_Int16>(xTextFrame, u"WritingMode"_ustr);
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::BT_LR, nActual);
+
+ // Without the accompanying fix in place, this test would have failed, as the fly frame had
+ // mbVertical==true, but mbVertLRBT==false, even if the writing direction in the doc model was
+ // btlr.
+ SwDoc* pDoc = getSwDoc();
+
+ SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout();
+ CPPUNIT_ASSERT(pLayout);
+
+ SwFrame* pPageFrame = pLayout->GetLower();
+ CPPUNIT_ASSERT(pPageFrame);
+ CPPUNIT_ASSERT(pPageFrame->IsPageFrame());
+
+ SwFrame* pBodyFrame = pPageFrame->GetLower();
+ CPPUNIT_ASSERT(pBodyFrame);
+ CPPUNIT_ASSERT(pBodyFrame->IsBodyFrame());
+
+ SwFrame* pBodyTextFrame = pBodyFrame->GetLower();
+ CPPUNIT_ASSERT(pBodyTextFrame);
+ CPPUNIT_ASSERT(pBodyTextFrame->IsTextFrame());
+
+ CPPUNIT_ASSERT(pBodyTextFrame->GetDrawObjs());
+ const SwSortedObjs& rAnchored = *pBodyTextFrame->GetDrawObjs();
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rAnchored.size());
+
+ auto* pFlyFrame = dynamic_cast<SwFlyFrame*>(rAnchored[0]);
+ CPPUNIT_ASSERT(pFlyFrame);
+ CPPUNIT_ASSERT(pFlyFrame->IsVertLRBT());
+
+ if (!bIsExport)
+ // Not yet exported, don't modify the doc model for test purposes.
+ return;
+
+ // Make sure that btlr -> tbrl transition clears the "BT" flag.
+ xTextFrame->setPropertyValue(u"WritingMode"_ustr, uno::Any(text::WritingMode2::TB_LR));
+ pFlyFrame = dynamic_cast<SwFlyFrame*>(rAnchored[0]);
+ CPPUNIT_ASSERT(pFlyFrame);
+ CPPUNIT_ASSERT(!pFlyFrame->IsVertLRBT());
+ };
+
+ createSwDoc("btlr-frame.odt");
+ verify();
+ saveAndReload(mpFilter);
+ verify(/*bIsExport*/ true);
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf129520)
+{
+ loadAndReload("tdf129520.docx");
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ CPPUNIT_ASSERT_EQUAL(u"M"_ustr, getParagraph(1)->getString());
+
+ // Without this fix in place, this test would have failed with
+ // - Expected: Ma
+ // - Actual :
+ CPPUNIT_ASSERT_EQUAL(u"Ma"_ustr, getParagraph(2)->getString());
+ CPPUNIT_ASSERT_EQUAL(u"1815"_ustr, getParagraph(3)->getString());
+}
+
+DECLARE_ODFEXPORT_TEST(testFdo86963, "fdo86963.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Export of this document failed with beans::UnknownPropertyException.
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf135338_firstLeftPageFooter, "tdf135338_firstLeftPageFooter.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(6, getPages());
+ // The first page is a left page only style, but it should still show the first page footer
+ // instead of the left footer text "EVEN/LEFT (Left page only)"
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ assertXPathContent(pXmlDoc, "/root/page[2]/footer/txt/text()", u"First (Left page only)");
+}
+
+DECLARE_ODFEXPORT_TEST(testGerrit13858, "gerrit13858.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Just make sure the output is valid.
+}
+DECLARE_ODFEXPORT_TEST(testOdtBorderTypes, "border_types.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ static const sal_Int32 lineStyles[] = { 0, 1, 2, 14, 16, 17, 3, 15 };
+ uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xParaEnumAccess(textDocument->getText(),
+ uno::UNO_QUERY);
+ // list of paragraphs
+ uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
+ do
+ {
+ uno::Reference<lang::XServiceInfo> xServiceInfo;
+ if (xParaEnum->nextElement() >>= xServiceInfo)
+ {
+ if (xServiceInfo->supportsService(u"com.sun.star.text.TextTable"_ustr))
+ {
+ uno::Reference<table::XCellRange> const xCellRange(xServiceInfo,
+ uno::UNO_QUERY_THROW);
+
+ for (sal_Int32 row = 0; row < 15; row += 2)
+ {
+ uno::Reference<table::XCell> xCell = xCellRange->getCellByPosition(1, row);
+ uno::Reference<beans::XPropertySet> xPropSet(xCell, uno::UNO_QUERY_THROW);
+
+ uno::Any aTopBorder = xPropSet->getPropertyValue(u"TopBorder"_ustr);
+ table::BorderLine2 aTopBorderLine;
+ if (aTopBorder >>= aTopBorderLine)
+ {
+ sal_Int32 lineStyle = aTopBorderLine.LineStyle;
+ CPPUNIT_ASSERT_EQUAL(lineStyles[row / 2], lineStyle);
+ }
+ } //end of the 'for' loop
+ }
+ }
+ } while (xParaEnum->hasMoreElements());
+}
+
+DECLARE_ODFEXPORT_TEST(testMasterPageWithDrawingPage, "sw_hatch.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<container::XNameAccess> xStyles(getStyles(u"PageStyles"_ustr));
+ uno::Reference<beans::XPropertySet> xStyle(xStyles->getByName(u"Standard"_ustr),
+ uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_HATCH,
+ getProperty<drawing::FillStyle>(xStyle, u"FillStyle"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"Blue -45 Degrees"_ustr,
+ getProperty<OUString>(xStyle, u"FillHatchName"_ustr));
+ CPPUNIT_ASSERT(!getProperty<sal_Bool>(xStyle, u"FillBackground"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), getProperty<sal_Int16>(xStyle, u"FillTransparence"_ustr));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testPageStyleBackgroundFullSizeOOo)
+{
+ loadAndReload("pagestyle_background_ooo33.odt");
+ CPPUNIT_ASSERT_EQUAL(3, getPages());
+ xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
+ // Standard
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"border");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"solid");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-color", u"#99ccff");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "opacity", u"100%");
+ // Endnote
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"border");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "repeat", u"repeat");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-image-ref-point", u"top-left");
+ // Footnote
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"border");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "repeat", u"stretch");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-image-ref-point", u"top-left");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testPageStyleBackgroundFullSizeLO64)
+{
+ loadAndReload("pagestyle_background_lo64.odt");
+ CPPUNIT_ASSERT_EQUAL(6, getPages());
+ xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
+ // Standard
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"full");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"solid");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-color", u"#99ccff");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "opacity", u"100%");
+ // Endnote
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"full");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "repeat", u"repeat");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-image-ref-point", u"top-left");
+ // Footnote
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"border");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "repeat", u"stretch");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-image-ref-point", u"top-left");
+ // Landscape
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Landscape']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"border");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Landscape']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Landscape']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "repeat", u"no-repeat");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Landscape']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-image-ref-point", u"top-left");
+ // Index
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Index']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"full");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Index']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"gradient");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Index']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "gradient-step-count", u"0");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Index']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "opacity", u"100%");
+ // First Page
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"full");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"hatch");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-hatch-solid", u"false");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "opacity", u"100%");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testPageStyleBackgroundFullSizeLO70)
+{
+ loadAndReload("pagestyle_background_lo70.odt");
+ CPPUNIT_ASSERT_EQUAL(6, getPages());
+ xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
+ // Standard
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"full");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"solid");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-color", u"#99ccff");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Standard']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "opacity", u"100%");
+ // Endnote
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"full");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "repeat", u"repeat");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Endnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-image-ref-point", u"top-left");
+ // Footnote
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"border");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "repeat", u"stretch");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Footnote']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-image-ref-point", u"top-left");
+ // Landscape
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Landscape']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"border");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Landscape']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Landscape']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "repeat", u"no-repeat");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Landscape']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-image-ref-point", u"top-left");
+ // Index
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Index']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"full");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Index']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"gradient");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Index']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "gradient-step-count", u"0");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='Index']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "opacity", u"100%");
+ // First Page
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "background-size", u"full");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill", u"hatch");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "fill-hatch-solid", u"false");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:style[@style:family='drawing-page' and @style:name = "
+ "/office:document-styles/office:master-styles/"
+ "style:master-page[@style:name='First_20_Page']/attribute::draw:style-name"
+ "]/style:drawing-page-properties",
+ "opacity", u"100%");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testFillBitmapUnused)
+{
+ loadAndReload("fillbitmap3.odt");
+ CPPUNIT_ASSERT_EQUAL(4, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // nav_5f_home and all its references are completely gone
+ xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
+
+ // paragraph style
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:name='Text_20_body']/"
+ "loext:graphic-properties",
+ "fill", u"solid");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:name='Text_20_body']/"
+ "loext:graphic-properties",
+ "fill-color", u"#c0c0c0");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:name='Text_20_body']/"
+ "loext:graphic-properties[@draw:fill-image-name]",
+ 0);
+
+ // page style page-layout
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm1']/style:page-layout-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm1']/style:page-layout-properties",
+ "fill-image-name", u"nav_5f_up");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm1']/style:header-style/"
+ "style:header-footer-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm1']/style:header-style/"
+ "style:header-footer-properties",
+ "fill-image-name", u"nav_5f_up");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm1']/style:footer-style/"
+ "style:header-footer-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm1']/style:footer-style/"
+ "style:header-footer-properties",
+ "fill-image-name", u"nav_5f_up");
+
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm2']/style:page-layout-properties",
+ "fill", u"solid");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm2']/"
+ "style:page-layout-properties[@draw:fill-image-name]",
+ 0);
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm2']/style:header-style/"
+ "style:header-footer-properties",
+ "fill", u"solid");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm2']/style:header-style/"
+ "style:header-footer-properties[@draw:fill-image-name]",
+ 0);
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm2']/style:footer-style/"
+ "style:header-footer-properties",
+ "fill", u"solid");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/"
+ "style:page-layout[@style:name='Mpm2']/style:footer-style/"
+ "style:header-footer-properties[@draw:fill-image-name]",
+ 0);
+
+ // page style drawing-page
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/style:style[@style:name='Mdp1']/"
+ "style:drawing-page-properties",
+ "fill", u"bitmap");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/style:style[@style:name='Mdp1']/"
+ "style:drawing-page-properties",
+ "fill-image-name", u"nav_5f_up");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/style:style[@style:name='Mdp2']/"
+ "style:drawing-page-properties",
+ "fill", u"solid");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/style:style[@style:name='Mdp2']/"
+ "style:drawing-page-properties",
+ "fill-color", u"#c0c0c0");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:automatic-styles/style:style[@style:name='Mdp2']/"
+ "style:drawing-page-properties[@draw:fill-image-name]",
+ 0);
+
+ // the named items
+ assertXPath(pXmlDoc, "/office:document-styles/office:styles/draw:fill-image", 1);
+ assertXPath(pXmlDoc, "/office:document-styles/office:styles/draw:fill-image", "name",
+ u"nav_5f_up");
+}
+
+DECLARE_ODFEXPORT_TEST(testCellUserDefineAttr, "userdefattr-tablecell.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<text::XTextTable> xTable(getParagraphOrTable(1), uno::UNO_QUERY);
+ uno::Reference<table::XCell> const xCellA1(xTable->getCellByName(u"A1"_ustr),
+ uno::UNO_SET_THROW);
+ uno::Reference<table::XCell> const xCellB1(xTable->getCellByName(u"B1"_ustr),
+ uno::UNO_SET_THROW);
+ uno::Reference<table::XCell> const xCellC1(xTable->getCellByName(u"C1"_ustr),
+ uno::UNO_SET_THROW);
+ getUserDefineAttribute(uno::Any(xCellA1), u"proName"_ustr, u"v1"_ustr);
+ getUserDefineAttribute(uno::Any(xCellB1), u"proName"_ustr, u"v2"_ustr);
+ getUserDefineAttribute(uno::Any(xCellC1), u"proName"_ustr, u"v3"_ustr);
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testEmbeddedPdf)
+{
+ auto pPdfium = vcl::pdf::PDFiumLibrary::get();
+ if (!pPdfium)
+ {
+ return;
+ }
+
+ auto verify = [this]() {
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ // This failed, pdf+png replacement graphics pair didn't survive an ODT roundtrip.
+ auto xReplacementGraphic
+ = getProperty<uno::Reference<graphic::XGraphic>>(xShape, u"ReplacementGraphic"_ustr);
+ CPPUNIT_ASSERT(xReplacementGraphic.is());
+
+ auto xGraphic = getProperty<uno::Reference<graphic::XGraphic>>(xShape, u"Graphic"_ustr);
+ CPPUNIT_ASSERT(xGraphic.is());
+ // This was image/x-vclgraphic, not exposing the info that the image is a PDF one.
+ CPPUNIT_ASSERT_EQUAL(u"application/pdf"_ustr,
+ getProperty<OUString>(xGraphic, u"MimeType"_ustr));
+ };
+
+ createSwDoc("embedded-pdf.odt");
+ verify();
+ saveAndReload(mpFilter);
+ verify();
+
+ uno::Sequence<uno::Any> aArgs{ uno::Any(maTempFile.GetURL()) };
+ uno::Reference<container::XNameAccess> xNameAccess(
+ m_xSFactory->createInstanceWithArguments(u"com.sun.star.packages.zip.ZipFileAccess"_ustr,
+ aArgs),
+ uno::UNO_QUERY);
+ bool bHasBitmap = false;
+ const uno::Sequence<OUString> aNames = xNameAccess->getElementNames();
+ for (const auto& rElementName : aNames)
+ {
+ if (rElementName.startsWith("Pictures") && rElementName.endsWith("png"))
+ {
+ bHasBitmap = true;
+ break;
+ }
+ }
+ // This failed, replacement was an svm file.
+ CPPUNIT_ASSERT(bHasBitmap);
+}
+
+DECLARE_ODFEXPORT_TEST(testTableStyles1, "table_styles_1.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Table styles basic graphic test.
+ // Doesn't cover all attributes.
+ uno::Reference<style::XStyleFamiliesSupplier> XFamiliesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xFamilies(XFamiliesSupplier->getStyleFamilies());
+ uno::Reference<container::XNameAccess> xCellFamily(xFamilies->getByName(u"CellStyles"_ustr),
+ uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xCell1Style;
+ xCellFamily->getByName(u"Test style.1"_ustr) >>= xCell1Style;
+
+ sal_Int32 nInt32 = 0xF0F0F0;
+ table::BorderLine2 oBorder;
+
+ CPPUNIT_ASSERT_EQUAL(Color(0xCC0000), getProperty<Color>(xCell1Style, u"BackColor"_ustr));
+ xCell1Style->getPropertyValue(u"WritingMode"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), nInt32);
+ xCell1Style->getPropertyValue(u"VertOrient"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
+ xCell1Style->getPropertyValue(u"BorderDistance"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
+ xCell1Style->getPropertyValue(u"LeftBorderDistance"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
+ xCell1Style->getPropertyValue(u"RightBorderDistance"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
+ xCell1Style->getPropertyValue(u"TopBorderDistance"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
+ xCell1Style->getPropertyValue(u"BottomBorderDistance"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
+ xCell1Style->getPropertyValue(u"RightBorder"_ustr) >>= oBorder;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), oBorder.Color);
+ xCell1Style->getPropertyValue(u"LeftBorder"_ustr) >>= oBorder;
+ CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, oBorder.Color));
+ xCell1Style->getPropertyValue(u"TopBorder"_ustr) >>= oBorder;
+ CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, oBorder.Color));
+ xCell1Style->getPropertyValue(u"BottomBorder"_ustr) >>= oBorder;
+ CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, oBorder.Color));
+}
+
+DECLARE_ODFEXPORT_TEST(testTableStyles2, "table_styles_2.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Table styles paragraph and char tests
+ // Doesn't cover all attributes.
+ // Problem: underline for table autoformat doesn't work.
+ uno::Reference<style::XStyleFamiliesSupplier> XFamiliesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xFamilies(XFamiliesSupplier->getStyleFamilies());
+ uno::Reference<container::XNameAccess> xTableFamily(xFamilies->getByName(u"TableStyles"_ustr),
+ uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xTableStyle(xTableFamily->getByName(u"Test style2"_ustr),
+ uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xCell1Style;
+
+ float fFloat = 0.;
+ bool bBool = true;
+ sal_Int16 nInt16 = 0xF0;
+ sal_Int32 nInt32 = 0xF0F0F0;
+ OUString sString;
+ awt::FontSlant eCharPosture;
+
+ // cell 1
+ xTableStyle->getByName(u"first-row-start-column"_ustr) >>= xCell1Style;
+ xCell1Style->getPropertyValue(u"ParaAdjust"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
+ CPPUNIT_ASSERT_EQUAL(Color(0xFF6600), getProperty<Color>(xCell1Style, u"CharColor"_ustr));
+ xCell1Style->getPropertyValue(u"CharContoured"_ustr) >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(false, bBool);
+ xCell1Style->getPropertyValue(u"CharShadowed"_ustr) >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(true, bBool);
+ xCell1Style->getPropertyValue(u"CharStrikeout"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nInt32);
+ xCell1Style->getPropertyValue(u"CharUnderline"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
+ // underline color is not working for table autoformats
+ // xCell1Style->getPropertyValue("CharUnderlineHasColor") >>= bBool;
+ // CPPUNIT_ASSERT_EQUAL(bool(false), bBool);
+ // xCell1Style->getPropertyValue("CharUnderlineColor") >>= nInt64;
+ // CPPUNIT_ASSERT_EQUAL(sal_Int64(-1), nInt64);
+ // standard font
+ xCell1Style->getPropertyValue(u"CharHeight"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(18.), fFloat);
+ xCell1Style->getPropertyValue(u"CharWeight"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue(u"CharPosture"_ustr) >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue(u"CharFontName"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Courier"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontStyleName"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString(), sString);
+ xCell1Style->getPropertyValue(u"CharFontFamily"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ xCell1Style->getPropertyValue(u"CharFontPitch"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), nInt16);
+ // cjk font
+ xCell1Style->getPropertyValue(u"CharHeightAsian"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(18.), fFloat);
+ xCell1Style->getPropertyValue(u"CharWeightAsian"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue(u"CharPostureAsian"_ustr) >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue(u"CharFontNameAsian"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Courier"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontStyleNameAsian"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Regularna"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontFamilyAsian"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ xCell1Style->getPropertyValue(u"CharFontPitchAsian"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), nInt16);
+ // ctl font
+ xCell1Style->getPropertyValue(u"CharHeightComplex"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(18.), fFloat);
+ xCell1Style->getPropertyValue(u"CharWeightComplex"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue(u"CharPostureComplex"_ustr) >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue(u"CharFontNameComplex"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Courier"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontStyleNameComplex"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Regularna"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontFamilyComplex"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ xCell1Style->getPropertyValue(u"CharFontPitchComplex"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), nInt16);
+
+ // cell 2
+ xTableStyle->getByName(u"first-row"_ustr) >>= xCell1Style;
+ xCell1Style->getPropertyValue(u"ParaAdjust"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), nInt32);
+ CPPUNIT_ASSERT_EQUAL(Color(0x9900FF), getProperty<Color>(xCell1Style, u"CharColor"_ustr));
+ xCell1Style->getPropertyValue(u"CharContoured"_ustr) >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(true, bBool);
+ xCell1Style->getPropertyValue(u"CharShadowed"_ustr) >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(false, bBool);
+ xCell1Style->getPropertyValue(u"CharStrikeout"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
+ xCell1Style->getPropertyValue(u"CharUnderline"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), nInt32);
+ // underline color test place
+ // standard font
+ xCell1Style->getPropertyValue(u"CharHeight"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue(u"CharWeight"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(150.), fFloat);
+ xCell1Style->getPropertyValue(u"CharPosture"_ustr) >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue(u"CharFontName"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Liberation Serif"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontStyleName"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString(), sString);
+ xCell1Style->getPropertyValue(u"CharFontFamily"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(3), nInt16);
+ xCell1Style->getPropertyValue(u"CharFontPitch"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ // cjk font
+ xCell1Style->getPropertyValue(u"CharHeightAsian"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue(u"CharWeightAsian"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(150.), fFloat);
+ xCell1Style->getPropertyValue(u"CharPostureAsian"_ustr) >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue(u"CharFontNameAsian"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Liberation Serif"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontStyleNameAsian"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Pogrubiona"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontFamilyAsian"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(3), nInt16);
+ xCell1Style->getPropertyValue(u"CharFontPitchAsian"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ // ctl font
+ xCell1Style->getPropertyValue(u"CharHeightComplex"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue(u"CharWeightComplex"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(150.), fFloat);
+ xCell1Style->getPropertyValue(u"CharPostureComplex"_ustr) >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue(u"CharFontNameComplex"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Liberation Serif"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontStyleNameComplex"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Pogrubiona"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontFamilyComplex"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(3), nInt16);
+ xCell1Style->getPropertyValue(u"CharFontPitchComplex"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+
+ // cell 3
+ xTableStyle->getByName(u"first-row-even-column"_ustr) >>= xCell1Style;
+ xCell1Style->getPropertyValue(u"ParaAdjust"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nInt32);
+ CPPUNIT_ASSERT_EQUAL(COL_BLACK, getProperty<Color>(xCell1Style, u"CharColor"_ustr));
+ xCell1Style->getPropertyValue(u"CharContoured"_ustr) >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(true, bBool);
+ xCell1Style->getPropertyValue(u"CharShadowed"_ustr) >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(true, bBool);
+ xCell1Style->getPropertyValue(u"CharStrikeout"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
+ xCell1Style->getPropertyValue(u"CharUnderline"_ustr) >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(6), nInt32);
+ // underline color test place
+ // standard font
+ xCell1Style->getPropertyValue(u"CharHeight"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue(u"CharWeight"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue(u"CharPosture"_ustr) >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_ITALIC, eCharPosture);
+ xCell1Style->getPropertyValue(u"CharFontName"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Open Sans"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontStyleName"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString(), sString);
+ xCell1Style->getPropertyValue(u"CharFontFamily"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), nInt16);
+ xCell1Style->getPropertyValue(u"CharFontPitch"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ // cjk font
+ xCell1Style->getPropertyValue(u"CharHeightAsian"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue(u"CharWeightAsian"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue(u"CharPostureAsian"_ustr) >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_ITALIC, eCharPosture);
+ xCell1Style->getPropertyValue(u"CharFontNameAsian"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Open Sans"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontStyleNameAsian"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Kursywa"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontFamilyAsian"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), nInt16);
+ xCell1Style->getPropertyValue(u"CharFontPitchAsian"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ // ctl font
+ xCell1Style->getPropertyValue(u"CharHeightComplex"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue(u"CharWeightComplex"_ustr) >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue(u"CharPostureComplex"_ustr) >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_ITALIC, eCharPosture);
+ xCell1Style->getPropertyValue(u"CharFontNameComplex"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Open Sans"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontStyleNameComplex"_ustr) >>= sString;
+ CPPUNIT_ASSERT_EQUAL(u"Kursywa"_ustr, sString);
+ xCell1Style->getPropertyValue(u"CharFontFamilyComplex"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), nInt16);
+ xCell1Style->getPropertyValue(u"CharFontPitchComplex"_ustr) >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTableStyles3)
+{
+ loadAndReload("table_styles_3.odt");
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // This test checks if default valued attributes aren't exported.
+ xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
+
+ // <style:paragraph-properties>
+ // For this element the only exported attributes are: "border-left", "border-bottom"
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test "
+ "style3.2']/style:table-cell-properties",
+ "background-color");
+ // border-left place
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test "
+ "style3.2']/style:table-cell-properties",
+ "border-right");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test "
+ "style3.2']/style:table-cell-properties",
+ "border-top");
+ // border-bottom place
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test "
+ "style3.2']/style:table-cell-properties",
+ "padding");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test "
+ "style3.2']/style:table-cell-properties",
+ "padding-left");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test "
+ "style3.2']/style:table-cell-properties",
+ "padding-right");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test "
+ "style3.2']/style:table-cell-properties",
+ "padding-top");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test "
+ "style3.2']/style:table-cell-properties",
+ "padding-bottom");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test "
+ "style3.2']/style:table-cell-properties",
+ "writing-mode");
+
+ // <style:paragraph-properties> should be absent, because it has only "text-align" attribute, which shouldn't be exported.
+ // Assume that style:paragraph-properties and style:text-properties exists.
+ assertXPathChildren(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']",
+ 2);
+
+ // <style:text-properties>
+ // For this element the only exported attributes are: "use-window-font-color place", "font-size-asian", "font-name-asian", "font-family-asian", "font-name-complex", "font-family-complex"
+ // use-window-font-color place
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "text-shadow");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "text-outline");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "text-line-through-style");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "text-line-through-type");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "text-underline-style");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "text-underline-color");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-size");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-weight");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-style");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-name");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-family");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-style-name");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-family-generic");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-pitch");
+ // font-size-asian place
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-weight-asian");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-style-asian");
+ // font-name-asian place
+ // font-family-asian place
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-style-name-asian");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-family-generic-asian");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-pitch-asian");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-size-complex");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-weight-complex");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-style-complex");
+ // font-name-complex place
+ // font-family-complex place
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-style-name-complex");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-family-generic-complex");
+ assertXPathNoAttribute(pXmlDoc,
+ "/office:document-styles/office:styles/"
+ "style:style[@style:display-name='Test style3.2']/style:text-properties",
+ "font-pitch-complex");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTableStyles4)
+{
+ createSwDoc("table_styles_4.odt");
+ // Test if loaded styles overwrite existing styles
+ uno::Reference<style::XStyleFamiliesSupplier> XFamiliesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xFamilies(XFamiliesSupplier->getStyleFamilies());
+ uno::Reference<container::XNameAccess> xTableFamily(xFamilies->getByName(u"TableStyles"_ustr),
+ uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xTableStyle(xTableFamily->getByName(u"Green"_ustr),
+ uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xCell1Style;
+
+ xTableStyle->getByName(u"first-row-start-column"_ustr) >>= xCell1Style;
+ CPPUNIT_ASSERT_EQUAL(COL_LIGHTGREEN, getProperty<Color>(xCell1Style, u"BackColor"_ustr));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTableStyles5)
+{
+ loadAndReload("table_styles_5.odt");
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Test if cell styles doesn't have a style:parent-style-name attribute.
+ xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
+
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.1']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.2']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.3']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.4']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.5']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.6']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.7']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.8']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.9']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.10']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.11']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.12']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.13']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.14']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.15']",
+ "parent-style-name");
+ assertXPathNoAttribute(
+ pXmlDoc,
+ "/office:document-styles/office:styles/style:style[@style:display-name='Test style.16']",
+ "parent-style-name");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf145226)
+{
+ loadAndReload("tdf145226.fodt");
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+
+ assertXPathNoAttribute(
+ pXmlDoc, "/office:document-content/office:body/office:text/table:table/table:table-row[1]",
+ "style-name");
+ assertXPathNoAttribute(
+ pXmlDoc, "/office:document-content/office:body/office:text/table:table/table:table-row[2]",
+ "style-name");
+ assertXPathNoAttribute(
+ pXmlDoc, "/office:document-content/office:body/office:text/table:table/table:table-row[3]",
+ "style-name");
+ assertXPathNoAttribute(
+ pXmlDoc, "/office:document-content/office:body/office:text/table:table/table:table-row[4]",
+ "style-name");
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf101710, "tdf101710.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Test that number format of cell styles can be imported and exported.
+ uno::Reference<beans::XPropertySet> xStyle(
+ getStyles(u"CellStyles"_ustr)->getByName(u"Test Style.11"_ustr), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_uInt32(10104), getProperty<sal_uInt32>(xStyle, u"NumberFormat"_ustr));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf129568)
+{
+ loadAndReload("tdf129568.fodt");
+ // Test that export doesn't fail, and that style is imported and in use.
+ uno::Reference<style::XStyle> xStyle(
+ getStyles(u"CellStyles"_ustr)->getByName(u"Default Style.1"_ustr), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xStyle->isInUse());
+ CPPUNIT_ASSERT_EQUAL(COL_YELLOW, getProperty<Color>(xStyle, u"BackColor"_ustr));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf129568ui)
+{
+ loadAndReload("tdf129568-ui.fodt");
+ // Same as above, but styles referenced by UI name.
+ uno::Reference<style::XStyle> xStyle(
+ getStyles(u"CellStyles"_ustr)->getByName(u"Default Style.1"_ustr), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xStyle->isInUse());
+ CPPUNIT_ASSERT_EQUAL(COL_YELLOW, getProperty<Color>(xStyle, u"BackColor"_ustr));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf164712)
+{
+ loadAndReload("tdf164712.odt");
+ auto xText = getParagraph(1)->getText();
+ CPPUNIT_ASSERT(xText.is());
+ auto xCursor(xText->createTextCursorByRange(getParagraph(1)));
+ CPPUNIT_ASSERT(xCursor.is());
+ uno::Reference<beans::XPropertySet> xPropertySet(xCursor, uno::UNO_QUERY);
+ Color nColor;
+ // without the fix in place, this test would have failed here
+ CPPUNIT_ASSERT(
+ !css::uno::fromAny(xPropertySet->getPropertyValue(u"CharBackColor"_ustr), &nColor));
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf132642_keepWithNextTable, "tdf132642_keepWithNextTable.odt")
+{
+ // Since the row is very big, it should split over two pages.
+ // Since up to this point we haven't tried to make it match MS formats, it should start on page 1.
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Row splits over 2 pages", 2, getPages());
+}
+
+DECLARE_ODFEXPORT_TEST(testArabicZeroNumberingRTF, "arabic-zero-numbering.rtf")
+{
+ auto xNumberingRules = getProperty<uno::Reference<container::XIndexAccess>>(
+ getParagraph(1), u"NumberingRules"_ustr);
+ comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 64
+ // - Actual : 4
+ // i.e. numbering type was ARABIC, not ARABIC_ZERO.
+ CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
+ aMap[u"NumberingType"_ustr].get<sal_uInt16>());
+}
+
+DECLARE_ODFEXPORT_TEST(testArabicZeroNumbering, "arabic-zero-numbering.docx")
+{
+ auto xNumberingRules = getProperty<uno::Reference<container::XIndexAccess>>(
+ getParagraph(1), u"NumberingRules"_ustr);
+ comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 64
+ // - Actual : 4
+ // i.e. numbering type was ARABIC, not ARABIC_ZERO.
+ CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
+ aMap[u"NumberingType"_ustr].get<sal_uInt16>());
+}
+
+DECLARE_ODFEXPORT_TEST(testArabicZero3Numbering, "arabic-zero3-numbering.docx")
+{
+ auto xNumberingRules = getProperty<uno::Reference<container::XIndexAccess>>(
+ getParagraph(1), u"NumberingRules"_ustr);
+ comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 65
+ // - Actual : 4
+ // i.e. numbering type was ARABIC, not ARABIC_ZERO3.
+ CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO3),
+ aMap[u"NumberingType"_ustr].get<sal_uInt16>());
+}
+
+DECLARE_ODFEXPORT_TEST(testArabicZero4Numbering, "arabic-zero4-numbering.docx")
+{
+ auto xNumberingRules = getProperty<uno::Reference<container::XIndexAccess>>(
+ getParagraph(1), u"NumberingRules"_ustr);
+ comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 66
+ // - Actual : 4
+ // i.e. numbering type was ARABIC, not ARABIC_ZERO4.
+ CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO4),
+ aMap[u"NumberingType"_ustr].get<sal_uInt16>());
+}
+
+DECLARE_ODFEXPORT_TEST(testArabicZero5Numbering, "arabic-zero5-numbering.docx")
+{
+ auto xNumberingRules = getProperty<uno::Reference<container::XIndexAccess>>(
+ getParagraph(1), u"NumberingRules"_ustr);
+ comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 67
+ // - Actual : 4
+ // i.e. numbering type was ARABIC, not ARABIC_ZERO5.
+ CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(style::NumberingType::ARABIC_ZERO5),
+ aMap[u"NumberingType"_ustr].get<sal_uInt16>());
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testImageMimetype)
+{
+ loadAndReload("image-mimetype.odt");
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Test that the loext:mimetype attribute is written for exported images, tdf#109202
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+ // Original image (svg)
+ assertXPath(pXmlDoc, "/office:document-content/office:body/office:text/text:p/draw:frame/"
+ "draw:image[@draw:mime-type='image/svg+xml']");
+}
+
+} // end of anonymous namespace
+CPPUNIT_PLUGIN_IMPLEMENT();
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/odfexport/odfexport4.cxx b/sw/qa/extras/odfexport/odfexport4.cxx
new file mode 100644
index 000000000000..ce5349cded29
--- /dev/null
+++ b/sw/qa/extras/odfexport/odfexport4.cxx
@@ -0,0 +1,1497 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <swmodeltestbase.hxx>
+
+#include <com/sun/star/awt/FontSlant.hpp>
+#include <com/sun/star/beans/XPropertyState.hpp>
+#include <com/sun/star/style/VerticalAlignment.hpp>
+#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
+#include <com/sun/star/text/ColumnSeparatorStyle.hpp>
+#include <com/sun/star/text/XDocumentIndex.hpp>
+#include <com/sun/star/text/XDocumentIndexesSupplier.hpp>
+#include <com/sun/star/text/XTextColumns.hpp>
+#include <com/sun/star/text/XTextField.hpp>
+#include <com/sun/star/text/XTextFieldsSupplier.hpp>
+#include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
+#include <com/sun/star/text/XTextTable.hpp>
+#include <com/sun/star/text/XTextTablesSupplier.hpp>
+#include <com/sun/star/util/XRefreshable.hpp>
+#include <unotools/localedatawrapper.hxx>
+#include <comphelper/configuration.hxx>
+#include <comphelper/sequenceashashmap.hxx>
+#include <wrtsh.hxx>
+#include <rootfrm.hxx>
+#include <docsh.hxx>
+#include <IDocumentFieldsAccess.hxx>
+#include <IDocumentLayoutAccess.hxx>
+#include <IDocumentLinksAdministration.hxx>
+#include <sfx2/linkmgr.hxx>
+#include <officecfg/Office/Common.hxx>
+
+namespace
+{
+class Test : public SwModelTestBase
+{
+public:
+ Test()
+ : SwModelTestBase(u"/sw/qa/extras/odfexport/data/"_ustr, u"writer8"_ustr)
+ {
+ }
+};
+
+CPPUNIT_TEST_FIXTURE(Test, tdf135942)
+{
+ loadAndReload("nestedTableInFooter.odt");
+ // All table autostyles should be collected, including nested, and must not crash.
+
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+ xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
+
+ assertXPath(
+ pXmlDoc,
+ "/office:document-styles/office:automatic-styles/style:style[@style:family='table']", 2);
+}
+
+CPPUNIT_TEST_FIXTURE(Test, tdf150927)
+{
+ // Similar to tdf135942
+
+ loadAndReload("table-in-frame-in-table-in-header-base.odt");
+ // All table autostyles should be collected, including nested, and must not crash.
+
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+ xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
+
+ assertXPath(
+ pXmlDoc,
+ "/office:document-styles/office:automatic-styles/style:style[@style:family='table']", 2);
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testPersonalMetaData)
+{
+ // 1. Remove personal info, keep user info
+ auto pBatch(comphelper::ConfigurationChanges::create());
+ officecfg::Office::Common::Security::Scripting::RemovePersonalInfoOnSaving::set(true, pBatch);
+ officecfg::Office::Common::Security::Scripting::KeepDocUserInfoOnSaving::set(true, pBatch);
+ pBatch->commit();
+
+ loadAndReload("personalmetadata.odt");
+ xmlDocUniquePtr pXmlDoc = parseExport(u"meta.xml"_ustr);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:initial-creator", 1);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:creation-date", 1);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/dc:date", 1);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/dc:creator", 1);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:printed-by", 1);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:print-date", 1);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:editing-duration", 0);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:editing-cycles", 0);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:template", 0);
+ pXmlDoc = parseExport(u"settings.xml"_ustr);
+ assertXPath(pXmlDoc,
+ "/office:document-settings/office:settings/config:config-item-set[2]/"
+ "config:config-item[@config:name='PrinterName']",
+ 0);
+ assertXPath(pXmlDoc,
+ "/office:document-settings/office:settings/config:config-item-set[2]/"
+ "config:config-item[@config:name='PrinterSetup']",
+ 0);
+
+ // 2. Remove user info too
+ officecfg::Office::Common::Security::Scripting::KeepDocUserInfoOnSaving::set(false, pBatch);
+ pBatch->commit();
+
+ loadAndReload("personalmetadata.odt");
+ pXmlDoc = parseExport(u"meta.xml"_ustr);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:initial-creator", 0);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:creation-date", 0);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/dc:date", 0);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/dc:creator", 0);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:printed-by", 0);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:print-date", 0);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:editing-duration", 0);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:editing-cycles", 0);
+ assertXPath(pXmlDoc, "/office:document-meta/office:meta/meta:template", 0);
+ pXmlDoc = parseExport(u"settings.xml"_ustr);
+ assertXPath(pXmlDoc,
+ "/office:document-settings/office:settings/config:config-item-set[2]/"
+ "config:config-item[@config:name='PrinterName']",
+ 0);
+ assertXPath(pXmlDoc,
+ "/office:document-settings/office:settings/config:config-item-set[2]/"
+ "config:config-item[@config:name='PrinterSetup']",
+ 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Test, tdf151100)
+{
+ // Similar to tdf135942
+
+ loadAndReload("tdf151100.docx");
+ // All table autostyles should be collected, including nested, and must not crash.
+
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+ xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
+
+ assertXPath(
+ pXmlDoc,
+ "/office:document-styles/office:automatic-styles/style:style[@style:family='table']", 1);
+}
+DECLARE_ODFEXPORT_TEST(testGutterLeft, "gutter-left.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<beans::XPropertySet> xPageStyle;
+ getStyles(u"PageStyles"_ustr)->getByName(u"Standard"_ustr) >>= xPageStyle;
+ sal_Int32 nGutterMargin{};
+ xPageStyle->getPropertyValue(u"GutterMargin"_ustr) >>= nGutterMargin;
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 1270
+ // - Actual : 0
+ // i.e. gutter margin was lost.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1270), nGutterMargin);
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf52065_centerTabs, "testTdf52065_centerTabs.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ sal_Int32 nTabStop
+ = getXPath(pXmlDoc, "//body/txt[4]/SwParaPortion/SwLineLayout/child::*[3]", "width")
+ .toInt32();
+ // Without the fix, the text was unseen, with a tabstop width of 64057. It should be 3057
+ CPPUNIT_ASSERT(nTabStop < 4000);
+ CPPUNIT_ASSERT(3000 < nTabStop);
+ assertXPath(pXmlDoc, "//body/txt[4]/SwParaPortion/SwLineLayout/child::*[4]", "portion",
+ u"Pečiatka zamestnávateľa");
+
+ // tdf#149547: __XXX___invalid CharacterStyles should not be imported/exported
+ CPPUNIT_ASSERT(!getStyles(u"CharacterStyles"_ustr)->hasByName(u"__XXX___invalid"_ustr));
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf104254_noHeaderWrapping, "tdf104254_noHeaderWrapping.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ sal_Int32 nParaHeight = getXPath(pXmlDoc, "//header/txt[1]/infos/bounds", "height").toInt32();
+ // The wrapping on header images is supposed to be ignored (since OOo for MS compat reasons),
+ // thus making the text run underneath the image. Before, height was 1104. Now it is 552.
+ CPPUNIT_ASSERT_MESSAGE("Paragraph should fit on a single line", nParaHeight < 600);
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf131025_noZerosInTable, "tdf131025_noZerosInTable.odt")
+{
+ uno::Reference<text::XTextTablesSupplier> xSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xTables = xSupplier->getTextTables();
+ uno::Reference<text::XTextTable> xTable(xTables->getByName(u"Table1"_ustr), uno::UNO_QUERY);
+
+ uno::Reference<text::XTextRange> xCell(xTable->getCellByName(u"C3"_ustr), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"5 gp"_ustr, xCell->getString());
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf153090, "Custom-Style-TOC.docx")
+{
+ uno::Reference<text::XDocumentIndexesSupplier> xIndexSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexes(xIndexSupplier->getDocumentIndexes());
+ uno::Reference<text::XDocumentIndex> xTOC(xIndexes->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"_CustomImageCaption"_ustr,
+ getProperty<OUString>(xTOC, u"CreateFromParagraphStyle"_ustr));
+ // tdf#153659 this was imported as "table of figures" instead of "Figure Index 1"
+ // thus custom settings were not retained after ToF update
+ CPPUNIT_ASSERT_EQUAL(u"Figure Index 1"_ustr,
+ getProperty<OUString>(getParagraph(1), u"ParaStyleName"_ustr));
+
+ xTOC->update();
+ OUString const tocContent(xTOC->getAnchor()->getString());
+ CPPUNIT_ASSERT(tocContent.indexOf("1. Abb. Ein Haus") != -1);
+ CPPUNIT_ASSERT(tocContent.indexOf("2. Abb.Ein Schiff!") != -1);
+ CPPUNIT_ASSERT(tocContent.indexOf(u"1. ábra Small house with Hungarian description category")
+ != -1);
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf143793_noBodyWrapping, "tdf143793_noBodyWrapping.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(2, getShapes());
+ // Preserve old document wrapping. Compat "Use OOo 1.1 text wrapping around objects"
+ // Originally, the body text did not wrap around spill-over header images
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Fits on one page", 1, getPages());
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ sal_Int32 nParaHeight
+ = getXPath(pXmlDoc, "//page[1]/header/txt[1]/infos/bounds", "height").toInt32();
+ // The header text should wrap around the header image in OOo 1.1 and prior,
+ // thus taking up two lines instead of one. One line is 276. It should be 552.
+ CPPUNIT_ASSERT_MESSAGE("Header text should fill two lines", nParaHeight > 400);
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf137199)
+{
+ loadAndReload("tdf137199.docx");
+ CPPUNIT_ASSERT_EQUAL(u">1<"_ustr,
+ getProperty<OUString>(getParagraph(1), u"ListLabelString"_ustr));
+
+ CPPUNIT_ASSERT_EQUAL(u"1)"_ustr,
+ getProperty<OUString>(getParagraph(2), u"ListLabelString"_ustr));
+
+ CPPUNIT_ASSERT_EQUAL(u"HELLO1WORLD!"_ustr,
+ getProperty<OUString>(getParagraph(3), u"ListLabelString"_ustr));
+
+ CPPUNIT_ASSERT_EQUAL(u"HELLO2WORLD!"_ustr,
+ getProperty<OUString>(getParagraph(4), u"ListLabelString"_ustr));
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf143605, "tdf143605.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // With numbering type "none" there should be just prefix & suffix
+ CPPUNIT_ASSERT_EQUAL(u"."_ustr,
+ getProperty<OUString>(getParagraph(1), u"ListLabelString"_ustr));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf165115)
+{
+ // Test saving a template file with password protection
+ createSwDoc();
+ saveAndReload("writer8_template", "test");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf57317_autoListName)
+{
+ createSwDoc("tdf57317_autoListName.odt");
+ // The list style (from styles.xml) overrides a duplicate named auto-style
+ //uno::Any aNumStyle = getStyles("NumberingStyles")->getByName("L1");
+ //CPPUNIT_ASSERT(aNumStyle.hasValue());
+ uno::Reference<beans::XPropertySet> xPara(getParagraph(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u">1<"_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"L1"_ustr, getProperty<OUString>(xPara, u"NumberingStyleName"_ustr));
+
+ dispatchCommand(mxComponent, u".uno:SelectAll"_ustr, {});
+ dispatchCommand(mxComponent, u".uno:DefaultBullet"_ustr, {});
+
+ // This was failing with a duplicate auto numbering style name of L1 instead of a unique name,
+ // thus it was showing the same info as before the bullet modification.
+ saveAndReload(u"writer8"_ustr);
+ xPara.set(getParagraph(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u""_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
+
+ uno::Reference<container::XIndexAccess> xLevels(xPara->getPropertyValue(u"NumberingRules"_ustr),
+ uno::UNO_QUERY);
+ uno::Sequence<beans::PropertyValue> aProps;
+ xLevels->getByIndex(0) >>= aProps;
+ for (beans::PropertyValue const& rProp : aProps)
+ {
+ if (rProp.Name == "BulletChar")
+ return;
+ }
+ CPPUNIT_FAIL("no BulletChar property");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testListFormatDocx)
+{
+ loadAndReload("listformat.docx");
+ // Ensure in resulting ODT we also have not just prefix/suffix, but custom delimiters
+ CPPUNIT_ASSERT_EQUAL(u">1<"_ustr,
+ getProperty<OUString>(getParagraph(1), u"ListLabelString"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u">>1/1<<"_ustr,
+ getProperty<OUString>(getParagraph(2), u"ListLabelString"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u">>1/1/1<<"_ustr,
+ getProperty<OUString>(getParagraph(3), u"ListLabelString"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u">>1/1/2<<"_ustr,
+ getProperty<OUString>(getParagraph(4), u"ListLabelString"_ustr));
+
+ // Check also that in numbering styles we have num-list-format defined
+ xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
+ "text:list-level-style-number[@text:level='1']",
+ "num-list-format", u">%1%<");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
+ "text:list-level-style-number[@text:level='2']",
+ "num-list-format", u">>%1%/%2%<<");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
+ "text:list-level-style-number[@text:level='3']",
+ "num-list-format", u">>%1%/%2%/%3%<<");
+
+ // But for compatibility there are still prefix/suffix
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
+ "text:list-level-style-number[@text:level='1']",
+ "num-prefix", u">");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
+ "text:list-level-style-number[@text:level='1']",
+ "num-suffix", u"<");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
+ "text:list-level-style-number[@text:level='2']",
+ "num-prefix", u">>");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
+ "text:list-level-style-number[@text:level='2']",
+ "num-suffix", u"<<");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
+ "text:list-level-style-number[@text:level='3']",
+ "num-prefix", u">>");
+ assertXPath(pXmlDoc,
+ "/office:document-styles/office:styles/text:list-style[@style:name='WWNum1']/"
+ "text:list-level-style-number[@text:level='3']",
+ "num-suffix", u"<<");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testShapeWithHyperlink)
+{
+ loadAndSave("shape-with-hyperlink.odt");
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+ // Check how conversion from prefix/suffix to list format did work
+ assertXPath(pXmlDoc, "/office:document-content/office:body/office:text/text:p/draw:a", "href",
+ u"http://shape.com/");
+}
+
+DECLARE_ODFEXPORT_TEST(testShapesHyperlink, "shapes-hyperlink.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ CPPUNIT_ASSERT_EQUAL(5, getShapes());
+ uno::Reference<beans::XPropertySet> const xPropSet1(getShape(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"http://libreoffice.org/"_ustr,
+ getProperty<OUString>(xPropSet1, u"Hyperlink"_ustr));
+
+ uno::Reference<beans::XPropertySet> const xPropSet2(getShape(2), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"http://libreoffice2.org/"_ustr,
+ getProperty<OUString>(xPropSet2, u"Hyperlink"_ustr));
+
+ uno::Reference<beans::XPropertySet> const xPropSet3(getShape(3), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"http://libreoffice3.org/"_ustr,
+ getProperty<OUString>(xPropSet3, u"Hyperlink"_ustr));
+
+ uno::Reference<beans::XPropertySet> const xPropSet4(getShape(4), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"http://libreoffice4.org/"_ustr,
+ getProperty<OUString>(xPropSet4, u"Hyperlink"_ustr));
+
+ uno::Reference<beans::XPropertySet> const xPropSet5(getShape(5), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"http://libreoffice5.org/"_ustr,
+ getProperty<OUString>(xPropSet5, u"Hyperlink"_ustr));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testListFormatOdt)
+{
+ auto verify = [this]() {
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Ensure in resulting ODT we also have not just prefix/suffix, but custom delimiters
+ CPPUNIT_ASSERT_EQUAL(u">1<"_ustr,
+ getProperty<OUString>(getParagraph(1), u"ListLabelString"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u">>1.1<<"_ustr,
+ getProperty<OUString>(getParagraph(2), u"ListLabelString"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u">>1.1.1<<"_ustr,
+ getProperty<OUString>(getParagraph(3), u"ListLabelString"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u">>1.1.2<<"_ustr,
+ getProperty<OUString>(getParagraph(4), u"ListLabelString"_ustr));
+ };
+
+ createSwDoc("listformat.odt");
+ verify();
+ saveAndReload(mpFilter);
+ verify();
+
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+ // Check how conversion from prefix/suffix to list format did work
+ assertXPath(
+ pXmlDoc,
+ "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
+ "text:list-level-style-number[@text:level='1']",
+ "num-list-format", u">%1%<");
+ assertXPath(
+ pXmlDoc,
+ "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
+ "text:list-level-style-number[@text:level='2']",
+ "num-list-format", u">>%1%.%2%<<");
+ assertXPath(
+ pXmlDoc,
+ "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
+ "text:list-level-style-number[@text:level='3']",
+ "num-list-format", u">>%1%.%2%.%3%<<");
+
+ // But for compatibility there are still prefix/suffix as they were before
+ assertXPath(
+ pXmlDoc,
+ "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
+ "text:list-level-style-number[@text:level='1']",
+ "num-prefix", u">");
+ assertXPath(
+ pXmlDoc,
+ "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
+ "text:list-level-style-number[@text:level='1']",
+ "num-suffix", u"<");
+ assertXPath(
+ pXmlDoc,
+ "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
+ "text:list-level-style-number[@text:level='2']",
+ "num-prefix", u">>");
+ assertXPath(
+ pXmlDoc,
+ "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
+ "text:list-level-style-number[@text:level='2']",
+ "num-suffix", u"<<");
+ assertXPath(
+ pXmlDoc,
+ "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
+ "text:list-level-style-number[@text:level='3']",
+ "num-prefix", u">>");
+ assertXPath(
+ pXmlDoc,
+ "/office:document-content/office:automatic-styles/text:list-style[@style:name='L1']/"
+ "text:list-level-style-number[@text:level='3']",
+ "num-suffix", u"<<");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testStyleLink)
+{
+ // Given a document with a para and a char style that links each other, when loading that
+ // document:
+ createSwDoc("style-link.fodt");
+
+ // Then make sure the char style links the para one:
+ uno::Any aCharStyle
+ = getStyles(u"CharacterStyles"_ustr)->getByName(u"List Paragraph Char"_ustr);
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: List Paragraph
+ // - Actual :
+ // i.e. the linked style was lost on import.
+ CPPUNIT_ASSERT_EQUAL(u"List Paragraph"_ustr,
+ getProperty<OUString>(aCharStyle, u"LinkStyle"_ustr));
+ uno::Any aParaStyle = getStyles(u"ParagraphStyles"_ustr)->getByName(u"List Paragraph"_ustr);
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: List Paragraph Char
+ // - Actual :
+ // i.e. the linked style was lost on import.
+ CPPUNIT_ASSERT_EQUAL(u"List Paragraph Char"_ustr,
+ getProperty<OUString>(aParaStyle, u"LinkStyle"_ustr));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, tdf120972)
+{
+ loadAndReload("table_number_format_3.docx");
+
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+ OUString cDecimal(SvtSysLocale().GetLocaleData().getNumDecimalSep()[0]);
+ assertXPath(
+ pXmlDoc,
+ "//style:style[@style:name='P1']/style:paragraph-properties/style:tab-stops/style:tab-stop",
+ "char", cDecimal);
+ assertXPath(
+ pXmlDoc,
+ "//style:style[@style:name='P2']/style:paragraph-properties/style:tab-stops/style:tab-stop",
+ "char", cDecimal);
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf114287, "tdf114287.odt")
+{
+ uno::Reference<container::XIndexAccess> const xLevels1(
+ getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(2),
+ u"NumberingRules"_ustr));
+ uno::Reference<container::XNamed> const xNum1(xLevels1, uno::UNO_QUERY);
+ ::comphelper::SequenceAsHashMap props1(xLevels1->getByIndex(0));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-700), props1[u"FirstLineIndent"_ustr].get<sal_Int32>());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1330), props1[u"IndentAt"_ustr].get<sal_Int32>());
+
+ // 1: automatic style applies list-style-name and margin-left
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-1000),
+ getProperty<sal_Int32>(getParagraph(2), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(5001),
+ getProperty<sal_Int32>(getParagraph(2), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(2), u"ParaRightMargin"_ustr));
+
+ // list is continued
+ uno::Reference<container::XNamed> const xNum2(
+ getProperty<uno::Reference<container::XNamed>>(getParagraph(9), u"NumberingRules"_ustr));
+ CPPUNIT_ASSERT_EQUAL(xNum1->getName(), xNum2->getName());
+
+ // 2: style applies list-style-name and margin-left, list applies list-style-name
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-1000),
+ getProperty<sal_Int32>(getParagraph(9), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(5001),
+ getProperty<sal_Int32>(getParagraph(9), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(9), u"ParaRightMargin"_ustr));
+
+ // list is continued
+ uno::Reference<container::XNamed> const xNum3(
+ getProperty<uno::Reference<container::XNamed>>(getParagraph(16), u"NumberingRules"_ustr));
+ CPPUNIT_ASSERT_EQUAL(xNum1->getName(), xNum3->getName());
+
+ // 3: style applies margin-left, automatic style applies list-style-name
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-1000),
+ getProperty<sal_Int32>(getParagraph(16), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(5001),
+ getProperty<sal_Int32>(getParagraph(16), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(16), u"ParaRightMargin"_ustr));
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/infos/prtBounds", "left", u"2268");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/infos/prtBounds", "right", u"11339");
+ // the list style name of the list is the same as the list style name of the
+ // paragraph, but in any case the margins of the paragraph take precedence
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[9]/infos/prtBounds", "left", u"2268");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[9]/infos/prtBounds", "right", u"11339");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[16]/infos/prtBounds", "left", u"357");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[16]/infos/prtBounds", "right", u"11339");
+}
+
+DECLARE_ODFEXPORT_TEST(testSectionColumnSeparator, "section-columns-separator.fodt")
+{
+ // tdf#150235: due to wrong types used in column export, 'style:height' and 'style:style'
+ // attributes were exported incorrectly for 'style:column-sep' element
+ auto xSection
+ = getProperty<uno::Reference<uno::XInterface>>(getParagraph(1), u"TextSection"_ustr);
+ auto xColumns = getProperty<uno::Reference<text::XTextColumns>>(xSection, u"TextColumns"_ustr);
+ CPPUNIT_ASSERT(xColumns);
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xColumns->getColumnCount());
+
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 50
+ // - Actual : 100
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(50),
+ getProperty<sal_Int32>(xColumns, u"SeparatorLineRelativeHeight"_ustr));
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 2
+ // - Actual : 0
+ CPPUNIT_ASSERT_EQUAL(css::text::ColumnSeparatorStyle::DOTTED,
+ getProperty<sal_Int16>(xColumns, u"SeparatorLineStyle"_ustr));
+
+ // Check the rest of the properties, too
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xColumns, u"IsAutomatic"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(600),
+ getProperty<sal_Int32>(xColumns, u"AutomaticDistance"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(9),
+ getProperty<sal_Int32>(xColumns, u"SeparatorLineWidth"_ustr));
+ CPPUNIT_ASSERT_EQUAL(Color(0x99, 0xAA, 0xBB),
+ getProperty<Color>(xColumns, u"SeparatorLineColor"_ustr));
+ CPPUNIT_ASSERT_EQUAL(css::style::VerticalAlignment_BOTTOM,
+ getProperty<css::style::VerticalAlignment>(
+ xColumns, u"SeparatorLineVerticalAlignment"_ustr));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xColumns, u"SeparatorLineIsOn"_ustr));
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf78510, "WordTest_edit.odt")
+{
+ uno::Reference<container::XIndexAccess> const xLevels1(
+ getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1),
+ u"NumberingRules"_ustr));
+ ::comphelper::SequenceAsHashMap props1(xLevels1->getByIndex(0));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-1000), props1[u"FirstLineIndent"_ustr].get<sal_Int32>());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2000), props1[u"IndentAt"_ustr].get<sal_Int32>());
+
+ // 1: inherited from paragraph style and overridden by list
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(1), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1270),
+ getProperty<sal_Int32>(getParagraph(1), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(1), u"ParaRightMargin"_ustr));
+ // 2: as 1 + paragraph sets firstline
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1000),
+ getProperty<sal_Int32>(getParagraph(2), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1270),
+ getProperty<sal_Int32>(getParagraph(2), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(2), u"ParaRightMargin"_ustr));
+ // 3: as 1 + paragraph sets textleft
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(3), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3000),
+ getProperty<sal_Int32>(getParagraph(3), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(3), u"ParaRightMargin"_ustr));
+ // 4: as 1 + paragraph sets firstline, textleft
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-2000),
+ getProperty<sal_Int32>(getParagraph(4), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3000),
+ getProperty<sal_Int32>(getParagraph(4), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(4), u"ParaRightMargin"_ustr));
+ // 5: as 1 + paragraph sets firstline
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-2000),
+ getProperty<sal_Int32>(getParagraph(5), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1270),
+ getProperty<sal_Int32>(getParagraph(5), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(5), u"ParaRightMargin"_ustr));
+ // 6: as 1
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(6), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1270),
+ getProperty<sal_Int32>(getParagraph(6), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(6), u"ParaRightMargin"_ustr));
+
+ uno::Reference<container::XIndexAccess> const xLevels8(
+ getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(8),
+ u"NumberingRules"_ustr));
+ ::comphelper::SequenceAsHashMap props8(xLevels8->getByIndex(0));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1000), props8[u"FirstLineIndent"_ustr].get<sal_Int32>());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1000), props8[u"IndentAt"_ustr].get<sal_Int32>());
+
+ // 8: inherited from paragraph style and overridden by list
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(8), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1270),
+ getProperty<sal_Int32>(getParagraph(8), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(8), u"ParaRightMargin"_ustr));
+ // 9: as 8 + paragraph sets firstline
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2000),
+ getProperty<sal_Int32>(getParagraph(9), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1270),
+ getProperty<sal_Int32>(getParagraph(9), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(9), u"ParaRightMargin"_ustr));
+ // 10: as 8 + paragraph sets textleft
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(10), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3000),
+ getProperty<sal_Int32>(getParagraph(10), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(10), u"ParaRightMargin"_ustr));
+ // 11: as 8 + paragraph sets firstline, textleft
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-2000),
+ getProperty<sal_Int32>(getParagraph(11), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3000),
+ getProperty<sal_Int32>(getParagraph(11), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(11), u"ParaRightMargin"_ustr));
+ // 12: as 8 + paragraph sets firstline
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-2000),
+ getProperty<sal_Int32>(getParagraph(12), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1270),
+ getProperty<sal_Int32>(getParagraph(12), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(12), u"ParaRightMargin"_ustr));
+ // 13: as 8
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(13), u"ParaFirstLineIndent"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1270),
+ getProperty<sal_Int32>(getParagraph(13), u"ParaLeftMargin"_ustr));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0),
+ getProperty<sal_Int32>(getParagraph(13), u"ParaRightMargin"_ustr));
+
+ // unfortunately it appears that the portions don't have a position
+ // so it's not possible to check the first-line-offset that's applied
+ // (the first-line-indent is computed on the fly in SwTextMargin when
+ // painting)
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/infos/prtBounds", "left", u"567");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/infos/prtBounds", "right", u"9359");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/infos/prtBounds", "left", u"1134");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/infos/prtBounds", "right", u"9359");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[3]/infos/prtBounds", "left", u"1134");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[3]/infos/prtBounds", "right", u"9359");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[4]/infos/prtBounds", "left", u"567");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[4]/infos/prtBounds", "right", u"9359");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[5]/infos/prtBounds", "left", u"0");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[5]/infos/prtBounds", "right", u"9359");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[6]/infos/prtBounds", "left", u"567");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[6]/infos/prtBounds", "right", u"9359");
+
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[8]/infos/prtBounds", "left", u"567");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[8]/infos/prtBounds", "right", u"9359");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[9]/infos/prtBounds", "left", u"567");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[9]/infos/prtBounds", "right", u"9359");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[10]/infos/prtBounds", "left", u"1701");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[10]/infos/prtBounds", "right", u"9359");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[11]/infos/prtBounds", "left", u"567");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[11]/infos/prtBounds", "right", u"9359");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[12]/infos/prtBounds", "left", u"-567");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[12]/infos/prtBounds", "right", u"9359");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[13]/infos/prtBounds", "left", u"567");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[13]/infos/prtBounds", "right", u"9359");
+ }
+
+ // now check the positions where text is actually painted -
+ // wonder how fragile this is...
+ // FIXME some platform difference, 1st one is 2306 on Linux, 3087 on WNT ?
+ // some Mac has 3110
+#if !defined(_WIN32) && !defined(MACOSX)
+ {
+ std::shared_ptr<GDIMetaFile> pMetaFile = getSwDocShell()->GetPreviewMetaFile();
+ MetafileXmlDump aDumper;
+ xmlDocUniquePtr pXmlDoc = dumpAndParse(aDumper, *pMetaFile);
+
+ // 1: inherited from paragraph style and overridden by list
+ // bullet char is extra
+
+ assertXPath(pXmlDoc, "//textarray[1]", "x", u"2306");
+ // text is after a tab from list - haven't checked if that is correct?
+ assertXPath(pXmlDoc, "//textarray[2]", "x", u"2873");
+ // second line
+ assertXPath(pXmlDoc, "//textarray[3]", "x", u"2873");
+ // 2: as 1 + paragraph sets firstline
+ assertXPath(pXmlDoc, "//textarray[4]", "x", u"3440");
+ assertXPath(pXmlDoc, "//textarray[5]", "x", u"3593");
+ assertXPath(pXmlDoc, "//textarray[6]", "x", u"2873");
+ // 3: as 1 + paragraph sets textleft
+ assertXPath(pXmlDoc, "//textarray[7]", "x", u"2873");
+ assertXPath(pXmlDoc, "//textarray[8]", "x", u"3440");
+ assertXPath(pXmlDoc, "//textarray[9]", "x", u"3440");
+ // 4: as 1 + paragraph sets firstline, textleft
+ assertXPath(pXmlDoc, "//textarray[10]", "x", u"2306");
+ assertXPath(pXmlDoc, "//textarray[11]", "x", u"3440");
+ assertXPath(pXmlDoc, "//textarray[12]", "x", u"3440");
+ // 5: as 1 + paragraph sets firstline
+ assertXPath(pXmlDoc, "//textarray[13]", "x", u"1739");
+ assertXPath(pXmlDoc, "//textarray[14]", "x", u"2873");
+ assertXPath(pXmlDoc, "//textarray[15]", "x", u"2873");
+ // 6: as 1
+ assertXPath(pXmlDoc, "//textarray[16]", "x", u"2306");
+ assertXPath(pXmlDoc, "//textarray[17]", "x", u"2873");
+
+ // 8: inherited from paragraph style and overridden by list
+ assertXPath(pXmlDoc, "//textarray[18]", "x", u"2873");
+ assertXPath(pXmlDoc, "//textarray[19]", "x", u"3746");
+ assertXPath(pXmlDoc, "//textarray[20]", "x", u"2306");
+ // 9: as 8 + paragraph sets firstline
+ assertXPath(pXmlDoc, "//textarray[21]", "x", u"3440");
+ assertXPath(pXmlDoc, "//textarray[22]", "x", u"3746");
+ assertXPath(pXmlDoc, "//textarray[23]", "x", u"2306");
+ // 10: as 8 + paragraph sets textleft
+ assertXPath(pXmlDoc, "//textarray[24]", "x", u"4007");
+ assertXPath(pXmlDoc, "//textarray[25]", "x", u"4880");
+ assertXPath(pXmlDoc, "//textarray[26]", "x", u"3440");
+ // 11: as 8 + paragraph sets firstline, textleft
+ assertXPath(pXmlDoc, "//textarray[27]", "x", u"2306");
+ assertXPath(pXmlDoc, "//textarray[28]", "x", u"3440");
+ assertXPath(pXmlDoc, "//textarray[29]", "x", u"3440");
+ // 12: as 8 + paragraph sets firstline
+ assertXPath(pXmlDoc, "//textarray[30]", "x", u"1172");
+ assertXPath(pXmlDoc, "//textarray[31]", "x", u"1739");
+ assertXPath(pXmlDoc, "//textarray[32]", "x", u"2306");
+ // 13: as 8
+ assertXPath(pXmlDoc, "//textarray[33]", "x", u"2873");
+ assertXPath(pXmlDoc, "//textarray[34]", "x", u"3746");
+ }
+#endif
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testParagraphMarkerMarkupRoundtrip)
+{
+ loadAndReload("ParagraphMarkerMarkup.fodt");
+ // Test that the markup stays at save-and-reload
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+ OUString autostyle = getXPath(pXmlDoc, "//office:body/office:text/text:p", "marker-style-name");
+ OString style_text_properties
+ = "/office:document-content/office:automatic-styles/style:style[@style:name='"
+ + autostyle.toUtf8() + "']/style:text-properties";
+ assertXPath(pXmlDoc, style_text_properties, "font-size", u"9pt");
+ assertXPath(pXmlDoc, style_text_properties, "color", u"#ff0000");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testCommentStyles)
+{
+ createSwDoc();
+
+ auto xFactory(mxComponent.queryThrow<lang::XMultiServiceFactory>());
+ auto xComment(xFactory->createInstance(u"com.sun.star.text.textfield.Annotation"_ustr)
+ .queryThrow<text::XTextContent>());
+ auto xCommentText(getProperty<uno::Reference<text::XTextRange>>(xComment, u"TextRange"_ustr));
+ xCommentText->setString(u"Hello World"_ustr);
+ xCommentText.queryThrow<beans::XPropertySet>()->setPropertyValue(u"ParaStyleName"_ustr,
+ uno::Any(u"Heading"_ustr));
+
+ xComment->attach(getParagraph(1)->getEnd());
+
+ saveAndReload(u"writer8"_ustr);
+
+ auto xFields(
+ mxComponent.queryThrow<text::XTextFieldsSupplier>()->getTextFields()->createEnumeration());
+ xComment.set(xFields->nextElement().queryThrow<text::XTextContent>());
+ CPPUNIT_ASSERT(xComment.queryThrow<lang::XServiceInfo>()->supportsService(
+ u"com.sun.star.text.textfield.Annotation"_ustr));
+
+ xCommentText.set(getProperty<uno::Reference<text::XTextRange>>(xComment, u"TextRange"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"Heading"_ustr,
+ getProperty<OUString>(xCommentText, u"ParaStyleName"_ustr));
+
+ auto xStyleFamilies(
+ mxComponent.queryThrow<style::XStyleFamiliesSupplier>()->getStyleFamilies());
+ auto xParaStyles(xStyleFamilies->getByName(u"ParagraphStyles"_ustr));
+ auto xStyle(xParaStyles.queryThrow<container::XNameAccess>()->getByName(u"Heading"_ustr));
+ CPPUNIT_ASSERT_EQUAL(getProperty<float>(xStyle, u"CharHeight"_ustr),
+ getProperty<float>(xCommentText, u"CharHeight"_ustr));
+ CPPUNIT_ASSERT_EQUAL(
+ beans::PropertyState_DEFAULT_VALUE,
+ xCommentText.queryThrow<beans::XPropertyState>()->getPropertyState(u"CharHeight"_ustr));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf150408_IsLegal)
+{
+ loadAndReload("IsLegal.fodt");
+
+ // Second level's numbering should use Arabic numbers for first level reference
+ auto xPara = getParagraph(1);
+ CPPUNIT_ASSERT_EQUAL(u"CH I"_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
+ xPara = getParagraph(2);
+ CPPUNIT_ASSERT_EQUAL(u"Sect 1.01"_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
+ xPara = getParagraph(3);
+ CPPUNIT_ASSERT_EQUAL(u"CH II"_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
+ xPara = getParagraph(4);
+ CPPUNIT_ASSERT_EQUAL(u"Sect 2.01"_ustr, getProperty<OUString>(xPara, u"ListLabelString"_ustr));
+
+ // Test that the markup stays at save-and-reload
+ xmlDocUniquePtr pXmlDoc = parseExport(u"styles.xml"_ustr);
+ assertXPath(
+ pXmlDoc,
+ "/office:document-styles/office:styles/text:outline-style/text:outline-level-style[2]",
+ "is-legal", u"true");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf159382)
+{
+ // Testing NoGapAfterNoteNumber compat option
+
+ createSwDoc("footnote_spacing_hanging_para.docx");
+ // 1. Make sure that DOCX import sets NoGapAfterNoteNumber option, and creates
+ // correct layout
+ {
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(true),
+ xSettings->getPropertyValue(u"NoGapAfterNoteNumber"_ustr));
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ sal_Int32 width
+ = getXPath(pXmlDoc,
+ "/root/page/ftncont/ftn/txt/SwParaPortion/SwLineLayout/SwFieldPortion",
+ "width")
+ .toInt32();
+ CPPUNIT_ASSERT(width);
+ CPPUNIT_ASSERT_LESS(sal_Int32(100), width); // It was 720, i.e. 0.5 inch
+ }
+
+ saveAndReload(mpFilter);
+ // 2. Make sure that exported document has NoGapAfterNoteNumber option set,
+ // and has correct layout
+ {
+ xmlDocUniquePtr pXmlDoc = parseExport(u"settings.xml"_ustr);
+ assertXPathContent(pXmlDoc, "//config:config-item[@config:name='NoGapAfterNoteNumber']",
+ u"true");
+
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(true),
+ xSettings->getPropertyValue(u"NoGapAfterNoteNumber"_ustr));
+
+ pXmlDoc = parseLayoutDump();
+ sal_Int32 width
+ = getXPath(pXmlDoc,
+ "/root/page/ftncont/ftn/txt/SwParaPortion/SwLineLayout/SwFieldPortion",
+ "width")
+ .toInt32();
+ CPPUNIT_ASSERT(width);
+ CPPUNIT_ASSERT_LESS(sal_Int32(100), width);
+ }
+
+ createSwDoc("footnote_spacing_hanging_para.doc");
+ // 3. Make sure that DOC import sets NoGapAfterNoteNumber option, and creates
+ // correct layout
+ {
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(true),
+ xSettings->getPropertyValue(u"NoGapAfterNoteNumber"_ustr));
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ sal_Int32 width
+ = getXPath(pXmlDoc,
+ "/root/page/ftncont/ftn/txt/SwParaPortion/SwLineLayout/SwFieldPortion",
+ "width")
+ .toInt32();
+ CPPUNIT_ASSERT(width);
+ CPPUNIT_ASSERT_LESS(sal_Int32(100), width);
+ }
+
+ createSwDoc("footnote_spacing_hanging_para.rtf");
+ // 4. Make sure that RTF import sets NoGapAfterNoteNumber option, and creates
+ // correct layout
+ {
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(true),
+ xSettings->getPropertyValue(u"NoGapAfterNoteNumber"_ustr));
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ sal_Int32 width
+ = getXPath(pXmlDoc,
+ "/root/page/ftncont/ftn/txt/SwParaPortion/SwLineLayout/SwFieldPortion",
+ "width")
+ .toInt32();
+ CPPUNIT_ASSERT(width);
+ CPPUNIT_ASSERT_LESS(sal_Int32(100), width);
+ }
+
+ createSwDoc();
+ // 5. Make sure that a new Writer document has this setting set to false
+ {
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(false),
+ xSettings->getPropertyValue(u"NoGapAfterNoteNumber"_ustr));
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf159438)
+{
+ // Given a text with bookmarks, where an end of one bookmark is the position of another,
+ // and the start of a third
+ loadAndReload("bookmark_order.fodt");
+ auto xPara = getParagraph(1);
+
+ // Check that the order of runs is correct (bookmarks don't overlap)
+
+ {
+ auto run = getRun(xPara, 1);
+ CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(run, u"IsStart"_ustr));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsCollapsed"_ustr));
+ auto named = getProperty<uno::Reference<container::XNamed>>(run, u"Bookmark"_ustr);
+ CPPUNIT_ASSERT_EQUAL(u"bookmark1"_ustr, named->getName());
+ }
+
+ {
+ auto run = getRun(xPara, 2);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"foo"_ustr, run->getString());
+ }
+
+ {
+ auto run = getRun(xPara, 3);
+ CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsStart"_ustr));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsCollapsed"_ustr));
+ auto named = getProperty<uno::Reference<container::XNamed>>(run, u"Bookmark"_ustr);
+ CPPUNIT_ASSERT_EQUAL(u"bookmark1"_ustr, named->getName());
+ }
+
+ {
+ auto run = getRun(xPara, 4);
+ CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(run, u"IsStart"_ustr));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(run, u"IsCollapsed"_ustr));
+ auto named = getProperty<uno::Reference<container::XNamed>>(run, u"Bookmark"_ustr);
+ CPPUNIT_ASSERT_EQUAL(u"bookmark2"_ustr, named->getName());
+ }
+
+ {
+ auto run = getRun(xPara, 5);
+ CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(run, u"IsStart"_ustr));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsCollapsed"_ustr));
+ auto named = getProperty<uno::Reference<container::XNamed>>(run, u"Bookmark"_ustr);
+ CPPUNIT_ASSERT_EQUAL(u"bookmark3"_ustr, named->getName());
+ }
+
+ {
+ auto run = getRun(xPara, 6);
+ CPPUNIT_ASSERT_EQUAL(u"Text"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(u"bar"_ustr, run->getString());
+ }
+
+ {
+ auto run = getRun(xPara, 7);
+ CPPUNIT_ASSERT_EQUAL(u"Bookmark"_ustr, getProperty<OUString>(run, u"TextPortionType"_ustr));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsStart"_ustr));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(run, u"IsCollapsed"_ustr));
+ auto named = getProperty<uno::Reference<container::XNamed>>(run, u"Bookmark"_ustr);
+ CPPUNIT_ASSERT_EQUAL(u"bookmark3"_ustr, named->getName());
+ }
+
+ // Test that the markup stays at save-and-reload
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+
+ assertXPathNodeName(pXmlDoc, "//office:body/office:text/text:p/*[1]", "bookmark-start");
+ assertXPath(pXmlDoc, "//office:body/office:text/text:p/*[1]", "name", u"bookmark1");
+
+ // Without the fix in place, this would fail with
+ // - Expected: bookmark-end
+ // - Actual : bookmark-start
+ // - In XPath '//office:body/office:text/text:p/*[2]' name of node is incorrect
+ assertXPathNodeName(pXmlDoc, "//office:body/office:text/text:p/*[2]", "bookmark-end");
+ assertXPath(pXmlDoc, "//office:body/office:text/text:p/*[2]", "name", u"bookmark1");
+
+ assertXPathNodeName(pXmlDoc, "//office:body/office:text/text:p/*[3]", "bookmark");
+ assertXPath(pXmlDoc, "//office:body/office:text/text:p/*[3]", "name", u"bookmark2");
+
+ assertXPathNodeName(pXmlDoc, "//office:body/office:text/text:p/*[4]", "bookmark-start");
+ assertXPath(pXmlDoc, "//office:body/office:text/text:p/*[4]", "name", u"bookmark3");
+
+ assertXPathNodeName(pXmlDoc, "//office:body/office:text/text:p/*[5]", "bookmark-end");
+ assertXPath(pXmlDoc, "//office:body/office:text/text:p/*[5]", "name", u"bookmark3");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf160700)
+{
+ // Given a document with an empty numbered paragraph, and a cross-reference to it
+ loadAndReload("tdf160700.odt");
+
+ // Refresh fields and ensure cross-reference to numbered para is okay
+ auto xTextFieldsSupplier(mxComponent.queryThrow<text::XTextFieldsSupplier>());
+ auto xFieldsAccess(xTextFieldsSupplier->getTextFields());
+
+ xFieldsAccess.queryThrow<util::XRefreshable>()->refresh();
+
+ auto xFields(xFieldsAccess->createEnumeration());
+ CPPUNIT_ASSERT(xFields->hasMoreElements());
+ auto xTextField(xFields->nextElement().queryThrow<text::XTextField>());
+ // Save must not create markup with text:bookmark-end element before text:bookmark-start
+ // Without the fix, this would fail with
+ // - Expected: 1
+ // - Actual : Error: Reference source not found
+ // i.e., the bookmark wasn't imported, and the field had no proper source
+ CPPUNIT_ASSERT_EQUAL(u"1"_ustr, xTextField->getPresentation(false));
+
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+ // Check that we export the bookmark in the empty paragraph as a single text:bookmark
+ // element. Another valid markup is text:bookmark-start followed by text:bookmark-end
+ // (in that order). The problem was, that text:bookmark-end was before text:bookmark-start.
+ assertXPathChildren(pXmlDoc, "//office:text/text:list/text:list-item/text:p", 1);
+ assertXPath(pXmlDoc, "//office:text/text:list/text:list-item/text:p/text:bookmark");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf160253_ordinary_numbering)
+{
+ // Given a document with a list, and an out-of-the-list paragraph in the middle, having an
+ // endnote, which has a paragraph in another list.
+ // Before the fix, this already failed with
+ // Error: "list2916587379" is referenced by an IDREF, but not defined.
+ loadAndReload("tdf160253_ordinary_numbering.fodt");
+
+ // Make sure that the fourth paragraph has correct number - it was "1." before the fix
+ CPPUNIT_ASSERT_EQUAL(u"3."_ustr,
+ getProperty<OUString>(getParagraph(4), u"ListLabelString"_ustr));
+
+ // Make sure that we emit an identifier for the first list, and refer to it in the continuation
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+ // This failed before the fix, because 'xml:id' attribute wasn't emitted
+ OUString firstListId = getXPath(pXmlDoc, "//office:body/office:text/text:list[1]", "id");
+ CPPUNIT_ASSERT(!firstListId.isEmpty());
+ assertXPath(pXmlDoc, "//office:body/office:text/text:list[2]", "continue-list", firstListId);
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf160253_outline_numbering)
+{
+ // Given a document with an outline (chapter) numbering, and a paragraph in the middle, having
+ // an endnote, which has a paragraph in a list.
+ // Before the fix, this already failed with
+ // Error: "list2916587379" is referenced by an IDREF, but not defined.
+ loadAndReload("tdf160253_outline_numbering.fodt");
+
+ // Make sure that the third paragraph has correct number - it was "1" before the fix
+ CPPUNIT_ASSERT_EQUAL(u"2"_ustr,
+ getProperty<OUString>(getParagraph(3), u"ListLabelString"_ustr));
+
+ // The difference with the ordinary numbering is that for outline numbering, the list element
+ // isn't really necessary. It is a TODO to fix the output, and not export the list.
+ // xmlDocUniquePtr pXmlDoc = parseExport("content.xml");
+ // assertXPath(pXmlDoc, "//office:body/office:text/text:list", 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTableInFrameAnchoredToPage)
+{
+ // Given a table in a frame anchored to a page:
+ // it must not assert on export because of missing format for an exported table
+ loadAndReload("table_in_frame_to_page.fodt");
+
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+ auto AutoStyleUsedIn = [this, &pXmlDoc](const OString& path, const char* attr) -> OString {
+ const OUString styleName = getXPath(pXmlDoc, path, attr);
+ return "//office:automatic-styles/style:style[@style:name='" + styleName.toUtf8() + "']";
+ };
+ static constexpr OString xPathTextBox
+ = "//office:body/office:text/draw:frame/draw:text-box"_ostr;
+
+ // Check also, that autostyles defined inside that frame are stored correctly. If not, then
+ // these paragraphs would refer to styles in <office::styles>, not in <office:automatic-styles>,
+ // without the 'italic' and 'bold' attributes.
+ OString P = AutoStyleUsedIn(xPathTextBox + "/text:p", "style-name");
+ assertXPath(pXmlDoc, P + "/style:text-properties", "font-weight", u"bold");
+
+ P = AutoStyleUsedIn(xPathTextBox + "/table:table/table:table-row[1]/table:table-cell[1]/text:p",
+ "style-name");
+ assertXPath(pXmlDoc, P + "/style:text-properties", "font-style", u"italic");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testDeletedTableAutostylesExport)
+{
+ // Given a document with deleted table:
+ // it must not assert on export because of missing format for an exported table
+ loadAndReload("deleted_table.fodt");
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf160877, "tdf160877.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+ uno::Reference<text::XText> xHeaderTextPage1 = getProperty<uno::Reference<text::XText>>(
+ getStyles(u"PageStyles"_ustr)->getByName(u"Standard"_ustr), u"HeaderTextFirst"_ustr);
+ CPPUNIT_ASSERT_EQUAL(u"Classification: General Business"_ustr, xHeaderTextPage1->getString());
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: (Sign GB)Test
+ // - Actual : Test
+ CPPUNIT_ASSERT_EQUAL(u"(Sign GB)Test"_ustr, getParagraph(1)->getString());
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testMidnightRedlineDatetime)
+{
+ // Given a document with a tracked change with a midnight datetime:
+ // make sure that it succeeds export and import validation. Before the fix, this failed:
+ // - Error: "2001-01-01" does not satisfy the "dateTime" type
+ // because "2001-01-01T00:00:00" became "2001-01-01" on roundtrip.
+ loadAndReload("midnight_redline.fodt");
+
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+ assertXPathContent(pXmlDoc,
+ "//office:body/office:text/text:tracked-changes/text:changed-region/"
+ "text:deletion/office:change-info/dc:date",
+ u"2001-01-01T00:00:00");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf122452)
+{
+ // FIXME: Error: element "text:insertion" was found where no element may occur
+ skipValidation();
+ loadAndReload("tdf122452.doc");
+ SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
+
+ // Without the fix in place this fails with:
+ // Expected: 1
+ // Actual: 0
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Redlines should be Hidden", true,
+ pWrtShell->GetLayout()->IsHideRedlines());
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf159027)
+{
+ loadAndReload("tdf159027.odt");
+ SwDoc* pDoc = getSwDoc();
+ pDoc->getIDocumentFieldsAccess().UpdateFields(true);
+
+ uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(),
+ uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xTables->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xCellD9(xTextTable->getCellByName(u"D9"_ustr), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"70"_ustr, xCellD9->getString());
+ uno::Reference<text::XTextRange> xCellE9(xTextTable->getCellByName(u"E9"_ustr), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(u"6"_ustr, xCellE9->getString());
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf121119)
+{
+ createSwGlobalDoc("tdf121119.odm");
+ SwDoc* pDoc = getSwDoc();
+ CPPUNIT_ASSERT_EQUAL(
+ size_t(2), pDoc->getIDocumentLinksAdministration().GetLinkManager().GetLinks().size());
+ pDoc->getIDocumentLinksAdministration().GetLinkManager().UpdateAllLinks(false, false, nullptr,
+ u""_ustr);
+
+ uno::Reference<text::XTextGraphicObjectsSupplier> xTextGraphicObjectsSupplier(mxComponent,
+ uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(
+ xTextGraphicObjectsSupplier->getGraphicObjects(), uno::UNO_QUERY);
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xIndexAccess->getCount());
+
+ saveAndReload(u"writerglobal8_writer"_ustr);
+ pDoc = getSwDoc();
+
+ CPPUNIT_ASSERT_EQUAL(
+ size_t(2), pDoc->getIDocumentLinksAdministration().GetLinkManager().GetLinks().size());
+ pDoc->getIDocumentLinksAdministration().GetLinkManager().UpdateAllLinks(false, false, nullptr,
+ u""_ustr);
+
+ uno::Reference<text::XTextGraphicObjectsSupplier> xTextGraphicObjectsSupplier2(mxComponent,
+ uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess2(
+ xTextGraphicObjectsSupplier2->getGraphicObjects(), uno::UNO_QUERY);
+
+ // This was 8 (duplicated images anchored at page)
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xIndexAccess2->getCount());
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf121119_runtime_update)
+{
+ createSwGlobalDoc("tdf121119.odm");
+ SwDoc* pDoc = getSwDoc();
+ CPPUNIT_ASSERT_EQUAL(
+ size_t(2), pDoc->getIDocumentLinksAdministration().GetLinkManager().GetLinks().size());
+ pDoc->getIDocumentLinksAdministration().GetLinkManager().UpdateAllLinks(false, false, nullptr,
+ u""_ustr);
+ // double update of the links
+ pDoc->getIDocumentLinksAdministration().GetLinkManager().UpdateAllLinks(false, false, nullptr,
+ u""_ustr);
+
+ uno::Reference<text::XTextGraphicObjectsSupplier> xTextGraphicObjectsSupplier(mxComponent,
+ uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(
+ xTextGraphicObjectsSupplier->getGraphicObjects(), uno::UNO_QUERY);
+
+ // This was 8 (duplicated images anchored at page)
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xIndexAccess->getCount());
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf163703)
+{
+ // Given a document with italics autostyle in a comment
+ loadAndReload("italics-in-comment.fodt");
+
+ auto xFields(
+ mxComponent.queryThrow<text::XTextFieldsSupplier>()->getTextFields()->createEnumeration());
+ auto xComment(xFields->nextElement().queryThrow<text::XTextContent>());
+ CPPUNIT_ASSERT(xComment.queryThrow<lang::XServiceInfo>()->supportsService(
+ u"com.sun.star.text.textfield.Annotation"_ustr));
+
+ auto xCommentText(getProperty<uno::Reference<css::text::XText>>(xComment, u"TextRange"_ustr));
+ CPPUNIT_ASSERT(xCommentText);
+ CPPUNIT_ASSERT_EQUAL(1, getParagraphs(xCommentText));
+ auto xCommentPara(getParagraphOrTable(1, xCommentText).queryThrow<css::text::XTextRange>());
+ CPPUNIT_ASSERT_EQUAL(u"lorem"_ustr, xCommentPara->getString());
+
+ // Without the fix, this would fail with
+ // - Expected: lo
+ // - Actual : lorem
+ // - run does not contain expected content
+ // because direct formatting was dropped on export, and the comment was exported in one chunk
+ auto x1stRun = getRun(xCommentPara, 1, "lo");
+ CPPUNIT_ASSERT_EQUAL(css::awt::FontSlant_NONE,
+ getProperty<css::awt::FontSlant>(x1stRun, u"CharPosture"_ustr));
+
+ auto x2ndRun = getRun(xCommentPara, 2, "r");
+ CPPUNIT_ASSERT_EQUAL(css::awt::FontSlant_ITALIC,
+ getProperty<css::awt::FontSlant>(x2ndRun, u"CharPosture"_ustr));
+
+ auto x3rdRun = getRun(xCommentPara, 3, "em");
+ CPPUNIT_ASSERT_EQUAL(css::awt::FontSlant_NONE,
+ getProperty<css::awt::FontSlant>(x3rdRun, u"CharPosture"_ustr));
+
+ xmlDocUniquePtr pXml = parseExport(u"content.xml"_ustr);
+ assertXPathContent(pXml, "//office:text/text:p/office:annotation/text:p", u"lorem");
+ // Without the fix, this would fail with
+ // - Expected: 1
+ // - Actual : 0
+ assertXPathChildren(pXml, "//office:text/text:p/office:annotation/text:p", 1);
+ assertXPathContent(pXml, "//office:text/text:p/office:annotation/text:p/text:span", u"r");
+ auto autostylename
+ = getXPath(pXml, "//office:text/text:p/office:annotation/text:p/text:span", "style-name");
+ OString autoStyleXPath = "//office:automatic-styles/style:style[@style:name='"
+ + autostylename.toUtf8() + "']/style:text-properties";
+ assertXPath(pXml, autoStyleXPath, "font-style", u"italic");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf36709)
+{
+ // Verifies that loext:text-indent correctly round-trips
+ loadAndReload("tdf36709.fodt");
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+
+ // Style P1 should have been rewritten as fo:text-indent
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P1']/style:paragraph-properties[@fo:text-indent]", 1);
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P1']/style:paragraph-properties[@loext:text-indent]",
+ 0);
+ assertXPath(pXmlDoc, "//style:style[@style:name='P1']/style:paragraph-properties",
+ "text-indent", u"3in");
+
+ // Style P2 should have round-tripped as loext:text-indent
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P2']/style:paragraph-properties[@fo:text-indent]", 0);
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P2']/style:paragraph-properties[@loext:text-indent]",
+ 1);
+ assertXPath(pXmlDoc, "//style:style[@style:name='P2']/style:paragraph-properties",
+ "text-indent", u"6em");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf163913)
+{
+ // Verifies that loext:left-margin and loext:right-margin correctly round-trip
+ loadAndReload("tdf163913.fodt");
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+
+ // Style P1 should have been rewritten as fo:margin-left
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P1']/style:paragraph-properties[@fo:margin-left]", 1);
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P1']/style:paragraph-properties[@loext:margin-left]",
+ 0);
+ assertXPath(pXmlDoc, "//style:style[@style:name='P1']/style:paragraph-properties",
+ "margin-left", u"3in");
+
+ // Style P2 should have round-tripped as loext:margin-left
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P2']/style:paragraph-properties[@fo:margin-left]", 0);
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P2']/style:paragraph-properties[@loext:margin-left]",
+ 1);
+ assertXPath(pXmlDoc, "//style:style[@style:name='P2']/style:paragraph-properties",
+ "margin-left", u"6em");
+
+ // Style P3 should have been rewritten as fo:margin-right
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P3']/style:paragraph-properties[@fo:margin-right]", 1);
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P3']/style:paragraph-properties[@loext:margin-right]",
+ 0);
+ assertXPath(pXmlDoc, "//style:style[@style:name='P3']/style:paragraph-properties",
+ "margin-right", u"3in");
+
+ // Style P4 should have round-tripped as loext:margin-right
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P4']/style:paragraph-properties[@fo:margin-right]", 0);
+ assertXPath(pXmlDoc,
+ "//style:style[@style:name='P4']/style:paragraph-properties[@loext:margin-right]",
+ 1);
+ assertXPath(pXmlDoc, "//style:style[@style:name='P4']/style:paragraph-properties",
+ "margin-right", u"6em");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testMsWordUlTrailSpace)
+{
+ // Testing MsWordUlTrailSpace compat option
+
+ // Given a document with both MsWordCompTrailingBlanks and MsWordUlTrailSpace set
+ createSwDoc("UnderlineTrailingSpace.fodt");
+ // 1. Make sure that the import sets MsWordUlTrailSpace option, and creates correct layout
+ {
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(true),
+ xSettings->getPropertyValue(u"MsWordUlTrailSpace"_ustr));
+
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ OUString val;
+ // Line 1: one SwHolePortion, showing underline
+ val = getXPath(pXmlDoc, "//body/txt[1]/SwParaPortion/SwLineLayout/SwHolePortion", "length");
+ CPPUNIT_ASSERT_GREATEREQUAL(sal_Int32(69), val.toInt32()); // In truth, it should be 70
+ val = getXPath(pXmlDoc, "//body/txt[1]/SwParaPortion/SwLineLayout/SwHolePortion",
+ "show-underline");
+ CPPUNIT_ASSERT_EQUAL(u"true"_ustr, val);
+ // TODO: Line 2
+ // Line 3: two SwHolePortion, one for shown underline, one for the rest
+ val = getXPath(pXmlDoc, "//body/txt[3]/SwParaPortion/SwLineLayout/SwHolePortion[1]",
+ "length");
+ CPPUNIT_ASSERT_GREATEREQUAL(sal_Int32(140), val.toInt32());
+ val = getXPath(pXmlDoc, "//body/txt[3]/SwParaPortion/SwLineLayout/SwHolePortion[1]",
+ "show-underline");
+ CPPUNIT_ASSERT_EQUAL(u"true"_ustr, val);
+ val = getXPath(pXmlDoc, "//body/txt[3]/SwParaPortion/SwLineLayout/SwHolePortion[2]",
+ "length");
+ CPPUNIT_ASSERT_GREATEREQUAL(sal_Int32(850), val.toInt32());
+ val = getXPath(pXmlDoc, "//body/txt[3]/SwParaPortion/SwLineLayout/SwHolePortion[2]",
+ "show-underline");
+ CPPUNIT_ASSERT_EQUAL(u"false"_ustr, val);
+ }
+
+ saveAndReload(mpFilter);
+ // 2. Make sure that exported document has MsWordUlTrailSpace option set
+ {
+ xmlDocUniquePtr pXmlDoc = parseExport(u"settings.xml"_ustr);
+ assertXPathContent(pXmlDoc, "//config:config-item[@config:name='MsWordUlTrailSpace']",
+ u"true");
+
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(true),
+ xSettings->getPropertyValue(u"MsWordUlTrailSpace"_ustr));
+ }
+
+ // 3. Disable the option, and check the layout
+ {
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ xSettings->setPropertyValue(u"MsWordUlTrailSpace"_ustr, uno::Any(false));
+ CPPUNIT_ASSERT_EQUAL(uno::Any(false),
+ xSettings->getPropertyValue(u"MsWordUlTrailSpace"_ustr));
+
+ getSwDoc()->getIDocumentLayoutAccess().GetCurrentViewShell()->Reformat();
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ OUString val;
+ // Line 1: one SwHolePortion, not showing underline
+ val = getXPath(pXmlDoc, "//body/txt[1]/SwParaPortion/SwLineLayout/SwHolePortion", "length");
+ CPPUNIT_ASSERT_GREATEREQUAL(sal_Int32(69), val.toInt32()); // In truth, it should be 70
+ val = getXPath(pXmlDoc, "//body/txt[1]/SwParaPortion/SwLineLayout/SwHolePortion",
+ "show-underline");
+ CPPUNIT_ASSERT_EQUAL(u"false"_ustr, val);
+ // TODO: Line 2
+ // Line 3: one SwHolePortion, not showing underline
+ val = getXPath(pXmlDoc, "//body/txt[3]/SwParaPortion/SwLineLayout/SwHolePortion", "length");
+ CPPUNIT_ASSERT_GREATEREQUAL(sal_Int32(999), val.toInt32());
+ val = getXPath(pXmlDoc, "//body/txt[3]/SwParaPortion/SwLineLayout/SwHolePortion",
+ "show-underline");
+ CPPUNIT_ASSERT_EQUAL(u"false"_ustr, val);
+ }
+
+ saveAndReload(mpFilter);
+ // 4. Make sure that exported document has MsWordUlTrailSpace option not set
+ {
+ xmlDocUniquePtr pXmlDoc = parseExport(u"settings.xml"_ustr);
+ assertXPathContent(pXmlDoc, "//config:config-item[@config:name='MsWordUlTrailSpace']",
+ u"false");
+
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(false),
+ xSettings->getPropertyValue(u"MsWordUlTrailSpace"_ustr));
+ }
+
+ createSwDoc();
+ // 5. Make sure that a new Writer document has this setting set to false
+ {
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(false),
+ xSettings->getPropertyValue(u"MsWordUlTrailSpace"_ustr));
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf71583)
+{
+ // Verifies that loext:text-indent correctly round-trips
+ loadAndReload("tdf71583.odt");
+ xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
+ assertXPathNodeName(pXmlDoc, "//office:body/office:text/text:p/*[1]", "page-count-range");
+}
+
+} // end of anonymous namespace
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx
index 6cf97a2a9628..7927d4edb46b 100644
--- a/sw/qa/extras/odfimport/odfimport.cxx
+++ b/sw/qa/extras/odfimport/odfimport.cxx
@@ -588,7 +588,7 @@ CPPUNIT_TEST_FIXTURE(Test, testBibliographyEntryField)
}
uno::Reference<text::XTextField> xEnumerationAccess(xFields->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Bibliography entry"_ustr, xEnumerationAccess->getPresentation(true).trim());
+ CPPUNIT_ASSERT_EQUAL(u"Citation"_ustr, xEnumerationAccess->getPresentation(true).trim());
CPPUNIT_ASSERT_EQUAL(u"[ABC]"_ustr, xEnumerationAccess->getPresentation(false).trim());
}
diff --git a/sw/qa/extras/ooxmlexport/data/CT-with-frame.docx b/sw/qa/extras/ooxmlexport/data/CT-with-frame.docx
new file mode 100644
index 000000000000..85653b0caaec
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/CT-with-frame.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/UnderlineTrailingSpace.docx b/sw/qa/extras/ooxmlexport/data/UnderlineTrailingSpace.docx
new file mode 100644
index 000000000000..f32e9fa880a4
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/UnderlineTrailingSpace.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/tdf162070_export.docx b/sw/qa/extras/ooxmlexport/data/tdf162070_export.docx
new file mode 100644
index 000000000000..133edbd2d58f
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf162070_export.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/tdf164176.docx b/sw/qa/extras/ooxmlexport/data/tdf164176.docx
new file mode 100644
index 000000000000..2d93cfd3765d
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf164176.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/tdf164901.docx b/sw/qa/extras/ooxmlexport/data/tdf164901.docx
new file mode 100644
index 000000000000..9035c53cf476
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf164901.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/tdf165059_broken.docx b/sw/qa/extras/ooxmlexport/data/tdf165059_broken.docx
new file mode 100644
index 000000000000..548d4d9c7414
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf165059_broken.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/tdf165354.docx b/sw/qa/extras/ooxmlexport/data/tdf165354.docx
new file mode 100644
index 000000000000..3a90488e7f3b
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf165354.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/data/tdf165642_glossaryFootnote.docx b/sw/qa/extras/ooxmlexport/data/tdf165642_glossaryFootnote.docx
new file mode 100644
index 000000000000..6188a919522b
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf165642_glossaryFootnote.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 64901fcf7359..6aee5bd0babd 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -568,7 +568,7 @@ DECLARE_OOXMLEXPORT_TEST(testParagraphMark2, "paragraph-mark2.docx")
CPPUNIT_TEST_FIXTURE(Test, testParagraphMarkNonempty)
{
loadAndSave("paragraph-mark-nonempty.odt");
- validate(maTempFile.GetFileName(), test::OOXML);
+ validate(maTempFile.GetFileName(), mpFilter);
CPPUNIT_ASSERT_EQUAL(1, getPages());
xmlDocUniquePtr pXmlDoc = parseExport(u"word/document.xml"_ustr);
// There were two <w:sz> elements, make sure the 40 one is dropped and the 20 one is kept.
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx
index 902d2f5f33eb..e34b17467348 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx
@@ -1229,28 +1229,23 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf145720)
loadAndSave("tdf104797.docx");
xmlDocUniquePtr pXmlDoc = parseExport(u"word/document.xml"_ustr);
// These were 0 (missing move*FromRange* elements)
- assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:moveFrom/w:moveFromRangeStart", 1);
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]//w:moveFromRangeStart", 1);
assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:moveFromRangeEnd", 1);
- assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:moveTo/w:moveToRangeStart", 1);
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]//w:moveToRangeStart", 1);
assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:moveToRangeEnd", 1);
// paired names
- assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:moveFrom/w:moveFromRangeStart", "name",
- u"move471382752");
- assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:moveTo/w:moveToRangeStart", "name",
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:moveFromRangeStart", "name",
u"move471382752");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:moveToRangeStart", "name", u"move471382752");
// mandatory authors and dates
- assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:moveFrom/w:moveFromRangeStart", "author",
- u"Tekijä");
- assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:moveTo/w:moveToRangeStart", "author",
- u"Tekijä");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:moveFromRangeStart", "author", u"Tekijä");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:moveToRangeStart", "author", u"Tekijä");
// no date (anonymized change)
// This failed, date was exported as w:date="0-00-00T00:00:00Z", and later "1970-01-01T00:00:00Z"
- assertXPathNoAttribute(pXmlDoc, "/w:document/w:body/w:p[1]/w:moveFrom/w:moveFromRangeStart",
- "date");
- assertXPathNoAttribute(pXmlDoc, "/w:document/w:body/w:p[2]/w:moveTo/w:moveToRangeStart",
- "date");
+ assertXPathNoAttribute(pXmlDoc, "/w:document/w:body/w:p[1]/w:moveFromRangeStart", "date");
+ assertXPathNoAttribute(pXmlDoc, "/w:document/w:body/w:p[2]/w:moveToRangeStart", "date");
}
CPPUNIT_TEST_FIXTURE(Test, testTdf150166)
@@ -1553,11 +1548,10 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf132271)
loadAndSave("tdf149388.docx");
xmlDocUniquePtr pXmlDoc = parseExport(u"word/document.xml"_ustr);
// import change tracking in floating tables
- assertXPath(pXmlDoc, "//w:del", 1);
- assertXPath(pXmlDoc, "//w:ins", 1);
- // tracked text moving recognized during the import
- assertXPath(pXmlDoc, "//w:moveFrom", 1);
- assertXPath(pXmlDoc, "//w:moveTo", 1);
+ assertXPath(pXmlDoc, "//w:del", 2);
+ assertXPath(pXmlDoc, "//w:ins", 2);
+ assertXPath(pXmlDoc, "//w:moveFrom", 0);
+ assertXPath(pXmlDoc, "//w:moveTo", 0);
}
CPPUNIT_TEST_FIXTURE(Test, testTdf149388_fly)
@@ -1578,11 +1572,10 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf136667)
loadAndSave("tdf149388_fly.docx");
xmlDocUniquePtr pXmlDoc = parseExport(u"word/document.xml"_ustr);
// import change tracking in floating tables
- assertXPath(pXmlDoc, "//w:del", 1);
- assertXPath(pXmlDoc, "//w:ins", 3);
- // tracked text moving recognized during the import
- assertXPath(pXmlDoc, "//w:moveFrom", 1);
- assertXPath(pXmlDoc, "//w:moveTo", 1);
+ assertXPath(pXmlDoc, "//w:del", 2);
+ assertXPath(pXmlDoc, "//w:ins", 4);
+ assertXPath(pXmlDoc, "//w:moveFrom", 0);
+ assertXPath(pXmlDoc, "//w:moveTo", 0);
}
CPPUNIT_TEST_FIXTURE(Test, testTdf136850)
@@ -1603,12 +1596,22 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf128156)
assertXPath(pXmlDoc, "//w:ins", 2);
}
+CPPUNIT_TEST_FIXTURE(Test, testTdf165330)
+{
+ loadAndSave("CT-with-frame.docx");
+
+ xmlDocUniquePtr pXmlDoc = parseExport(u"word/document.xml"_ustr);
+ // check that *both* tracked changes were round tripped
+ assertXPathContent(pXmlDoc, "//w:p[1]/w:ins/w:r/w:t", u"world! ");
+ assertXPathContent(pXmlDoc, "//w:p[3]/w:ins/w:r/w:t", u"hello ");
+}
+
CPPUNIT_TEST_FIXTURE(Test, testTdf125546)
{
loadAndSave("tdf125546.docx");
xmlDocUniquePtr pXmlDoc = parseExport(u"word/document.xml"_ustr);
// compress redlines (it was 15)
- assertXPath(pXmlDoc, "//w:rPrChange", 2);
+ assertXPath(pXmlDoc, "//w:rPrChange", 3);
}
CPPUNIT_TEST_FIXTURE(Test, testLabelWidthAndPosition_Left_FirstLineIndent)
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
index cc6cce590287..966bbfb3ef4d 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
@@ -1498,13 +1498,29 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf160518_page_in_text_body_style)
CPPUNIT_TEST_FIXTURE(Test, testTdf160518_auto_in_text_body_style)
{
- // text body style contains hyphenation settings
+ // text body style contains hyphenation settings
loadAndReload("tdf160518_auto_in_text_body_style.fodt");
xmlDocUniquePtr pXmlDoc = parseExport(u"word/settings.xml"_ustr);
assertXPath(pXmlDoc, "/w:settings/w:compat/w:compatSetting[@w:name='useWord2013TrackBottomHyphenation']", "val", u"1");
assertXPath(pXmlDoc, "/w:settings/w:compat/w:compatSetting[@w:name='allowHyphenationAtTrackBottom']", "val", u"1");
}
+CPPUNIT_TEST_FIXTURE(Test, testTdf165354)
+{
+ uno::Reference<linguistic2::XHyphenator> xHyphenator = LinguMgr::GetHyphenator();
+ if (!xHyphenator->hasLocale(lang::Locale(u"en"_ustr, u"US"_ustr, OUString())))
+ return;
+
+ loadAndReload("tdf165354.docx");
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+ // This was "except that it has an at" (hyphenation at the end of the page)
+ assertXPath(pXmlDoc, "//page[1]/body/txt[2]/SwParaPortion/SwLineLayout[9]", "portion", u"except that it has an ");
+ // This started with "mosphere" (hyphenation at the end of the previous page)
+ assertXPath(pXmlDoc, "//page[2]/body/txt[1]/SwParaPortion/SwLineLayout[1]", "portion", u"atmosphere. The Earth ");
+ // The same word is still hyphenated in the same paragraph, but not at the bottom of the page
+ assertXPath(pXmlDoc, "//page[2]/body/txt[1]/SwParaPortion/SwLineLayout[9]", "portion", u"except that it has an at");
+}
+
CPPUNIT_TEST_FIXTURE(Test, testHyphenationAuto)
{
loadAndReload("hyphenation.odt");
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
index 04356b53fa66..f5d9efc4f516 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
@@ -44,7 +44,7 @@ public:
CPPUNIT_TEST_FIXTURE(Test, testPageGraphicBackground)
{
loadAndReload("page-graphic-background.odt");
- validate(maTempFile.GetFileName(), test::OOXML);
+ validate(maTempFile.GetFileName(), mpFilter);
CPPUNIT_ASSERT_EQUAL(1, getPages());
// No idea how the graphic background should be exported (seems there is no
// way to do a non-tiling export to OOXML), but at least the background
@@ -165,7 +165,7 @@ CPPUNIT_TEST_FIXTURE(Test, testZoom)
verify();
// Validation test: order of elements were wrong.
- validate(maTempFile.GetFileName(), test::OOXML);
+ validate(maTempFile.GetFileName(), mpFilter);
xmlDocUniquePtr pXmlDoc = parseExport(u"word/styles.xml"_ustr);
// Order was: rsid, next.
int nNext = getXPathPosition(pXmlDoc, "/w:styles/w:style[3]", "next");
@@ -181,7 +181,7 @@ CPPUNIT_TEST_FIXTURE(Test, testZoom)
CPPUNIT_TEST_FIXTURE(Test, defaultTabStopNotInStyles)
{
loadAndReload("empty.odt");
- validate(maTempFile.GetFileName(), test::OOXML);
+ validate(maTempFile.GetFileName(), mpFilter);
CPPUNIT_ASSERT_EQUAL(1, getPages());
// The default tab stop was mistakenly exported to a style.
// xray ThisComponent.StyleFamilies(1)(0).ParaTabStop
@@ -253,13 +253,13 @@ CPPUNIT_TEST_FIXTURE(Test, testFdo38244)
verify();
saveAndReload(mpFilter);
verify();
- validate(maTempFile.GetFileName(), test::OOXML);
+ validate(maTempFile.GetFileName(), mpFilter);
}
CPPUNIT_TEST_FIXTURE(Test, testCommentsNested)
{
loadAndReload("comments-nested.odt");
- validate(maTempFile.GetFileName(), test::OOXML);
+ validate(maTempFile.GetFileName(), mpFilter);
CPPUNIT_ASSERT_EQUAL(1, getPages());
uno::Reference<beans::XPropertySet> xOuter = getProperty< uno::Reference<beans::XPropertySet> >(getRun(getParagraph(1), 2), u"TextField"_ustr);
CPPUNIT_ASSERT_EQUAL(u"Outer"_ustr, getProperty<OUString>(xOuter, u"Content"_ustr));
@@ -271,7 +271,7 @@ CPPUNIT_TEST_FIXTURE(Test, testCommentsNested)
CPPUNIT_TEST_FIXTURE(Test, testMathEscape)
{
loadAndReload("math-escape.docx");
- CPPUNIT_ASSERT_EQUAL(u"\\{ left [ right ] \\( \\) \\}"_ustr, getFormula(getRun(getParagraph(1), 1)));
+ CPPUNIT_ASSERT_EQUAL(u"\\{ \\[ \\] \\( \\) \\}"_ustr, getFormula(getRun(getParagraph(1), 1)));
}
// Saving left and right for parentheses when importing not from the m:t tag (docx)
@@ -320,12 +320,13 @@ DECLARE_OOXMLEXPORT_TEST(testMathD, "math-d.docx")
DECLARE_OOXMLEXPORT_TEST(testMathEscaping, "math-escaping.docx")
{
- CHECK_FORMULA( u"\u2212 \u221E < x < \u221E"_ustr, getFormula( getRun( getParagraph( 1 ), 1 )));
+ CHECK_FORMULA(u"\u2212 \u221E \"<\" x \"<\" \u221E"_ustr,
+ getFormula(getRun(getParagraph(1), 1)));
}
DECLARE_OOXMLEXPORT_TEST(testMathLim, "math-lim.docx")
{
- CHECK_FORMULA( u"lim from {x \u2192 1} {x}"_ustr, getFormula( getRun( getParagraph( 1 ), 1 )));
+ CHECK_FORMULA(u"lim from {x \u2192 1} {x}"_ustr, getFormula(getRun(getParagraph(1), 1)));
}
DECLARE_OOXMLEXPORT_TEST(testMathMatrix, "math-matrix.docx")
@@ -336,38 +337,55 @@ DECLARE_OOXMLEXPORT_TEST(testMathMatrix, "math-matrix.docx")
CPPUNIT_TEST_FIXTURE(Test, testMathMso2k7)
{
loadAndReload("math-mso2k7.docx");
- CHECK_FORMULA( u"A = \u03C0 {r} ^ {2}"_ustr, getFormula( getRun( getParagraph( 1 ), 1 )));
-// TODO check the stack/binom difference
-// CHECK_FORMULA( "{left (x+a right )} ^ {n} = sum from {k=0} to {n} {left (binom {n} {k} right ) {x} ^ {k} {a} ^ {n-k}}",
- CHECK_FORMULA( u"{left (x+a right )} ^ {n} = sum from {k=0} to {n} {left (stack {n # k} right ) {x} ^ {k} {a} ^ {n-k}}"_ustr,
- getFormula( getRun( getParagraph( 2 ), 1 )));
- CHECK_FORMULA( u"{left (1+x right )} ^ {n} =1+ {nx} over {1!} + {n left (n-1 right ) {x} ^ {2}} over {2!} +\u2026"_ustr,
- getFormula( getRun( getParagraph( 3 ), 1 )));
-// TODO check (cos/sin miss {})
-// CHECK_FORMULA( "f left (x right ) = {a} rsub {0} + sum from {n=1} to {\xe2\x88\x9e} {left ({a} rsub {n} cos {{n\xcf\x80x} over {L}} + {b} rsub {n} sin {{n\xcf\x80x} over {L}} right )}",
- CHECK_FORMULA( u"f left (x right ) = {a} rsub {0} + sum from {n=1} to {\u221E} {left ({a} rsub {n} cos {n\u03C0x} over {L} + {b} rsub {n} sin {n\u03C0x} over {L} right )}"_ustr,
- getFormula( getRun( getParagraph( 4 ), 1 )));
- CHECK_FORMULA( u"{a} ^ {2} + {b} ^ {2} = {c} ^ {2}"_ustr, getFormula( getRun( getParagraph( 5 ), 1 )));
- CHECK_FORMULA( u"x = {- b \u00B1 sqrt {{b} ^ {2} -4 ac}} over {2 a}"_ustr,
- getFormula( getRun( getParagraph( 6 ), 1 )));
+ CHECK_FORMULA(u"A \"=\" \u03C0 {r} ^ {2}"_ustr, getFormula(getRun(getParagraph(1), 1)));
+ // TODO check the stack/binom difference
+ // CHECK_FORMULA( "{left (x+a right )} ^ {n} = sum from {k=0} to {n} {left (binom {n} {k} right ) {x} ^ {k} {a} ^ {n-k}}",
CHECK_FORMULA(
- u"{e} ^ {x} =1+ {x} over {1!} + {{x} ^ {2}} over {2!} + {{x} ^ {3}} over {3!} +\u2026, -\u221E<x<\u221E"_ustr,
- getFormula( getRun( getParagraph( 7 ), 1 )));
+ u"{left (x\"+\"a right )} ^ {n} \"=\" sum from {k\"=\"0} to {n} {left (stack {n # k} right ) {x} ^ {k} {a} ^ {n\"-\"k}}"_ustr,
+ getFormula(getRun(getParagraph(2), 1)));
CHECK_FORMULA(
-// "sin {\xce\xb1} \xc2\xb1 sin {\xce\xb2} =2 sin {{1} over {2} left (\xce\xb1\xc2\xb1\xce\xb2 right )} cos {{1} over {2} left (\xce\xb1\xe2\x88\x93\xce\xb2 right )}",
-// TODO check (cos/in miss {})
- u"sin \u03B1 \u00B1 sin \u03B2 =2 sin {1} over {2} left (\u03B1\u00B1\u03B2 right ) cos {1} over {2} left (\u03B1\u2213\u03B2 right )"_ustr,
- getFormula( getRun( getParagraph( 8 ), 1 )));
+ u"{left (1\"+\"x right )} ^ {n} \"=\"1\"+\" {nx} over {1!} \"+\" {n left (n\"-\"1 right ) {x} ^ {2}} over {2!} \"+\"\u2026"_ustr,
+ getFormula(getRun(getParagraph(3), 1)));
+ // TODO check (cos/sin miss {})
+ // CHECK_FORMULA( "f left (x right ) = {a} rsub {0} + sum from {n=1} to {\xe2\x88\x9e} {left ({a} rsub {n} cos {{n\xcf\x80x} over {L}} + {b} rsub {n} sin {{n\xcf\x80x} over {L}} right )}",
CHECK_FORMULA(
-// "cos {\xce\xb1} + cos {\xce\xb2} =2 cos {{1} over {2} left (\xce\xb1+\xce\xb2 right )} cos {{1} over {2} left (\xce\xb1-\xce\xb2 right )}",
-// TODO check (cos/sin miss {})
- u"cos \u03B1 + cos \u03B2 =2 cos {1} over {2} left (\u03B1+\u03B2 right ) cos {1} over {2} left (\u03B1-\u03B2 right )"_ustr,
- getFormula( getRun( getParagraph( 9 ), 1 )));
+ u"f left (x right ) \"=\" {a} rsub {0} \"+\" sum from {n\"=\"1} to {\u221E} {left ({a} rsub {n} cos {n\u03C0x} over {L} \"+\" {b} rsub {n} sin {n\u03C0x} over {L} right )}"_ustr,
+ getFormula(getRun(getParagraph(4), 1)));
+ CHECK_FORMULA(u"{a} ^ {2} \"+\" {b} ^ {2} \"=\" {c} ^ {2}"_ustr,
+ getFormula(getRun(getParagraph(5), 1)));
+ CHECK_FORMULA(u"x \"=\" {\"-\" b \u00B1 sqrt {{b} ^ {2} \"-\"4 ac}} over {2 a}"_ustr,
+ getFormula(getRun(getParagraph(6), 1)));
+ CHECK_FORMULA(
+ u"{left (1\"+\"x right )} ^ {n} \"=\"1\"+\" {nx} over {1!} \"+\" {n left (n\"-\"1 right ) {x} ^ {2}} over {2!} \"+\"\u2026"_ustr,
+ getFormula(getRun(getParagraph(3), 1)));
+ // TODO check (cos/sin miss {})
+ // CHECK_FORMULA( "f left (x right ) = {a} rsub {0} + sum from {n=1} to {\xe2\x88\x9e} {left ({a} rsub {n} cos {{n\xcf\x80x} over {L}} + {b} rsub {n} sin {{n\xcf\x80x} over {L}} right )}",
+ CHECK_FORMULA(
+ u"f left (x right ) \"=\" {a} rsub {0} \"+\" sum from {n\"=\"1} to {\u221E} {left ({a} rsub {n} cos {n\u03C0x} over {L} \"+\" {b} rsub {n} sin {n\u03C0x} over {L} right )}"_ustr,
+ getFormula(getRun(getParagraph(4), 1)));
+ CHECK_FORMULA("{a} ^ {2} \"+\" {b} ^ {2} \"=\" {c} ^ {2}",
+ getFormula(getRun(getParagraph(5), 1)));
+ CHECK_FORMULA(u"x \"=\" {\"-\" b \u00B1 sqrt {{b} ^ {2} \"-\"4 ac}} over {2 a}"_ustr,
+ getFormula(getRun(getParagraph(6), 1)));
+ CHECK_FORMULA(
+ u"{e} ^ {x} \"=\"1\"+\" {x} over {1!} \"+\" {{x} ^ {2}} over {2!} \"+\" {{x} ^ {3}} over {3!} \"+\"\u2026,\" \" \" \" \"-\"\u221E\"<\"x\"<\"\u221E"_ustr,
+ getFormula(getRun(getParagraph(7), 1)));
+ CHECK_FORMULA(
+ // "sin {\xce\xb1} \xc2\xb1 sin {\xce\xb2} =2 sin {{1} over {2} left (\xce\xb1\xc2\xb1\xce\xb2 right )} cos {{1} over {2} left (\xce\xb1\xe2\x88\x93\xce\xb2 right )}",
+ // TODO check (cos/in miss {})
+ u"sin \u03B1 \u00B1 sin \u03B2 \"=\"2 sin {1} over {2} left (\u03B1\u00B1\u03B2 right ) cos {1} over {2} left (\u03B1\u2213\u03B2 right )"_ustr,
+ getFormula(getRun(getParagraph(8), 1)));
+ CHECK_FORMULA(
+ // "cos {\xce\xb1} + cos {\xce\xb2} =2 cos {{1} over {2} left (\xce\xb1+\xce\xb2 right )} cos {{1} over {2} left (\xce\xb1-\xce\xb2 right )}",
+ // TODO check (cos/sin miss {})
+ u"cos \u03B1 \"+\" cos \u03B2 \"=\"2 cos {1} over {2} left (\u03B1\"+\"\u03B2 right ) cos {1} over {2} left (\u03B1\"-\"\u03B2 right )"_ustr,
+ getFormula(getRun(getParagraph(9), 1)));
}
DECLARE_OOXMLEXPORT_TEST(testMathNary, "math-nary.docx")
{
- CHECK_FORMULA( u"lllint from {1} to {2} {x + 1}"_ustr, getFormula( getRun( getParagraph( 1 ), 1 )));
+ CHECK_FORMULA(u"lllint from {1} to {2} {x \"+\" 1}"_ustr,
+ getFormula(getRun(getParagraph(1), 1)));
CHECK_FORMULA( u"prod from {a} {b}"_ustr, getFormula( getRun( getParagraph( 1 ), 2 )));
CHECK_FORMULA( u"sum to {2} {x}"_ustr, getFormula( getRun( getParagraph( 1 ), 3 )));
}
@@ -391,12 +409,12 @@ DECLARE_OOXMLEXPORT_TEST(testMathPlaceholders, "math-placeholders.docx")
DECLARE_OOXMLEXPORT_TEST(testMathRad, "math-rad.docx")
{
CHECK_FORMULA( u"sqrt {4}"_ustr, getFormula( getRun( getParagraph( 1 ), 1 )));
- CHECK_FORMULA( u"nroot {3} {x + 1}"_ustr, getFormula( getRun( getParagraph( 1 ), 2 )));
+ CHECK_FORMULA(u"nroot {3} {x \"+\" 1}"_ustr, getFormula(getRun(getParagraph(1), 2)));
}
DECLARE_OOXMLEXPORT_TEST(testMathSubscripts, "math-subscripts.docx")
{
- CHECK_FORMULA( u"{x} ^ {y} + {e} ^ {x}"_ustr, getFormula( getRun( getParagraph( 1 ), 1 )));
+ CHECK_FORMULA(u"{x} ^ {y} \"+\" {e} ^ {x}"_ustr, getFormula(getRun(getParagraph(1), 1)));
CHECK_FORMULA( u"{x} ^ {b}"_ustr, getFormula( getRun( getParagraph( 1 ), 2 )));
CHECK_FORMULA( u"{x} rsub {b}"_ustr, getFormula( getRun( getParagraph( 1 ), 3 )));
CHECK_FORMULA( u"{a} rsub {c} rsup {b}"_ustr, getFormula( getRun( getParagraph( 1 ), 4 )));
@@ -640,8 +658,9 @@ DECLARE_OOXMLEXPORT_TEST(testTableStylerPrSz, "table-style-rPr-sz.docx")
DECLARE_OOXMLEXPORT_TEST(testMathLiteral, "math-literal.docx")
{
- CHECK_FORMULA( u"iiint from {V} to <?> {\"div\" \"F\"} dV= llint from {S} to <?> {\"F\" \u2219 \"n \" dS}"_ustr,
- getFormula( getRun( getParagraph( 1 ), 1 )));
+ CHECK_FORMULA(
+ u"iiint from {V} to <?> {\"div\" \"F\"} dV\"=\" llint from {S} to <?> {\"F\" \u2219 \"n \" dS}"_ustr,
+ getFormula(getRun(getParagraph(1), 1)));
}
CPPUNIT_TEST_FIXTURE(Test, testFdo48557)
@@ -1147,6 +1166,13 @@ DECLARE_OOXMLEXPORT_TEST(testBnc837302, "bnc837302.docx")
CPPUNIT_ASSERT_EQUAL(false, hasProperty(getRun(xParagraph, 1), u"RedlineType"_ustr));
}
+CPPUNIT_TEST_FIXTURE(Test, testTdf162070Export)
+{
+ loadAndReload("tdf162070_export.docx");
+ CPPUNIT_ASSERT_EQUAL(u"{P} rsub {\"abs\"} \"~\" {B} rsub {0} \u00B2"_ustr,
+ getFormula(getRun(getParagraph(1), 1)));
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport20.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport20.cxx
index 74f020e614f2..7ef3f92031cd 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport20.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport20.cxx
@@ -277,6 +277,15 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf48459)
assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:pPr/w:rPr/w:specVanish", 1);
}
+CPPUNIT_TEST_FIXTURE(Test, testTdf164901)
+{
+ loadAndSave("tdf164901.docx");
+ xmlDocUniquePtr pXmlDoc = parseExport(u"word/document.xml"_ustr);
+
+ // This was 0 (lost floating table because of containing a style separator)
+ assertXPath(pXmlDoc, "/w:document/w:body/w:tbl", 1);
+}
+
CPPUNIT_TEST_FIXTURE(Test, testFdo77129)
{
loadAndSave("fdo77129.docx");
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx
index 472a4f3cc179..3ae8bfd729a4 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx
@@ -17,6 +17,7 @@
#include <com/sun/star/text/XDocumentIndex.hpp>
#include <com/sun/star/text/XTextTable.hpp>
#include <com/sun/star/text/XTextField.hpp>
+#include <com/sun/star/text/XTextFieldsSupplier.hpp>
#include <com/sun/star/table/XCellRange.hpp>
#include <com/sun/star/style/LineSpacing.hpp>
#include <com/sun/star/style/LineSpacingMode.hpp>
@@ -41,15 +42,29 @@ public:
}
};
-DECLARE_OOXMLEXPORT_TEST(testTdf161631, "tdf161631.docx")
+CPPUNIT_TEST_FIXTURE(Test, testTdf161631)
{
- CPPUNIT_ASSERT_EQUAL(1, getPages());
- CPPUNIT_ASSERT_EQUAL(1, getParagraphs());
+ auto verify = [this](bool bIsExport = false) {
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ CPPUNIT_ASSERT_EQUAL(1, getParagraphs());
+
+ // Without the fix in place, this test would have failed with
+ // - Expected : Some text
+ // - Actual:
+ CPPUNIT_ASSERT_EQUAL(u"Some text"_ustr, getParagraph(1)->getString());
+
+ if (bIsExport)
+ {
+ // tdf#164876 tdf#165117: don't add an empty paragraph every round-trip
+ xmlDocUniquePtr pXmlDoc1 = parseExport(u"word/footer2.xml"_ustr);
+ assertXPath(pXmlDoc1, "/w:ftr/w:p", 1);
+ }
+ };
- // Without the fix in place, this test would have failed with
- // - Expected: Some text
- // - Actual :
- CPPUNIT_ASSERT_EQUAL(u"Some text"_ustr, getParagraph(1)->getString());
+ createSwDoc("tdf161631.docx");
+ verify();
+ saveAndReload(mpFilter);
+ verify(/*bIsExport*/ true);
}
DECLARE_OOXMLEXPORT_TEST(testTdf158597, "tdf158597.docx")
@@ -1228,6 +1243,58 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf164474)
}
}
+DECLARE_OOXMLEXPORT_TEST(testTdf164176, "tdf164176.docx")
+{
+ uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(
+ xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+
+ uno::Reference<text::XTextField> xEnumerationAccess1(xFields->nextElement(), uno::UNO_QUERY);
+ rtl::OUString sPresentation = xEnumerationAccess1->getPresentation(true).trim();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-1), sPresentation.indexOf("_x000d_"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(-1), sPresentation.indexOf("_x000a_"));
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testMsWordUlTrailSpace)
+{
+ createSwDoc("UnderlineTrailingSpace.docx");
+ {
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(true),
+ xSettings->getPropertyValue(u"MsWordUlTrailSpace"_ustr));
+ }
+
+ // Test also after save-and-reload:
+ saveAndReload(u"Office Open XML Text"_ustr);
+ {
+ uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(true),
+ xSettings->getPropertyValue(u"MsWordUlTrailSpace"_ustr));
+ }
+
+ // Check that the compat setting is exported in OOXML
+ xmlDocUniquePtr pXmlSettings = parseExport("word/settings.xml");
+ assertXPath(pXmlSettings, "/w:settings/w:compat/w:ulTrailSpace");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf165059_moveFromTo)
+{
+ loadAndSave("tdf165059_broken.docx");
+ // Without the fix, exported contains w:move* outside of move ranges
+ // Outside move range tags ins/del are valid
+ xmlDocUniquePtr p_XmlDoc = parseExport("word/document.xml");
+ CPPUNIT_ASSERT(p_XmlDoc);
+ assertXPath(p_XmlDoc, "//w:moveTo"_ostr, 0);
+ assertXPath(p_XmlDoc, "//w:ins"_ostr, 1);
+ assertXPath(p_XmlDoc, "//w:moveFrom"_ostr, 0);
+ assertXPath(p_XmlDoc, "//w:del"_ostr, 1);
+}
+
} // end of anonymous namespace
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport22.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport22.cxx
new file mode 100644
index 000000000000..34408dcc958b
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport22.cxx
@@ -0,0 +1,49 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <swmodeltestbase.hxx>
+
+#include <com/sun/star/beans/XPropertyState.hpp>
+
+#include <comphelper/configuration.hxx>
+#include <comphelper/sequenceashashmap.hxx>
+#include <officecfg/Office/Common.hxx>
+
+#include <pam.hxx>
+#include <unotxdoc.hxx>
+#include <docsh.hxx>
+
+namespace
+{
+class Test : public SwModelTestBase
+{
+public:
+ Test()
+ : SwModelTestBase(u"/sw/qa/extras/ooxmlexport/data/"_ustr, u"Office Open XML Text"_ustr)
+ {
+ }
+};
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf165642_glossaryFootnote)
+{
+ loadAndSave("tdf165642_glossaryFootnote.docx");
+ // round-trip'ing the settings.xml file as is, it contains footnote/endnote references
+ xmlDocUniquePtr pXmlSettings = parseExport(u"word/glossary/settings.xml"_ustr);
+ assertXPath(pXmlSettings, "//w:endnotePr", 1);
+ assertXPath(pXmlSettings, "//w:footnotePr", 1);
+
+ // thus, the footnote and endnote files must also be round-tripped
+ parseExport(u"word/glossary/endnotes.xml"_ustr);
+ parseExport(u"word/glossary/footnotes.xml"_ustr);
+}
+
+} // end of anonymous namespace
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 4ce5edb38557..b1376f29c104 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -1015,7 +1015,7 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf107784)
}
uno::Reference<text::XTextField> xEnumerationAccess(xFields->nextElement(), uno::UNO_QUERY);
- CPPUNIT_ASSERT_EQUAL(u"Bibliography entry"_ustr, xEnumerationAccess->getPresentation(true).trim());
+ CPPUNIT_ASSERT_EQUAL(u"Citation"_ustr, xEnumerationAccess->getPresentation(true).trim());
CPPUNIT_ASSERT_EQUAL(u"(Smith, 1950)"_ustr, xEnumerationAccess->getPresentation(false).trim());
}
diff --git a/sw/qa/extras/rtfexport/data/math-mso2007.rtf b/sw/qa/extras/rtfexport/data/math-mso2007.rtf
index bc26831bae5a..dd8c9f607521 100644
--- a/sw/qa/extras/rtfexport/data/math-mso2007.rtf
+++ b/sw/qa/extras/rtfexport/data/math-mso2007.rtf
@@ -186,7 +186,7 @@ Cambria Math;}
{\mr\mscr0\msty2 n}
}
{\rtlch\fcs1 \af34 \ltrch\fcs0 \i\loch\af34\hich\af34\dbch\af34\insrsid3104674 \hich\af34\dbch\af34\loch\f34
-{\mr\mscr0\msty2 -}
+{\mr\mscr0\msty2 \u8722\'3f}
}
{\rtlch\fcs1 \af34
\ltrch\fcs0 \i\loch\af34\hich\af34\dbch\af34\insrsid3104674 \hich\af34\dbch\af34\loch\f34
@@ -290,7 +290,7 @@ Cambria Math;}
{\mr\mscr0\msty2 n}
}
{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\loch\af34\hich\af34\dbch\af31505\insrsid3104674 \hich\af34\dbch\af31505\loch\f34
-{\mr\mscr0\msty2 -}
+{\mr\mscr0\msty2 \u8722\'3f}
}
{\rtlch\fcs1 \af31507 \ltrch\fcs0
\i\loch\af34\hich\af34\dbch\af31505\insrsid3104674 \hich\af34\dbch\af31505\loch\f34
@@ -643,7 +643,7 @@ Cambria Math;}
{\mnum
{\rtlch\fcs1 \af34 \ltrch\fcs0
\loch\af34\hich\af34\dbch\af31505\insrsid3104674 \hich\af34\dbch\af31505\loch\f34
-{\mr\mscr0\msty0 -}
+{\mr\mscr0\msty0 \u8722\'3f}
}
{\rtlch\fcs1 \af34 \ltrch\fcs0 \i\loch\af34\hich\af34\dbch\af31505\insrsid3104674 \hich\af34\dbch\af31505\loch\f34
{\mr\mscr0\msty2 b}
@@ -685,7 +685,7 @@ Cambria Math;}
}
}
{\rtlch\fcs1 \af34 \ltrch\fcs0 \loch\af34\hich\af34\dbch\af31505\insrsid3104674 \hich\af34\dbch\af31505\loch\f34
-{\mr\mscr0\msty0 -}
+{\mr\mscr0\msty0 \u8722\'3f}
}
{\rtlch\fcs1 \af34 \ltrch\fcs0
\loch\af34\hich\af34\dbch\af31505\insrsid3104674 \hich\af34\dbch\af31505\loch\f34
@@ -855,7 +855,7 @@ Cambria Math;}
{\mr\mscr0\msty0 }
}
{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\loch\af34\hich\af34\dbch\af31505\insrsid3104674 \hich\af34\dbch\af31505\loch\f34
-{\mr\mscr0\msty2 \hich\f34 -\u8734\'38}
+{\mr\mscr0\msty2 \hich\f34 \u8722\'3f\u8734\'38}
}
{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\loch\af34\hich\af34\dbch\af31505\insrsid3104674
\hich\af34\dbch\af31505\loch\f34
@@ -1198,7 +1198,7 @@ Cambria Math;}
{\mr\mscr0\msty2 \'e1}
}
{\rtlch\fcs1 \af34 \ltrch\fcs0 \i\loch\af34\hich\af34\dbch\af34\insrsid3104674 \hich\af34\dbch\af34\loch\f34
-{\mr\mscr0\msty2 -}
+{\mr\mscr0\msty2 \u8722\'3f}
}
{\rtlch\fcs1 \af635
\ltrch\fcs0 \i\loch\af635\hich\af635\dbch\af34\insrsid3104674 \loch\af635\dbch\af34\hich\f635
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index fb7c05a0e8a1..156ba778ff99 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -224,7 +224,7 @@ CPPUNIT_TEST_FIXTURE(Test, testMathEqarray)
loadAndReload("math-eqarray.rtf");
OUString aActual = getFormula(getRun(getParagraph(1), 1));
CPPUNIT_ASSERT_EQUAL(
- u"y = left lbrace stack { 0 , x < 0 # 1 , x = 0 # {x} ^ {2} , x > 0 } right none"_ustr,
+ u"y \"=\" left lbrace stack { 0 , x \"<\" 0 # 1 , x \"=\" 0 # {x} ^ {2} , x \">\" 0 } right none"_ustr,
aActual);
}
@@ -287,45 +287,49 @@ CPPUNIT_TEST_FIXTURE(Test, testMathMso2007)
{
loadAndReload("math-mso2007.rtf");
OUString aActual = getFormula(getRun(getParagraph(1), 1));
- OUString aExpected(u"A = \u03C0 {r} ^ {2}"_ustr);
+ OUString aExpected(u"A \"=\" \u03C0 {r} ^ {2}"_ustr);
CPPUNIT_ASSERT_EQUAL(aExpected, aActual);
aActual = getFormula(getRun(getParagraph(2), 1));
- aExpected = u"{left (x + a right )} ^ {n} = sum from {k = 0} to {n} {left (stack { n "
- u"# k } right ) {x} ^ {k} {a} ^ {n \u2212 k}}"_ustr;
+ aExpected
+ = u"{left (x \"+\" a right )} ^ {n} \"=\" sum from {k \"=\" 0} to {n} {left (stack { n "
+ u"# k } right ) {x} ^ {k} {a} ^ {n \u2212 k}}"_ustr;
CPPUNIT_ASSERT_EQUAL(aExpected, aActual);
aActual = getFormula(getRun(getParagraph(3), 1));
- aExpected = u"{left (1 + x right )} ^ {n} = 1 + {nx} over {1 !} + {n left (n \u2212 1 "
- u"right ) {x} ^ {2}} over {2 !} + \u2026"_ustr;
+ aExpected = u"{left (1 \"+\" x right )} ^ {n} \"=\" 1 \"+\" {nx} over {1 !} \"+\" {n left (n "
+ u"\u2212 1 "
+ u"right ) {x} ^ {2}} over {2 !} \"+\" \u2026"_ustr;
CPPUNIT_ASSERT_EQUAL(aExpected, aActual);
aActual = getFormula(getRun(getParagraph(4), 1));
- aExpected = u"f left (x right ) = {a} rsub {0} + sum from {n = 1} to {\u221E} {left "
- u"({a} rsub {n} cos {n\u03C0x} over {L} + {b} rsub {n} sin {n\u03C0x} "
- u"over {L} right )}"_ustr;
+ aExpected
+ = u"f left (x right ) \"=\" {a} rsub {0} \"+\" sum from {n \"=\" 1} to {\u221E} {left "
+ u"({a} rsub {n} cos {n\u03C0x} over {L} \"+\" {b} rsub {n} sin {n\u03C0x} "
+ u"over {L} right )}"_ustr;
CPPUNIT_ASSERT_EQUAL(aExpected, aActual);
aActual = getFormula(getRun(getParagraph(5), 1));
- aExpected = "{a} ^ {2} + {b} ^ {2} = {c} ^ {2}";
+ aExpected = "{a} ^ {2} \"+\" {b} ^ {2} \"=\" {c} ^ {2}";
CPPUNIT_ASSERT_EQUAL(aExpected, aActual);
aActual = getFormula(getRun(getParagraph(6), 1));
- aExpected = u"x = {\u2212 b \u00B1 sqrt {{b} ^ {2} \u2212 4 ac}} over {2 a}"_ustr;
+ aExpected = u"x \"=\" {\u2212 b \u00B1 sqrt {{b} ^ {2} \u2212 4 ac}} over {2 a}"_ustr;
CPPUNIT_ASSERT_EQUAL(aExpected, aActual);
aActual = getFormula(getRun(getParagraph(7), 1));
- aExpected = u"{e} ^ {x} = 1 + {x} over {1 !} + {{x} ^ {2}} over {2 !} + {{x} ^ {3}} "
- u"over {3 !} + \u2026 , \u2212 \u221E < x < \u221E"_ustr;
+ aExpected
+ = u"{e} ^ {x} \"=\" 1 \"+\" {x} over {1 !} \"+\" {{x} ^ {2}} over {2 !} \"+\" {{x} ^ {3}} "
+ u"over {3 !} \"+\" \u2026 , \u2212 \u221E \"<\" x \"<\" \u221E"_ustr;
CPPUNIT_ASSERT_EQUAL(aExpected, aActual);
aActual = getFormula(getRun(getParagraph(8), 1));
- aExpected = u"sin \u03B1 \u00B1 sin \u03B2 = 2 sin {1} over {2} left (\u03B1 \u00B1 "
+ aExpected = u"sin \u03B1 \u00B1 sin \u03B2 \"=\" 2 sin {1} over {2} left (\u03B1 \u00B1 "
u"\u03B2 right ) cos {1} over {2} left (\u03B1 \u2213 \u03B2 right )"_ustr;
CPPUNIT_ASSERT_EQUAL(aExpected, aActual);
aActual = getFormula(getRun(getParagraph(9), 1));
- aExpected = u"cos \u03B1 + cos \u03B2 = 2 cos {1} over {2} left (\u03B1 + \u03B2 "
+ aExpected = u"cos \u03B1 \"+\" cos \u03B2 \"=\" 2 cos {1} over {2} left (\u03B1 \"+\" \u03B2 "
u"right ) cos {1} over {2} left (\u03B1 \u2212 \u03B2 right )"_ustr;
CPPUNIT_ASSERT_EQUAL(aExpected, aActual);
}
@@ -334,8 +338,8 @@ CPPUNIT_TEST_FIXTURE(Test, testMathNary)
{
loadAndReload("math-nary.rtf");
OUString aActual = getFormula(getRun(getParagraph(1), 1));
- CPPUNIT_ASSERT_EQUAL(u"lllint from {1} to {2} {x + 1} prod from {a} {b} sum to {2} {x}"_ustr,
- aActual);
+ CPPUNIT_ASSERT_EQUAL(
+ u"lllint from {1} to {2} {x \"+\" 1} prod from {a} {b} sum to {2} {x}"_ustr, aActual);
}
CPPUNIT_TEST_FIXTURE(Test, testMathLimupp)
@@ -381,7 +385,7 @@ CPPUNIT_TEST_FIXTURE(Test, testMathRad)
{
loadAndReload("math-rad.rtf");
OUString aActual = getFormula(getRun(getParagraph(1), 1));
- CPPUNIT_ASSERT_EQUAL(u"sqrt {4} nroot {3} {x + 1}"_ustr, aActual);
+ CPPUNIT_ASSERT_EQUAL(u"sqrt {4} nroot {3} {x \"+\" 1}"_ustr, aActual);
}
CPPUNIT_TEST_FIXTURE(Test, testMathSepchr)
@@ -400,10 +404,11 @@ CPPUNIT_TEST_FIXTURE(Test, testMathSubscripts)
{
auto verify = [this]() {
OUString aActual = getFormula(getRun(getParagraph(1), 1));
- CPPUNIT_ASSERT_EQUAL(u"{x} ^ {y} + {e} ^ {x} {x} ^ {b} {x} rsub {b} {a} rsub {c} rsup {b} "
- "{x} lsub {2} lsup {1} {{x csup {6} csub {3}} lsub {4} lsup {5}} rsub "
- "{2} rsup {1}"_ustr,
- aActual);
+ CPPUNIT_ASSERT_EQUAL(
+ u"{x} ^ {y} \"+\" {e} ^ {x} {x} ^ {b} {x} rsub {b} {a} rsub {c} rsup {b} "
+ "{x} lsub {2} lsup {1} {{x csup {6} csub {3}} lsub {4} lsup {5}} rsub "
+ "{2} rsup {1}"_ustr,
+ aActual);
};
createSwDoc("math-subscripts.rtf");
verify();
@@ -463,8 +468,7 @@ CPPUNIT_TEST_FIXTURE(Test, testMathRuns)
{
loadAndReload("math-runs.rtf");
// was [](){}, i.e. first curly bracket had an incorrect position
- CPPUNIT_ASSERT_EQUAL(u"\\{ left [ right ] \\( \\) \\}"_ustr,
- getFormula(getRun(getParagraph(1), 1)));
+ CPPUNIT_ASSERT_EQUAL(u"\\{ \\[ \\] \\( \\) \\}"_ustr, getFormula(getRun(getParagraph(1), 1)));
}
// Saving left and right for parentheses when importing not from the m:t tag (rtf)
@@ -629,7 +633,7 @@ CPPUNIT_TEST_FIXTURE(Test, testMnor)
// \mnor wasn't handled, leading to missing quotes around "divF" and so on.
OUString aActual = getFormula(getRun(getParagraph(1), 1));
CPPUNIT_ASSERT_EQUAL(
- u"iiint from {V} to <?> {\"divF\"} dV = llint from {S} to <?> {\"F\" \u2219 \"n\" dS}"_ustr,
+ u"iiint from {V} to <?> {\"divF\"} dV \"=\" llint from {S} to <?> {\"F\" \u2219 \"n\" dS}"_ustr,
aActual);
};
createSwDoc("mnor.rtf");
diff --git a/sw/qa/extras/rtfimport/data/165333.rtf b/sw/qa/extras/rtfimport/data/165333.rtf
new file mode 100644
index 000000000000..7834bfd178ef
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/165333.rtf
@@ -0,0 +1,12 @@
+{\rtf1
+
+{\stylesheet
+{\ql\fs72 Normal;}
+}
+
+\pard{\rtlch\fcs1 \ab\af40\afs12 \ltrch\fcs0
+\v\f40\fs12\cf1\insrsid12669988\charrsid9449667 \line }
+{\rtlch\fcs1 \af40\afs10 \ltrch\fcs0 \f40\fs10\insrsid12669988\charrsid11105138
+{\field{\*\fldinst SYMBOL 253 \\f "Wingdings" \\s 5}{\fldrslt\f10\fs10}}}\par
+
+}
diff --git a/sw/qa/extras/rtfimport/data/165483.rtf b/sw/qa/extras/rtfimport/data/165483.rtf
new file mode 100644
index 000000000000..1c6eec96cdc9
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/165483.rtf
@@ -0,0 +1,12 @@
+{\rtf1\ansi
+{\stylesheet{\fs36 Normal;}
+{\*\ts11\sl400\slmult1\sa100 \snext11 \ssemihidden \sunhideused Normal Table;}
+{\ts12\sl400\slmult1\sa100 \snext11 \ssemihidden \sunhideused Normal Table Copy;}
+{\ts96 \sbasedon12\snext196 Based On Table Normal Copy;}
+}
+{\s96 This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. \par }
+{\s96 This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. \par }
+{\s96 This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. \par }
+{\s96 This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. This text should have single line spacing and no spacing below paragraph. \par }
+
+}
diff --git a/sw/qa/extras/rtfimport/data/read-only-protect.rtf b/sw/qa/extras/rtfimport/data/read-only-protect.rtf
new file mode 100644
index 000000000000..e3744fcab2a6
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/read-only-protect.rtf
@@ -0,0 +1,214 @@
+{\rtf1\adeflang1025\ansi\ansicpg1250\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1038\deflangfe1038\themelang1038\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};}
+{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};}{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
+{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};}
+{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};}
+{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};}
+{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};}
+{\f364\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}{\f365\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}{\f367\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}
+{\f368\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}{\f369\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\f370\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}
+{\f371\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}{\f372\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}{\f364\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}
+{\f365\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}{\f367\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}{\f368\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}
+{\f369\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\f370\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}{\f371\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}
+{\f372\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}{\f754\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f755\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f757\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}
+{\f758\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f759\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f760\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\f761\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\f762\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}
+{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}
+{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}
+{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}
+{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}
+{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}
+{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}
+{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}
+{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}
+{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}
+{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}
+{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}
+{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}
+{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}
+{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}
+{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}
+{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}
+{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}
+{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}
+{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}
+{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}
+{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}
+{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
+{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Arial};}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Arial};}
+{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Arial};}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Arial};}
+{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Arial};}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Arial};}
+{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Arial};}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Arial};}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
+\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
+\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \f31506\fs22\lang1038\langfe1033\langfenp1033 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }
+\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1038\langfe1033\cgrid\langnp1038\langfenp1033
+\snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1038\langfe1033\cgrid\langnp1038\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}}
+{\*\rsidtbl \rsid4006494\rsid7630987\rsid12983264\rsid15291755}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author G\'e1bor Kelemen2010}
+{\operator G\'e1bor Kelemen2010}{\creatim\yr2023\mo1\dy24\hr22\min24}{\revtim\yr2023\mo1\dy24\hr22\min25}{\version2}{\edmins1}{\nofpages1}{\nofwords4}{\nofchars33}{\nofcharsws36}{\vern107}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/200
+3/wordml}}\paperw11906\paperh16838\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
+\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml1\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0
+\showxmlerrors1\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\annotprot\readprot\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot15291755\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
+{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\enforceprot1\protlevel3\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
+{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9
+\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
+\f31506\fs22\lang1038\langfe1033\cgrid\langnp1038\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid15291755 You are not supposed to write here: }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid12983264
+\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
+9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
+5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
+b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
+0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
+a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
+c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
+0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
+a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
+6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
+4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
+4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210007b740aaca0600008f1a0000160000007468656d652f7468656d652f
+7468656d65312e786d6cec595b8bdb46147e2ff43f08bd3bbe49be2cf1065bb69336bb49889d943cceda636bb2238dd18c776342a0244f7d2914d2d28706fad6
+87521a68a0a12ffd310b1bdaf447f4cc489667ec71f6420aa1640d8b34face996fce39face48ba7aed51449d239c70c2e2965bbe52721d1c8fd898c4d3967b6f
+d82f345c870b148f1165316eb90bccdd6bbb9f7e7215ed881047d801fb98efa0961b0a31db2916f9088611bfc26638866b13964448c069322d8e13740c7e235a
+ac944ab5628448ec3a318ac0ededc9848cb033942edddda5f31e85d358703930a2c940bac68685c28e0fcb12c1173ca089738468cb8579c6ec78881f09d7a188
+0bb8d0724beacf2dee5e2da29dcc888a2db69a5d5ffd657699c1f8b0a2e64ca607f9a49ee77bb576ee5f01a8d8c4f5eabd5aaf96fb5300341ac14a532eba4fbf
+d3ec74fd0cab81d2438bef6ebd5b2d1b78cd7f758373db973f03af40a97f6f03dfef07104503af4029dedfc07b5ebd1278065e81527c6d035f2fb5bb5eddc02b
+5048497cb8812ef9b56ab05c6d0e99307ac30a6ffa5ebf5ec99caf50500d7975c929262c16db6a2d420f59d2078004522448ec88c50c4fd008aa3840941c24c4
+d923d3100a6f8662c661b85429f54b55f82f7f9e3a5211413b1869d6921730e11b43928fc34709998996fb39787535c8e9ebd7274f5f9d3cfdfde4d9b393a7bf
+66732b5786dd0d144f75bbb73f7df3cf8b2f9dbf7ffbf1edf36fd3a9d7f15cc7bff9e5ab377ffcf92ef7b0e255284ebf7bf9e6d5cbd3efbffeebe7e716efed04
+1de8f0218930776ee163e72e8b608116fef820b998c5304444b768c7538e622467b1f8ef89d040df5a208a2cb80e36e3783f01a9b101afcf1f1a8407613217c4
+e2f1661819c07dc6688725d628dc947369611ecee3a97df264aee3ee2274649b3b40b191e5de7c061a4b6c2e83101b34ef50140b34c531168ebcc60e31b6acee
+0121465cf7c928619c4d84f380381d44ac21199203a39a56463748047959d80842be8dd8ecdf773a8cda56ddc5472612ee0d442de487981a61bc8ee602453697
+4314513de07b48843692834532d2713d2e20d3534c99d31b63ce6d36b71358af96f49b2033f6b4efd345642213410e6d3ef710633ab2cb0e831045331b7640e2
+50c77ec60fa144917387091b7c9f9977883c873ca0786bbaef136ca4fb6c35b8070aab535a1588bc324f2cb9bc8e9951bf83059d20aca4061a80a1eb1189cf14
+f93579f7ff3b7907113dfde1856545ef47d2ed8e8d7c5c50ccdb09b1de4d37d6247c1b6e5db803968cc987afdb5d348fef60b855369bd747d9fe28dbeeff5eb6
+b7ddcfef5fac57fa0cd22db7ade9765d6ddea3ad7bf709a174201614ef71b57de7d095c67d189476eab915e7cf72b3100ee59d0c1318b86982948d9330f10511
+e1204433d8e3975de964ca33d753eecc1887adbf1ab6fa96783a8ff6d9387d642d97e5e3692a1e1c89d578c9cfc7e17143a4e85a7df51896bb576ca7ea717949
+40da5e8484369949a26a21515f0eca20a98773089a85845ad97b61d1b4b06848f7cb546db0006a795660dbe4c066abe5fa1e9880113c55218ac7324f69aa97d9
+55c97c9f99de164ca302600fb1ac8055a69b92ebd6e5c9d5a5a5768e4c1b24b4723349a8c8a81ec64334c65975cad1f3d0b868ae9bab941af46428d47c505a2b
+1af5c6bb585c36d760b7ae0d34d69582c6ce71cbad557d2899119ab5dc093cfac3613483dae172bb8be814de9f8d4492def097519659c24517f1300db8129d54
+0d222270e25012b55cb9fc3c0d34561aa2b8952b20081f2cb926c8ca87460e926e26194f267824f4b46b2332d2e929287caa15d6abcafcf26069c9e690ee4138
+3e760ee83cb98ba0c4fc7a5906704c38bc012aa7d11c1378a5990bd9aafed61a5326bbfa3b455543e938a2b310651d4517f314aea43ca7a3cef2186867d99a21
+a05a48b2467830950d560faad14df3ae9172d8da75cf369291d34473d5330d55915dd3ae62c60ccb36b016cbcb35798dd532c4a0697a874fa57b5d729b4bad5b
+db27e45d02029ec7cfd275cfd110346aabc90c6a92f1a60c4bcdce46cddeb15ce019d4ced32434d5af2dddaec52def11d6e960f0529d1fecd6ab168626cb7da5
+8ab4faf6a17f9e60070f413cbaf022784e0557a9848f0f09820dd140ed4952d9805be491c86e0d3872e60969b98f4b7edb0b2a7e502835fc5ec1ab7aa542c36f
+570b6ddfaf967b7eb9d4ed549e4063116154f6d3ef2e7d780d4517d9d71735bef105265abe69bb32625191a92f2c45455c7d812957b67f81710888cee35aa5df
+ac363bb542b3daee17bc6ea7516806b54ea15b0beadd7e37f01bcdfe13d7395260af5d0dbc5aaf51a89583a0e0d54a927ea359a87b954adbabb71b3daffd24db
+c6c0ca53f9c86201e155bc76ff050000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72
+656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c08
+2e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd0
+8a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa
+4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f
+6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72
+656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f746865
+6d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210007b740aaca0600008f1a00001600000000000000000000000000d60200
+007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027000000000000000000000000
+00d40900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cf0a00000000}
+{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
+617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
+6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
+656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
+{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;
+\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text;
+\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;
+\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;
+\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1;
+\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision;
+\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;
+\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1;
+\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
+\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;
+\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;
+\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
+\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;
+\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;
+\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
+\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;
+\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;
+\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
+\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
+\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
+\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
+\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
+\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
+\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
+\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
+\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
+\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000
+4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000301c
+fb6d3a30d901feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file
diff --git a/sw/qa/extras/rtfimport/data/tblrepeat.rtf b/sw/qa/extras/rtfimport/data/tblrepeat.rtf
new file mode 100644
index 000000000000..1288c59f3fd3
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/tblrepeat.rtf
@@ -0,0 +1,541 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff295\deff0\stshfdbch157\stshfloch369\stshfhich369\stshfbi295\deflang1031\deflangfe1041\themelang1031\themelangfe1041\themelangcs0{\fonttbl{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
+{\f46\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Liberation Sans;}{\f103\fbidi \fswiss\fcharset134\fprq2{\*\panose 020b0503020204020204}Microsoft YaHei;}{\f104\fbidi \fswiss\fcharset134\fprq2 @Microsoft YaHei;}
+{\f157\fbidi \fmodern\fcharset134\fprq1{\*\panose 02010609030101010101}NSimSun;}{\f158\fbidi \fmodern\fcharset134\fprq1 @NSimSun;}{\f295\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans;}
+{\f369\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Liberation Serif;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbmajor\f31501\fbidi \fswiss\fcharset128\fprq2{\*\panose 020b0300000000000000}Yu Gothic Light{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2 Aptos Display;}
+{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbminor\f31505\fbidi \froman\fcharset128\fprq2{\*\panose 02020400000000000000}Yu Mincho{\*\falt \'9f\'e0\'96\'be\'92\'a9};}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2 Aptos;}
+{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1693\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f1694\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}
+{\f1696\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f1697\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f1700\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f1701\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}
+{\f1813\fbidi \fswiss\fcharset238\fprq2 Liberation Sans CE;}{\f1814\fbidi \fswiss\fcharset204\fprq2 Liberation Sans Cyr;}{\f1816\fbidi \fswiss\fcharset161\fprq2 Liberation Sans Greek;}{\f1817\fbidi \fswiss\fcharset162\fprq2 Liberation Sans Tur;}
+{\f1818\fbidi \fswiss\fcharset177\fprq2 Liberation Sans (Hebrew);}{\f1820\fbidi \fswiss\fcharset186\fprq2 Liberation Sans Baltic;}{\f1821\fbidi \fswiss\fcharset163\fprq2 Liberation Sans (Vietnamese);}
+{\f2385\fbidi \fswiss\fcharset0\fprq2 Microsoft YaHei Western;}{\f2383\fbidi \fswiss\fcharset238\fprq2 Microsoft YaHei CE;}{\f2384\fbidi \fswiss\fcharset204\fprq2 Microsoft YaHei Cyr;}{\f2386\fbidi \fswiss\fcharset161\fprq2 Microsoft YaHei Greek;}
+{\f2387\fbidi \fswiss\fcharset162\fprq2 Microsoft YaHei Tur;}{\f2395\fbidi \fswiss\fcharset0\fprq2 @Microsoft YaHei Western;}{\f2393\fbidi \fswiss\fcharset238\fprq2 @Microsoft YaHei CE;}{\f2394\fbidi \fswiss\fcharset204\fprq2 @Microsoft YaHei Cyr;}
+{\f2396\fbidi \fswiss\fcharset161\fprq2 @Microsoft YaHei Greek;}{\f2397\fbidi \fswiss\fcharset162\fprq2 @Microsoft YaHei Tur;}{\f2925\fbidi \fmodern\fcharset0\fprq1 NSimSun Western;}{\f2935\fbidi \fmodern\fcharset0\fprq1 @NSimSun Western;}
+{\f5043\fbidi \froman\fcharset238\fprq2 Liberation Serif CE;}{\f5044\fbidi \froman\fcharset204\fprq2 Liberation Serif Cyr;}{\f5046\fbidi \froman\fcharset161\fprq2 Liberation Serif Greek;}{\f5047\fbidi \froman\fcharset162\fprq2 Liberation Serif Tur;}
+{\f5048\fbidi \froman\fcharset177\fprq2 Liberation Serif (Hebrew);}{\f5050\fbidi \froman\fcharset186\fprq2 Liberation Serif Baltic;}{\f5051\fbidi \froman\fcharset163\fprq2 Liberation Serif (Vietnamese);}
+{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fdbmajor\f31520\fbidi \fswiss\fcharset0\fprq2 Yu Gothic Light Western{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};}{\fdbmajor\f31518\fbidi \fswiss\fcharset238\fprq2 Yu Gothic Light CE{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};}
+{\fdbmajor\f31519\fbidi \fswiss\fcharset204\fprq2 Yu Gothic Light Cyr{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};}
+{\fdbmajor\f31521\fbidi \fswiss\fcharset161\fprq2 Yu Gothic Light Greek{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};}
+{\fdbmajor\f31522\fbidi \fswiss\fcharset162\fprq2 Yu Gothic Light Tur{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};}
+{\fdbmajor\f31525\fbidi \fswiss\fcharset186\fprq2 Yu Gothic Light Baltic{\*\falt \'9f\'e0\'83\'53\'83\'56\'83\'62\'83\'4e Light};}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Aptos Display CE;}
+{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Aptos Display Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Aptos Display Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Aptos Display Tur;}
+{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Aptos Display Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Aptos Display (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fdbminor\f31560\fbidi \froman\fcharset0\fprq2 Yu Mincho Western{\*\falt \'9f\'e0\'96\'be\'92\'a9};}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Yu Mincho CE{\*\falt \'9f\'e0\'96\'be\'92\'a9};}
+{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Yu Mincho Cyr{\*\falt \'9f\'e0\'96\'be\'92\'a9};}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Yu Mincho Greek{\*\falt \'9f\'e0\'96\'be\'92\'a9};}
+{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Yu Mincho Tur{\*\falt \'9f\'e0\'96\'be\'92\'a9};}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Yu Mincho Baltic{\*\falt \'9f\'e0\'96\'be\'92\'a9};}
+{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Aptos CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Aptos Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Aptos Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Aptos Tur;}
+{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Aptos Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Aptos (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f1353\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f1354\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f1356\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f1357\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f1358\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f1359\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f1360\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f1361\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
+\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
+\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\langfenp2052 }{\*\defpap
+\ql \li0\ri0\widctlpar\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\f369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
+\ql \li0\ri0\widctlpar\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\f369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052
+\snext11 \ssemihidden \sunhideused Normal Table;}{\s15\ql \li0\ri0\sb240\sa120\keepn\widctlpar\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af295\afs28\alang1081 \ltrch\fcs0
+\fs28\lang1031\langfe2052\kerning3\loch\f46\hich\af46\dbch\af103\cgrid\langnp1031\langfenp2052 \sbasedon0 \snext16 \spriority0 Heading;}{\s16\ql \li0\ri0\sa140\sl276\slmult1\widctlpar\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0
+\rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\f369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 \sbasedon0 \snext16 \spriority0 Text body;}{\s17\ql \li0\ri0\sa140\sl276\slmult1
+\widctlpar\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\f369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 \sbasedon16 \snext17 \spriority0
+List;}{\s18\ql \li0\ri0\sb120\sa120\widctlpar\noline\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af295\afs24\alang1081 \ltrch\fcs0
+\i\fs24\lang1031\langfe2052\kerning3\loch\f369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 \sbasedon0 \snext18 \spriority0 caption;}{\s19\ql \li0\ri0\widctlpar\noline\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\f369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 \sbasedon0 \snext19 \spriority0 Index;}{
+\s20\ql \li0\ri0\nowidctlpar\noline\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\f369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052
+\sbasedon0 \snext20 \spriority0 Table Contents;}}{\*\rsidtbl \rsid2694821\rsid2705775\rsid6427206\rsid6578897}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info
+{\author Oliver Specht}{\operator Oliver Specht}{\creatim\yr2025\mo2\dy17\hr15\min15}{\revtim\yr2025\mo2\dy17\hr15\min15}{\version2}{\edmins0}{\nofpages2}{\nofwords28}{\nofchars180}{\*\company CIB Group}{\nofcharsws207}{\vern113}}{\*\xmlnstbl {\xmlns1 htt
+p://schemas.microsoft.com/office/word/2003/wordml}}\paperw11906\paperh16838\margl1134\margr1134\margt1134\margb1134\gutter0\ltrsect
+\deftab709\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0
+\showxmlerrors1\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphauto1\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1134\dgvorigin1134\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale70\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot2694821\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
+{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \cf1\insrsid6427206 \chftnsep }{\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid6427206
+\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid6427206 \chftnsepc
+\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid6427206 \chftnsep
+\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid6427206 \chftnsepc
+\par }}\ltrpar \sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang
+{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\ltrrow\trowd \irow0\irowband0\ltrrow
+\ts11\trgaph10\trleft0\trhdr\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819
+\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid6427206 \hich\af369\dbch\af157\loch\f369 Header 0}{\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar
+\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295
+\ltrch\fcs0 \insrsid2694821 \trowd \irow0\irowband0\ltrrow\ts11\trgaph10\trleft0\trhdr\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl
+\cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid6427206 \hich\af369\dbch\af157\loch\f369 Header 1}{\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar
+\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295
+\ltrch\fcs0 \insrsid2694821 \trowd \irow1\irowband1\ltrrow\ts11\trgaph10\trleft0\trhdr\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl
+\cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid6427206 \hich\af369\dbch\af157\loch\f369 Header 2}{\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar
+\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295
+\ltrch\fcs0 \insrsid2694821 \trowd \irow2\irowband2\ltrrow\ts11\trgaph10\trleft0\trhdr\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl
+\cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\trowd \irow3\irowband3\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\pard\plain \ltrpar\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0
+\rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar
+\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295
+\ltrch\fcs0 \insrsid2694821 \trowd \irow3\irowband3\ltrrow\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl
+\cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow4\irowband4\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow5\irowband5\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow6\irowband6\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow7\irowband7\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow8\irowband8\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow9\irowband9\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow10\irowband10\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow11\irowband11\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow12\irowband12\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow13\irowband13\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow14\irowband14\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow15\irowband15\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow16\irowband16\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow17\irowband17\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow18\irowband18\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow19\irowband19\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow20\irowband20\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow21\irowband21\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow22\irowband22\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow23\irowband23\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow24\irowband24\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow25\irowband25\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow26\irowband26\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow27\irowband27\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow28\irowband28\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow29\irowband29\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow30\irowband30\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow31\irowband31\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow32\irowband32\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow33\irowband33\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow34\irowband34\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow35\irowband35\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow36\irowband36\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow37\irowband37\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow38\irowband38\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow39\irowband39\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow40\irowband40\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow41\irowband41\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow42\irowband42\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow43\irowband43\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow44\irowband44\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow45\irowband45\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow46\irowband46\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow47\irowband47\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow48\irowband48\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow49\irowband49\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow50\irowband50\ltrrow
+\ts11\trgaph10\trleft0\trftsWidth3\trwWidth9638\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx4819\clvertalt
+\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4819\clshdrawnil \cellx9638\row \ltrrow}\pard\plain \ltrpar
+\s20\ql \li0\ri0\nowidctlpar\noline\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0 \fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {
+\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \cell \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\hyphpar0\aspalpha\faroman\adjustright\rin0\lin0 \rtlch\fcs1 \af295\afs24\alang1081 \ltrch\fcs0
+\fs24\lang1031\langfe2052\kerning3\loch\af369\hich\af369\dbch\af157\cgrid\langnp1031\langfenp2052 {\rtlch\fcs1 \af295 \ltrch\fcs0 \insrsid2694821 \trowd \irow51\irowband51\ltrrow