| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -108,12 +108,8 @@ static Fnt * | 
															
														
														
													
														
															
																 | 
																 | 
																drw_font_xcreate(Drw *drw, const char *fontname, FcPattern *fontpattern) | 
																 | 
																 | 
																drw_font_xcreate(Drw *drw, const char *fontname, FcPattern *fontpattern) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																	Fnt *font; | 
																 | 
																 | 
																	Fnt *font; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	if (!(fontname || fontpattern)) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		die("No font specified.\n"); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	if (!(font = calloc(1, sizeof(Fnt)))) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		return NULL; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	XftFont *xfont = NULL; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	FcPattern *pattern = NULL; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	if (fontname) { | 
																 | 
																 | 
																	if (fontname) { | 
															
														
														
													
														
															
																 | 
																 | 
																		/* Using the pattern found at font->xfont->pattern does not yield same | 
																 | 
																 | 
																		/* Using the pattern found at font->xfont->pattern does not yield same | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -122,28 +118,29 @@ drw_font_xcreate(Drw *drw, const char *fontname, FcPattern *fontpattern) | 
															
														
														
													
														
															
																 | 
																 | 
																		 * behaviour whereas the former just results in | 
																 | 
																 | 
																		 * behaviour whereas the former just results in | 
															
														
														
													
														
															
																 | 
																 | 
																		 * missing-character-rectangles being drawn, at least with some fonts. | 
																 | 
																 | 
																		 * missing-character-rectangles being drawn, at least with some fonts. | 
															
														
														
													
														
															
																 | 
																 | 
																		 */ | 
																 | 
																 | 
																		 */ | 
															
														
														
													
														
															
																 | 
																 | 
																		if (!(font->xfont = XftFontOpenName(drw->dpy, drw->screen, fontname)) || | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		    !(font->pattern = FcNameParse((FcChar8 *) fontname))) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			if (font->xfont) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				XftFontClose(drw->dpy, font->xfont); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				font->xfont = NULL; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if (!(xfont = XftFontOpenName(drw->dpy, drw->screen, fontname))) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			fprintf(stderr, "error, cannot load font: '%s'\n", fontname); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			return NULL; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if (!(pattern = FcNameParse((FcChar8 *) fontname))) { | 
															
														
														
													
														
															
																 | 
																 | 
																			fprintf(stderr, "error, cannot load font: '%s'\n", fontname); | 
																 | 
																 | 
																			fprintf(stderr, "error, cannot load font: '%s'\n", fontname); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			XftFontClose(drw->dpy, xfont); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			return NULL; | 
															
														
														
													
														
															
																 | 
																 | 
																		} | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																	} else if (fontpattern) { | 
																 | 
																 | 
																	} else if (fontpattern) { | 
															
														
														
													
														
															
																 | 
																 | 
																		if (!(font->xfont = XftFontOpenPattern(drw->dpy, fontpattern))) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if (!(xfont = XftFontOpenPattern(drw->dpy, fontpattern))) { | 
															
														
														
													
														
															
																 | 
																 | 
																			fprintf(stderr, "error, cannot load font pattern.\n"); | 
																 | 
																 | 
																			fprintf(stderr, "error, cannot load font pattern.\n"); | 
															
														
														
													
														
															
																 | 
																 | 
																		else | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			font->pattern = NULL; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	if (!font->xfont) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		free(font); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		return NULL; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			return NULL; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} else { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		die("no font specified.\n"); | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	font->ascent = font->xfont->ascent; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	font->descent = font->xfont->descent; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	font = ecalloc(1, sizeof(Fnt)); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	font->xfont = xfont; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	font->pattern = pattern; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	font->ascent = xfont->ascent; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	font->descent = xfont->descent; | 
															
														
														
													
														
															
																 | 
																 | 
																	font->h = font->ascent + font->descent; | 
																 | 
																 | 
																	font->h = font->ascent + font->descent; | 
															
														
														
													
														
															
																 | 
																 | 
																	font->dpy = drw->dpy; | 
																 | 
																 | 
																	font->dpy = drw->dpy; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
  |