]> code.delx.au - gnu-emacs/blobdiff - src/font.h
Backport revisions 2011-04-24T05:30:24Z!eggert@cs.ucla.edu..2011-04-25T19:40:22Z...
[gnu-emacs] / src / font.h
index 5726ffd319ce62067d6670c8315a8e5bae1f7a53..7471464bb9b2f85e80d2afa1dc54f6cba18f4915 100644 (file)
@@ -1,6 +1,6 @@
 /* font.h -- Interface definition for font handling.
-   Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-   Copyright (C) 2006, 2007, 2008, 2009
+   Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
      National Institute of Advanced Industrial Science and Technology (AIST)
      Registration Number H13PRO009
 
@@ -247,8 +247,7 @@ extern Lisp_Object Qja, Qko;
 
 struct font_spec
 {
-  EMACS_UINT size;
-  struct Lisp_Vector *next;
+  struct vectorlike_header header;
   Lisp_Object props[FONT_SPEC_MAX];
 };
 
@@ -256,8 +255,7 @@ struct font_spec
 
 struct font_entity
 {
-  EMACS_UINT size;
-  struct Lisp_Vector *next;
+  struct vectorlike_header header;
   Lisp_Object props[FONT_ENTITY_MAX];
 };
 
@@ -270,8 +268,7 @@ struct font_entity
 
 struct font
 {
-  EMACS_UINT size;
-  struct Lisp_Vector *next;
+  struct vectorlike_header header;
 
   /* All Lisp_Object components must come first.
      That ensures they are all aligned normally.  */
@@ -574,7 +571,7 @@ struct font_driver
      FONT-ENTITY and it must be opened to check it, return -1.  */
   int (*has_char) P_ ((Lisp_Object font, int c));
 
-  /* Return a glyph code of FONT for characer C (Unicode code point).
+  /* Return a glyph code of FONT for character C (Unicode code point).
      If FONT doesn't have such a glyph, return FONT_INVALID_CODE.  */
   unsigned (*encode_char) P_ ((struct font *font, int c));
 
@@ -687,6 +684,16 @@ struct font_driver
      the (N-1)th element of VARIATIONS.  */
   int (*get_variation_glyphs) P_ ((struct font *font,
                                   int c, unsigned variations[256]));
+
+  void (*filter_properties) P_ ((Lisp_Object font, Lisp_Object properties));
+
+  /* Optional.
+
+     Return non-zero if FONT_OBJECT can be used as a (cached) font
+     for ENTITY on frame F.  */
+  int (*cached_font_ok) P_ ((struct frame *f,
+                             Lisp_Object font_object,
+                             Lisp_Object entity));
 };
 
 
@@ -804,6 +811,11 @@ extern int font_put_frame_data P_ ((FRAME_PTR f,
 extern void *font_get_frame_data P_ ((FRAME_PTR f,
                                      struct font_driver *driver));
 
+extern void font_filter_properties (Lisp_Object font,
+                                   Lisp_Object alist,
+                                   const char *boolean_properties[],
+                                   const char *non_boolean_properties[]);
+
 #ifdef HAVE_FREETYPE
 extern struct font_driver ftfont_driver;
 #endif /* HAVE_FREETYPE */