mirror of
https://github.com/gnustep/libs-back.git
synced 2025-04-23 16:10:52 +00:00
map from NSGlyph (unichar) to windows glyph
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@24447 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
1287873a6c
commit
9aff77a7b2
1 changed files with 25 additions and 8 deletions
|
@ -99,6 +99,8 @@ NSString *win32_font_family(NSString *fontName);
|
|||
|
||||
- (NSSize) advancementForGlyph: (NSGlyph)glyph
|
||||
{
|
||||
unichar c = (unichar)glyph;
|
||||
WORD windowsGlyph;
|
||||
HDC hdc;
|
||||
float w;
|
||||
ABCFLOAT abc;
|
||||
|
@ -106,8 +108,14 @@ NSString *win32_font_family(NSString *fontName);
|
|||
|
||||
hdc = GetDC(NULL);
|
||||
old = SelectObject(hdc, hFont);
|
||||
//GetCharWidthFloat(hdc, glyph, glyph, &w);
|
||||
GetCharABCWidthsFloatW(hdc, glyph, glyph, &abc);
|
||||
// Convert from GNUstep glyph (unichar) to windows glyph.
|
||||
if (GetGlyphIndicesW(hdc, &c, 1, &windowsGlyph, 0) == 0)
|
||||
{
|
||||
SelectObject(hdc, old);
|
||||
ReleaseDC(NULL, hdc);
|
||||
return NSMakeSize(0, 0); // No such glyph
|
||||
}
|
||||
GetCharABCWidthsFloatW(hdc, windowsGlyph, windowsGlyph, &abc);
|
||||
SelectObject(hdc, old);
|
||||
ReleaseDC(NULL, hdc);
|
||||
|
||||
|
@ -118,6 +126,8 @@ NSString *win32_font_family(NSString *fontName);
|
|||
|
||||
- (NSRect) boundingRectForGlyph: (NSGlyph)glyph
|
||||
{
|
||||
unichar c = (unichar)glyph;
|
||||
WORD windowsGlyph;
|
||||
HDC hdc;
|
||||
HFONT old;
|
||||
GLYPHMETRICS gm;
|
||||
|
@ -125,7 +135,14 @@ NSString *win32_font_family(NSString *fontName);
|
|||
|
||||
hdc = GetDC(NULL);
|
||||
old = SelectObject(hdc, hFont);
|
||||
if (GDI_ERROR != GetGlyphOutlineW(hdc, glyph,
|
||||
// Convert from GNUstep glyph (unichar) to windows glyph.
|
||||
if (GetGlyphIndicesW(hdc, &c, 1, &windowsGlyph, 0) == 0)
|
||||
{
|
||||
SelectObject(hdc, old);
|
||||
ReleaseDC(NULL, hdc);
|
||||
return NSMakeRect(0, 0, 0, 0); // No such glyph
|
||||
}
|
||||
if (GDI_ERROR != GetGlyphOutlineW(hdc, windowsGlyph,
|
||||
GGO_METRICS, // || GGO_GLYPH_INDEX
|
||||
&gm, 0, NULL, NULL))
|
||||
{
|
||||
|
@ -213,7 +230,7 @@ NSString *win32_font_family(NSString *fontName);
|
|||
return coveredCharacterSet;
|
||||
}
|
||||
|
||||
- (void) drawString: (NSString*)string
|
||||
- (void) drawString: (NSString*)string
|
||||
onDC: (HDC)hdc
|
||||
at: (POINT)p
|
||||
{
|
||||
|
@ -243,19 +260,19 @@ NSString *win32_font_family(NSString *fontName);
|
|||
onDC: (HDC)hdc
|
||||
at: (POINT)p
|
||||
{
|
||||
WORD buf[len];
|
||||
HFONT old;
|
||||
WORD buf[len];
|
||||
int i;
|
||||
int i;
|
||||
|
||||
old = SelectObject(hdc, hFont);
|
||||
/*
|
||||
* For now, assume that a glyph is a unicode character and can be
|
||||
* stored in a windows WORD
|
||||
*/
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
buf[i] = s[i];
|
||||
buf[i] = (WORD)s[i];
|
||||
}
|
||||
old = SelectObject(hdc, hFont);
|
||||
TextOutW(hdc, p.x, p.y - ascender, buf, len);
|
||||
SelectObject(hdc, old);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue