(ftfont_has_char): If the arg FONT is a font-object,
authorKenichi Handa <handa@m17n.org>
Tue, 27 Jan 2009 05:10:08 +0000 (05:10 +0000)
committerKenichi Handa <handa@m17n.org>
Tue, 27 Jan 2009 05:10:08 +0000 (05:10 +0000)
directly use GT_Get_Char_index.

src/ChangeLog
src/ftfont.c

index 52eab5a..1b23663 100644 (file)
@@ -1,3 +1,13 @@
+2009-01-27  Kenichi Handa  <handa@m17n.org>
+
+       * ftfont.c (ftfont_has_char): If the arg FONT is a font-object,
+       directly use GT_Get_Char_index.
+
+       * xftfont.c (struct xftfont_info): New member `index'.
+
+       * fontset.c (font_for_char): Use assq_no_quit, not assoc_no_quit.
+       (Ffontset_font): Adjusted for the change of fontset entry.
+
 2009-01-26  Kenichi Handa  <handa@m17n.org>
 
        * fontset.c (fontset_find_font): Fix handling of non-cons return
index b28c4c3..dea3bf0 100644 (file)
@@ -62,7 +62,7 @@ struct ftfont_info
 {
   struct font font;
 #ifdef HAVE_LIBOTF
-  /* The following three members must be here in this order to be
+  /* The following four members must be here in this order to be
      compatible with struct xftfont_info (in xftfont.c).  */
   int maybe_otf;       /* Flag to tell if this may be OTF or not.  */
   OTF *otf;
@@ -1189,13 +1189,24 @@ ftfont_close (f, font)
 }
 
 static int
-ftfont_has_char (entity, c)
-     Lisp_Object entity;
+ftfont_has_char (font, c)
+     Lisp_Object font;
      int c;
 {
-  FcCharSet *charset = ftfont_get_fc_charset (entity);
+  if (FONT_ENTITY_P (font))
+    {
+      FcCharSet *charset = ftfont_get_fc_charset (font);
 
-  return (FcCharSetHasChar (charset, c) == FcTrue);
+      return (FcCharSetHasChar (charset, c) == FcTrue);
+    }
+  else
+    {
+      struct ftfont_info *ftfont_info;
+
+      ftfont_info = (struct ftfont_info *) XFONT_OBJECT (font);
+      return (FT_Get_Char_Index (ftfont_info->ft_size->face, (FT_ULong) c)
+             != 0);
+    }
 }
 
 static unsigned