From fb3b8017ffbc5906c06f8cb164285e35faa19dcf Mon Sep 17 00:00:00 2001 From: Jason Rumney Date: Sat, 1 Dec 2007 00:31:23 +0000 Subject: [PATCH] (w32font_draw): Fill background manually. --- src/w32font.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/w32font.c b/src/w32font.c index e8e9b4ce2f..33b97dc588 100644 --- a/src/w32font.c +++ b/src/w32font.c @@ -531,25 +531,23 @@ w32font_draw (s, from, to, x, y, with_background) DeleteObject (new_clip); } + /* Using OPAQUE background mode can clear more background than expected + when Cleartype is used. Draw the background manually to avoid this. */ + SetBkMode (s->hdc, TRANSPARENT); if (with_background) { - SetBkColor (s->hdc, s->gc->background); - SetBkMode (s->hdc, OPAQUE); -#if 0 HBRUSH brush; RECT rect; + struct font *font = (struct font *) s->face->font_info; brush = CreateSolidBrush (s->gc->background); rect.left = x; - rect.top = y - ((struct font *) (s->font_info->font))->ascent; + rect.top = y - font->ascent; rect.right = x + s->width; - rect.bottom = y + ((struct font *) (s->font_info->font))->descent; + rect.bottom = y + font->descent; FillRect (s->hdc, &rect, brush); DeleteObject (brush); -#endif } - else - SetBkMode (s->hdc, TRANSPARENT); ExtTextOutW (s->hdc, x, y, options, NULL, s->char2b + from, to - from, NULL); -- 2.20.1