Mercurial > emacs
changeset 90908:523a5c7f67ea
(w32font_open): Don't set font_idx.
(w32font_text_extents): Try GetTextExtentPoint32W before defaulting
to font settings.
(w32font_draw): Fill background explicitly.
author | Jason Rumney <jasonr@gnu.org> |
---|---|
date | Mon, 04 Jun 2007 21:26:03 +0000 |
parents | 246f918205d5 |
children | b9a3c82a96e0 |
files | src/w32font.c |
diffstat | 1 files changed, 19 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/w32font.c Sat Jun 02 23:42:41 2007 +0000 +++ b/src/w32font.c Mon Jun 04 21:26:03 2007 +0000 @@ -273,7 +273,6 @@ bcopy (&w32_font->metrics, &compat_w32_font->tm, sizeof (TEXTMETRIC)); compat_w32_font->hfont = hfont; - font->font.font_idx = 0; len = strlen (logfont.lfFaceName); font->font.name = (char *) xmalloc (len + 1); bcopy (logfont.lfFaceName, font->font.name, len); @@ -425,6 +424,16 @@ metrics[i].ascent = -gm.gmptGlyphOrigin.y; metrics[i].descent = gm.gmBlackBoxY + gm.gmptGlyphOrigin.y; } + else if (GetTextExtentPoint32W (dc, wcode + i, 1, &size) + != GDI_ERROR) + { + metrics[i].lbearing = 0; + metrics[i].rbearing = size.cx + + ((struct w32font_info *) font)->metrics.tmOverhang; + metrics[i].width = size.cx; + metrics[i].ascent = font->ascent; + metrics[i].descent = font->descent; + } else { metrics[i].lbearing = 0; @@ -486,8 +495,15 @@ if (with_background) { - options = ETO_OPAQUE; - SetBkColor (s->hdc, s->gc->background); + HBRUSH brush; + RECT rect; + + brush = CreateSolidBrush (s->gc->background); + rect.left = x; + rect.top = y - ((struct font *) (s->font_info->font))->ascent; + rect.right = x + s->width; + rect.bottom = y + ((struct font *) (s->font_info->font))->descent; + FillRect (s->hdc, &rect, brush); } else SetBkMode (s->hdc, TRANSPARENT);