[libreoffice/f16] Resolves: fdo#44078 fix font alias name problems

Caolán McNamara caolanm at fedoraproject.org
Mon Jan 23 12:40:33 UTC 2012


commit 0d06f4722ada7a5ab4f4ca041473c119c6739771
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Jan 23 10:57:53 2012 +0000

    Resolves: fdo#44078 fix font alias name problems

 ...o-44078-fix-unfortunate-name-alias-mixups.patch |   74 ++++++++++++++++++++
 libreoffice.spec                                   |    3 +
 2 files changed, 77 insertions(+), 0 deletions(-)
---
diff --git a/0001-Resolves-fdo-44078-fix-unfortunate-name-alias-mixups.patch b/0001-Resolves-fdo-44078-fix-unfortunate-name-alias-mixups.patch
new file mode 100644
index 0000000..23bb456
--- /dev/null
+++ b/0001-Resolves-fdo-44078-fix-unfortunate-name-alias-mixups.patch
@@ -0,0 +1,74 @@
+From 25b90909a7a22f6900abbe9df12570a24e528c9a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Wed, 11 Jan 2012 20:47:54 +0000
+Subject: [PATCH] Resolves:fdo#44078 fix unfortunate name alias mixups with
+ DejaVu fonts
+
+---
+ vcl/generic/fontmanager/fontconfig.cxx |   19 +++++++++++++++----
+ 1 files changed, 15 insertions(+), 4 deletions(-)
+
+diff --git a/vcl/generic/fontmanager/fontconfig.cxx b/vcl/generic/fontmanager/fontconfig.cxx
+index 4d02a76..a120fb7 100644
+--- a/vcl/generic/fontmanager/fontconfig.cxx
++++ b/vcl/generic/fontmanager/fontconfig.cxx
+@@ -124,7 +124,7 @@ public:
+     boost::unordered_map< rtl::OString, rtl::OString, rtl::OStringHash > m_aFontNameToLocalized;
+     boost::unordered_map< rtl::OString, rtl::OString, rtl::OStringHash > m_aLocalizedToCanonical;
+ private:
+-    void cacheLocalizedFontNames(FcChar8 *origfontname, FcChar8 *bestfontname, const std::vector< lang_and_element > &lang_and_elements);
++    void cacheLocalizedFontNames(const FcChar8 *origfontname, const FcChar8 *bestfontname, const std::vector< lang_and_element > &lang_and_elements);
+ };
+ 
+ FontCfgWrapper::FontCfgWrapper()
+@@ -296,6 +296,7 @@ namespace
+ 
+         std::vector<lang_and_element>::const_iterator aEnd = elements.end();
+         bool alreadyclosematch = false;
++        bool found_fallback_englishname = false;
+         for( std::vector<lang_and_element>::const_iterator aIter = elements.begin(); aIter != aEnd; ++aIter )
+         {
+             const char *pLang = (const char*)aIter->first;
+@@ -307,7 +308,8 @@ namespace
+             }
+             else if( alreadyclosematch )
+             {
+-                // override candidate only if there is a perfect match
++                // current candidate matches lang of lang-TERRITORY
++                // override candidate only if there is a full match
+                 continue;
+             }
+             else if( rtl_str_compare( pLang, sLangMatch.getStr()) == 0)
+@@ -316,10 +318,18 @@ namespace
+                 candidate = aIter->second;
+                 alreadyclosematch = true;
+             }
++            else if( found_fallback_englishname )
++            {
++                // already found an english fallback, don't override candidate
++                // unless there is a better language match
++                continue;
++            }
+             else if( rtl_str_compare( pLang, "en") == 0)
+             {
+-                // fallback to the english element name
++                // select a fallback candidate of the first english element
++                // name
+                 candidate = aIter->second;
++                found_fallback_englishname = true;
+             }
+         }
+         return candidate;
+@@ -327,7 +337,8 @@ namespace
+ }
+ 
+ //Set up maps to quickly map between a fonts best UI name and all the rest of its names, and vice versa
+-void FontCfgWrapper::cacheLocalizedFontNames(FcChar8 *origfontname, FcChar8 *bestfontname, const std::vector< lang_and_element > &lang_and_elements)
++void FontCfgWrapper::cacheLocalizedFontNames(const FcChar8 *origfontname, const FcChar8 *bestfontname,
++    const std::vector< lang_and_element > &lang_and_elements)
+ {
+     std::vector<lang_and_element>::const_iterator aEnd = lang_and_elements.end();
+     for (std::vector<lang_and_element>::const_iterator aIter = lang_and_elements.begin(); aIter != aEnd; ++aIter)
+-- 
+1.7.6.5
+
diff --git a/libreoffice.spec b/libreoffice.spec
index f386f81..04a5cc1 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -159,6 +159,7 @@ Patch41: libreoffice-rhel6langs.patch
 %endif
 Patch42: solenv.fix.mk.inheritance.patch
 Patch43: 0001-Related-rhbz-753201-fedora-ant-java-1.5.0-gcj-won-t-.patch
+Patch44: 0001-Resolves-fdo-44078-fix-unfortunate-name-alias-mixups.patch
 
 %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
 %define instdir %{_libdir}
@@ -982,6 +983,7 @@ mv -f redhat.soc extras/source/palettes/standard.soc
 %endif
 %patch42 -p1 -b .solenv.fix.mk.inheritance.patch
 %patch43 -p1 -b .rhbz-753201-fedora-ant-java-1.5.0-gcj-won-t-.patch
+%patch44 -p1 -b .fdo44078-fix-unfortunate-name-alias-mixups.patch
 
 # these are horribly incomplete--empty translations and copied english
 # strings with spattering of translated strings
@@ -2302,6 +2304,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
   libreoffice-langpack-de
 - Resolves: rhbz#661738 Very slow java database operations:
   Attach/DetachCurrentThread
+- Resolves: fdo#44078 fix font alias name problems
 
 * Fri Jan 06 2012 Caolán McNamara <caolanm at redhat.com> - 3.4.4.2-7
 - Resolves: fdo#40482 Writer view options destroyed by printing


More information about the scm-commits mailing list