filter/source/config/cache/filtercache.cxx | 26 ++++++++++++++------------ vcl/unx/generic/gdi/salgdi3.cxx | 21 +++++---------------- 2 files changed, 19 insertions(+), 28 deletions(-)
New commits: commit 3f9a28f1f704967446b411b3b7e176deeb78ca83 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Oct 19 16:03:29 2011 +0100 Resolves: fdo#41556 font sub cache of nameA => nameB is too simplistic diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx index 4d21f5d..b0f59cd 100755 --- a/vcl/source/gdi/outdev3.cxx +++ b/vcl/source/gdi/outdev3.cxx @@ -3304,7 +3304,6 @@ ImplFontMetricData::ImplFontMetricData( const ImplFontSelectData& rFontSelData ) { // initialize the members provided by the font request mnWidth = rFontSelData.mnWidth; - mnSlant = rFontSelData.GetSlant(); mnOrientation = sal::static_int_cast<short>(rFontSelData.mnOrientation); // intialize the used font name @@ -3329,6 +3328,7 @@ ImplFontMetricData::ImplFontMetricData( const ImplFontSelectData& rFontSelData ) mnDescent = 0; mnIntLeading = 0; mnExtLeading = 0; + mnSlant = 0; mnMinKashida = 0; // reset metrics that are usually derived from the measurements diff --git a/vcl/unx/generic/gdi/salgdi3.cxx b/vcl/unx/generic/gdi/salgdi3.cxx index 7c94d40..0ced020 100644 --- a/vcl/unx/generic/gdi/salgdi3.cxx +++ b/vcl/unx/generic/gdi/salgdi3.cxx @@ -847,11 +847,6 @@ class FcPreMatchSubstititution { public: bool FindFontSubstitute( ImplFontSelectData& ) const; - -private: - typedef ::boost::unordered_map< ::rtl::OUString, ::rtl::OUString, ::rtl::OUStringHash > - CachedFontMapType; - mutable CachedFontMapType maCachedFontMap; }; class FcGlyphFallbackSubstititution @@ -945,20 +940,14 @@ bool FcPreMatchSubstititution::FindFontSubstitute( ImplFontSelectData &rFontSelD || 0 == rFontSelData.maSearchName.CompareIgnoreCaseToAscii( "opensymbol", 10) ) return false; - CachedFontMapType::const_iterator itr = maCachedFontMap.find(rFontSelData.maTargetName); - if (itr != maCachedFontMap.end()) - { - // Cached substitution pair - rFontSelData.maSearchName = itr->second; - return true; - } - + //Note: see fdo#41556 if you feel compelled to cache the results here, + //remember that fontconfig can return e.g. an italic font for a non-italic + //input and/or different fonts depending on fontsize, bold, etc settings so + //don't cache just on the name, cache on all the input and be don't just + //return the original selection data with the fontname updated rtl::OUString aDummy; const ImplFontSelectData aOut = GetFcSubstitute( rFontSelData, aDummy ); - maCachedFontMap.insert( - CachedFontMapType::value_type(rFontSelData.maTargetName, aOut.maSearchName)); - if( !aOut.maSearchName.Len() ) return false; commit 4ea86b46768c8309a7c259f713fd6d3c8d7abc28 Author: Maxim Iorsh <io...@users.sourceforge.net> Date: Wed Oct 19 12:40:04 2011 +0100 Resolves: fdo#41556 When fontconfig matches italic font, italicity is ignored diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx index b0f59cd..4d21f5d 100755 --- a/vcl/source/gdi/outdev3.cxx +++ b/vcl/source/gdi/outdev3.cxx @@ -3304,6 +3304,7 @@ ImplFontMetricData::ImplFontMetricData( const ImplFontSelectData& rFontSelData ) { // initialize the members provided by the font request mnWidth = rFontSelData.mnWidth; + mnSlant = rFontSelData.GetSlant(); mnOrientation = sal::static_int_cast<short>(rFontSelData.mnOrientation); // intialize the used font name @@ -3328,7 +3329,6 @@ ImplFontMetricData::ImplFontMetricData( const ImplFontSelectData& rFontSelData ) mnDescent = 0; mnIntLeading = 0; mnExtLeading = 0; - mnSlant = 0; mnMinKashida = 0; // reset metrics that are usually derived from the measurements commit 5e8c0dd410942807481a75a29805db40b8659a4e Author: Caolán McNamara <caol...@redhat.com> Date: Tue Oct 18 14:32:05 2011 +0100 don't annoy me in the en-US fallback case diff --git a/filter/source/config/cache/filtercache.cxx b/filter/source/config/cache/filtercache.cxx index 5099cc9..9d0a885 100644 --- a/filter/source/config/cache/filtercache.cxx +++ b/filter/source/config/cache/filtercache.cxx @@ -1691,18 +1691,20 @@ void FilterCache::impl_readPatchUINames(const css::uno::Reference< css::containe pLocale = ::comphelper::Locale::getFallback(lLocales, sActLocale); if (pLocale == lLocales.end()) { - #if OSL_DEBUG_LEVEL > 0 - ::rtl::OUString sName = rItem.getUnpackedValueOrDefault(PROPNAME_NAME, ::rtl::OUString()); - - ::rtl::OUStringBuffer sMsg(256); - sMsg.appendAscii("Fallback scenario for filter or type '" ); - sMsg.append (sName ); - sMsg.appendAscii("' and locale '" ); - sMsg.append (sActLocale ); - sMsg.appendAscii("' failed. Please check your filter configuration."); - - OSL_FAIL(_FILTER_CONFIG_TO_ASCII_(sMsg.makeStringAndClear())); - #endif +#if OSL_DEBUG_LEVEL > 0 + if (sActLocale.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("en-US"))) + return; + ::rtl::OUString sName = rItem.getUnpackedValueOrDefault(PROPNAME_NAME, ::rtl::OUString()); + + ::rtl::OUStringBuffer sMsg(256); + sMsg.appendAscii("Fallback scenario for filter or type '" ); + sMsg.append (sName ); + sMsg.appendAscii("' and locale '" ); + sMsg.append (sActLocale ); + sMsg.appendAscii("' failed. Please check your filter configuration."); + + OSL_FAIL(_FILTER_CONFIG_TO_ASCII_(sMsg.makeStringAndClear())); +#endif return; }
_______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits