diff options
| author | Kenichi Handa | 2008-06-02 04:07:43 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2008-06-02 04:07:43 +0000 |
| commit | 1d1e1245352a2efc419d1ca82153676f37b273ec (patch) | |
| tree | d44fd810f75b5701a95188851e52006fa5556f43 /src | |
| parent | e16bffef0569bffc14617f87581d61fbd7d1fe85 (diff) | |
| download | emacs-1d1e1245352a2efc419d1ca82153676f37b273ec.tar.gz emacs-1d1e1245352a2efc419d1ca82153676f37b273ec.zip | |
(font_find_for_lface): Handle float font size.
(font_open_for_lface): Likewise.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 3 | ||||
| -rw-r--r-- | src/font.c | 23 |
2 files changed, 14 insertions, 12 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index dc54ddaddd9..2095834d527 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,8 @@ | |||
| 1 | 2008-06-02 Kenichi Handa <handa@m17n.org> | 1 | 2008-06-02 Kenichi Handa <handa@m17n.org> |
| 2 | 2 | ||
| 3 | * font.c (font_find_for_lface): Handle float font size. | ||
| 4 | (font_open_for_lface): Likewise. | ||
| 5 | |||
| 3 | * xfaces.c (x_supports_face_attributes_p): Check face->font before | 6 | * xfaces.c (x_supports_face_attributes_p): Check face->font before |
| 4 | comparing the properties. | 7 | comparing the properties. |
| 5 | 8 | ||
diff --git a/src/font.c b/src/font.c index 9e99b81614f..042cd573eff 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -2817,6 +2817,7 @@ font_find_for_lface (f, attrs, spec, c) | |||
| 2817 | { | 2817 | { |
| 2818 | Lisp_Object frame, entities, val, props[FONT_REGISTRY_INDEX + 1] ; | 2818 | Lisp_Object frame, entities, val, props[FONT_REGISTRY_INDEX + 1] ; |
| 2819 | Lisp_Object size; | 2819 | Lisp_Object size; |
| 2820 | int pixel_size; | ||
| 2820 | int i, result; | 2821 | int i, result; |
| 2821 | 2822 | ||
| 2822 | if (c >= 0) | 2823 | if (c >= 0) |
| @@ -2840,6 +2841,13 @@ font_find_for_lface (f, attrs, spec, c) | |||
| 2840 | 2841 | ||
| 2841 | XSETFRAME (frame, f); | 2842 | XSETFRAME (frame, f); |
| 2842 | size = AREF (spec, FONT_SIZE_INDEX); | 2843 | size = AREF (spec, FONT_SIZE_INDEX); |
| 2844 | pixel_size = font_pixel_size (f, spec); | ||
| 2845 | if (pixel_size == 0) | ||
| 2846 | { | ||
| 2847 | double pt = XINT (attrs[LFACE_HEIGHT_INDEX]); | ||
| 2848 | |||
| 2849 | pixel_size = POINT_TO_PIXEL (pt / 10, f->resy); | ||
| 2850 | } | ||
| 2843 | ASET (spec, FONT_SIZE_INDEX, Qnil); | 2851 | ASET (spec, FONT_SIZE_INDEX, Qnil); |
| 2844 | entities = font_list_entities (frame, spec); | 2852 | entities = font_list_entities (frame, spec); |
| 2845 | ASET (spec, FONT_SIZE_INDEX, size); | 2853 | ASET (spec, FONT_SIZE_INDEX, size); |
| @@ -2873,16 +2881,7 @@ font_find_for_lface (f, attrs, spec, c) | |||
| 2873 | FONT_SET_STYLE (prefer, FONT_SLANT_INDEX, attrs[LFACE_SLANT_INDEX]); | 2881 | FONT_SET_STYLE (prefer, FONT_SLANT_INDEX, attrs[LFACE_SLANT_INDEX]); |
| 2874 | if (NILP (AREF (prefer, FONT_WIDTH_INDEX))) | 2882 | if (NILP (AREF (prefer, FONT_WIDTH_INDEX))) |
| 2875 | FONT_SET_STYLE (prefer, FONT_WIDTH_INDEX, attrs[LFACE_SWIDTH_INDEX]); | 2883 | FONT_SET_STYLE (prefer, FONT_WIDTH_INDEX, attrs[LFACE_SWIDTH_INDEX]); |
| 2876 | if (INTEGERP (size)) | 2884 | ASET (prefer, FONT_SIZE_INDEX, make_number (pixel_size)); |
| 2877 | ASET (prefer, FONT_SIZE_INDEX, size); | ||
| 2878 | else if (FLOATP (size)) | ||
| 2879 | ASET (prefer, FONT_SIZE_INDEX, make_number (font_pixel_size (f, spec))); | ||
| 2880 | else | ||
| 2881 | { | ||
| 2882 | double pt = XINT (attrs[LFACE_HEIGHT_INDEX]); | ||
| 2883 | int pixel_size = POINT_TO_PIXEL (pt / 10, f->resy); | ||
| 2884 | ASET (prefer, FONT_SIZE_INDEX, make_number (pixel_size)); | ||
| 2885 | } | ||
| 2886 | ASET (spec, FONT_SIZE_INDEX, Qnil); | 2885 | ASET (spec, FONT_SIZE_INDEX, Qnil); |
| 2887 | entities = font_sort_entites (entities, prefer, frame, spec, c < 0); | 2886 | entities = font_sort_entites (entities, prefer, frame, spec, c < 0); |
| 2888 | ASET (spec, FONT_SIZE_INDEX, size); | 2887 | ASET (spec, FONT_SIZE_INDEX, size); |
| @@ -2931,8 +2930,8 @@ font_open_for_lface (f, entity, attrs, spec) | |||
| 2931 | { | 2930 | { |
| 2932 | int size; | 2931 | int size; |
| 2933 | 2932 | ||
| 2934 | if (FONT_SPEC_P (spec) && INTEGERP (AREF (spec, FONT_SIZE_INDEX))) | 2933 | if (FONT_SPEC_P (spec) && ! NILP (AREF (spec, FONT_SIZE_INDEX))) |
| 2935 | size = XINT (AREF (spec, FONT_SIZE_INDEX)); | 2934 | size = font_pixel_size (f, spec); |
| 2936 | else | 2935 | else |
| 2937 | { | 2936 | { |
| 2938 | double pt = XINT (attrs[LFACE_HEIGHT_INDEX]); | 2937 | double pt = XINT (attrs[LFACE_HEIGHT_INDEX]); |