summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2014-06-13 10:09:41 +0200
committerMichael Stahl <mstahl@redhat.com>2014-06-13 14:12:25 +0000
commit6a4e688c84a12ced4113ea28f9d8837d2d616690 (patch)
tree11d1c9b110dd06e14c50a0527bef63928c9d5b6a /sw
parentd6c55b4b2c549f19fe5bb7ab06d823ae5eced5df (diff)
fdo#77979: Make rtl_TextEncodingToWinCharsetRTF work for non-Unicode
"LC_ALL=C make CppunitTest_sw_rtfexport" was still failing after e47a02b1524061143d8e77a54eb95c77f2e6dae2 "fdo#77979: sw: RTF export: write non- ASCII font names encoded," so for each given eTextEncoding determine a Windows charset that can at least encode the font's name, and not only for Unicode- related eTextEncodings. Change-Id: If547566bb0cffc60411d8f667d76749a904f7a3f (cherry picked from commit 0dc7d6367dcedff8741b64f5b8775ebf26f7f14f) Reviewed-on: https://gerrit.libreoffice.org/9763 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'sw')
-rw-r--r--sw/source/filter/ww8/writerwordglue.cxx41
1 files changed, 17 insertions, 24 deletions
diff --git a/sw/source/filter/ww8/writerwordglue.cxx b/sw/source/filter/ww8/writerwordglue.cxx
index f4141e59b3c7..0f4c133f84ca 100644
--- a/sw/source/filter/ww8/writerwordglue.cxx
+++ b/sw/source/filter/ww8/writerwordglue.cxx
@@ -725,38 +725,31 @@ namespace sw
OUString const& rFontName, OUString const& rAltName,
rtl_TextEncoding eTextEncoding)
{
- static struct { rtl_TextEncoding enc; sal_uInt8 charset; }
+ sal_uInt8 nRet =
+ rtl_getBestWindowsCharsetFromTextEncoding(eTextEncoding);
+ rtl_TextEncoding enc2 = rtl_getTextEncodingFromWindowsCharset(nRet);
+ if (!(CanEncode(rFontName, enc2) && CanEncode(rAltName, enc2)))
+ {
+ static struct { rtl_TextEncoding enc; sal_uInt8 charset; }
const s_fallbacks [] = {
{ RTL_TEXTENCODING_MS_932, 0x80 }, // Shift-JIS
{ RTL_TEXTENCODING_MS_936, 0x86 }, // GB-2312
{ RTL_TEXTENCODING_MS_950, 0x88 }, // Big5
{ RTL_TEXTENCODING_MS_949, 0x81 }, // EUC-KR
};
- sal_uInt8 nRet =
- rtl_getBestWindowsCharsetFromTextEncoding(eTextEncoding);
- switch (eTextEncoding)
- {
- case RTL_TEXTENCODING_DONTKNOW:
- case RTL_TEXTENCODING_UCS2:
- case RTL_TEXTENCODING_UTF7:
- case RTL_TEXTENCODING_UTF8:
- case RTL_TEXTENCODING_JAVA_UTF8:
- for (size_t i = 0; i < SAL_N_ELEMENTS(s_fallbacks); ++i)
+ for (size_t i = 0; i < SAL_N_ELEMENTS(s_fallbacks); ++i)
+ {
+ // fall back to a charset that can at least encode the
+ // font's name
+ if (CanEncode(rFontName, s_fallbacks[i].enc)
+ && CanEncode(rAltName, s_fallbacks[i].enc))
{
- // fall back to a charset that can at least encode
- // the font's name
- if (CanEncode(rFontName, s_fallbacks[i].enc)
- && CanEncode(rAltName, s_fallbacks[i].enc))
- {
- return s_fallbacks[i].charset;
- }
+ return s_fallbacks[i].charset;
}
- SAL_INFO("sw.rtf", "no fallback charset found for font: "
- << rFontName << " " << rAltName);
- nRet = 0x01; // all hope lost: "default", whatever that is
- break;
- default:
- break;
+ }
+ SAL_INFO("sw.rtf", "no fallback charset found for font: "
+ << rFontName << " " << rAltName);
+ nRet = 0x01; // all hope lost: "default", whatever that is
}
return nRet;
}