1 diff --git vcl/unx/source/gdi/salgdi3.cxx vcl/unx/source/gdi/salgdi3.cxx
2 index 4e165ff..7fc8085 100644
3 --- vcl/unx/source/gdi/salgdi3.cxx
4 +++ vcl/unx/source/gdi/salgdi3.cxx
5 @@ -1988,6 +1988,11 @@ class FcPreMatchSubstititution
8 bool FindFontSubstitute( ImplFontSelectData& ) const;
11 + typedef ::std::hash_map< ::rtl::OUString, ::rtl::OUString, ::rtl::OUStringHash >
13 + mutable CachedFontMapType maCachedFontMap;
16 class FcGlyphFallbackSubstititution
17 @@ -2116,8 +2121,19 @@ bool FcPreMatchSubstititution::FindFontSubstitute( ImplFontSelectData &rFontSelD
18 || 0 == rFontSelData.maSearchName.CompareIgnoreCaseToAscii( "opensymbol", 10) )
21 + CachedFontMapType::const_iterator itr = maCachedFontMap.find(rFontSelData.maTargetName);
22 + if (itr != maCachedFontMap.end())
24 + // Cached substitution pair
25 + rFontSelData.maSearchName = itr->second;
29 const rtl::OUString aOUName = GetFcSubstitute( rFontSelData, aDummy );
31 + maCachedFontMap.insert(
32 + CachedFontMapType::value_type(rFontSelData.maTargetName, aOUName));
34 if( !aOUName.getLength() )
36 const String aName( aOUName );