diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-06-22 13:41:30 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-06-22 18:57:51 +0200 |
commit | f575f70b8303ba187f6989920281ff02e7a431c9 (patch) | |
tree | fc02c0a52bd3303ef98e29cc03248d338fdd8fdd /sw | |
parent | 777637a3cd46763cf79fb4f2c0a6929349a810f6 (diff) |
tdf#108682 DOCX import: fix <w:spacing w:line=...> for negative values
I didn't find UI in Word to create
<w:spacing w:line="-260" w:lineRule="auto"/>
the equivalent markup when you set line spacing to exactly 13pt for new
documents is:
<w:spacing w:line="260" w:lineRule="exact"/>
The OOXML spec and Microsoft's implementer notes ([MS-OI29500]) is also
pretty silent about what a negative value means. However, if this markup
is converted to WW8 by Word, then the WW8 LPSD structure is like this
(as presented by doc-dumper):
<lspd type="LSPD" offset="5086">
<dyaLine value="0xfefc"/>
<fMultLinespace value="0x1"/>
</lspd>
For the 0xfefc value the [MS-DOC] spec clearly states that means the
type of the spacing is "exactly", with the value of 0x10000-0xfefc, i.e.
the same 260 twips.
Change-Id: I84b485d02dea49c610b6df2e06ccce03e1d29d21
Reviewed-on: https://gerrit.libreoffice.org/39091
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf108682.docx | bin | 0 -> 12653 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport9.cxx | 11 |
2 files changed, 11 insertions, 0 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf108682.docx b/sw/qa/extras/ooxmlexport/data/tdf108682.docx Binary files differnew file mode 100644 index 000000000000..1364025b826c --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/tdf108682.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx index 39af9d435af7..93f3f320f27d 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx @@ -25,6 +25,8 @@ #include <com/sun/star/text/HoriOrientation.hpp> #include <com/sun/star/text/RelOrientation.hpp> #include <com/sun/star/view/XViewSettingsSupplier.hpp> +#include <com/sun/star/style/LineSpacing.hpp> +#include <com/sun/star/style/LineSpacingMode.hpp> #include <sfx2/docfile.hxx> #include <sfx2/docfilt.hxx> @@ -694,6 +696,15 @@ DECLARE_OOXMLEXPORT_TEST(testTdf107618, "tdf107618.doc") CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xPageStyle, "HeaderIsOn")); } +DECLARE_OOXMLEXPORT_TEST(testTdf108682, "tdf108682.docx") +{ + auto aLineSpacing = getProperty<style::LineSpacing>(getParagraph(1), "ParaLineSpacing"); + // This was style::LineSpacingMode::PROP. + CPPUNIT_ASSERT_EQUAL(style::LineSpacingMode::FIX, aLineSpacing.Mode); + // 260 twips in mm100, this was a negative value. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(459), aLineSpacing.Height); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |