parent
81d48c0b6c
commit
375ba1f096
@ -1,76 +0,0 @@
|
|||||||
From 3f9a28f1f704967446b411b3b7e176deeb78ca83 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
||||||
Date: Wed, 19 Oct 2011 16:03:29 +0100
|
|
||||||
Subject: [PATCH] Resolves: fdo#41556 font sub cache of nameA => nameB is too
|
|
||||||
simplistic
|
|
||||||
|
|
||||||
---
|
|
||||||
vcl/source/gdi/outdev3.cxx | 2 +-
|
|
||||||
vcl/unx/generic/gdi/salgdi3.cxx | 21 +++++----------------
|
|
||||||
2 files changed, 6 insertions(+), 17 deletions(-)
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.6.4
|
|
||||||
|
|
Loading…
Reference in new issue