From: David Webster Date: Wed, 21 Aug 2002 22:46:05 +0000 (+0000) Subject: Font updates X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/a4353f07c6b37712634d4b2d86527b647a08044f Font updates git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16667 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/os2/font.cpp b/src/os2/font.cpp index de67ef4211..29b418ae3c 100644 --- a/src/os2/font.cpp +++ b/src/os2/font.cpp @@ -441,7 +441,7 @@ bool wxFontRefData::Alloc( m_nFamily = wxROMAN; else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "WarpSans") == 0) m_nFamily = wxDECORATIVE; - else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Helvitica") == 0) + else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Helvetica") == 0) m_nFamily = wxSWISS; else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Helv") == 0) m_nFamily = wxSWISS; @@ -600,7 +600,7 @@ wxFontFamily wxNativeFontInfo::GetFamily() const nFamily = wxROMAN; else if (strcmp(fm.szFamilyname, "WarpSans") == 0) nFamily = wxDECORATIVE; - else if (strcmp(fm.szFamilyname, "Helvitica") == 0) + else if (strcmp(fm.szFamilyname, "Helvetica") == 0) nFamily = wxSWISS; else if (strcmp(fm.szFamilyname, "Helv") == 0) nFamily = wxSWISS; diff --git a/src/os2/fontdlg.cpp b/src/os2/fontdlg.cpp index 9b796e6527..e75040cc76 100644 --- a/src/os2/fontdlg.cpp +++ b/src/os2/fontdlg.cpp @@ -74,42 +74,23 @@ int wxFontDialog::ShowModal() vFn.usWeightClass = vFontDlg.usWeight; vFn.usWidthClass = vFontDlg.usWidth; - memcpy(&vInfo.fa, &vFontDlg.fAttrs, sizeof(FATTRS)); + memset(&vInfo.fa, '\0', sizeof(FATTRS)); memcpy(&vInfo.fn, &vFn, sizeof(FACENAMEDESC)); + vInfo.fa.usRecordLength = vFontDlg.fAttrs.usRecordLength; + strcpy(vInfo.fa.szFacename, vFontDlg.fAttrs.szFacename); + vInfo.fa.lMatch = vFontDlg.fAttrs.lMatch; + // // Debugging // wxFont vChosenFont(vInfo); - int nFamily; - int nPointSize = vFontDlg.lEmHeight; - int nStyle; - int nWeight; - bool bUnderlined; - wxString sFaceName; - wxNativeFontInfo* pInfo; + int nPointSize = vFontDlg.fxPointSize >> 16; vChosenFont.SetPointSize(nPointSize); - nFamily = vChosenFont.GetFamily(); - nPointSize = vChosenFont.GetPointSize(); - nStyle = vChosenFont.GetStyle(); - nWeight = vChosenFont.GetWeight(); - bUnderlined = vChosenFont.GetUnderlined(); - sFaceName = vChosenFont.GetFaceName(); - pInfo = vChosenFont.GetNativeFontInfo(); - - m_fontData.chosenFont = vChosenFont; - nFamily = m_fontData.chosenFont.GetFamily(); - nPointSize = m_fontData.chosenFont.GetPointSize(); - nStyle = m_fontData.chosenFont.GetStyle(); - nWeight = m_fontData.chosenFont.GetWeight(); - bUnderlined = m_fontData.chosenFont.GetUnderlined(); - sFaceName = m_fontData.chosenFont.GetFaceName(); - pInfo = m_fontData.chosenFont.GetNativeFontInfo(); - m_fontData.EncodingInfo().facename = vFontDlg.fAttrs.szFacename; m_fontData.EncodingInfo().charset = vFontDlg.fAttrs.usCodePage; diff --git a/src/os2/fontutil.cpp b/src/os2/fontutil.cpp index 069b7d7f68..8b4d684739 100644 --- a/src/os2/fontutil.cpp +++ b/src/os2/fontutil.cpp @@ -258,6 +258,44 @@ bool wxTestFontEncoding( // wxFont <-> LOGFONT conversion // ---------------------------------------------------------------------------- +void wxConvertVectorFontSize( + FIXED fxPointSize +, PFATTRS pFattrs +) +{ + HPS hPS; + HDC hDC; + LONG lXFontResolution; + LONG lYFontResolution; + SIZEF vSizef; + + hPS = WinGetScreenPS(HWND_DESKTOP); // Screen presentation space + + // + // Query device context for the screen and then query + // the resolution of the device for the device context. + // + + hDC = GpiQueryDevice(hPS); + DevQueryCaps( hDC, CAPS_HORIZONTAL_FONT_RES, (LONG)1, &lXFontResolution); + DevQueryCaps( hDC, CAPS_VERTICAL_FONT_RES, (LONG)1, &lYFontResolution); + + // + // Calculate the size of the character box, based on the + // point size selected and the resolution of the device. + // The size parameters are of type FIXED, NOT int. + // NOTE: 1 point == 1/72 of an inch. + // + + vSizef.cx = (FIXED)(((fxPointSize) / 72 ) * lXFontResolution ); + vSizef.cy = (FIXED)(((fxPointSize) / 72 ) * lYFontResolution ); + + pFattrs->lMaxBaselineExt = MAKELONG( HIUSHORT( vSizef.cy ), 0 ); + pFattrs->lAveCharWidth = MAKELONG( HIUSHORT( vSizef.cx ), 0 ); + WinReleasePS(hPS); + +} // end of wxConvertVectorPointSize + void wxFillLogFont( LOGFONT* pFattrs // OS2 GPI FATTRS , PFACENAMEDESC pFaceName @@ -327,8 +365,7 @@ void wxFillLogFont( // Initialize FATTR and FACENAMEDESC // pFattrs->usRecordLength = sizeof(FATTRS); - pFattrs->fsFontUse = FATTR_FONTUSE_OUTLINE | // only outline fonts allowed - FATTR_FONTUSE_TRANSFORMABLE; // may be transformed + pFattrs->fsFontUse = FATTR_FONTUSE_OUTLINE; // only outline fonts allowed pFattrs->fsType = 0; pFattrs->lMaxBaselineExt = pFattrs->lAveCharWidth = 0; pFattrs->idRegistry = 0; @@ -602,30 +639,24 @@ void wxOS2SelectMatchingFontByName( // Fill in the FATTRS with the best match from FONTMETRICS // pFattrs->usRecordLength = sizeof(FATTRS); // Sets size of structure - pFattrs->fsSelection = pFM[nIndex].fsSelection; // Uses default selection pFattrs->lMatch = pFM[nIndex].lMatch; // Force match - pFattrs->idRegistry = pFM[nIndex].idRegistry; // Uses default registry - pFattrs->usCodePage = pFM[nIndex].usCodePage; // Code-page - pFattrs->fsType = 0; // Uses default type - pFattrs->lMaxBaselineExt = 0; - pFattrs->lAveCharWidth = 0; - pFattrs->fsFontUse = FATTR_FONTUSE_OUTLINE | // only outline fonts allowed - FATTR_FONTUSE_TRANSFORMABLE; // may be transformed -#if 0 - pFattrs->lMaxBaselineExt = pFM[nIndex].lMaxBaselineExt; - pFattrs->lAveCharWidth = pFM[nIndex].lAveCharWidth; -#endif + pFattrs->idRegistry = 0; // Registry + pFattrs->usCodePage = 0; // Match proper CodePage + pFattrs->fsFontUse = 0; // Use only outline fonts + pFattrs->fsType = 0; // Use only outline fonts + pFattrs->lMaxBaselineExt = 0; // Use only outline fonts + pFattrs->lAveCharWidth = 0; // Use only outline fonts wxStrcpy(pFattrs->szFacename, pFM[nIndex].szFacename); - // Debug - strcpy(zFontFaceName, pFM[nIndex].szFacename); - strcpy(zFontFaceName, pFattrs->szFacename); + if (pFont->GetWeight() == wxNORMAL) + pFattrs->fsSelection = 0; + else + pFattrs->fsSelection = FATTR_SEL_BOLD; - if(usWeightClass >= FWEIGHT_BOLD) - pFattrs->fsSelection |= FATTR_SEL_BOLD; - if(pFont->GetUnderlined()) - pFattrs->fsSelection |= FATTR_SEL_UNDERSCORE; - if(fsSelection & FM_SEL_ITALIC) + if (pFont->GetStyle() == wxITALIC || pFont->GetStyle() == wxSLANT) pFattrs->fsSelection |= FATTR_SEL_ITALIC; + + if (pFont->GetUnderlined()) + pFattrs->fsSelection |= FATTR_SEL_UNDERSCORE; } // end of wxOS2SelectMatchingFontByName wxFont wxCreateFontFromLogFont( diff --git a/src/os2/wx23.def b/src/os2/wx23.def index f9330bee47..ad99183d6d 100644 --- a/src/os2/wx23.def +++ b/src/os2/wx23.def @@ -4,7 +4,7 @@ DATA MULTIPLE NONSHARED READWRITE LOADONCALL CODE LOADONCALL EXPORTS -;From library: H:\DEV\WX2\WXWINDOWS\LIB\wx.lib +;From library: H:\DEV\WX2\WXWINDOWS\lib\wx.lib ;From object file: dummy.cpp ;PUBDEFs (Symbols available from object file): wxDummyChar @@ -12803,6 +12803,8 @@ EXPORTS wxFillLogFont__FP7_FATTRSP13_FACENAMEDESCPUlT3PlR8wxStringP6wxFont ;wxGetNativeFontEncoding(wxFontEncoding,wxNativeEncodingInfo*) wxGetNativeFontEncoding__F14wxFontEncodingP20wxNativeEncodingInfo + ;wxConvertVectorFontSize(long,_FATTRS*) + wxConvertVectorFontSize__FlP7_FATTRS ;wxOS2SelectMatchingFontByName(_FATTRS*,_FACENAMEDESC*,_FONTMETRICS*,int,const wxFont*) wxOS2SelectMatchingFontByName__FP7_FATTRSP13_FACENAMEDESCP12_FONTMETRICSiPC6wxFont ;wxGpiStrcmp(char*,char*)