27 #if !(defined(_WIN32) || defined(MACOSX) || defined(IOS))
99 rLFI.second->mpFontCache =
nullptr;
104 const vcl::Font& rFont,
const Size& rSize,
float fExactHeight,
bool bNonAntialias )
125 pFontInstance = (*it).second;
132 SAL_WARN_IF( (pFontFamily ==
nullptr),
"vcl",
"ImplFontCache::Get() No logical font found!" );
140 pFontInstance = (*it).second;
144 if( !pFontInstance && pFontFamily)
150 pFontInstance->mpFontCache =
this;
164 if (!pFontInstance->mpConversion &&
165 aFontSelData.
maTargetName.equalsIgnoreAsciiCase(
"symbol") &&
166 aFontSelData.
maSearchName.equalsIgnoreAsciiCase(
"symbol"))
168 pFontInstance->mpConversion = ConvertChar::GetRecodeData(
"Symbol",
"AppleSymbol" );
172 static const size_t FONTCACHE_MAX = getenv(
"LO_TESTNAME") ? 1 : 50;
176 struct limit_exception :
public std::exception {};
182 throw limit_exception();
187 {
return rGlyphPair.first.m_pFont == pFontEntry; });
193 catch (limit_exception&) {}
202 return pFontInstance;
211 if( nFallbackLevel >= 1)
223 if (nFallbackLevel == 1)
226 pFallbackData = pFontCollection->
GetGlyphFallbackFont(rFontSelData, pFontInstance, rMissingCodes, nFallbackLevel-1);
237 return pFallbackFont;
246 maFontInstanceList.clear();
list_const_iterator_t const_iterator
const OUString & GetStyleName() const
const OUString & GetFamilyName() const
ImplFontCache * mpFontCache
list_const_iterator_t end() const
std::pair< Key, Value > key_value_pair_t
size_t operator()(const FontSelectPattern &) const
PhysicalFontFamily * GetGlyphFallbackFont(FontSelectPattern &, LogicalFontInstance *pLogicalFont, OUString &rMissingCodes, int nFallbackLevel) const
PhysicalFontFace * FindBestFontFace(const FontSelectPattern &rFSD) const
LogicalFontInstance * mpLastHitCacheEntry
keeps the last hit cache entry
const OUString & GetSearchName() const
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
ItalicMatrix maItalicMatrix
FontItalic GetItalic() const
abstract base class for physical font faces
FontWeight GetWeight() const
virtual rtl::Reference< LogicalFontInstance > CreateFontInstance(const FontSelectPattern &) const =0
void SetFamilyName(const OUString &sFamilyName)
bool operator()(const FontSelectPattern &, const FontSelectPattern &) const
list_const_iterator_t find(const Key &key)
PhysicalFontFamily * FindFontFamily(const OUString &rFontName) const
void CacheGlyphBoundRect(const LogicalFontInstance *, sal_GlyphId, tools::Rectangle &)
const FontSelectPattern & GetFontSelectPattern() const
rtl::Reference< LogicalFontInstance > GetGlyphFallbackFont(PhysicalFontCollection const *, FontSelectPattern &, LogicalFontInstance *pLogicalFont, int nFallbackLevel, OUString &rMissingCodes)
bool GetCachedGlyphBoundRect(const LogicalFontInstance *, sal_GlyphId, tools::Rectangle &)
#define SAL_WARN_IF(condition, area, stream)
rtl::Reference< LogicalFontInstance > GetFontInstance(PhysicalFontCollection const *, FontSelectPattern &)
static const char FEAT_PREFIX
const ImplFontCache * GetFontCache() const
void insert(key_value_pair_t &rPair)
oslInterlockedCount m_nCount
FontInstanceList maFontInstanceList
bool IsSymbolFont() const
FontPitch GetPitch() const
void remove_if(UnaryPredicate pred)
GlyphBoundRectCache m_aBoundRectCache
const OUString & GetFamilyName() const