/* 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
struct font_spec
{
- EMACS_UINT size;
- struct Lisp_Vector *next;
+ struct vectorlike_header header;
Lisp_Object props[FONT_SPEC_MAX];
};
struct font_entity
{
- EMACS_UINT size;
- struct Lisp_Vector *next;
+ struct vectorlike_header header;
Lisp_Object props[FONT_ENTITY_MAX];
};
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. */
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));
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));
};
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 */