aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2007-12-01 02:37:59 +0000
committerKenichi Handa2007-12-01 02:37:59 +0000
commit4b4836deafd8fb1f8d190539c40a8829f8f2c091 (patch)
treeee2ee6b8ca24b45734f2561c3dced75107a65ec8 /src
parent102780a67ea3b4f9b3e0fe638e0195a439c1bdf6 (diff)
downloademacs-4b4836deafd8fb1f8d190539c40a8829f8f2c091.tar.gz
emacs-4b4836deafd8fb1f8d190539c40a8829f8f2c091.zip
(FONT_ENTITY_NOT_LOADABLE)
(FONT_ENTITY_SET_NOT_LOADABLE): New macros. (LGSTRING_XXXX, LGLYPH_XXX): Adjusted for the change of lispy gstring. (struct font_driver): New member shape. (font_registry_charsets): Extern. it. (font_find_for_lface): Prototype adjusted. (font_prepare_composition): Likewise. (font_otf_capability, font_drive_otf): Delete their externs.
Diffstat (limited to 'src')
-rw-r--r--src/font.h95
1 files changed, 57 insertions, 38 deletions
diff --git a/src/font.h b/src/font.h
index 9d4bc9b6a1c..28845fab2ec 100644
--- a/src/font.h
+++ b/src/font.h
@@ -121,7 +121,8 @@ enum font_property_index
121 can be opend on any frame. */ 121 can be opend on any frame. */
122 FONT_FRAME_INDEX = FONT_SPEC_MAX, 122 FONT_FRAME_INDEX = FONT_SPEC_MAX,
123 123
124 /* List of font-objects opened from the font-entity. */ 124 /* List of font-objects opened from the font-entity. The value is
125 nil if no font can be opened for this font-entity. */
125 FONT_OBJLIST_INDEX, 126 FONT_OBJLIST_INDEX,
126 127
127 /* This value is the length of font-entity vector. */ 128 /* This value is the length of font-entity vector. */
@@ -219,6 +220,12 @@ struct font_bitmap
219#define FONT_OBJECT_P(x) \ 220#define FONT_OBJECT_P(x) \
220 (XTYPE (x) == Lisp_Misc && XMISCTYPE (x) == Lisp_Misc_Save_Value) 221 (XTYPE (x) == Lisp_Misc && XMISCTYPE (x) == Lisp_Misc_Save_Value)
221 222
223#define FONT_ENTITY_NOT_LOADABLE(entity) \
224 EQ (AREF (entity, FONT_OBJLIST_INDEX), Qt)
225
226#define FONT_ENTITY_SET_NOT_LOADABLE(entity) \
227 ASET (entity, FONT_OBJLIST_INDEX, Qt)
228
222 229
223/* Check macros for various font-related objects. */ 230/* Check macros for various font-related objects. */
224 231
@@ -247,33 +254,48 @@ struct composition;
247 254
248/* Macros for lispy glyph-string. */ 255/* Macros for lispy glyph-string. */
249#define LGSTRING_FONT(lgs) AREF (AREF ((lgs), 0), 0) 256#define LGSTRING_FONT(lgs) AREF (AREF ((lgs), 0), 0)
250#define LGSTRING_LBEARING(lgs) AREF (AREF ((lgs), 0), 1) 257#define LGSTRING_WIDTH(lgs) XINT (AREF (AREF ((lgs), 0), 1))
251#define LGSTRING_RBEARING(lgs) AREF (AREF ((lgs), 0), 2) 258#define LGSTRING_LBEARING(lgs) XINT (AREF (AREF ((lgs), 0), 2))
252#define LGSTRING_WIDTH(lgs) AREF (AREF ((lgs), 0), 3) 259#define LGSTRING_RBEARING(lgs) XINT (AREF (AREF ((lgs), 0), 3))
253#define LGSTRING_ASCENT(lgs) AREF (AREF ((lgs), 0), 4) 260#define LGSTRING_ASCENT(lgs) XINT (AREF (AREF ((lgs), 0), 4))
254#define LGSTRING_DESCENT(lgs) AREF (AREF ((lgs), 0), 5) 261#define LGSTRING_DESCENT(lgs) XINT (AREF (AREF ((lgs), 0), 5))
255#define LGSTRING_SET_FONT(lgs, val) ASET (AREF ((lgs), 0), 0, (val)) 262#define LGSTRING_SET_FONT(lgs, val) \
256#define LGSTRING_SET_LBEARING(lgs, val) ASET (AREF ((lgs), 0), 1, (val)) 263 ASET (AREF ((lgs), 0), 0, (val))
257#define LGSTRING_SET_RBEARING(lgs, val) ASET (AREF ((lgs), 0), 2, (val)) 264#define LGSTRING_SET_WIDTH(lgs, val) \
258#define LGSTRING_SET_WIDTH(lgs, val) ASET (AREF ((lgs), 0), 3, (val)) 265 ASET (AREF ((lgs), 0), 1, make_number (val))
259#define LGSTRING_SET_ASCENT(lgs, val) ASET (AREF ((lgs), 0), 4, (val)) 266#define LGSTRING_SET_LBEARING(lgs, val) \
260#define LGSTRING_SET_DESCENT(lgs, val) ASET (AREF ((lgs), 0), 5, (val)) 267 ASET (AREF ((lgs), 0), 2, make_number (val))
268#define LGSTRING_SET_RBEARING(lgs, val) \
269 ASET (AREF ((lgs), 0), 3, make_number (val))
270#define LGSTRING_SET_ASCENT(lgs, val) \
271 ASET (AREF ((lgs), 0), 4, make_number (val))
272#define LGSTRING_SET_DESCENT(lgs, val) \
273 ASET (AREF ((lgs), 0), 5, make_number (val))
261 274
262#define LGSTRING_LENGTH(lgs) (ASIZE ((lgs)) - 1) 275#define LGSTRING_LENGTH(lgs) (ASIZE ((lgs)) - 1)
263#define LGSTRING_GLYPH(lgs, idx) AREF ((lgs), (idx) + 1) 276#define LGSTRING_GLYPH(lgs, idx) AREF ((lgs), (idx) + 1)
264 277#define LGSTRING_SET_GLYPH(lgs, idx, val) ASET ((lgs), (idx) + 1, (val))
265#define LGLYPH_FROM(g) AREF ((g), 0) 278
266#define LGLYPH_TO(g) AREF ((g), 1) 279#define LGLYPH_FROM(g) XINT (AREF ((g), 0))
267#define LGLYPH_CHAR(g) AREF ((g), 2) 280#define LGLYPH_TO(g) XINT (AREF ((g), 1))
268#define LGLYPH_CODE(g) AREF ((g), 3) 281#define LGLYPH_CHAR(g) XINT (AREF ((g), 2))
269#define LGLYPH_WIDTH(g) AREF ((g), 4) 282#define LGLYPH_CODE(g) XINT (AREF ((g), 3))
270#define LGLYPH_ADJUSTMENT(g) AREF ((g), 5) 283#define LGLYPH_WIDTH(g) XINT (AREF ((g), 4))
271#define LGLYPH_SET_FROM(g, val) ASET ((g), 0, (val)) 284#define LGLYPH_LBEARING(g) XINT (AREF ((g), 5))
272#define LGLYPH_SET_TO(g, val) ASET ((g), 1, (val)) 285#define LGLYPH_RBEARING(g) XINT (AREF ((g), 6))
273#define LGLYPH_SET_CHAR(g, val) ASET ((g), 2, (val)) 286#define LGLYPH_ASCENT(g) XINT (AREF ((g), 7))
274#define LGLYPH_SET_CODE(g, val) ASET ((g), 3, (val)) 287#define LGLYPH_DESCENT(g) XINT (AREF ((g), 8))
275#define LGLYPH_SET_WIDTH(g, val) ASET ((g), 4, (val)) 288#define LGLYPH_ADJUSTMENT(g) AREF ((g), 9)
276#define LGLYPH_SET_ADJUSTMENT(g, val) ASET ((g), 5, (val)) 289#define LGLYPH_SET_FROM(g, val) ASET ((g), 0, make_number (val))
290#define LGLYPH_SET_TO(g, val) ASET ((g), 1, make_number (val))
291#define LGLYPH_SET_CHAR(g, val) ASET ((g), 2, make_number (val))
292#define LGLYPH_SET_CODE(g, val) ASET ((g), 3, make_number (val))
293#define LGLYPH_SET_WIDTH(g, val) ASET ((g), 4, make_number (val))
294#define LGLYPH_SET_LBEARING(g, val) ASET ((g), 5, make_number (val))
295#define LGLYPH_SET_RBEARING(g, val) ASET ((g), 6, make_number (val))
296#define LGLYPH_SET_ASCENT(g, val) ASET ((g), 7, make_number (val))
297#define LGLYPH_SET_DESCENT(g, val) ASET ((g), 8, make_number (val))
298#define LGLYPH_SET_ADJUSTMENT(g, val) ASET ((g), 9, (val))
277 299
278#define LGLYPH_XOFF(g) (VECTORP (LGLYPH_ADJUSTMENT (g)) \ 300#define LGLYPH_XOFF(g) (VECTORP (LGLYPH_ADJUSTMENT (g)) \
279 ? XINT (AREF (LGLYPH_ADJUSTMENT (g), 0)) : 0) 301 ? XINT (AREF (LGLYPH_ADJUSTMENT (g), 0)) : 0)
@@ -419,6 +441,10 @@ struct font_driver
419 End using the driver for frame F. Usually this function free 441 End using the driver for frame F. Usually this function free
420 some data stored for F. */ 442 some data stored for F. */
421 int (*end_for_frame) P_ ((FRAME_PTR f)); 443 int (*end_for_frame) P_ ((FRAME_PTR f));
444
445 /* Optional.
446 Shape text in LGSTRING. */
447 Lisp_Object (*shape) P_ ((Lisp_Object lgstring));
422}; 448};
423 449
424 450
@@ -454,10 +480,13 @@ struct font_data_list
454extern int enable_font_backend; 480extern int enable_font_backend;
455 481
456EXFUN (Ffont_spec, MANY); 482EXFUN (Ffont_spec, MANY);
483EXFUN (Ffont_get, 2);
457EXFUN (Flist_fonts, 4); 484EXFUN (Flist_fonts, 4);
458EXFUN (Fclear_font_cache, 0); 485EXFUN (Fclear_font_cache, 0);
459EXFUN (Ffont_xlfd_name, 1); 486EXFUN (Ffont_xlfd_name, 1);
460 487
488extern int font_registry_charsets P_ ((Lisp_Object, struct charset **,
489 struct charset **));
461extern Lisp_Object font_symbolic_weight P_ ((Lisp_Object font)); 490extern Lisp_Object font_symbolic_weight P_ ((Lisp_Object font));
462extern Lisp_Object font_symbolic_slant P_ ((Lisp_Object font)); 491extern Lisp_Object font_symbolic_slant P_ ((Lisp_Object font));
463extern Lisp_Object font_symbolic_width P_ ((Lisp_Object font)); 492extern Lisp_Object font_symbolic_width P_ ((Lisp_Object font));
@@ -476,7 +505,7 @@ extern int font_set_lface_from_name P_ ((FRAME_PTR f,
476 Lisp_Object fontname, 505 Lisp_Object fontname,
477 int force_p, int may_fail_p)); 506 int force_p, int may_fail_p));
478extern Lisp_Object font_find_for_lface P_ ((FRAME_PTR f, Lisp_Object *lface, 507extern Lisp_Object font_find_for_lface P_ ((FRAME_PTR f, Lisp_Object *lface,
479 Lisp_Object spec)); 508 Lisp_Object spec, int c));
480extern Lisp_Object font_open_for_lface P_ ((FRAME_PTR f, Lisp_Object entity, 509extern Lisp_Object font_open_for_lface P_ ((FRAME_PTR f, Lisp_Object entity,
481 Lisp_Object *lface, 510 Lisp_Object *lface,
482 Lisp_Object spec)); 511 Lisp_Object spec));
@@ -504,28 +533,18 @@ extern Lisp_Object font_update_drivers P_ ((FRAME_PTR f, Lisp_Object list));
504extern Lisp_Object font_at P_ ((int c, EMACS_INT pos, struct face *face, 533extern Lisp_Object font_at P_ ((int c, EMACS_INT pos, struct face *face,
505 struct window *w, Lisp_Object object)); 534 struct window *w, Lisp_Object object));
506 535
507extern struct font *font_prepare_composition P_ ((struct composition *cmp)); 536extern struct font *font_prepare_composition P_ ((struct composition *cmp,
537 FRAME_PTR f));
508 538
509extern Lisp_Object font_put_extra P_ ((Lisp_Object font, Lisp_Object prop, 539extern Lisp_Object font_put_extra P_ ((Lisp_Object font, Lisp_Object prop,
510 Lisp_Object val)); 540 Lisp_Object val));
511 541
512#ifdef HAVE_LIBOTF
513/* This can be used as `otf_capability' method of a font-driver. */
514extern Lisp_Object font_otf_capability P_ ((struct font *font));
515/* This can be used as `otf_drive' method of a font-driver. */
516extern int font_drive_otf P_ ((struct font *font, Lisp_Object otf_features,
517 Lisp_Object gstring_in, int from, int to,
518 Lisp_Object gstring_out, int idx,
519 int alternate_subst));
520#endif /* HAVE_LIBOTF */
521
522extern int font_put_frame_data P_ ((FRAME_PTR f, 542extern int font_put_frame_data P_ ((FRAME_PTR f,
523 struct font_driver *driver, 543 struct font_driver *driver,
524 void *data)); 544 void *data));
525extern void *font_get_frame_data P_ ((FRAME_PTR f, 545extern void *font_get_frame_data P_ ((FRAME_PTR f,
526 struct font_driver *driver)); 546 struct font_driver *driver));
527 547
528
529#ifdef HAVE_FREETYPE 548#ifdef HAVE_FREETYPE
530extern struct font_driver ftfont_driver; 549extern struct font_driver ftfont_driver;
531#endif /* HAVE_FREETYPE */ 550#endif /* HAVE_FREETYPE */