+void wxHtmlWinParser::SetFontFace(const wxString& face)
+{
+ if (GetFontFixed()) m_FontFaceFixed = face;
+ else m_FontFaceNormal = face;
+
+#if !wxUSE_UNICODE
+ if (m_InputEnc != wxFONTENCODING_DEFAULT)
+ SetInputEncoding(m_InputEnc);
+#endif
+}
+
+
+
+#if !wxUSE_UNICODE
+void wxHtmlWinParser::SetInputEncoding(wxFontEncoding enc)
+{
+ m_InputEnc = m_OutputEnc = wxFONTENCODING_DEFAULT;
+ if (m_EncConv)
+ {
+ delete m_EncConv;
+ m_EncConv = NULL;
+ }
+
+ if (enc == wxFONTENCODING_DEFAULT) return;
+
+ wxFontEncoding altfix, altnorm;
+ bool availfix, availnorm;
+
+ // exact match?
+ availnorm = wxFontMapper::Get()->IsEncodingAvailable(enc, m_FontFaceNormal);
+ availfix = wxFontMapper::Get()->IsEncodingAvailable(enc, m_FontFaceFixed);
+ if (availnorm && availfix)
+ m_OutputEnc = enc;
+
+ // alternatives?
+ else if (wxFontMapper::Get()->GetAltForEncoding(enc, &altnorm, m_FontFaceNormal, FALSE) &&
+ wxFontMapper::Get()->GetAltForEncoding(enc, &altfix, m_FontFaceFixed, FALSE) &&
+ altnorm == altfix)
+ m_OutputEnc = altnorm;
+
+ // at least normal face?
+ else if (availnorm)
+ m_OutputEnc = enc;
+ else if (wxFontMapper::Get()->GetAltForEncoding(enc, &altnorm, m_FontFaceNormal, FALSE))
+ m_OutputEnc = altnorm;
+
+ else
+ {
+#ifndef __WXMAC__
+ // okay, let convert to ISO_8859-1, available always
+ m_OutputEnc = wxFONTENCODING_DEFAULT;
+#else
+ m_OutputEnc = wxLocale::GetSystemEncoding() ;
+#endif
+ }
+
+ m_InputEnc = enc;
+ if (m_OutputEnc == wxFONTENCODING_DEFAULT)
+ GetEntitiesParser()->SetEncoding(wxFONTENCODING_SYSTEM);
+ else
+ GetEntitiesParser()->SetEncoding(m_OutputEnc);
+
+ if (m_InputEnc == m_OutputEnc) return;
+
+ m_EncConv = new wxEncodingConverter();
+ if (!m_EncConv->Init(m_InputEnc,
+ (m_OutputEnc == wxFONTENCODING_DEFAULT) ?
+ wxFONTENCODING_ISO8859_1 : m_OutputEnc,
+ wxCONVERT_SUBSTITUTE))
+ { // total failture :-(
+ wxLogError(_("Failed to display HTML document in %s encoding"),
+ wxFontMapper::GetEncodingName(enc).c_str());
+ m_InputEnc = m_OutputEnc = wxFONTENCODING_DEFAULT;
+ delete m_EncConv;
+ m_EncConv = NULL;
+ }
+}
+#endif
+
+