X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8a438f46b50a70cff345870e1324226dc7809f0a..893727e58af91fdd8c16ed6236df8bddd96a1342:/src/mac/carbon/font.cpp diff --git a/src/mac/carbon/font.cpp b/src/mac/carbon/font.cpp index 0650fe78d9..0fcdd8ad72 100644 --- a/src/mac/carbon/font.cpp +++ b/src/mac/carbon/font.cpp @@ -18,6 +18,7 @@ #include "wx/utils.h" #include "wx/intl.h" #include "wx/gdicmn.h" + #include "wx/log.h" #endif #include "wx/fontutil.h" @@ -154,6 +155,8 @@ public: wxNativeFontInfo m_info; }; +#define M_FONTDATA ((wxFontRefData*)m_refData) + // ============================================================================ // implementation @@ -251,6 +254,7 @@ void wxFontRefData::MacFindFont() break ; case wxMODERN : + case wxTELETYPE: m_faceName = wxT("Monaco"); break ; @@ -261,6 +265,11 @@ void wxFontRefData::MacFindFont() #ifndef __LP64__ wxMacStringToPascal( m_faceName , qdFontName ); m_macFontFamily = FMGetFontFamilyFromName( qdFontName ); + if ( m_macFontFamily == kInvalidFontFamily ) + { + wxLogDebug( wxT("ATSFontFamilyFindFromName failed for %s"), m_faceName.c_str() ); + m_macFontFamily = GetAppFont(); + } #endif } } @@ -281,8 +290,16 @@ void wxFontRefData::MacFindFont() { wxMacCFStringHolder cf( m_faceName, wxLocale::GetSystemEncoding() ); ATSFontFamilyRef atsfamily = ATSFontFamilyFindFromName( cf , kATSOptionFlagsDefault ); - wxASSERT_MSG( atsfamily != (ATSFontFamilyRef) -1 , wxT("ATSFontFamilyFindFromName failed") ); - m_macFontFamily = FMGetFontFamilyFromATSFontFamilyRef( atsfamily ); + + // ATSFontFamilyRef is an unsigned type, so check against max + // for an invalid value, not -1. + if ( atsfamily == 0xffffffff ) + { + wxLogDebug( wxT("ATSFontFamilyFindFromName failed for ") + m_faceName ); + m_macFontFamily = GetAppFont(); + } + else + m_macFontFamily = FMGetFontFamilyFromATSFontFamilyRef( atsfamily ); } } @@ -538,7 +555,7 @@ wxSize wxFont::GetPixelSize() const dc->GetTextExtent( wxT("g"), &width, &height, NULL, NULL); return wxSize((int)width, (int)height); #else - wxFontBase::GetPixelSize(); + return wxFontBase::GetPixelSize(); #endif }