From 8b62b715f55b777bf5afcb5b5d1a1de6aedd55c4 Mon Sep 17 00:00:00 2001 From: rfm Date: Thu, 8 Feb 2007 09:30:51 +0000 Subject: [PATCH] fix error calculating advancementwq git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@24490 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Source/winlib/WIN32FontInfo.m | 16 ++++------------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index bbe3e65..3c41246 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-02-08 Richard Frith-Macdonald + + * Source/winlib/WIN32FontInfo.m: + Fix error calculating advancement. + 2007-01-31 Richard Frith-Macdonald * Source\winlib\WIN32FontInfo.m: diff --git a/Source/winlib/WIN32FontInfo.m b/Source/winlib/WIN32FontInfo.m index daf33db..b124445 100644 --- a/Source/winlib/WIN32FontInfo.m +++ b/Source/winlib/WIN32FontInfo.m @@ -99,8 +99,7 @@ NSString *win32_font_family(NSString *fontName); - (NSSize) advancementForGlyph: (NSGlyph)glyph { - WORD c = (WORD)glyph; - WORD windowsGlyph; + unichar u = (unichar)glyph; HDC hdc; float w; ABCFLOAT abc; @@ -108,15 +107,8 @@ NSString *win32_font_family(NSString *fontName); hdc = GetDC(NULL); old = SelectObject(hdc, hFont); - // Convert from GNUstep glyph (unichar) to windows glyph. - if (GetGlyphIndicesW(hdc, &c, 1, &windowsGlyph, 0) == 0) - { - SelectObject(hdc, old); - ReleaseDC(NULL, hdc); -NSLog(@"No glyph for U%d", c); - return NSMakeSize(0, 0); // No such glyph - } - GetCharABCWidthsFloatW(hdc, windowsGlyph, windowsGlyph, &abc); + // FIXME ... currently a gnustep glyph is a unichar ... what if that changes. + GetCharABCWidthsFloatW(hdc, u, u, &abc); SelectObject(hdc, old); ReleaseDC(NULL, hdc); @@ -137,7 +129,7 @@ NSLog(@"No glyph for U%d", c); hdc = GetDC(NULL); old = SelectObject(hdc, hFont); // Convert from GNUstep glyph (unichar) to windows glyph. - if (GetGlyphIndicesW(hdc, &c, 1, &windowsGlyph, 0) == 0) + if (GetGlyphIndicesW(hdc, &c, 1, &windowsGlyph, 0) == GDI_ERROR) { SelectObject(hdc, old); ReleaseDC(NULL, hdc);