sw/source/filter/ww8/writerwordglue.cxx |   41 +++++++++++++-------------------
 1 file changed, 17 insertions(+), 24 deletions(-)

New commits:
commit 6a4e688c84a12ced4113ea28f9d8837d2d616690
Author: Stephan Bergmann <sberg...@redhat.com>
Date:   Fri Jun 13 10:09:41 2014 +0200

    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 <mst...@redhat.com>
    Tested-by: Michael Stahl <mst...@redhat.com>

diff --git a/sw/source/filter/ww8/writerwordglue.cxx 
b/sw/source/filter/ww8/writerwordglue.cxx
index f4141e5..0f4c133 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;
         }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to