Fix text extent computation in wxMSW wxGraphicsContext.

The results were incorrect for italic or bold fonts as we hardcoded
FontStyleRegular instead of using the real font style.

Closes #14421.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71821 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2012-06-20 17:54:46 +00:00
parent 7e3ea54f47
commit b437ff98b0
2 changed files with 10 additions and 6 deletions

View File

@ -592,6 +592,7 @@ MSW:
- Fix code compilation with wxUSE_UNICODE_UTF8 (Kolya Kosenko).
- Fix crash in wxTreeCtrl when calling GetSelection() from selection changed
event handler under Vista and later (sbrowne).
- Fix text extent computation in wxGraphicsContext (juria90).
OSX:

View File

@ -1770,12 +1770,15 @@ void wxGDIPlusContext::GetTextExtent( const wxString &str, wxDouble *width, wxDo
REAL factorY = m_fontScaleRatio;
REAL rDescent = ffamily.GetCellDescent(FontStyleRegular) *
f->GetSize() / ffamily.GetEmHeight(FontStyleRegular);
REAL rAscent = ffamily.GetCellAscent(FontStyleRegular) *
f->GetSize() / ffamily.GetEmHeight(FontStyleRegular);
REAL rHeight = ffamily.GetLineSpacing(FontStyleRegular) *
f->GetSize() / ffamily.GetEmHeight(FontStyleRegular);
// Notice that we must use the real font style or the results would be
// incorrect for italic/bold fonts.
const INT style = f->GetStyle();
REAL rDescent = ffamily.GetCellDescent(style) *
f->GetSize() / ffamily.GetEmHeight(style);
REAL rAscent = ffamily.GetCellAscent(style) *
f->GetSize() / ffamily.GetEmHeight(style);
REAL rHeight = ffamily.GetLineSpacing(style) *
f->GetSize() / ffamily.GetEmHeight(style);
if ( height )
*height = rHeight * factorY;