summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-08-22 11:21:25 +0200
committerMichael Stahl <mstahl@redhat.com>2013-08-22 11:47:34 +0000
commitb8a3e787e9c48d8e7af80800456919726ed8dd4b (patch)
tree06eda4317a70ee76eea75e7522e14f0607f44515
parent5e06eb4c32c84079b6817e6d1da71bb84c5c367b (diff)
fdo#68076 RTF import: default font had priority over the specified one
Regression from 60c17b2873506ed8b068b34840aecda0c1d9bd65. (cherry picked from commit f1e5e271f9aadc2c5e5af3ffae410b6c598e5398) Change-Id: Ie16d611622e6a814d5cbea00c3f992cd9ecba027 Reviewed-on: https://gerrit.libreoffice.org/5579 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r--sw/qa/extras/rtfimport/data/fdo68076.rtf18
-rw-r--r--sw/qa/extras/rtfimport/rtfimport.cxx9
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx5
3 files changed, 30 insertions, 2 deletions
diff --git a/sw/qa/extras/rtfimport/data/fdo68076.rtf b/sw/qa/extras/rtfimport/data/fdo68076.rtf
new file mode 100644
index 000000000000..84c605a2fda6
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/fdo68076.rtf
@@ -0,0 +1,18 @@
+{\rtf1\ansi\ansicpg1251\uc1 \deff0\deflang1033\deflangfe1049
+{\fonttbl
+{\f0\froman\fcharset0\fprq2
+{\*\panose 02020603050405020304}
+Times New Roman;}
+{\f31\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f32\froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f34\froman\fcharset161\fprq2 Times New Roman Greek;}
+{\f35\froman\fcharset162\fprq2 Times New Roman Tur;}
+{\f36\froman\fcharset186\fprq2 Times New Roman Baltic;}
+}
+\paperw11906\paperh16838\margl1701\margr1134\margt1276\margb992 \widowctrl\ftnbj\aenddoc\hyphhotz142\hyphcaps0\hyphauto1\formshade\viewkind1\viewscale90\viewzk2\pgbrdrhead\pgbrdrfoot \fet0\sectd
+\psz9\linex0\headery709\footery709\colsx709\endnhere\titlepg\sectdefaultcl
+\pard\plain \li5812\nowidctlpar\widctlpar\adjustright \fs28\lang1049\cgrid
+{\f32 \'ce\'e1\'fa\'e5\'ea\'f2 \endash \'f3}
+{
+\par }
+}
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index 07153879f13e..58f0594f2c03 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -157,6 +157,7 @@ public:
void testFdo53556();
void testFdo63428();
void testFdo44715();
+ void testFdo68076();
CPPUNIT_TEST_SUITE(Test);
#if !defined(MACOSX) && !defined(WNT)
@@ -298,6 +299,7 @@ void Test::run()
{"fdo53556.rtf", &Test::testFdo53556},
{"hello.rtf", &Test::testFdo63428},
{"fdo44715.rtf", &Test::testFdo44715},
+ {"fdo68076.rtf", &Test::testFdo68076},
};
header();
for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i)
@@ -1442,6 +1444,13 @@ void Test::testFdo44715()
CPPUNIT_ASSERT_EQUAL(12.f, getProperty<float>(getParagraphOfText(2, xCell->getText()), "CharHeight"));
}
+void Test::testFdo68076()
+{
+ // Encoding of the last char was wrong (more 'o' than 'y').
+ OUString aExpected("\xD0\x9E\xD0\xB1\xD1\x8A\xD0\xB5\xD0\xBA\xD1\x82 \xE2\x80\x93 \xD1\x83", 19, RTL_TEXTENCODING_UTF8);
+ getParagraph(1, aExpected);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index e0a4c2043a30..8ca130b98ae5 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -381,9 +381,10 @@ void RTFDocumentImpl::checkFirstRun()
Mapper().startSectionGroup();
Mapper().startParagraphGroup();
- // set the requested default font
+ // set the requested default font, if there are none
RTFValue::Pointer_t pFont = m_aDefaultState.aCharacterSprms.find(NS_sprm::LN_CRgFtc0);
- if (pFont.get())
+ RTFValue::Pointer_t pCurrentFont = m_aStates.top().aCharacterSprms.find(NS_sprm::LN_CRgFtc0);
+ if (pFont && !pCurrentFont)
dispatchValue(RTF_F, pFont->getInt());
m_bFirstRun = false;
}