]> git.eshelyaron.com Git - emacs.git/commitdiff
(w32_load_system_font): Set FONT_WIDTH to maximum, not
authorJason Rumney <jasonr@gnu.org>
Mon, 3 Jan 2005 22:53:30 +0000 (22:53 +0000)
committerJason Rumney <jasonr@gnu.org>
Mon, 3 Jan 2005 22:53:30 +0000 (22:53 +0000)
average width. Set fontp->average_width and fontp->space_width to
their appropriate values.

src/w32fns.c

index 08780e05b1fc8b4366157e582cab51a6d9264fd8..b711560155345466f5dfb1030faa5178052f08c4 100644 (file)
@@ -64,6 +64,7 @@ extern double atof ();
 extern int w32_console_toggle_lock_key P_ ((int, Lisp_Object));
 extern void w32_menu_display_help P_ ((HWND, HMENU, UINT, UINT));
 extern void w32_free_menu_strings P_ ((HWND));
+extern XCharStruct *w32_per_char_metric P_ ((XFontStruct *, wchar_t *, int));
 
 extern int quit_char;
 
@@ -4544,7 +4545,7 @@ w32_load_system_font (f,fontname,size)
         /* Fill out details in lf according to the font that was
            actually loaded.  */
         lf.lfHeight = font->tm.tmInternalLeading - font->tm.tmHeight;
-        lf.lfWidth = font->tm.tmAveCharWidth;
+        lf.lfWidth = font->tm.tmMaxCharWidth;
         lf.lfWeight = font->tm.tmWeight;
         lf.lfItalic = font->tm.tmItalic;
         lf.lfCharSet = font->tm.tmCharSet;
@@ -4592,6 +4593,24 @@ w32_load_system_font (f,fontname,size)
     fontp->name = (char *) xmalloc (strlen (fontname) + 1);
     bcopy (fontname, fontp->name, strlen (fontname) + 1);
 
+    if (lf.lfPitchAndFamily == FIXED_PITCH)
+      {
+       /* Fixed width font.  */
+       fontp->average_width = fontp->space_width = FONT_WIDTH (font);
+      }
+    else
+      {
+       wchar_t space = 32;
+       XCharStruct* pcm;
+       pcm = w32_per_char_metric (font, &space, ANSI_FONT);
+       if (pcm)
+         fontp->space_width = pcm->width;
+       else
+         fontp->space_width = FONT_WIDTH (font);
+
+       fontp->average_width = font->tm.tmAveCharWidth;
+      }
+
     charset = xlfd_charset_of_font (fontname);
 
   /* Cache the W32 codepage for a font.  This makes w32_encode_char