]> git.eshelyaron.com Git - emacs.git/commitdiff
(w32font_full_name): Report point size for scalable fonts.
authorJason Rumney <jasonr@gnu.org>
Sat, 1 Mar 2008 23:04:20 +0000 (23:04 +0000)
committerJason Rumney <jasonr@gnu.org>
Sat, 1 Mar 2008 23:04:20 +0000 (23:04 +0000)
src/ChangeLog
src/w32font.c

index 02d1626893c3764a3f6a2ee3deb6e48830cc04aa..0a087cbc85e36043b59f568fdaa840139035840c 100644 (file)
@@ -1,3 +1,7 @@
+2008-03-01  Jason Rumney  <jasonr@gnu.org>
+
+       * w32font.c (w32font_full_name): Report point size for scalable fonts.
+
 2008-03-01  Kim F. Storm  <storm@cua.dk>
 
        * dispextern.h (CHAR_GLYPH_SPACE_P): Check for default face.
index ff0344c79125375f38534719759261005d2a5935..fad3960180e22383d1a2a4c5cf12a20a2ea96e48 100644 (file)
@@ -1553,11 +1553,20 @@ w32font_full_name (font, font_obj, pixel_size, name, nbytes)
   char *name;
   int nbytes;
 {
-  int len;
+  int len, height, outline;
   char *p;
   Lisp_Object antialiasing, weight = Qnil;
 
-  len = strlen (font->lfFaceName) + 21; /* :pixelsize=SIZE */
+  len = strlen (font->lfFaceName);
+
+  outline = EQ (AREF (font_obj, FONT_FOUNDRY_INDEX), Qoutline);
+
+  /* Represent size of scalable fonts by point size. But use pixelsize for
+     raster fonts to indicate that they are exactly that size.  */
+  if (outline)
+    len += 11; /* -SIZE */
+  else
+    len = strlen (font->lfFaceName) + 21;
 
   if (font->lfItalic)
     len += 7; /* :italic */
@@ -1579,10 +1588,20 @@ w32font_full_name (font, font_obj, pixel_size, name, nbytes)
   p = name;
   p += sprintf (p, "%s", font->lfFaceName);
 
-  if (font->lfHeight)
-    p += sprintf (p, ":pixelsize=%d", eabs (font->lfHeight));
-  else if (pixel_size > 0)
-    p += sprintf (p, ":pixelsize=%d", pixel_size);
+  height = font->lfHeight ? eabs (font->lfHeight) : pixel_size;
+
+  if (height > 0)
+    {
+      if (outline)
+        {
+          float pointsize = height * 72.0 / one_w32_display_info.resy;
+          /* Round to nearest half point.  */
+          pointsize = round (pointsize * 2) / 2;
+          p += sprintf (p, "-%1.1f", pointsize);
+        }
+      else
+        p += sprintf (p, ":pixelsize=%d", height);
+    }
 
   if (font->lfItalic)
     p += sprintf (p, ":italic");