diff options
| author | Jan Djärv | 2009-11-23 08:55:08 +0000 |
|---|---|---|
| committer | Jan Djärv | 2009-11-23 08:55:08 +0000 |
| commit | 581e51e8918b3ba9b58e67768a1de39ce5f1cbd3 (patch) | |
| tree | b210e82974c9e4ab1d3cc1c0a9e86348a425526b /src/font.c | |
| parent | 0f202d5d8fa1f0dea9c1e5e52e6ad66e4848aa75 (diff) | |
| download | emacs-581e51e8918b3ba9b58e67768a1de39ce5f1cbd3.tar.gz emacs-581e51e8918b3ba9b58e67768a1de39ce5f1cbd3.zip | |
Set Xft defaults if no XSETTING is found, better default for Gtk+ font dialog.
* xfns.c (Fx_select_font): Try to convert Fontconfig name to Gtk name
because that is what Gtk+ font dialog understands.
* font.c (font_make_object, Fcopy_font_spec): Use Fcopy_alist instead
of Fcopy_sequence.
(font_open_by_name): Put name given into QCname for font-object returned.
* frame.c (x_set_font): Save original font name as frame parameter
font-parameter.
* xsettings.c (set_default_xft_settings): New function.
(init_xfd_settings): Call set_default_xft_settings if no XSETTINGS window
is found.
Diffstat (limited to 'src/font.c')
| -rw-r--r-- | src/font.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/font.c b/src/font.c index aa07c7805d1..5aa14ca4211 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -218,7 +218,7 @@ font_make_object (size, entity, pixelsize) | |||
| 218 | font->props[i] = AREF (entity, i); | 218 | font->props[i] = AREF (entity, i); |
| 219 | if (! NILP (AREF (entity, FONT_EXTRA_INDEX))) | 219 | if (! NILP (AREF (entity, FONT_EXTRA_INDEX))) |
| 220 | font->props[FONT_EXTRA_INDEX] | 220 | font->props[FONT_EXTRA_INDEX] |
| 221 | = Fcopy_sequence (AREF (entity, FONT_EXTRA_INDEX)); | 221 | = Fcopy_alist (AREF (entity, FONT_EXTRA_INDEX)); |
| 222 | } | 222 | } |
| 223 | if (size > 0) | 223 | if (size > 0) |
| 224 | font->props[FONT_SIZE_INDEX] = make_number (pixelsize); | 224 | font->props[FONT_SIZE_INDEX] = make_number (pixelsize); |
| @@ -721,10 +721,12 @@ font_put_extra (font, prop, val) | |||
| 721 | while (CONSP (extra) | 721 | while (CONSP (extra) |
| 722 | && NILP (Fstring_lessp (prop, XCAR (XCAR (extra))))) | 722 | && NILP (Fstring_lessp (prop, XCAR (XCAR (extra))))) |
| 723 | prev = extra, extra = XCDR (extra); | 723 | prev = extra, extra = XCDR (extra); |
| 724 | if (NILP (prev)) | 724 | |
| 725 | ASET (font, FONT_EXTRA_INDEX, Fcons (Fcons (prop, val), extra)); | 725 | if (NILP (prev)) |
| 726 | else | 726 | ASET (font, FONT_EXTRA_INDEX, Fcons (Fcons (prop, val), extra)); |
| 727 | XSETCDR (prev, Fcons (Fcons (prop, val), extra)); | 727 | else |
| 728 | XSETCDR (prev, Fcons (Fcons (prop, val), extra)); | ||
| 729 | |||
| 728 | return val; | 730 | return val; |
| 729 | } | 731 | } |
| 730 | XSETCDR (slot, val); | 732 | XSETCDR (slot, val); |
| @@ -3600,12 +3602,16 @@ font_open_by_name (f, name) | |||
| 3600 | char *name; | 3602 | char *name; |
| 3601 | { | 3603 | { |
| 3602 | Lisp_Object args[2]; | 3604 | Lisp_Object args[2]; |
| 3603 | Lisp_Object spec; | 3605 | Lisp_Object spec, ret; |
| 3604 | 3606 | ||
| 3605 | args[0] = QCname; | 3607 | args[0] = QCname; |
| 3606 | args[1] = make_unibyte_string (name, strlen (name)); | 3608 | args[1] = make_unibyte_string (name, strlen (name)); |
| 3607 | spec = Ffont_spec (2, args); | 3609 | spec = Ffont_spec (2, args); |
| 3608 | return font_open_by_spec (f, spec); | 3610 | ret = font_open_by_spec (f, spec); |
| 3611 | /* Do not loose name originally put in. */ | ||
| 3612 | font_put_extra (ret, QCname, args[1]); | ||
| 3613 | |||
| 3614 | return ret; | ||
| 3609 | } | 3615 | } |
| 3610 | 3616 | ||
| 3611 | 3617 | ||
| @@ -4137,7 +4143,7 @@ DEFUN ("copy-font-spec", Fcopy_font_spec, Scopy_font_spec, 1, 1, 0, | |||
| 4137 | new_spec = font_make_spec (); | 4143 | new_spec = font_make_spec (); |
| 4138 | for (i = 1; i < FONT_EXTRA_INDEX; i++) | 4144 | for (i = 1; i < FONT_EXTRA_INDEX; i++) |
| 4139 | ASET (new_spec, i, AREF (font, i)); | 4145 | ASET (new_spec, i, AREF (font, i)); |
| 4140 | extra = Fcopy_sequence (AREF (font, FONT_EXTRA_INDEX)); | 4146 | extra = Fcopy_alist (AREF (font, FONT_EXTRA_INDEX)); |
| 4141 | /* We must remove :font-entity property. */ | 4147 | /* We must remove :font-entity property. */ |
| 4142 | for (prev = Qnil, tail = extra; CONSP (tail); prev = tail, tail = XCDR (tail)) | 4148 | for (prev = Qnil, tail = extra; CONSP (tail); prev = tail, tail = XCDR (tail)) |
| 4143 | if (EQ (XCAR (XCAR (tail)), QCfont_entity)) | 4149 | if (EQ (XCAR (XCAR (tail)), QCfont_entity)) |