]> code.delx.au - gnu-emacs/blobdiff - src/xftfont.c
Merge from emacs--devo--0
[gnu-emacs] / src / xftfont.c
index 842f3873c49c4a830f54a534d40f2d9cb704f9ca..bd310cb68b867a7dc0f7c97cb698afa4f05050fc 100644 (file)
@@ -261,6 +261,7 @@ xftfont_open (f, entity, pixel_size)
   font->font.full_name = font->font.name = name;
   font->file_name = (char *) file;
   font->font.size = xftfont->max_advance_width;
+  font->font.charset = font->encoding_charset = font->repertory_charset = -1;
   font->ascent = xftfont->ascent;
   font->descent = xftfont->descent;
   font->font.height = xftfont->ascent + xftfont->descent;
@@ -364,11 +365,14 @@ xftfont_prepare_face (f, face)
 {
   struct xftface_info *xftface_info;
 
+#if 0
+  /* This doesn't work if face->ascii_face doesn't use an Xft font. */
   if (face != face->ascii_face)
     {
       face->extra = face->ascii_face->extra;
       return 0;
     }
+#endif
 
   xftface_info = malloc (sizeof (struct xftface_info));
   if (! xftface_info)
@@ -394,15 +398,21 @@ xftfont_done_face (f, face)
 {
   struct xftface_info *xftface_info;
   
+#if 0
+  /* This doesn't work if face->ascii_face doesn't use an Xft font. */
   if (face != face->ascii_face
       || ! face->extra)
     return;
+#endif
 
   xftface_info = (struct xftface_info *) face->extra;
-  BLOCK_INPUT;
-  XftDrawDestroy (xftface_info->xft_draw);
-  UNBLOCK_INPUT;
-  free (xftface_info);
+  if (xftface_info)
+    {
+      BLOCK_INPUT;
+      XftDrawDestroy (xftface_info->xft_draw);
+      UNBLOCK_INPUT;
+      free (xftface_info);
+    }
   face->extra = NULL;
 }