summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Luth <justin.luth@collabora.com>2019-10-15 20:49:07 +0300
committerJustin Luth <justin_luth@sil.org>2019-10-17 06:23:00 +0200
commitf51cd77bcecc5134e0e04c398bfb7b34eb65d68d (patch)
tree277bd77d3de6758313027ea4855b44cf6a59e619
parentf0340d58cc0f2808ce8003099ff2a0495360f267 (diff)
tdf#108350 writerfilter: restore TimesNewRoman as default font
Followup for LO 5.4 commit 6f2ad89b33d972f9642bb53eeb91f41df3b6b0e6 which set Calibri/11pt as default. That is true if there is no style.xml file, or more specifically if there is no DocDefaults rPrDefault node. But if that node exists, then the age-old defaults are still valid. Earlier in LO 4.3, the default templates changed to use Liberation fonts by default. But in the same vein as using Calibri (and depending on LO to fallback to Carlito), set Word's default Times New Roman font and depend on LO to fallback to Liberation. That will make it better for MSWord users who share the document and who have less likelihood of knowing about Liberation/Carlito. Note that 10pt fontsize was already added to m_pDefaultCharProps earlier, so that part was already reset long ago. Change-Id: I3ba8a529fe95b05fbe2889cf1ebdbabb25963e8b Reviewed-on: https://gerrit.libreoffice.org/80854 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_luth@sil.org>
-rw-r--r--solenv/clang-format/blacklist1
-rw-r--r--sw/CppunitTest_sw_ooxmlexport14.mk14
-rw-r--r--sw/Module_sw.mk1
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf108350_noFontdefaults.docxbin0 -> 7502 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport14.cxx45
-rw-r--r--writerfilter/source/dmapper/StyleSheetTable.cxx8
6 files changed, 69 insertions, 0 deletions
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist
index dece08b26f0c..81d8a233b674 100644
--- a/solenv/clang-format/blacklist
+++ b/solenv/clang-format/blacklist
@@ -14852,6 +14852,7 @@ sw/qa/extras/ooxmlexport/ooxmlexport.cxx
sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
+sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
diff --git a/sw/CppunitTest_sw_ooxmlexport14.mk b/sw/CppunitTest_sw_ooxmlexport14.mk
new file mode 100644
index 000000000000..b582b317c064
--- /dev/null
+++ b/sw/CppunitTest_sw_ooxmlexport14.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call sw_ooxmlexport_test,14))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk
index f72ce87f6653..b16a4aea6e16 100644
--- a/sw/Module_sw.mk
+++ b/sw/Module_sw.mk
@@ -79,6 +79,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_ooxmlexport11 \
CppunitTest_sw_ooxmlexport12 \
CppunitTest_sw_ooxmlexport13 \
+ CppunitTest_sw_ooxmlexport14 \
CppunitTest_sw_ooxmlexport_template \
CppunitTest_sw_ooxmlfieldexport \
CppunitTest_sw_ooxmllinks \
diff --git a/sw/qa/extras/ooxmlexport/data/tdf108350_noFontdefaults.docx b/sw/qa/extras/ooxmlexport/data/tdf108350_noFontdefaults.docx
new file mode 100644
index 000000000000..ea81722799eb
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf108350_noFontdefaults.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
new file mode 100644
index 000000000000..b06b342c7071
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
@@ -0,0 +1,45 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <swmodeltestbase.hxx>
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <IDocumentSettingAccess.hxx>
+
+#include <editsh.hxx>
+#include <frmatr.hxx>
+
+class Test : public SwModelTestBase
+{
+public:
+ Test() : SwModelTestBase("/sw/qa/extras/ooxmlexport/data/", "Office Open XML Text") {}
+
+protected:
+ /**
+ * Blacklist handling
+ */
+ bool mustTestImportOf(const char* filename) const override {
+ // If the testcase is stored in some other format, it's pointless to test.
+ return OString(filename).endsWith(".docx");
+ }
+};
+
+
+DECLARE_OOXMLEXPORT_TEST(testTdf108350_noFontdefaults, "tdf108350_noFontdefaults.docx")
+{
+ uno::Reference< container::XNameAccess > paragraphStyles = getStyles("ParagraphStyles");
+ uno::Reference< beans::XPropertySet > xStyleProps(paragraphStyles->getByName("NoParent"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Times New Roman"), getProperty<OUString>(xStyleProps, "CharFontName"));
+ //CPPUNIT_ASSERT_EQUAL_MESSAGE("Font size", 10.f, getProperty<float>(xStyleProps, "CharHeight"));
+}
+
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx
index bf1ed75c9f9f..05fb9e9b57d9 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.cxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.cxx
@@ -1460,6 +1460,8 @@ void StyleSheetTable::applyDefaults(bool bParaProperties)
m_pImpl->m_rDMapper.GetTextFactory()->createInstance("com.sun.star.text.Defaults"),
uno::UNO_QUERY_THROW );
}
+
+ // WARNING: these defaults only take effect IF there is a DocDefaults style section. Normally there is, but not always.
if( bParaProperties && m_pImpl->m_pDefaultParaProps.get())
{
// tdf#87533 LO will have different defaults here, depending on the locale. Import with documented defaults
@@ -1494,6 +1496,12 @@ void StyleSheetTable::applyDefaults(bool bParaProperties)
}
if( !bParaProperties && m_pImpl->m_pDefaultCharProps.get())
{
+ // tdf#108350: Earlier in DomainMapper for DOCX, Calibri/11pt was set to match MSWord 2007+,
+ // but that is valid only if DocDefaults_rPrDefault is omitted.
+ // Now that DocDefaults_rPrDefault is known, the defaults should be reset to Times New Roman/10pt.
+ if ( m_pImpl->m_rDMapper.IsOOXMLImport() )
+ m_pImpl->m_xTextDefaults->setPropertyValue( getPropertyName(PROP_CHAR_FONT_NAME), css::uno::Any(OUString("Times New Roman")) );
+
const uno::Sequence< beans::PropertyValue > aPropValues = m_pImpl->m_pDefaultCharProps->GetPropertyValues();
for( const auto& rPropValue : aPropValues )
{