90 : mpLastHitCacheEntry( nullptr )
91 , maFontInstanceList(
std::numeric_limits<size_t>::
max())
93 , m_aBoundRectCache(3000)
100 rLFI.second->mpFontCache =
nullptr;
105 const vcl::Font& rFont,
const Size& rSize,
float fExactHeight,
bool bNonAntialias )
126 pFontInstance = (*it).second;
133 SAL_WARN_IF( (pFontFamily ==
nullptr),
"vcl",
"ImplFontCache::Get() No logical font found!" );
141 pFontInstance = (*it).second;
145 if( !pFontInstance && pFontFamily)
151 pFontInstance->mpFontCache =
this;
165 if (!pFontInstance->mpConversion &&
166 aFontSelData.
maTargetName.equalsIgnoreAsciiCase(
"symbol") &&
167 aFontSelData.
maSearchName.equalsIgnoreAsciiCase(
"symbol"))
169 pFontInstance->mpConversion = ConvertChar::GetRecodeData(
u"Symbol",
u"AppleSymbol" );
173 static const size_t FONTCACHE_MAX = getenv(
"LO_TESTNAME") ? 1 : 50;
177 struct limit_exception :
public std::exception {};
183 throw limit_exception();
188 {
return rGlyphPair.first.m_pFont == pFontEntry; });
194 catch (limit_exception&) {}
197 assert(pFontInstance);
203 return pFontInstance;
212 if( nFallbackLevel >= 1)
224 if (nFallbackLevel == 1)
227 pFallbackData = pFontCollection->
GetGlyphFallbackFont(rFontSelData, pFontInstance, rMissingCodes, nFallbackLevel-1);
238 return pFallbackFont;
247 maFontInstanceList.clear();
vcl::font::PhysicalFontFamily * GetGlyphFallbackFont(vcl::font::FontSelectPattern &, LogicalFontInstance *pLogicalFont, OUString &rMissingCodes, int nFallbackLevel) const
const OUString & GetStyleName() const
const OUString & GetFamilyName() const
ImplFontCache * mpFontCache
void insert(key_value_pair_t &rPair)
LogicalFontInstance * mpLastHitCacheEntry
keeps the last hit cache entry
bool operator()(const vcl::font::FontSelectPattern &, const vcl::font::FontSelectPattern &) const
rtl::Reference< LogicalFontInstance > GetGlyphFallbackFont(vcl::font::PhysicalFontCollection const *, vcl::font::FontSelectPattern &, LogicalFontInstance *pLogicalFont, int nFallbackLevel, OUString &rMissingCodes)
list_const_iterator_t find(const Key &key)
size_t operator()(const vcl::font::FontSelectPattern &) const
const vcl::font::FontSelectPattern & GetFontSelectPattern() const
std::pair< Key, Value > key_value_pair_t
void remove_if(UnaryPredicate pred)
FontItalic GetItalic() const
static const char FEAT_PREFIX
FontWeight GetWeight() const
void SetFamilyName(const OUString &sFamilyName)
const OUString & GetSearchName() const
A PhysicalFontFaceCollection is created by a PhysicalFontCollection and becomes invalid when original...
PhysicalFontFace * FindBestFontFace(const vcl::font::FontSelectPattern &rFSD) const
list_const_iterator_t const_iterator
ItalicMatrix maItalicMatrix
abstract base class for physical font faces
void CacheGlyphBoundRect(const LogicalFontInstance *, sal_GlyphId, tools::Rectangle &)
virtual rtl::Reference< LogicalFontInstance > CreateFontInstance(const vcl::font::FontSelectPattern &) const =0
bool GetCachedGlyphBoundRect(const LogicalFontInstance *, sal_GlyphId, tools::Rectangle &)
vcl::font::PhysicalFontFamily * FindFontFamily(std::u16string_view rFontName) const
#define SAL_WARN_IF(condition, area, stream)
list_const_iterator_t end() const
const ImplFontCache * GetFontCache() const
oslInterlockedCount m_nCount
FontInstanceList maFontInstanceList
bool IsSymbolFont() const
const OUString & GetFamilyName() const
FontPitch GetPitch() const
rtl::Reference< LogicalFontInstance > GetFontInstance(vcl::font::PhysicalFontCollection const *, vcl::font::FontSelectPattern &)
GlyphBoundRectCache m_aBoundRectCache