changeset 91128:8eb56b57e4a0

(w32font_draw): Fill background manually.
author Jason Rumney <jasonr@gnu.org>
date Sat, 01 Dec 2007 00:31:23 +0000
parents 785637bd05d0
children d83bc1005b09
files src/w32font.c
diffstat 1 files changed, 6 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32font.c	Thu Nov 29 13:00:37 2007 +0000
+++ b/src/w32font.c	Sat Dec 01 00:31:23 2007 +0000
@@ -531,25 +531,23 @@
       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);