#include "wx/utils.h"
#include "wx/intl.h"
#include "wx/gdicmn.h"
+ #include "wx/log.h"
#endif
#include "wx/fontutil.h"
-#include "wx/fontutil.h"
+#include "wx/graphics.h"
#include "wx/mac/private.h"
wxNativeFontInfo m_info;
};
+#define M_FONTDATA ((wxFontRefData*)m_refData)
+
// ============================================================================
// implementation
break ;
case wxMODERN :
+ case wxTELETYPE:
m_faceName = wxT("Monaco");
break ;
#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
}
}
{
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 );
}
}
return M_FONTDATA->m_pointSize;
}
+wxSize wxFont::GetPixelSize() const
+{
+#if wxUSE_GRAPHICS_CONTEXT
+ // TODO: consider caching the value
+ wxGraphicsContext* dc = wxGraphicsContext::CreateFromNative((CGContextRef) NULL);
+ dc->SetFont(*(wxFont *)this,*wxBLACK);
+ wxDouble width, height = 0;
+ dc->GetTextExtent( wxT("g"), &width, &height, NULL, NULL);
+ return wxSize((int)width, (int)height);
+#else
+ return wxFontBase::GetPixelSize();
+#endif
+}
+
int wxFont::GetFamily() const
{
wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") );