diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp index 6dad7a793e..48e293d357 100644 --- a/src/common/strconv.cpp +++ b/src/common/strconv.cpp @@ -2735,7 +2735,8 @@ public: #if wxUSE_FONTMAP wxMBConv_mac(const wxChar* name) { - Init( wxMacGetSystemEncFromFontEnc( wxFontMapperBase::Get()->CharsetToEncoding(name, false) ) ); + wxFontEncoding enc = wxFontMapperBase::Get()->CharsetToEncoding(name, false); + Init( (enc != wxFONTENCODING_SYSTEM) ? wxMacGetSystemEncFromFontEnc( enc ) : kTextEncodingUnknown); } #endif @@ -2758,13 +2759,22 @@ public: { m_MB2WC_converter = NULL ; m_WC2MB_converter = NULL ; - m_char_encoding = CreateTextEncoding(encoding, encodingVariant, encodingFormat) ; - m_unicode_encoding = CreateTextEncoding(kTextEncodingUnicodeDefault, 0, kUnicode16BitFormat) ; + if ( encoding != kTextEncodingUnknown ) + { + m_char_encoding = CreateTextEncoding(encoding, encodingVariant, encodingFormat) ; + m_unicode_encoding = CreateTextEncoding(kTextEncodingUnicodeDefault, 0, kUnicode16BitFormat) ; + } + else + { + m_char_encoding = kTextEncodingUnknown; + m_unicode_encoding = kTextEncodingUnknown; + } } virtual void CreateIfNeeded() const { - if ( m_MB2WC_converter == NULL && m_WC2MB_converter == NULL ) + if ( m_MB2WC_converter == NULL && m_WC2MB_converter == NULL && + m_char_encoding != kTextEncodingUnknown && m_unicode_encoding != kTextEncodingUnknown ) { OSStatus status = noErr ; status = TECCreateConverter(&m_MB2WC_converter,