aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2008-06-02 04:07:43 +0000
committerKenichi Handa2008-06-02 04:07:43 +0000
commit1d1e1245352a2efc419d1ca82153676f37b273ec (patch)
treed44fd810f75b5701a95188851e52006fa5556f43 /src
parente16bffef0569bffc14617f87581d61fbd7d1fe85 (diff)
downloademacs-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/ChangeLog3
-rw-r--r--src/font.c23
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 @@
12008-06-02 Kenichi Handa <handa@m17n.org> 12008-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]);