/* font.h -- Interface definition for font handling.
- Copyright (C) 2006-2011 Free Software Foundation, Inc.
+ Copyright (C) 2006-2012 Free Software Foundation, Inc.
Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
/* Beyond here, there should be no more Lisp_Object components. */
- /* Maximum bound width over all existing characters of the font. On
- X window, this is same as (font->max_bounds.width). */
+ /* Minimum and maximum glyph widths, in pixels. Some font backends,
+ such as xft, lack the information to easily compute minimum and
+ maximum widths over all characters; in that case, these values
+ are approximate. */
+ int min_width;
int max_width;
/* By which pixel size the font is opened. */
/* Average width of glyphs in the font. If the font itself doesn't
have that information but has glyphs of ASCII characters, the
- value is the average with of those glyphs. Otherwise, the value
+ value is the average width of those glyphs. Otherwise, the value
is 0. */
int average_width;
- /* Minimum glyph width (in pixels). */
- int min_width;
-
/* Ascent and descent of the font (in pixels). */
int ascent, descent;
} while (0)
#define XFONT_SPEC(p) \
- (eassert (FONT_SPEC_P(p)), (struct font_spec *) XPNTR (p))
+ (eassert (FONT_SPEC_P (p)), (struct font_spec *) XUNTAG (p, Lisp_Vectorlike))
#define XFONT_ENTITY(p) \
- (eassert (FONT_ENTITY_P(p)), (struct font_entity *) XPNTR (p))
+ (eassert (FONT_ENTITY_P (p)), \
+ (struct font_entity *) XUNTAG (p, Lisp_Vectorlike))
#define XFONT_OBJECT(p) \
- (eassert (FONT_OBJECT_P(p)), (struct font *) XPNTR (p))
+ (eassert (FONT_OBJECT_P (p)), (struct font *) XUNTAG (p, Lisp_Vectorlike))
#define XSETFONT(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_FONT))
/* Number of pt per inch (from the TeXbook). */
Lisp_Object type;
/* 1 iff the font's foundry, family, and adstyle names are case
- sensitve. */
+ sensitive. */
int case_sensitive;
/* Return a cache of font-entities on frame F. The cache must be a
/* Optional.
Store bitmap data for glyph-code CODE of FONT in BITMAP. It is
- intended that this method is callled from the other font-driver
+ intended that this method is called from the other font-driver
for actual drawing. */
int (*get_bitmap) (struct font *font, unsigned code,
struct font_bitmap *bitmap,
/* Optional.
Get coordinates of the INDEXth anchor point of the glyph whose
code is CODE. Store the coordinates in *X and *Y. Return 0 if
- the operations was successfull. Otherwise return -1. */
+ the operations was successful. Otherwise return -1. */
int (*anchor_point) (struct font *font, unsigned code, int index,
int *x, int *y);
/* Chain of font drivers. There's one global font driver list
- (font_driver_list in font.c). In addition, each frame has it's own
+ (font_driver_list in font.c). In addition, each frame has its own
font driver list at FRAME_PTR->font_driver_list. */
struct font_driver_list
/* Chain of arbitrary data specific to each font driver. Each frame
- has it's own font data list at FRAME_PTR->font_data_list. */
+ has its own font data list at FRAME_PTR->font_data_list. */
struct font_data_list
{
struct font_data_list *next;
};
-EXFUN (Ffont_spec, MANY);
extern Lisp_Object copy_font_spec (Lisp_Object);
extern Lisp_Object merge_font_spec (Lisp_Object, Lisp_Object);
-EXFUN (Ffont_get, 2);
-EXFUN (Ffont_put, 3);
-EXFUN (Flist_fonts, 4);
-EXFUN (Ffont_xlfd_name, 2);
extern Lisp_Object font_make_entity (void);
extern Lisp_Object font_make_object (int, Lisp_Object, int);
extern void font_done_for_face (FRAME_PTR f, struct face *face);
extern Lisp_Object font_open_by_spec (FRAME_PTR f, Lisp_Object spec);
-extern Lisp_Object font_open_by_name (FRAME_PTR f, const char *name);
+extern Lisp_Object font_open_by_name (FRAME_PTR f, Lisp_Object name);
extern Lisp_Object font_intern_prop (const char *str, ptrdiff_t len,
int force_symbol);
Lisp_Object registry,
Lisp_Object spec);
-extern int font_parse_xlfd (char *name, Lisp_Object font);
-extern int font_unparse_xlfd (Lisp_Object font, int pixel_size,
- char *name, int bytes);
+extern int font_parse_xlfd (char *name, ptrdiff_t len, Lisp_Object font);
+extern ptrdiff_t font_unparse_xlfd (Lisp_Object font, int pixel_size,
+ char *name, int bytes);
extern int font_unparse_fcname (Lisp_Object font, int pixel_size,
char *name, int bytes);
extern void register_font_driver (struct font_driver *driver, FRAME_PTR f);
extern void free_font_driver_list (FRAME_PTR f);
extern Lisp_Object font_update_drivers (FRAME_PTR f, Lisp_Object list);
-extern Lisp_Object font_range (EMACS_INT, EMACS_INT *,
+extern Lisp_Object font_range (ptrdiff_t, ptrdiff_t *,
struct window *, struct face *,
Lisp_Object);
extern void font_fill_lglyph_metrics (Lisp_Object, Lisp_Object);
font_deferred_log ((ACTION), (ARG), (RESULT)); \
} while (0)
-#ifdef FONT_DEBUG
-#define font_assert(X) do {if (!(X)) abort ();} while (0)
-#else /* not FONT_DEBUG */
-#define font_assert(X) (void) 0
-#endif /* not FONT_DEBUG */
-
#endif /* not EMACS_FONT_H */