]> code.delx.au - gnu-emacs/blobdiff - src/xftfont.c
* syntax.c (Fchar_syntax): Minor doc fix (Bug#119).
[gnu-emacs] / src / xftfont.c
index 4a1b488bcf9d7efc42968aacf00ead5afae67c03..2b576c3d4a2c73a5ed223155a0af73e0e4b74baa 100644 (file)
@@ -256,7 +256,7 @@ xftfont_open (f, entity, pixel_size)
       else if (EQ (key, QChintstyle))
        {
          if (INTEGERP (val))
-           FcPatternAddInteger (pat, FC_RGBA, XINT (val));
+           FcPatternAddInteger (pat, FC_HINT_STYLE, XINT (val));
        }
       else if (EQ (key, QCrgba))
        {
@@ -287,14 +287,15 @@ xftfont_open (f, entity, pixel_size)
   match = XftFontMatch (display, FRAME_X_SCREEN_NUMBER (f), pat, &result);
   FcPatternDestroy (pat);
   xftfont = XftFontOpenPattern (display, match);
-  ft_face = XftLockFace (xftfont);
-  UNBLOCK_INPUT;
-
-  if (! xftfont)
+  if (!xftfont)
     {
+      UNBLOCK_INPUT;
       XftPatternDestroy (match);
       return Qnil;
     }
+  ft_face = XftLockFace (xftfont);
+  UNBLOCK_INPUT;
+
   /* We should not destroy PAT here because it is kept in XFTFONT and
      destroyed automatically when XFTFONT is closed.  */
   font_object = font_make_object (VECSIZE (struct xftfont_info), entity, size);
@@ -487,9 +488,6 @@ xftfont_has_char (font, c)
   struct xftfont_info *xftfont_info;
   struct charset *cs = NULL;
 
-  if (FONT_ENTITY_P (font))
-    return ftfont_driver.has_char (font, c);
-
   if (EQ (AREF (font, FONT_ADSTYLE_INDEX), Qja)
       && charset_jisx0208 >= 0)
     cs = CHARSET_FROM_ID (charset_jisx0208);
@@ -499,6 +497,8 @@ xftfont_has_char (font, c)
   if (cs)
     return (ENCODE_CHAR (cs, c) != CHARSET_INVALID_CODE (cs));
 
+  if (FONT_ENTITY_P (font))
+    return ftfont_driver.has_char (font, c);
   xftfont_info = (struct xftfont_info *) XFONT_OBJECT (font);
   return (XftCharExists (xftfont_info->display, xftfont_info->xftfont,
                         (FcChar32) c) == FcTrue);