X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2c1e8f2ec2400f618468e72f2faf32373f53a4c9..110d05999fe64a6f17c7bbc6eb9ee9bd582cd72a:/src/os2/font.cpp diff --git a/src/os2/font.cpp b/src/os2/font.cpp index c1839db1ca..1429413d81 100644 --- a/src/os2/font.cpp +++ b/src/os2/font.cpp @@ -351,7 +351,7 @@ void wxFontRefData::Init( if (m_hPS == NULLHANDLE) { m_hPS = ::WinGetPS(HWND_DESKTOP); - m_bInternalPS; + m_bInternalPS = TRUE; } else m_hPS = (HPS)hPS; @@ -371,6 +371,8 @@ bool wxFontRefData::Alloc( long lRc; short nIndex = 0; PFONTMETRICS pFM = NULL; + ERRORID vError; + wxString sError; if (!m_bNativeFontInfoOk) { @@ -384,7 +386,15 @@ bool wxFontRefData::Alloc( ); m_bNativeFontInfoOk = TRUE; } - + else + { + if (flId == 0L) + flId = 1L; + else + flId++; + if (flId > 254) + flId = 1L; + } if((lRc = ::GpiCreateLogFont( m_hPS ,NULL ,flId @@ -396,6 +406,8 @@ bool wxFontRefData::Alloc( } if (!m_hFont) { + vError = ::WinGetLastError(vHabmain); + sError = wxPMErrorToStr(vError); wxLogLastError("CreateFont"); } @@ -414,23 +426,33 @@ bool wxFontRefData::Alloc( // The GpiCreateLogFont will do enough by selecting the right family, // and face name. // - if (strcmp(m_vNativeFontInfo.fa.szFacename, "Times New Roman") == 0) + if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Times New Roman") == 0) m_nFamily = wxROMAN; - else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Tms Rmn") == 0) - m_nFamily = wxSWISS; - else if (strcmp(m_vNativeFontInfo.fa.szFacename, "WarpSans") == 0) - m_nFamily = wxSWISS; - else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Helvitica") == 0) + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Times New Roman MT 30") == 0) + m_nFamily = wxROMAN; + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "@Times New Roman MT 30") == 0) + m_nFamily = wxROMAN; + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Tms Rmn") == 0) + m_nFamily = wxROMAN; + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "WarpSans") == 0) + m_nFamily = wxDECORATIVE; + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Helvitica") == 0) m_nFamily = wxSWISS; - else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Helv") == 0) + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Helv") == 0) m_nFamily = wxSWISS; - else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Script") == 0) + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Script") == 0) m_nFamily = wxSCRIPT; - else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Courier New") == 0) + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Courier New") == 0) + m_nFamily = wxTELETYPE; + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Courier") == 0) + m_nFamily = wxTELETYPE; + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System Monospaced") == 0) m_nFamily = wxTELETYPE; - else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Courier") == 0) + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System VIO") == 0) m_nFamily = wxTELETYPE; - else if (strcmp(m_vNativeFontInfo.fa.szFacename, "System VIO") == 0) + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System Proportional") == 0) + m_nFamily = wxMODERN; + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Arial") == 0) m_nFamily = wxMODERN; else m_nFamily = wxSWISS; @@ -496,10 +518,6 @@ void wxFontRefData::Free() if ( m_hFont ) { - if (!::GpiSetCharSet(m_hPS, LCID_DEFAULT)) - { - wxLogLastError(wxT("DeleteObject(font)")); - } ::GpiDeleteSetId(m_hPS, 1L); /* delete the logical font */ m_nFontId = 0; m_hFont = 0; @@ -567,13 +585,33 @@ wxFontFamily wxNativeFontInfo::GetFamily() const // // Extract family from facename // - if (strcmp(fa.szFacename, "Times New Roman") == 0) + if (strcmp(fm.szFamilyname, "Times New Roman") == 0) + nFamily = wxROMAN; + else if (strcmp(fm.szFamilyname, "Times New Roman MT 30") == 0) + nFamily = wxROMAN; + else if (strcmp(fm.szFamilyname, "@Times New Roman MT 30") == 0) + nFamily = wxROMAN; + else if (strcmp(fm.szFamilyname, "Tms Rmn") == 0) nFamily = wxROMAN; - else if (strcmp(fa.szFacename, "WarpSans") == 0) + else if (strcmp(fm.szFamilyname, "WarpSans") == 0) + nFamily = wxDECORATIVE; + else if (strcmp(fm.szFamilyname, "Helvitica") == 0) nFamily = wxSWISS; - else if (strcmp(fa.szFacename, "Script") == 0) + else if (strcmp(fm.szFamilyname, "Helv") == 0) + nFamily = wxSWISS; + else if (strcmp(fm.szFamilyname, "Script") == 0) nFamily = wxSCRIPT; - else if (strcmp(fa.szFacename, "Courier New") == 0) + else if (strcmp(fm.szFamilyname, "Courier New") == 0) + nFamily = wxTELETYPE; + else if (strcmp(fm.szFamilyname, "Courier") == 0) + nFamily = wxTELETYPE; + else if (strcmp(fm.szFamilyname, "System Monospaced") == 0) + nFamily = wxTELETYPE; + else if (strcmp(fm.szFamilyname, "System VIO") == 0) + nFamily = wxTELETYPE; + else if (strcmp(fm.szFamilyname, "System Proportional") == 0) + nFamily = wxMODERN; + else if (strcmp(fm.szFamilyname, "Arial") == 0) nFamily = wxMODERN; else nFamily = wxSWISS; @@ -660,29 +698,32 @@ void wxNativeFontInfo::SetFamily( switch (eFamily) { case wxSCRIPT: - sFacename = _T("Script"); + sFacename = wxT("Script"); break; case wxDECORATIVE: - sFacename = _T("Times New Roman"); + sFacename = wxT("WarpSans"); break; case wxROMAN: - sFacename = _T("Times New Roman"); + sFacename = wxT("Times New Roman"); break; case wxTELETYPE: + sFacename = wxT("Courier New") ; + break; + case wxMODERN: - sFacename = _T("Courier New"); + sFacename = wxT("Arial") ; break; case wxSWISS: - sFacename = _T("WarpSans"); + sFacename = wxT("Helv") ; break; case wxDEFAULT: default: - sFacename = _T("Helv"); + sFacename = wxT("System Proportional") ; } if (!wxStrlen(fa.szFacename) ) @@ -701,8 +742,7 @@ void wxNativeFontInfo::SetEncoding( ,&vInfo )) { -#if wxUSE_FONTMAP - if (wxTheFontMapper->GetAltForEncoding( eEncoding + if (wxFontMapper::Get()->GetAltForEncoding( eEncoding ,&vInfo )) { @@ -717,7 +757,6 @@ void wxNativeFontInfo::SetEncoding( } } else -#endif // wxUSE_FONTMAP { // unsupported encoding, replace with the default vInfo.charset = 850; @@ -1119,5 +1158,5 @@ void wxFont::SetPS( M_FONTDATA->SetPS(hPS); RealizeResource(); -} // end of wxFont::SetUnderlined +} // end of wxFont::SetPS