Kaydet (Commit) 43e049c3 authored tarafından Miklos Vajna's avatar Miklos Vajna

tdf#61901 RTF export: fix implicit font name of non-ascii text

The problem was that in case we used \loch, then \f only had an affect
on ascii characters, not on every other character range.

Change-Id: I30a851fe28131f18f5c429273a24c1424d2cec22
Reviewed-on: https://gerrit.libreoffice.org/27310Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
Tested-by: 's avatarJenkins <ci@libreoffice.org>
üst 8d0c103b
{\rtf1\ansi\deff11
{\fonttbl
{\f11\fmodern\fcharset0 Courier New;}
{\f34\fmodern\fcharset204 Courier New Cyr;}
}
{\f34 \'c8\par}
}
......@@ -1091,6 +1091,26 @@ DECLARE_RTFEXPORT_TEST(testTdf98806, "tdf98806.rtf")
CPPUNIT_ASSERT_EQUAL(OUString("BBB"), xBookmark->getAnchor()->getString());
}
DECLARE_RTFEXPORT_TEST(testTdf61901, "tdf61901.rtf")
{
// Test the file directly, as current RTF import gives the correct font name with and without the fix.
if (mbExported)
{
SvStream* pStream = maTempFile.GetStream(StreamMode::READ);
OString sLine;
while (pStream->ReadLine(sLine))
{
sal_Int32 nIndex = sLine.indexOf("\\loch\\loch");
if (nIndex != -1)
{
// Make sure that \hich is always written after a \loch\loch.
OString sRemaining = sLine.copy(nIndex);
CPPUNIT_ASSERT(sRemaining.indexOf("\\hich") != -1);
}
}
}
}
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -2280,6 +2280,16 @@ void RtfAttributeOutput::CharFont(const SvxFontItem& rFont)
m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_LOCH);
m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_F);
m_aStylesEnd.append((sal_Int32)m_rExport.m_aFontHelper.GetId(rFont));
if (!m_rExport.HasItem(RES_CHRATR_CJK_FONT) && !m_rExport.HasItem(RES_CHRATR_CTL_FONT))
{
// Be explicit about that the given font should be used everywhere, not
// just for the loch range.
m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_HICH);
m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_AF);
m_aStylesEnd.append((sal_Int32)m_rExport.m_aFontHelper.GetId(rFont));
}
// FIXME: this may be a tad expensive... but the charset needs to be
// consistent with what wwFont::WriteRtf() does
sw::util::FontMapExport aTmp(rFont.GetFamilyName());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment