Simplify rxvt_temp_buf usage.
[dana/urxvt.git] / src / rxvtfont.C
index 62a8033..a4dd1d6 100644 (file)
@@ -794,14 +794,23 @@ rxvt_font_x11::load (const rxvt_fontprop &prop, bool force_prop)
   char *registry = get_property (f, term->xa [XA_CHARSET_REGISTRY], 0);
   char *encoding = get_property (f, term->xa [XA_CHARSET_ENCODING], 0);
 
+  cs = CS_UNKNOWN;
+
   if (registry && encoding)
     {
       char charset[64];
       snprintf (charset, 64, "%s-%s", registry, encoding);
 
       cs = codeset_from_name (charset);
+
+      if (cs == CS_UNKNOWN)
+        rxvt_warn ("%s: cannot deduce encoding from registry/encoding properties \"%s\", ignoring font.\n", name, charset);
     }
-  else
+
+  free (registry);
+  free (encoding);
+
+  if (cs == CS_UNKNOWN)
     {
       const char *charset = get_property (f, XA_FONT, 0);
 
@@ -814,10 +823,15 @@ rxvt_font_x11::load (const rxvt_fontprop &prop, bool force_prop)
           break;
 
       cs = codeset_from_name (charset);
+      if (cs == CS_UNKNOWN)
+        rxvt_warn ("%s: cannot deduce encoding from font name property \"%s\", ignoring font.\n", name, charset);
     }
 
-  free (registry);
-  free (encoding);
+  if (cs == CS_UNKNOWN)
+    {
+      clear ();
+      return false;
+    }
 
   if (cs == CS_UNICODE)
     cs = CS_UNICODE_16; // X11 can have a max. of 65536 chars per font
@@ -874,14 +888,6 @@ rxvt_font_x11::load (const rxvt_fontprop &prop, bool force_prop)
       if (width < g.width) width = g.width;
     }
 
-  if (cs == CS_UNKNOWN)
-    {
-      fprintf (stderr, "unable to deduce codeset, ignoring font '%s'\n", name);
-
-      clear ();
-      return false;
-    }
-
 #if 0 // do it per-character
   if (prop && width > prop->width)
     {
@@ -1289,7 +1295,7 @@ rxvt_font_xft::draw (rxvt_drawable &d, int x, int y,
                      int fg, int bg)
 {
   XGlyphInfo extents;
-  XftGlyphSpec *enc = (XftGlyphSpec *)rxvt_temp_buf (len * sizeof (XftGlyphSpec));
+  XftGlyphSpec *enc = rxvt_temp_buf<XftGlyphSpec> (len);
   XftGlyphSpec *ep = enc;
 
   dTermDisplay;