cui/source/inc/paragrph.hxx                                        |   13 
 cui/source/tabpages/paragrph.cxx                                   |  102 +++-
 cui/uiconfig/ui/textflowpage.ui                                    |  105 +++-
 editeng/source/items/paraitem.cxx                                  |   82 +--
 editeng/source/rtf/rtfitem.cxx                                     |    2 
 include/editeng/editrids.hrc                                       |    8 
 include/editeng/hyphenzoneitem.hxx                                 |   12 
 include/editeng/memberids.h                                        |    3 
 include/sfx2/msg.hxx                                               |    1 
 include/unotools/linguprops.hxx                                    |    4 
 include/xmloff/xmltoken.hxx                                        |    2 
 include/xmloff/xmltypes.hxx                                        |    1 
 offapi/com/sun/star/style/ParagraphProperties.idl                  |   15 
 schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng        |   16 
 svx/sdi/svxitems.sdi                                               |    3 
 sw/inc/inspectorproperties.hrc                                     |    1 
 sw/inc/unoprnms.hxx                                                |    1 
 sw/qa/extras/odfexport/data/tdf132599_column.fodt                  |  198 
+++++++
 sw/qa/extras/odfexport/data/tdf132599_page_in_last_column.fodt     |  196 
+++++++
 sw/qa/extras/odfexport/data/tdf132599_page_in_not_last_column.fodt |  198 
+++++++
 sw/qa/extras/odfexport/data/tdf132599_spread-left-page.fodt        |  252 
++++++++++
 sw/qa/extras/odfexport/data/tdf132599_spread.fodt                  |  241 
+++++++++
 sw/qa/extras/odfexport/odfexport2.cxx                              |   65 ++
 sw/qa/uitest/styleInspector/styleInspector.py                      |   20 
 sw/qa/uitest/styleInspector/tdf137513.py                           |    2 
 sw/source/core/text/inftxt.cxx                                     |   26 -
 sw/source/core/text/widorp.cxx                                     |   32 +
 sw/source/core/unocore/unomapproperties.hxx                        |    6 
 sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx              |    1 
 writerfilter/source/dmapper/PropertyIds.cxx                        |    1 
 writerfilter/source/dmapper/PropertyIds.hxx                        |    1 
 writerfilter/source/dmapper/SettingsTable.cxx                      |    3 
 xmloff/inc/xmlprop.hxx                                             |    1 
 xmloff/source/core/xmltoken.cxx                                    |    2 
 xmloff/source/text/txtprhdl.cxx                                    |   13 
 xmloff/source/text/txtprmap.cxx                                    |    1 
 xmloff/source/token/tokens.txt                                     |    2 
 37 files changed, 1515 insertions(+), 117 deletions(-)

New commits:
commit 6e8819f29b6051a0e551d77512830539913ec277
Author:     László Németh <nem...@numbertext.org>
AuthorDate: Wed Apr 10 12:27:38 2024 +0200
Commit:     László Németh <nem...@numbertext.org>
CommitDate: Thu Apr 11 10:20:41 2024 +0200

    tdf#132599 cui offapi sw xmloff: add hyphenation-keep-type
    
    Support XSL attribute "column" and CSS 4 attribute "spread",
    stored in loext:hyphenation-keep-type, to give better control
    over hyphenation-keep. E.g. spread: both parts of a hyphenated
    word shall lie within a single spread, i.e. when the next page
    is not visible at the same time (e.g. the next page is not a
    right page of a book).
    
    – css::style::ParaHyphenationKeep is a boolean property now,
      importing hyphenation-keep = "page" as true.
    
    – type of ParaHyphenationKeep, including the new non-ODF types
      is stored in the new ParagraphProperties::ParaHyphenationKeepType.
    
    – default value of ParaHyphenationKeepType is COLUMN for
      interoperability.
    
    – Add checkboxes to Text Flow -> Hyphenation Across in
      paragraph dialog:
    
      * Column (previously: Hyphenate across column and page)
      * Page
      * Spread
    
      – enabling/disabling them follows XSL/CSS 4/loext, i.e.
        possible combinations:
    
      * No Hyphenation across
        (hyphenation-keep = "page" and loext:hyphenation-keep-type = "column")
    
      * Hyphenation across [x] Column
        (hyphenation-keep = "page" and loext:hyphenation-keep-type = "page")
    
      * Hyphenation across [x] Column [x] Page
        (hyphenation-keep = "page" and loext:hyphenation-keep-type = "spread")
    
      * Hyphenation across [x] Column [x] Page [x] Spread
        (hyphenation-keep = "auto")
    
    – Add ODF import/export
    
    – Update DOCX import
    
    – Add ODF unit tests
    
    Note: recent implementation depends on widow settings: disabling widow
    handling allows hyphenation across columns and pages not only in table
    cells.
    
    Note: RTF import-only, but not used bPageEnd has been renamed to bKeep.
    Depending on the RTF test results, likely it will need to disable
    the layout change, e.g. GetKeepType()=ParagraphHyphenationKeepType::AUTO,
    if PageEnd uses obsolete hyphenation rule, i.e. shifting only the
    hyphenated word to the next page, not the full line.
    
    More information:
    
    – COLUMN (standard XSL value, defined in
      https://www.w3.org/TR/2001/REC-xsl-20011015/slice7.html#hyphenation-keep)
    
    – SPREAD and ALWAYS (CSS 4 values of hyphenate-limit-last,
      equivalent of hyphenation-keep, defined in
      https://www.w3.org/TR/css-text-4/#hyphenate-line-limits).
    
    Follow-up to commit 9574a62add8e4901405e12117e75c86c2d2c2f21
    "tdf#132599 cui offapi sw xmloff: implement hyphenate-keep" and
    commit c8ee0e8f581b8a6e41b1a6b8aa4d40b442c1d463
    "tdf160518 DOCX: import hyphenation-keep to fix layout".
    
    Change-Id: I3ac6d9e86d0ed1646f105de8607c0e8ebc534eaa
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165954
    Tested-by: László Németh <nem...@numbertext.org>
    Reviewed-by: László Németh <nem...@numbertext.org>

diff --git a/cui/source/inc/paragrph.hxx b/cui/source/inc/paragrph.hxx
index cd52d753afcc..aac1f25d8e07 100644
--- a/cui/source/inc/paragrph.hxx
+++ b/cui/source/inc/paragrph.hxx
@@ -222,7 +222,9 @@ private:
     weld::TriStateEnabled aKeepParaState;
     weld::TriStateEnabled aOrphanState;
     weld::TriStateEnabled aWidowState;
-    weld::TriStateEnabled aKeepState;
+    weld::TriStateEnabled aAcrossColumnState;
+    weld::TriStateEnabled aAcrossPageState;
+    weld::TriStateEnabled aAcrossSpreadState;
 
     bool                bPageBreak;
     bool                bHtmlMode;
@@ -270,7 +272,10 @@ private:
     std::unique_ptr<weld::Label> m_xWidowRowLabel;
 
     // avoid hyphenation across
-    std::unique_ptr<weld::CheckButton> m_xKeepBox;
+    std::unique_ptr<weld::Label> m_xAcrossText;
+    std::unique_ptr<weld::CheckButton> m_xAcrossColumnBox;
+    std::unique_ptr<weld::CheckButton> m_xAcrossPageBox;
+    std::unique_ptr<weld::CheckButton> m_xAcrossSpreadBox;
 
     void HyphenClickHdl();
     void PageNumBoxClickHdl();
@@ -290,7 +295,9 @@ private:
     DECL_LINK(PageBreakTypeHdl_Impl, weld::ComboBox&, void);
     DECL_LINK(PageNumBoxClickHdl_Impl, weld::Toggleable&, void);
     DECL_LINK(KeepParaBoxClickHdl_Impl, weld::Toggleable&, void);
-    DECL_LINK(KeepHdl_Impl, weld::Toggleable&, void);
+    DECL_LINK(AcrossColumnHdl_Impl, weld::Toggleable&, void);
+    DECL_LINK(AcrossPageHdl_Impl, weld::Toggleable&, void);
+    DECL_LINK(AcrossSpreadHdl_Impl, weld::Toggleable&, void);
 
     virtual void            PageCreated(const SfxAllItemSet& aSet) override;
 };
diff --git a/cui/source/tabpages/paragrph.cxx b/cui/source/tabpages/paragrph.cxx
index d3234c0c9964..2ad7c4bdf80b 100644
--- a/cui/source/tabpages/paragrph.cxx
+++ b/cui/source/tabpages/paragrph.cxx
@@ -56,6 +56,7 @@
 #include <svl/eitem.hxx>
 #include <svl/intitem.hxx>
 #include <unotools/syslocaleoptions.hxx>
+#include <com/sun/star/text/ParagraphHyphenationKeepType.hpp>
 
 const WhichRangesContainer SvxStdParagraphTabPage::pStdRanges(
     svl::Items<
@@ -1619,7 +1620,9 @@ bool SvxExtParagraphTabPage::FillItemSet( SfxItemSet* 
rOutSet )
          m_xMaxHyphenEdit->get_value_changed_from_saved() ||
          m_xMinWordLength->get_value_changed_from_saved() ||
          m_aHyphenZone.get_value_changed_from_saved() ||
-         m_xKeepBox->get_state_changed_from_saved() )
+         m_xAcrossColumnBox->get_state_changed_from_saved() ||
+         m_xAcrossPageBox->get_state_changed_from_saved() ||
+         m_xAcrossSpreadBox->get_state_changed_from_saved() )
     {
         SvxHyphenZoneItem aHyphen(
             static_cast<const SvxHyphenZoneItem&>(GetItemSet().Get( _nWhich )) 
);
@@ -1641,17 +1644,36 @@ bool SvxExtParagraphTabPage::FillItemSet( SfxItemSet* 
rOutSet )
         MapUnit eUnit = pPool->GetMetric( _nWhich );
         aHyphen.GetTextHyphenZone() = 
static_cast<sal_uInt16>(m_aHyphenZone.GetCoreValue(eUnit));
         aHyphen.SetHyphen( eHyphenState == TRISTATE_TRUE );
-
-        const TriState eKeepState = m_xKeepBox->get_state();
         aHyphen.SetNoLastWordHyphenation(m_xHyphenNoLastWordBox->get_state() 
!= TRISTATE_TRUE);
-        if ( eKeepState == TRISTATE_TRUE )
+        const TriState eAcrossColumnState = m_xAcrossColumnBox->get_state();
+        const TriState eAcrossPageState = m_xAcrossPageBox->get_state();
+        const TriState eAcrossSpreadState = m_xAcrossSpreadBox->get_state();
+        aHyphen.SetKeep( eAcrossSpreadState != TRISTATE_TRUE );
+        if ( eAcrossSpreadState == TRISTATE_TRUE )
+        {
+            // hyphenate across column, page and spread -> ParaHyphenationKeep 
= false and
+            // set default value 3 (COLUMN)
+            aHyphen.GetKeepType() =
+                    
static_cast<sal_uInt8>(css::text::ParagraphHyphenationKeepType::COLUMN);
+        }
+        else if ( eAcrossPageState == TRISTATE_TRUE )
+        {
+            // hyphenate across column and page, but not spread  -> 1 (SPREAD)
+            aHyphen.GetKeepType() =
+                    
static_cast<sal_uInt8>(css::text::ParagraphHyphenationKeepType::SPREAD);
+        }
+        else if ( eAcrossColumnState == TRISTATE_TRUE )
         {
-             // hyphenate across column and page -> 0 (AUTO)
-            aHyphen.GetKeep() = static_cast<sal_uInt8>(0);
+            // hyphenate across column, but not page and spread  -> 2 (PAGE)
+            aHyphen.GetKeepType() =
+                    
static_cast<sal_uInt8>(css::text::ParagraphHyphenationKeepType::PAGE);
         }
         else
-            // don't hyphenate across column -> 3 (COLUMN)
-            aHyphen.GetKeep() = static_cast<sal_uInt8>(3);
+        {
+            // don't hyphenate across column, page and spread  -> 3 (COLUMN)
+            aHyphen.GetKeepType() =
+                    
static_cast<sal_uInt8>(css::text::ParagraphHyphenationKeepType::COLUMN);
+        }
 
         if ( !pOld ||
             *static_cast<const SvxHyphenZoneItem*>(pOld) != aHyphen ||
@@ -1872,9 +1894,12 @@ void SvxExtParagraphTabPage::Reset( const SfxItemSet* 
rSet )
         m_xMinWordLength->set_value(rHyphen.GetMinWordLength());
         m_aHyphenZone.SetFieldUnit(eFUnit);
         m_aHyphenZone.SetMetricValue(rHyphen.GetTextHyphenZone(), 
MapUnit::MapTwip);
-        // don't hyphenate column or paragraph -> disable checkbox
-        m_xKeepBox->set_state(rHyphen.GetKeep() < 3 ? TRISTATE_TRUE : 
TRISTATE_FALSE);
-        aKeepState.bTriStateEnabled = false;
+        m_xAcrossColumnBox->set_state(!rHyphen.IsKeep() || 
rHyphen.GetKeepType() < 3 ? TRISTATE_TRUE : TRISTATE_FALSE);
+        m_xAcrossPageBox->set_state(!rHyphen.IsKeep() || rHyphen.GetKeepType() 
< 2 ? TRISTATE_TRUE : TRISTATE_FALSE);
+        m_xAcrossSpreadBox->set_state(!rHyphen.IsKeep() || 
rHyphen.GetKeepType() == 0 ? TRISTATE_TRUE : TRISTATE_FALSE);
+        aAcrossColumnState.bTriStateEnabled = false;
+        aAcrossPageState.bTriStateEnabled = false;
+        aAcrossSpreadState.bTriStateEnabled = false;
     }
     else
     {
@@ -1897,7 +1922,10 @@ void SvxExtParagraphTabPage::Reset( const SfxItemSet* 
rSet )
     m_xMinWordLength->set_sensitive(bEnable);
     m_xHyphenZoneLabel->set_sensitive(bEnable);
     m_aHyphenZone.set_sensitive(bEnable);
-    m_xKeepBox->set_sensitive(bEnable);
+    m_xAcrossText->set_sensitive(bEnable);
+    m_xAcrossColumnBox->set_sensitive(bEnable);
+    m_xAcrossPageBox->set_sensitive(bEnable);
+    m_xAcrossSpreadBox->set_sensitive(bEnable);
 
     switch (rSet->GetItemState(SID_ATTR_PARA_PAGENUM))
     {
@@ -2160,7 +2188,9 @@ void SvxExtParagraphTabPage::ChangesApplied()
     m_xMaxHyphenEdit->save_value();
     m_xMinWordLength->save_value();
     m_aHyphenZone.save_value();
-    m_xKeepBox->save_state();
+    m_xAcrossColumnBox->save_state();
+    m_xAcrossPageBox->save_state();
+    m_xAcrossSpreadBox->save_state();
     m_xPageBreakBox->save_state();
     m_xBreakPositionLB->save_value();
     m_xBreakTypeLB->save_value();
@@ -2237,7 +2267,10 @@ 
SvxExtParagraphTabPage::SvxExtParagraphTabPage(weld::Container* pPage, weld::Dia
     , m_xWidowRowNo(m_xBuilder->weld_spin_button("spinWidow"))
     , m_xWidowRowLabel(m_xBuilder->weld_label("labelWidow"))
     // Avoid hyphenation across
-    , m_xKeepBox(m_xBuilder->weld_check_button("checkKeep"))
+    , m_xAcrossText(m_xBuilder->weld_label("labelHyphenAcross"))
+    , m_xAcrossColumnBox(m_xBuilder->weld_check_button("checkAcrossColumn"))
+    , m_xAcrossPageBox(m_xBuilder->weld_check_button("checkAcrossPage"))
+    , m_xAcrossSpreadBox(m_xBuilder->weld_check_button("checkAcrossSpread"))
 {
     // this page needs ExchangeSupport
     SetExchangeSupport();
@@ -2252,7 +2285,9 @@ 
SvxExtParagraphTabPage::SvxExtParagraphTabPage(weld::Container* pPage, weld::Dia
     m_xBreakPositionLB->connect_changed(LINK(this, SvxExtParagraphTabPage, 
PageBreakPosHdl_Impl));
     m_xPageNumBox->connect_toggled(LINK(this, SvxExtParagraphTabPage, 
PageNumBoxClickHdl_Impl));
     m_xKeepParaBox->connect_toggled(LINK(this, SvxExtParagraphTabPage, 
KeepParaBoxClickHdl_Impl));
-    m_xKeepBox->connect_toggled(LINK(this, SvxExtParagraphTabPage, 
KeepHdl_Impl));
+    m_xAcrossColumnBox->connect_toggled(LINK(this, SvxExtParagraphTabPage, 
AcrossColumnHdl_Impl));
+    m_xAcrossPageBox->connect_toggled(LINK(this, SvxExtParagraphTabPage, 
AcrossPageHdl_Impl));
+    m_xAcrossSpreadBox->connect_toggled(LINK(this, SvxExtParagraphTabPage, 
AcrossSpreadHdl_Impl));
 
     if (SfxObjectShell* pSh = SfxObjectShell::Current())
     {
@@ -2295,6 +2330,10 @@ 
SvxExtParagraphTabPage::SvxExtParagraphTabPage(weld::Container* pPage, weld::Dia
     m_aHyphenZone.set_sensitive(false);
     m_xPageNumBox->set_sensitive(false);
     m_xPagenumEdit->set_sensitive(false);
+    m_xAcrossText->set_sensitive(false);
+    m_xAcrossColumnBox->set_sensitive(false);
+    m_xAcrossPageBox->set_sensitive(false);
+    m_xAcrossSpreadBox->set_sensitive(false);
     // no column break in HTML
     m_xBreakTypeLB->remove(1);
 }
@@ -2432,7 +2471,10 @@ void SvxExtParagraphTabPage::HyphenClickHdl()
     m_xMinWordLength->set_sensitive(bEnable);
     m_xHyphenZoneLabel->set_sensitive(bEnable);
     m_aHyphenZone.set_sensitive(bEnable);
-    m_xKeepBox->set_sensitive(bEnable);
+    m_xAcrossText->set_sensitive(bEnable);
+    m_xAcrossColumnBox->set_sensitive(bEnable);
+    m_xAcrossPageBox->set_sensitive(bEnable);
+    m_xAcrossSpreadBox->set_sensitive(bEnable);
     m_xHyphenBox->set_state(bEnable ? TRISTATE_TRUE : TRISTATE_FALSE);
 }
 
@@ -2534,9 +2576,33 @@ void SvxExtParagraphTabPage::PageCreated(const 
SfxAllItemSet& aSet)
                     DisablePageBreak();
 }
 
-IMPL_LINK(SvxExtParagraphTabPage, KeepHdl_Impl, weld::Toggleable&, rToggle, 
void)
+IMPL_LINK(SvxExtParagraphTabPage, AcrossColumnHdl_Impl, weld::Toggleable&, 
rToggle, void)
+{
+    aAcrossColumnState.ButtonToggled(rToggle);
+    if (m_xAcrossColumnBox->get_state() != TRISTATE_TRUE )
+    {
+        m_xAcrossPageBox->set_state( TRISTATE_FALSE );
+        m_xAcrossSpreadBox->set_state( TRISTATE_FALSE );
+    }
+}
+
+IMPL_LINK(SvxExtParagraphTabPage, AcrossPageHdl_Impl, weld::Toggleable&, 
rToggle, void)
 {
-    aKeepState.ButtonToggled(rToggle);
+    aAcrossPageState.ButtonToggled(rToggle);
+    if (m_xAcrossPageBox->get_state() == TRISTATE_TRUE )
+        m_xAcrossColumnBox->set_state( TRISTATE_TRUE );
+    else
+        m_xAcrossSpreadBox->set_state( TRISTATE_FALSE );
+}
+
+IMPL_LINK(SvxExtParagraphTabPage, AcrossSpreadHdl_Impl, weld::Toggleable&, 
rToggle, void)
+{
+    aAcrossSpreadState.ButtonToggled(rToggle);
+    if (m_xAcrossSpreadBox->get_state() == TRISTATE_TRUE )
+    {
+        m_xAcrossColumnBox->set_state( TRISTATE_TRUE );
+        m_xAcrossPageBox->set_state( TRISTATE_TRUE );
+    }
 }
 
 SvxAsianTabPage::SvxAsianTabPage(weld::Container* pPage, 
weld::DialogController* pController, const SfxItemSet& rSet)
diff --git a/cui/uiconfig/ui/textflowpage.ui b/cui/uiconfig/ui/textflowpage.ui
index 1bcee0488950..3504d7988840 100644
--- a/cui/uiconfig/ui/textflowpage.ui
+++ b/cui/uiconfig/ui/textflowpage.ui
@@ -348,18 +348,27 @@
               </packing>
             </child>
             <child>
-              <object class="GtkCheckButton" id="checkKeep">
-                <property name="label" translatable="yes" 
context="textflowpage|checkKeep">Hyphenate _across column and page</property>
+              <!-- n-columns=2 n-rows=1 -->
+              <object class="GtkGrid" id="gridHyphenAcrossLabel">
                 <property name="visible">True</property>
-                <property name="can-focus">True</property>
-                <property name="receives-default">False</property>
-                <property name="use-underline">True</property>
-                <property name="inconsistent">True</property>
-                <property name="draw-indicator">True</property>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="checkKeep-atkobject">
-                    <property name="AtkObject::accessible-description" 
translatable="yes" context="textflowpage|extended_tip|checkKeep">Deselect this 
check box, if you don't want to hyphenate across column and page.</property>
+                <property name="can-focus">False</property>
+                <property name="margin-start">12</property>
+                <property name="margin-top">6</property>
+                <property name="row-spacing">6</property>
+                <property name="column-spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="labelHyphenAcross">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <property name="label" translatable="yes" 
context="textflowpage|labelHyphenAcross">Hyphenation across</property>
+                    <property name="use-underline">True</property>
+                    <property 
name="mnemonic-widget">labelHyphenAcross</property>
+                    <property name="xalign">0</property>
                   </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">0</property>
+                  </packing>
                 </child>
               </object>
               <packing>
@@ -368,6 +377,82 @@
                 <property name="width">2</property>
               </packing>
             </child>
+            <child>
+              <!-- n-columns=2 n-rows=1 -->
+              <object class="GtkGrid" id="gridHyphenAcross">
+                <property name="visible">True</property>
+                <property name="can-focus">False</property>
+                <property name="margin-start">12</property>
+                <property name="margin-top">6</property>
+                <property name="row-spacing">6</property>
+                <property name="column-spacing">12</property>
+                <child>
+                  <object class="GtkCheckButton" id="checkAcrossColumn">
+                    <property name="label" translatable="yes" 
context="textflowpage|checkAcrossColumn">Column</property>
+                    <property name="visible">True</property>
+                    <property name="can-focus">True</property>
+                    <property name="receives-default">False</property>
+                    <property name="use-underline">True</property>
+                    <property name="inconsistent">True</property>
+                    <property name="draw-indicator">True</property>
+                    <child internal-child="accessible">
+                      <object class="AtkObject" 
id="checkAcrossColumn-atkobject">
+                        <property name="AtkObject::accessible-description" 
translatable="yes" 
context="textflowpage|extended_tip|checkAcrossColumn">Deselect this check box, 
if you don't want to hyphenate across column, page and spread.</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="checkAcrossPage">
+                    <property name="label" translatable="yes" 
context="textflowpage|checkAcrossPage">Page</property>
+                    <property name="visible">True</property>
+                    <property name="can-focus">True</property>
+                    <property name="receives-default">False</property>
+                    <property name="use-underline">True</property>
+                    <property name="inconsistent">True</property>
+                    <property name="draw-indicator">True</property>
+                    <child internal-child="accessible">
+                      <object class="AtkObject" id="checkAcrossPage-atkobject">
+                        <property name="AtkObject::accessible-description" 
translatable="yes" context="textflowpage|extended_tip|checkAcrossPage">Deselect 
this check box, if you don't want to hyphenate across page and 
spread.</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="checkAcrossSpread">
+                    <property name="label" translatable="yes" 
context="textflowpage|checkAcrossSpread">Spread</property>
+                    <property name="visible">True</property>
+                    <property name="can-focus">True</property>
+                    <property name="receives-default">False</property>
+                    <property name="use-underline">True</property>
+                    <property name="inconsistent">True</property>
+                    <property name="draw-indicator">True</property>
+                    <child internal-child="accessible">
+                      <object class="AtkObject" 
id="checkAcrossSpread-atkobject">
+                        <property name="AtkObject::accessible-description" 
translatable="yes" 
context="textflowpage|extended_tip|checkAcrossSpread">Deselect this check box, 
if you don't want to hyphenate across spread.</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">0</property>
+                <property name="top-attach">11</property>
+                <property name="width">2</property>
+              </packing>
+            </child>
           </object>
         </child>
         <child type="label">
diff --git a/editeng/source/items/paraitem.cxx 
b/editeng/source/items/paraitem.cxx
index 4103fe2ea521..4b55fa49026e 100644
--- a/editeng/source/items/paraitem.cxx
+++ b/editeng/source/items/paraitem.cxx
@@ -20,6 +20,7 @@
 #include <com/sun/star/style/TabStop.hpp>
 #include <com/sun/star/style/LineSpacing.hpp>
 #include <com/sun/star/style/LineSpacingMode.hpp>
+#include <com/sun/star/text/ParagraphHyphenationKeepType.hpp>
 #include <com/sun/star/uno/Sequence.hxx>
 #include <libxml/xmlwriter.h>
 #include <comphelper/extract.hxx>
@@ -560,7 +561,7 @@ bool SvxOrphansItem::GetPresentation
 SvxHyphenZoneItem::SvxHyphenZoneItem( const bool bHyph, const sal_uInt16 nId ) 
:
     SfxPoolItem( nId ),
     bHyphen(bHyph),
-    bPageEnd(true),
+    bKeep(false),
     bNoCapsHyphenation(false),
     bNoLastWordHyphenation(false),
     nMinLead(0),
@@ -568,7 +569,7 @@ SvxHyphenZoneItem::SvxHyphenZoneItem( const bool bHyph, 
const sal_uInt16 nId ) :
     nMaxHyphens(255),
     nMinWordLength(0),
     nTextHyphenZone(0),
-    nKeep(0),           // TODO change default value to COLUMN
+    nKeepType(css::text::ParagraphHyphenationKeepType::COLUMN),
     nCompoundMinLead(0)
 {
 }
@@ -582,6 +583,9 @@ bool    SvxHyphenZoneItem::QueryValue( uno::Any& rVal, 
sal_uInt8 nMemberId ) con
         case  MID_IS_HYPHEN:
             rVal <<= bHyphen;
         break;
+        case MID_HYPHEN_KEEP:
+            rVal <<= bKeep;
+        break;
         case MID_HYPHEN_MIN_LEAD:
             rVal <<= static_cast<sal_Int16>(nMinLead);
         break;
@@ -603,8 +607,8 @@ bool    SvxHyphenZoneItem::QueryValue( uno::Any& rVal, 
sal_uInt8 nMemberId ) con
         case MID_HYPHEN_ZONE:
             rVal <<= static_cast<sal_Int16>(nTextHyphenZone);
         break;
-        case MID_HYPHEN_KEEP:
-            rVal <<= static_cast<sal_Int16>(nKeep);
+        case MID_HYPHEN_KEEP_TYPE:
+            rVal <<= static_cast<sal_Int16>(nKeepType);
         break;
         case MID_HYPHEN_COMPOUND_MIN_LEAD:
             rVal <<= static_cast<sal_Int16>(nCompoundMinLead);
@@ -616,10 +620,10 @@ bool    SvxHyphenZoneItem::QueryValue( uno::Any& rVal, 
sal_uInt8 nMemberId ) con
 bool SvxHyphenZoneItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 {
     nMemberId &= ~CONVERT_TWIPS;
-    sal_Int32 nNewVal = 0; // sal_Int32 needs for MID_HYPHEN_KEEP
+    sal_Int32 nNewVal = 0; // sal_Int32 needs for MID_HYPHEN_KEEP_TYPE
 
     if( nMemberId != MID_IS_HYPHEN && nMemberId != MID_HYPHEN_NO_CAPS &&
-                nMemberId != MID_HYPHEN_NO_LAST_WORD )
+                nMemberId != MID_HYPHEN_NO_LAST_WORD && nMemberId != 
MID_HYPHEN_KEEP )
     {
         if(!(rVal >>= nNewVal))
             return false;
@@ -630,6 +634,9 @@ bool SvxHyphenZoneItem::PutValue( const uno::Any& rVal, 
sal_uInt8 nMemberId )
         case  MID_IS_HYPHEN:
             bHyphen = Any2Bool(rVal);
         break;
+        case  MID_HYPHEN_KEEP:
+            bKeep = Any2Bool(rVal);
+        break;
         case MID_HYPHEN_MIN_LEAD:
             nMinLead = static_cast<sal_uInt8>(nNewVal);
         break;
@@ -651,8 +658,8 @@ bool SvxHyphenZoneItem::PutValue( const uno::Any& rVal, 
sal_uInt8 nMemberId )
         case MID_HYPHEN_ZONE:
             nTextHyphenZone = nNewVal;
         break;
-        case MID_HYPHEN_KEEP:
-            nKeep = static_cast<sal_uInt8>(nNewVal);
+        case MID_HYPHEN_KEEP_TYPE:
+            nKeepType = static_cast<sal_uInt8>(nNewVal);
         break;
         case MID_HYPHEN_COMPOUND_MIN_LEAD:
             nCompoundMinLead = static_cast<sal_uInt8>(nNewVal);
@@ -670,14 +677,14 @@ bool SvxHyphenZoneItem::operator==( const SfxPoolItem& 
rAttr ) const
     return ( rItem.bHyphen == bHyphen
             && rItem.bNoCapsHyphenation == bNoCapsHyphenation
             && rItem.bNoLastWordHyphenation == bNoLastWordHyphenation
-            && rItem.bPageEnd == bPageEnd
+            && rItem.bKeep == bKeep
             && rItem.nMinLead == nMinLead
             && rItem.nMinTrail == nMinTrail
             && rItem.nCompoundMinLead == nCompoundMinLead
             && rItem.nMaxHyphens == nMaxHyphens
             && rItem.nMinWordLength == nMinWordLength
             && rItem.nTextHyphenZone == nTextHyphenZone
-            && rItem.nKeep == nKeep );
+            && rItem.nKeepType == nKeepType );
 }
 
 SvxHyphenZoneItem* SvxHyphenZoneItem::Clone( SfxItemPool * ) const
@@ -699,14 +706,8 @@ bool SvxHyphenZoneItem::GetPresentation
         case SfxItemPresentation::Nameless:
         {
             TranslateId pId = RID_SVXITEMS_HYPHEN_FALSE;
-
             if ( bHyphen )
                 pId = RID_SVXITEMS_HYPHEN_TRUE;
-            rText = EditResId(pId) + cpDelimTmp;
-            pId = RID_SVXITEMS_PAGE_END_FALSE;
-
-            if ( bPageEnd )
-                pId = RID_SVXITEMS_PAGE_END_TRUE;
             rText += EditResId(pId) + cpDelimTmp +
                     OUString::number( nMinLead ) + cpDelimTmp +
                     OUString::number( nMinTrail ) + cpDelimTmp +
@@ -722,7 +723,11 @@ bool SvxHyphenZoneItem::GetPresentation
             if ( bNoLastWordHyphenation )
                 rText += cpDelimTmp + 
EditResId(RID_SVXITEMS_HYPHEN_LAST_WORD_TRUE);
 
-            rText += OUString::number( nKeep );
+            if ( bKeep )
+                rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_TRUE) +
+                                 cpDelimTmp + OUString::number( nKeepType );
+            else
+                rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_FALSE);
             return true;
         }
         case SfxItemPresentation::Complete:
@@ -731,11 +736,6 @@ bool SvxHyphenZoneItem::GetPresentation
 
             if ( bHyphen )
                 pId = RID_SVXITEMS_HYPHEN_TRUE;
-            rText = EditResId(pId) + cpDelimTmp;
-            pId = RID_SVXITEMS_PAGE_END_FALSE;
-
-            if ( bPageEnd )
-                pId = RID_SVXITEMS_PAGE_END_TRUE;
             rText += EditResId(pId) +
                     cpDelimTmp +
                     EditResId(RID_SVXITEMS_HYPHEN_MINLEAD).replaceAll("%1", 
OUString::number(nMinLead)) +
@@ -761,24 +761,30 @@ bool SvxHyphenZoneItem::GetPresentation
             if ( bNoLastWordHyphenation )
                 rText += cpDelimTmp + 
EditResId(RID_SVXITEMS_HYPHEN_LAST_WORD_TRUE);
 
-            switch ( nKeep )
+            if ( bKeep )
             {
-                case 0:
-                    rText += cpDelimTmp + 
EditResId(RID_SVXITEMS_HYPHEN_KEEP_AUTO);
-                    break;
-                case 1:
-                    rText += cpDelimTmp + 
EditResId(RID_SVXITEMS_HYPHEN_KEEP_SPREAD);
-                    break;
-                case 2:
-                    rText += cpDelimTmp + 
EditResId(RID_SVXITEMS_HYPHEN_KEEP_PAGE);
-                    break;
-                case 3:
-                    rText += cpDelimTmp + 
EditResId(RID_SVXITEMS_HYPHEN_KEEP_COLUMN);
-                    break;
-                case 4:
-                    rText += cpDelimTmp + 
EditResId(RID_SVXITEMS_HYPHEN_KEEP_ALWAYS);
-                    break;
+                rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_TRUE) + cpDelimTmp;
+                switch ( nKeepType )
+                {
+                    case 0:
+                        rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_AUTO);
+                        break;
+                    case 1:
+                        rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_SPREAD);
+                        break;
+                    case 2:
+                        rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_PAGE);
+                        break;
+                    case 3:
+                        rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_COLUMN);
+                        break;
+                    case 4:
+                        rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_ALWAYS);
+                        break;
+                }
             }
+            else
+                rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_FALSE);
 
             return true;
         }
diff --git a/editeng/source/rtf/rtfitem.cxx b/editeng/source/rtf/rtfitem.cxx
index 63ae0c119974..a5cfd41efae9 100644
--- a/editeng/source/rtf/rtfitem.cxx
+++ b/editeng/source/rtf/rtfitem.cxx
@@ -1094,7 +1094,7 @@ ATTR_SETEMPHASIS:
                                 SvxHyphenZoneItem aHypenZone(
                                             (nTokenValue & 1) != 0,
                                             
aPardMap[SID_ATTR_PARA_HYPHENZONE]);
-                                aHypenZone.SetPageEnd((nTokenValue & 2) != 0);
+                                aHypenZone.SetKeep((nTokenValue & 2) != 0);
 
                                 if( aPardMap[SID_ATTR_PARA_HYPHENZONE] &&
                                     RTF_HYPHLEAD == GetNextToken() &&
diff --git a/include/editeng/editrids.hrc b/include/editeng/editrids.hrc
index 0f1a198dffc8..270b02707758 100644
--- a/include/editeng/editrids.hrc
+++ b/include/editeng/editrids.hrc
@@ -199,8 +199,8 @@
 #define RID_SVXITEMS_TRANSPARENT_FALSE          
NC_("RID_SVXITEMS_TRANSPARENT_FALSE", "Not Transparent")
 #define RID_SVXITEMS_HYPHEN_TRUE                
NC_("RID_SVXITEMS_HYPHEN_TRUE", "Hyphenation")
 #define RID_SVXITEMS_HYPHEN_FALSE               
NC_("RID_SVXITEMS_HYPHEN_FALSE", "No hyphenation")
-#define RID_SVXITEMS_PAGE_END_TRUE              
NC_("RID_SVXITEMS_PAGE_END_TRUE", "Page End")
-#define RID_SVXITEMS_PAGE_END_FALSE             
NC_("RID_SVXITEMS_PAGE_END_FALSE", "No Page End")
+#define RID_SVXITEMS_HYPHEN_KEEP_TRUE           
NC_("RID_SVXITEMS_HYPHEN_KEEP_TRUE", "No hyphenation across")
+#define RID_SVXITEMS_HYPHEN_KEEP_FALSE          
NC_("RID_SVXITEMS_HYPHEN_KEEP_FALSE", "Hyphenation across page")
 #define RID_SVXITEMS_SIZE_WIDTH                 NC_("RID_SVXITEMS_SIZE_WIDTH", 
"Width: ")
 #define RID_SVXITEMS_SIZE_HEIGHT                
NC_("RID_SVXITEMS_SIZE_HEIGHT", "Height: ")
 #define RID_SVXITEMS_LRSPACE_LEFT               
NC_("RID_SVXITEMS_LRSPACE_LEFT", "Indent left ")
@@ -236,8 +236,8 @@
 #define RID_SVXITEMS_HYPHEN_LAST_WORD_TRUE      
NC_("RID_SVXITEMS_HYPHEN_NO_CAPS_FALSE", "Not hyphenated last word")
 #define RID_SVXITEMS_HYPHEN_MINWORDLEN          
NC_("RID_SVXITEMS_HYPHEN_MINWORDLEN", "%1 characters in words")
 #define RID_SVXITEMS_HYPHEN_ZONE                
NC_("RID_SVXITEMS_HYPHEN_ZONE", "Hyphenation zone ")
-#define RID_SVXITEMS_HYPHEN_KEEP_AUTO           
NC_("RID_SVXITEMS_HYPHEN_KEEP_AUTO", "Automatic hyphenation across page")
-#define RID_SVXITEMS_HYPHEN_KEEP_SPREAD         
NC_("RID_SVXITEMS_HYPHEN_KEEP_SPREAD", "Avoid hyphenation between pages which 
are not visible to the reader at the same time")
+#define RID_SVXITEMS_HYPHEN_KEEP_AUTO           
NC_("RID_SVXITEMS_HYPHEN_KEEP_AUTO", "Hyphenation across page")
+#define RID_SVXITEMS_HYPHEN_KEEP_SPREAD         
NC_("RID_SVXITEMS_HYPHEN_KEEP_SPREAD", "Avoid hyphenation across page when the 
next page is not visible to the reader at the same time")
 #define RID_SVXITEMS_HYPHEN_KEEP_PAGE           
NC_("RID_SVXITEMS_HYPHEN_KEEP_PAGE", "Avoid hyphenation across page")
 #define RID_SVXITEMS_HYPHEN_KEEP_COLUMN         
NC_("RID_SVXITEMS_HYPHEN_KEEP_COLUMN", "Avoid hyphenation across column and 
page")
 #define RID_SVXITEMS_HYPHEN_KEEP_ALWAYS         
NC_("RID_SVXITEMS_HYPHEN_KEEP_ALWAYS", "Avoid hyphenation across last full 
paragraph line, column and page")
diff --git a/include/editeng/hyphenzoneitem.hxx 
b/include/editeng/hyphenzoneitem.hxx
index 0c7fe7fb6fed..d7aa7ea61862 100644
--- a/include/editeng/hyphenzoneitem.hxx
+++ b/include/editeng/hyphenzoneitem.hxx
@@ -33,7 +33,7 @@
 class EDITENG_DLLPUBLIC SvxHyphenZoneItem final : public SfxPoolItem
 {
     bool      bHyphen  : 1;
-    bool      bPageEnd : 1;
+    bool      bKeep : 1;        // avoid hyphenation across page etc., see 
ParagraphHyphenationKeep
     bool      bNoCapsHyphenation : 1;
     bool      bNoLastWordHyphenation : 1;
     sal_uInt8 nMinLead;
@@ -41,7 +41,7 @@ class EDITENG_DLLPUBLIC SvxHyphenZoneItem final : public 
SfxPoolItem
     sal_uInt8 nMaxHyphens;      // max. consecutive lines with hyphenation
     sal_uInt8 nMinWordLength;   // hyphenate only words with at least 
nMinWordLength characters
     sal_uInt16 nTextHyphenZone; // don't force hyphenation at line end, allow 
this extra white space
-    sal_uInt8 nKeep;            // avoid hyphenation across page etc., see 
ParagraphHyphenationKeep
+    sal_uInt8 nKeepType;        // avoid hyphenation across page etc., see 
ParagraphHyphenationKeep
     sal_uInt8 nCompoundMinLead; // min. characters between compound word 
boundary and hyphenation
 
 public:
@@ -65,8 +65,8 @@ public:
     void SetHyphen( const bool bNew ) { bHyphen = bNew; }
     bool IsHyphen() const { return bHyphen; }
 
-    void SetPageEnd( const bool bNew ) { bPageEnd = bNew; }
-    bool IsPageEnd() const { return bPageEnd; }
+    void SetKeep( const bool bNew ) { bKeep = bNew; }
+    bool IsKeep() const { return bKeep; }
 
     void SetNoCapsHyphenation( const bool bNew ) { bNoCapsHyphenation = bNew; }
     bool IsNoCapsHyphenation() const { return bNoCapsHyphenation; }
@@ -91,8 +91,8 @@ public:
     sal_uInt16 &GetTextHyphenZone() { return nTextHyphenZone; }
     sal_uInt16 GetTextHyphenZone() const { return nTextHyphenZone; }
 
-    sal_uInt8 &GetKeep() { return nKeep; }
-    sal_uInt8 GetKeep() const { return nKeep; }
+    sal_uInt8 &GetKeepType() { return nKeepType; }
+    sal_uInt8 GetKeepType() const { return nKeepType; }
 };
 
 #endif
diff --git a/include/editeng/memberids.h b/include/editeng/memberids.h
index f913921a6ee8..57250a9872e8 100644
--- a/include/editeng/memberids.h
+++ b/include/editeng/memberids.h
@@ -52,7 +52,8 @@
 #define MID_HYPHEN_MIN_WORD_LENGTH 6
 #define MID_HYPHEN_ZONE         7
 #define MID_HYPHEN_KEEP         8
-#define MID_HYPHEN_COMPOUND_MIN_LEAD 9
+#define MID_HYPHEN_KEEP_TYPE    9
+#define MID_HYPHEN_COMPOUND_MIN_LEAD 10
 
 // SvxBoxInfoItem
 #define MID_HORIZONTAL          1
diff --git a/include/sfx2/msg.hxx b/include/sfx2/msg.hxx
index 4d6f1a060e50..86ecfd423644 100644
--- a/include/sfx2/msg.hxx
+++ b/include/sfx2/msg.hxx
@@ -135,6 +135,7 @@ SFX_DECL_TYPE(5);
 SFX_DECL_TYPE(6);
 SFX_DECL_TYPE(7);
 SFX_DECL_TYPE(8);
+SFX_DECL_TYPE(9);  // for SvxHyphenZoneItem
 SFX_DECL_TYPE(10); // for SfxDocInfoItem
 SFX_DECL_TYPE(11);
 
diff --git a/include/unotools/linguprops.hxx b/include/unotools/linguprops.hxx
index f6f0ffc1aa40..92767f657620 100644
--- a/include/unotools/linguprops.hxx
+++ b/include/unotools/linguprops.hxx
@@ -43,6 +43,7 @@ inline constexpr OUString UPN_HYPH_NO_CAPS                    
= u"HyphNoCaps"_us
 inline constexpr OUString UPN_HYPH_NO_LAST_WORD               = 
u"HyphNoLastWord"_ustr;
 inline constexpr OUString UPN_HYPH_ZONE                       = 
u"HyphZone"_ustr;
 inline constexpr OUString UPN_HYPH_KEEP                       = 
u"HyphKeep"_ustr;
+inline constexpr OUString UPN_HYPH_KEEP_TYPE                  = 
u"HyphKeepType"_ustr;
 
 // UNO property names for Lingu
 // (those not covered by the SpellChecker and Hyphenator
@@ -110,7 +111,8 @@ inline constexpr OUString UPN_IS_GRAMMAR_INTERACTIVE        
  = u"IsInteractiveG
 #define UPH_HYPH_NO_LAST_WORD               32
 #define UPH_HYPH_ZONE                       33
 #define UPH_HYPH_KEEP                       34
-#define UPH_HYPH_COMPOUND_MIN_LEADING       35
+#define UPH_HYPH_KEEP_TYPE                  35
+#define UPH_HYPH_COMPOUND_MIN_LEADING       36
 
 #ifdef __GNUC__
 #pragma GCC diagnostic pop
diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx
index e5c34c8cafbc..f410ce69344a 100644
--- a/include/xmloff/xmltoken.hxx
+++ b/include/xmloff/xmltoken.hxx
@@ -1056,6 +1056,7 @@ namespace xmloff::token {
         XML_HYPERLINK_BEHAVIOUR,
         XML_HYPHENATE,
         XML_HYPHENATION_KEEP,
+        XML_HYPHENATION_KEEP_TYPE,
         XML_HYPHENATION_LADDER_COUNT,
         XML_HYPHENATION_PUSH_CHAR_COUNT,
         XML_HYPHENATION_REMAIN_CHAR_COUNT,
@@ -1842,6 +1843,7 @@ namespace xmloff::token {
         XML_SPLIT_COLUMN,
         XML_SPLIT_POSITION,
         XML_SPLIT_ROW,
+        XML_SPREAD,
         XML_SPREADSHEET,
         XML_SPREADMETHOD,
         XML_SQL_STATEMENT,
diff --git a/include/xmloff/xmltypes.hxx b/include/xmloff/xmltypes.hxx
index 313591c730d0..7c7cabb43df1 100644
--- a/include/xmloff/xmltypes.hxx
+++ b/include/xmloff/xmltypes.hxx
@@ -297,6 +297,7 @@
 #define XML_SW_TYPE_RTLGUTTER           (XML_TEXT_TYPES_START + 129)
 #define XML_TYPE_COMPLEX_COLOR          (XML_TEXT_TYPES_START + 130)
 #define XML_TYPE_HYPHENATION_KEEP       (XML_TEXT_TYPES_START + 131)
+#define XML_TYPE_HYPHENATION_KEEP_TYPE  (XML_TEXT_TYPES_START + 132)
 
 #endif // INCLUDED_XMLOFF_XMLTYPES_HXX
 
diff --git a/offapi/com/sun/star/style/ParagraphProperties.idl 
b/offapi/com/sun/star/style/ParagraphProperties.idl
index 88d60f326543..9cb2ff598562 100644
--- a/offapi/com/sun/star/style/ParagraphProperties.idl
+++ b/offapi/com/sun/star/style/ParagraphProperties.idl
@@ -429,13 +429,24 @@ published service ParagraphProperties
          */
         [optional, property, readonly] long SortedTextId;
 
-        /** Specifies how last word on a page or on other regions is 
hyphenated.
+        /** This value is `TRUE` if both parts of a hyphenated word shall lie
+            within a single spread, page, or column. The default type is 
column.
+
+            @see ParaHyphenationKeepType
+
+            @since LibreOffice 24.8
+         */
+        [optional, property] boolean ParaHyphenationKeep;
+
+        /** Specifies how last line on a page or on other regions is 
hyphenated.
+
+            @see ParaHyphenationKeep
 
             @see com::sun::star::text::ParagraphHyphenationKeepType
 
             @since LibreOffice 24.8
          */
-        [optional, property] long ParaHyphenationKeep;
+        [optional, property] long ParaHyphenationKeepType;
 
         /** specifies the minimum number of characters of the compound word 
part
             to remain before the hyphen character (when hyphenation is 
applied).
diff --git a/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng 
b/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng
index 7101ce8cfc4c..e2ade3172e22 100644
--- a/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng
+++ b/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng
@@ -3065,6 +3065,22 @@ 
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.
     </rng:optional>
   </rng:define>
 
+  <!-- TODO no proposal -->
+  <rng:define name="style-text-properties-attlist" combine="interleave">
+    <rng:optional>
+      <!-- default value: column -->
+      <rng:attribute name="loext:hyphenation-keep-type">
+        <rng:choice>
+          <rng:value>auto</rng:value>
+          <rng:value>spread</rng:value>
+          <rng:value>page</rng:value>
+          <rng:value>column</rng:value>
+          <rng:value>always</rng:value>
+        </rng:choice>
+      </rng:attribute>
+    </rng:optional>
+  </rng:define>
+
   <!-- TODO no proposal -->
   <rng:define name="chart-data-point-attlist" combine="interleave">
     <rng:optional>
diff --git a/svx/sdi/svxitems.sdi b/svx/sdi/svxitems.sdi
index eab67d49a3c3..0f3da887b64c 100644
--- a/svx/sdi/svxitems.sdi
+++ b/svx/sdi/svxitems.sdi
@@ -275,7 +275,8 @@ struct SvxHyphenZone
     INT16       MaxHyphens    MID_HYPHEN_MAX_HYPHENS;
     INT16       MinWordLength MID_HYPHEN_MIN_WORD_LENGTH;
     INT16       HyphenZone    MID_HYPHEN_ZONE;
-    INT16       HyphenKeep    MID_HYPHEN_KEEP;
+    BOOL        HyphenKeep    MID_HYPHEN_KEEP;
+    INT16       HyphenKeepType MID_HYPHEN_KEEP_TYPE;
     INT16       MinLead       MID_HYPHEN_COMPOUND_MIN_LEAD;
 };
 item SvxHyphenZone SvxHyphenZoneItem;
diff --git a/sw/inc/inspectorproperties.hrc b/sw/inc/inspectorproperties.hrc
index 2b8379bbf0ae..88f535847970 100644
--- a/sw/inc/inspectorproperties.hrc
+++ b/sw/inc/inspectorproperties.hrc
@@ -211,6 +211,7 @@
 #define RID_PARA_HYPHENATION_MIN_WORD_LENGTH                
NC_("RID_ATTRIBUTE_NAMES_MAP", "Para Hyphenation Min Word Length")
 #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_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/unoprnms.hxx b/sw/inc/unoprnms.hxx
index 2f2df94b563e..836294a98a3f 100644
--- a/sw/inc/unoprnms.hxx
+++ b/sw/inc/unoprnms.hxx
@@ -79,6 +79,7 @@ inline constexpr OUString UNO_NAME_PARA_HYPHENATION_NO_CAPS = 
u"ParaHyphenationN
 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_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;
diff --git a/sw/qa/extras/odfexport/data/tdf132599_column.fodt 
b/sw/qa/extras/odfexport/data/tdf132599_column.fodt
new file mode 100644
index 000000000000..5283ba3b1827
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf132599_column.fodt
@@ -0,0 +1,198 @@
+<?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:c
 alcext="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.3" 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">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="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="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="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="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="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="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="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="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">1901519</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 config:name="SmallCapsPercentage66" 
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="DejaVu Sans" svg:font-family="&apos;DejaVu 
Sans&apos;" style:font-family-generic="swiss"/>
+  <style:font-face style:name="Liberation Sans" 
svg:font-family="&apos;Liberation Sans&apos;" 
style:font-family-generic="swiss"/>
+  <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" 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" 
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" loext:hyphenation-keep-type="column"/>
+  </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" 
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" 
loext:hyphenation-keep-type="column"/>
+  </style:style>
+  <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="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" 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" 
loext:hyphenation-keep-type="column"/>
+  </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: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 space 
iner</text:span><text:soft-page-break/><text:span text:style-name="T1">tially. 
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/odfexport/data/tdf132599_page_in_last_column.fodt 
b/sw/qa/extras/odfexport/data/tdf132599_page_in_last_column.fodt
new file mode 100644
index 000000000000..ce5a96347aeb
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf132599_page_in_last_column.fodt
@@ -0,0 +1,196 @@
+<?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:c
 alcext="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.3" 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/24.8.0.0.alpha0$Linux_X86_64
 
LibreOffice_project/098f366895d2b224ddcd791d10a2e61fbc5fae94</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="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="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="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="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="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="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="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="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">1874118</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 config:name="SmallCapsPercentage66" 
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="DejaVu Sans" svg:font-family="&apos;DejaVu 
Sans&apos;" style:font-family-generic="swiss"/>
+  <style:font-face style:name="Liberation Sans" 
svg:font-family="&apos;Liberation Sans&apos;" 
style:font-family-generic="swiss"/>
+  <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" 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" 
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" loext:hyphenation-keep-type="column"/>
+  </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" 
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" 
loext:hyphenation-keep-type="column"/>
+  </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" 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" 
loext:hyphenation-keep-type="page"/>
+  </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: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 
</text:span><text:soft-page-break/><text:span text:style-name="T1">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. <text:s/>Earth 
is.</text:span></text:p>
+   </text:section>
+  </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/odfexport/data/tdf132599_page_in_not_last_column.fodt 
b/sw/qa/extras/odfexport/data/tdf132599_page_in_not_last_column.fodt
new file mode 100644
index 000000000000..facd8c18219c
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf132599_page_in_not_last_column.fodt
@@ -0,0 +1,198 @@
+<?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:c
 alcext="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.3" 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">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="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="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="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="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="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="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="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>
-e 
... etc. - the rest is truncated

Reply via email to