X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/828621c2ea0c43af4082218ba33b5e4137283db9..a9c1265fcad7d69e22647c6a598c91cbfb26faee:/src/os2/font.cpp diff --git a/src/os2/font.cpp b/src/os2/font.cpp index e4abc8de91..c1839db1ca 100644 --- a/src/os2/font.cpp +++ b/src/os2/font.cpp @@ -108,8 +108,13 @@ public: // inline int GetPointSize(void) const { - return m_bNativeFontInfoOk ? m_vNativeFontInfo.GetPointSize() - : m_nPointSize; + // + // We don't use the actual native font point size since it is + // the chosen physical font, which is usually only and approximation + // of the desired outline font. The actual displayable point size + // is the one stored in the refData + // + return m_nPointSize; } inline int GetFamily(void) const @@ -363,6 +368,9 @@ bool wxFontRefData::Alloc( { wxString sFaceName; long flId = m_hFont; + long lRc; + short nIndex = 0; + PFONTMETRICS pFM = NULL; if (!m_bNativeFontInfoOk) { @@ -377,22 +385,21 @@ bool wxFontRefData::Alloc( m_bNativeFontInfoOk = TRUE; } - if(::GpiCreateLogFont( m_hPS - ,NULL - ,flId - ,&m_vNativeFontInfo.fa - ) != GPI_ERROR) + if((lRc = ::GpiCreateLogFont( m_hPS + ,NULL + ,flId + ,&m_vNativeFontInfo.fa + )) != GPI_ERROR) + { m_hFont = (WXHFONT)flId; m_nFontId = flId; - + } if (!m_hFont) { wxLogLastError("CreateFont"); } - // - // Query for the actual metrics of the current font being used - // + ::GpiSetCharSet(m_hPS, flId); // sets font for presentation space ::GpiQueryFontMetrics(m_hPS, sizeof(FONTMETRICS), &m_vNativeFontInfo.fm); // @@ -400,16 +407,30 @@ bool wxFontRefData::Alloc( // memcpy(&m_vFattrs, &m_vNativeFontInfo.fa, sizeof(m_vFattrs)); memcpy(&m_vFname, &m_vNativeFontInfo.fn, sizeof(m_vFname)); - m_nPointSize = m_vNativeFontInfo.fm.lEmHeight; + // + // Going to leave the point size alone. Mostly we use outline fonts + // that can be set to any point size inside of Presentation Parameters, + // regardless of whether or not the actual font is registered in the system. + // The GpiCreateLogFont will do enough by selecting the right family, + // and face name. + // if (strcmp(m_vNativeFontInfo.fa.szFacename, "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) + m_nFamily = wxSWISS; + else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Helv") == 0) + m_nFamily = wxSWISS; else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Script") == 0) m_nFamily = wxSCRIPT; else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Courier New") == 0) - m_nFamily = wxMODERN; + m_nFamily = wxTELETYPE; else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Courier") == 0) + m_nFamily = wxTELETYPE; + else if (strcmp(m_vNativeFontInfo.fa.szFacename, "System VIO") == 0) m_nFamily = wxMODERN; else m_nFamily = wxSWISS;