void wxFontRefData::Init(int pointSize, wxFontFamily family, wxFontStyle style, wxFontWeight weight, bool underlined, bool strikethrough, const wxString& faceName, wxFontEncoding encoding) { m_family = family == wxFONTFAMILY_DEFAULT ? wxFONTFAMILY_SWISS : family; m_faceName = faceName; // we accept both wxDEFAULT and wxNORMAL here - should we? m_style = static_cast<int>(style) == wxDEFAULT ? wxFONTSTYLE_NORMAL : style; m_weight = static_cast<int>(weight) == wxDEFAULT ? wxFONTWEIGHT_NORMAL : weight; m_underlined = underlined; m_strikethrough = strikethrough; m_encoding = encoding; #if wxUSE_UNICODE if ( m_nativeFontInfo.description ) pango_font_description_free(m_nativeFontInfo.description); // Create native font info m_nativeFontInfo.description = pango_font_description_new(); // if a face name is specified, use it if it's available, otherwise use // just the family if ( faceName.empty() || !wxFontEnumerator::IsValidFacename(faceName) ) { // TODO: scan system for valid fonts matching the given family instead // of hardcoding them here switch ( m_family ) { case wxFONTFAMILY_TELETYPE: m_faceName = wxT("monospace"); break; case wxFONTFAMILY_ROMAN: m_faceName = wxT("serif"); break; default: m_faceName = wxT("sans"); } } else // specified face name is available, use it { m_faceName = faceName; } m_nativeFontInfo.SetFaceName(m_faceName); m_nativeFontInfo.SetNumericWeight(m_weight); m_nativeFontInfo.SetStyle((wxFontStyle)m_style); m_nativeFontInfo.SetUnderlined(underlined); #endif // wxUSE_UNICODE SetFractionalPointSize(static_cast<float>(pointSize)); }