aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2008-05-19 06:18:51 +0000
committerKenichi Handa2008-05-19 06:18:51 +0000
commit686ee703662283c9f84e9a72b8d8fb8a86d6c48c (patch)
treea8280d49b53b660bd3dad541120665083590a4d4 /src
parentfad5a93af9fb6c297242cf1f8c66f219a39ad910 (diff)
downloademacs-686ee703662283c9f84e9a72b8d8fb8a86d6c48c.tar.gz
emacs-686ee703662283c9f84e9a72b8d8fb8a86d6c48c.zip
(xftfont_open): Ajusted for the change of extra info
set by ftfont_list.
Diffstat (limited to 'src')
-rw-r--r--src/xftfont.c33
1 files changed, 12 insertions, 21 deletions
diff --git a/src/xftfont.c b/src/xftfont.c
index 5a90b7d2629..4b0a15deba9 100644
--- a/src/xftfont.c
+++ b/src/xftfont.c
@@ -156,7 +156,6 @@ xftfont_list (frame, spec)
156 Lisp_Object spec; 156 Lisp_Object spec;
157{ 157{
158 Lisp_Object list = ftfont_driver.list (frame, spec), tail; 158 Lisp_Object list = ftfont_driver.list (frame, spec), tail;
159 int i;
160 159
161 for (tail = list; CONSP (tail); tail = XCDR (tail)) 160 for (tail = list; CONSP (tail); tail = XCDR (tail))
162 ASET (XCAR (tail), FONT_TYPE_INDEX, Qxft); 161 ASET (XCAR (tail), FONT_TYPE_INDEX, Qxft);
@@ -185,13 +184,10 @@ xftfont_open (f, entity, pixel_size)
185 Lisp_Object entity; 184 Lisp_Object entity;
186 int pixel_size; 185 int pixel_size;
187{ 186{
188 Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
189 Display *display = FRAME_X_DISPLAY (f); 187 Display *display = FRAME_X_DISPLAY (f);
190 Lisp_Object val, font_object; 188 Lisp_Object val, filename, cache, font_object;
191 FcPattern *pattern, *pat = NULL; 189 FcPattern *pat = NULL;
192 FcChar8 *file;
193 struct xftfont_info *xftfont_info = NULL; 190 struct xftfont_info *xftfont_info = NULL;
194 XFontStruct *xfont = NULL;
195 struct font *font; 191 struct font *font;
196 double size = 0; 192 double size = 0;
197 XftFont *xftfont = NULL; 193 XftFont *xftfont = NULL;
@@ -202,20 +198,15 @@ xftfont_open (f, entity, pixel_size)
202 FT_Face ft_face; 198 FT_Face ft_face;
203 199
204 val = assq_no_quit (QCfont_entity, AREF (entity, FONT_EXTRA_INDEX)); 200 val = assq_no_quit (QCfont_entity, AREF (entity, FONT_EXTRA_INDEX));
205 if (! CONSP (val) 201 if (! CONSP (val))
206 || XTYPE (XCDR (val)) != Lisp_Misc
207 || XMISCTYPE (XCDR (val)) != Lisp_Misc_Save_Value)
208 return Qnil;
209 pattern = XSAVE_VALUE (XCDR (val))->pointer;
210 if (FcPatternGetString (pattern, FC_FILE, 0, &file) != FcResultMatch)
211 return Qnil; 202 return Qnil;
212 203 val = XCDR (val);
204 filename = XCAR (val);
213 size = XINT (AREF (entity, FONT_SIZE_INDEX)); 205 size = XINT (AREF (entity, FONT_SIZE_INDEX));
214 if (size == 0) 206 if (size == 0)
215 size = pixel_size; 207 size = pixel_size;
216
217 pat = FcPatternCreate (); 208 pat = FcPatternCreate ();
218 FcPatternAddString (pat, FC_FILE, file); 209 FcPatternAddString (pat, FC_FILE, (FcChar8 *) SDATA (filename));
219 FcPatternAddDouble (pat, FC_PIXEL_SIZE, pixel_size); 210 FcPatternAddDouble (pat, FC_PIXEL_SIZE, pixel_size);
220 /*FcPatternAddBool (pat, FC_ANTIALIAS, FcTrue);*/ 211 /*FcPatternAddBool (pat, FC_ANTIALIAS, FcTrue);*/
221 val = AREF (entity, FONT_FAMILY_INDEX); 212 val = AREF (entity, FONT_FAMILY_INDEX);
@@ -245,9 +236,9 @@ xftfont_open (f, entity, pixel_size)
245 else 236 else
246 ASET (font_object, FONT_FULLNAME_INDEX, 237 ASET (font_object, FONT_FULLNAME_INDEX,
247 AREF (font_object, FONT_NAME_INDEX)); 238 AREF (font_object, FONT_NAME_INDEX));
248 ASET (font_object, FONT_FILE_INDEX, 239 ASET (font_object, FONT_FILE_INDEX, filename);
249 make_unibyte_string ((char *) file, strlen ((char *) file))); 240 ASET (font_object, FONT_FORMAT_INDEX,
250 ASET (font_object, FONT_FORMAT_INDEX, ftfont_font_format (pattern)); 241 ftfont_font_format (xftfont->pattern));
251 font = XFONT_OBJECT (font_object); 242 font = XFONT_OBJECT (font_object);
252 font->pixel_size = pixel_size; 243 font->pixel_size = pixel_size;
253 font->driver = &xftfont_driver; 244 font->driver = &xftfont_driver;
@@ -259,8 +250,9 @@ xftfont_open (f, entity, pixel_size)
259 xftfont_info->xftfont = xftfont; 250 xftfont_info->xftfont = xftfont;
260 font->pixel_size = size; 251 font->pixel_size = size;
261 font->driver = &xftfont_driver; 252 font->driver = &xftfont_driver;
262 if (FcPatternGetInteger (xftfont->pattern, FC_SPACING, 0, &spacing) 253 if (INTEGERP (AREF (entity, FONT_SPACING_INDEX)))
263 != FcResultMatch) 254 spacing = XINT (AREF (entity, FONT_SPACING_INDEX));
255 else
264 spacing = FC_PROPORTIONAL; 256 spacing = FC_PROPORTIONAL;
265 if (! ascii_printable[0]) 257 if (! ascii_printable[0])
266 { 258 {
@@ -459,7 +451,6 @@ xftfont_draw (s, from, to, x, y, with_background)
459 XftDraw *xft_draw = xftfont_get_xft_draw (f); 451 XftDraw *xft_draw = xftfont_get_xft_draw (f);
460 FT_UInt *code; 452 FT_UInt *code;
461 XftColor fg, bg; 453 XftColor fg, bg;
462 XRectangle r;
463 int len = to - from; 454 int len = to - from;
464 int i; 455 int i;
465 456