diff options
| author | Kenichi Handa | 2007-12-01 02:37:59 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2007-12-01 02:37:59 +0000 |
| commit | 4b4836deafd8fb1f8d190539c40a8829f8f2c091 (patch) | |
| tree | ee2ee6b8ca24b45734f2561c3dced75107a65ec8 /src | |
| parent | 102780a67ea3b4f9b3e0fe638e0195a439c1bdf6 (diff) | |
| download | emacs-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.h | 95 |
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 | |||
| 454 | extern int enable_font_backend; | 480 | extern int enable_font_backend; |
| 455 | 481 | ||
| 456 | EXFUN (Ffont_spec, MANY); | 482 | EXFUN (Ffont_spec, MANY); |
| 483 | EXFUN (Ffont_get, 2); | ||
| 457 | EXFUN (Flist_fonts, 4); | 484 | EXFUN (Flist_fonts, 4); |
| 458 | EXFUN (Fclear_font_cache, 0); | 485 | EXFUN (Fclear_font_cache, 0); |
| 459 | EXFUN (Ffont_xlfd_name, 1); | 486 | EXFUN (Ffont_xlfd_name, 1); |
| 460 | 487 | ||
| 488 | extern int font_registry_charsets P_ ((Lisp_Object, struct charset **, | ||
| 489 | struct charset **)); | ||
| 461 | extern Lisp_Object font_symbolic_weight P_ ((Lisp_Object font)); | 490 | extern Lisp_Object font_symbolic_weight P_ ((Lisp_Object font)); |
| 462 | extern Lisp_Object font_symbolic_slant P_ ((Lisp_Object font)); | 491 | extern Lisp_Object font_symbolic_slant P_ ((Lisp_Object font)); |
| 463 | extern Lisp_Object font_symbolic_width P_ ((Lisp_Object font)); | 492 | extern 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)); |
| 478 | extern Lisp_Object font_find_for_lface P_ ((FRAME_PTR f, Lisp_Object *lface, | 507 | extern Lisp_Object font_find_for_lface P_ ((FRAME_PTR f, Lisp_Object *lface, |
| 479 | Lisp_Object spec)); | 508 | Lisp_Object spec, int c)); |
| 480 | extern Lisp_Object font_open_for_lface P_ ((FRAME_PTR f, Lisp_Object entity, | 509 | extern 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)); | |||
| 504 | extern Lisp_Object font_at P_ ((int c, EMACS_INT pos, struct face *face, | 533 | extern 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 | ||
| 507 | extern struct font *font_prepare_composition P_ ((struct composition *cmp)); | 536 | extern struct font *font_prepare_composition P_ ((struct composition *cmp, |
| 537 | FRAME_PTR f)); | ||
| 508 | 538 | ||
| 509 | extern Lisp_Object font_put_extra P_ ((Lisp_Object font, Lisp_Object prop, | 539 | extern 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. */ | ||
| 514 | extern Lisp_Object font_otf_capability P_ ((struct font *font)); | ||
| 515 | /* This can be used as `otf_drive' method of a font-driver. */ | ||
| 516 | extern 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 | |||
| 522 | extern int font_put_frame_data P_ ((FRAME_PTR f, | 542 | extern 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)); |
| 525 | extern void *font_get_frame_data P_ ((FRAME_PTR f, | 545 | extern 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 |
| 530 | extern struct font_driver ftfont_driver; | 549 | extern struct font_driver ftfont_driver; |
| 531 | #endif /* HAVE_FREETYPE */ | 550 | #endif /* HAVE_FREETYPE */ |