diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/xftfont.c | 33 |
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 | ||