+ char field_str[64]; // enough for 128 bits
+
+ // first morph the font if required
+ if (prop.weight != rxvt_fontprop::unset
+ || prop.slant != rxvt_fontprop::unset)
+ {
+ char fname[1024];
+
+ if (name[0] != '-')
+ {
+ f = XLoadQueryFont (DISPLAY, name);
+
+ if (!f)
+ return false;
+
+ char *new_name = get_property (f, "FONT", name);
+
+ if (new_name)
+ set_name (new_name);
+ else
+ rxvt_warn ("font '%s' has no FONT property, continuing without.", name);
+
+ XFreeFont (DISPLAY, f);
+ f = 0;
+ }
+
+ if (prop.weight != rxvt_fontprop::unset)
+ {
+ replace_field (fname, name, 2, 0,
+ prop.weight < rxvt_fontprop::bold
+ ? "medium" : "bold");
+ set_name (strdup (fname));
+ }
+
+ if (prop.slant != rxvt_fontprop::unset)
+ {
+ replace_field (fname, name, 3, 0,
+ prop.slant < rxvt_fontprop::italic
+ ? "r" : "i"); // TODO: handle "o"blique, too
+ set_name (strdup (fname));
+ }
+ }
+