summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2014-06-13 10:09:41 +0200
committerStephan Bergmann <sbergman@redhat.com>2014-06-13 10:09:41 +0200
commit0dc7d6367dcedff8741b64f5b8775ebf26f7f14f (patch)
treecdbc0a96f056f5d5d3a99e625bd5dc3648dc7212
parent5028475adb6fa164c18b93ab7fb83b2256d78a89 (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
-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 d609345798bd..56f92840376e 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;
}