query pixel size from matched font
Sorry for another duplicated mail. I found the patch is malformed significantly. I've been away from my laptop for a while, so I'm quite unfamiliar with the settings on this system...
This commit is contained in:
		
				
					committed by
					
						 Roberto E. Vargas Caballero
						Roberto E. Vargas Caballero
					
				
			
			
				
	
			
			
			
						parent
						
							33da67dac0
						
					
				
				
					commit
					e8dba89164
				
			
							
								
								
									
										24
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								st.c
									
									
									
									
									
								
							| @@ -398,7 +398,7 @@ static void xinit(void); | |||||||
| static void xloadcols(void); | static void xloadcols(void); | ||||||
| static int xsetcolorname(int, const char *); | static int xsetcolorname(int, const char *); | ||||||
| static int xloadfont(Font *, FcPattern *); | static int xloadfont(Font *, FcPattern *); | ||||||
| static void xloadfonts(char *, int); | static void xloadfonts(char *, double); | ||||||
| static int xloadfontset(Font *); | static int xloadfontset(Font *); | ||||||
| static void xsettitle(char *); | static void xsettitle(char *); | ||||||
| static void xresettitle(void); | static void xresettitle(void); | ||||||
| @@ -478,7 +478,7 @@ static char *opt_font = NULL; | |||||||
| static int oldbutton = 3; /* button event on startup: 3 = release */ | static int oldbutton = 3; /* button event on startup: 3 = release */ | ||||||
|  |  | ||||||
| static char *usedfont = NULL; | static char *usedfont = NULL; | ||||||
| static int usedfontsize = 0; | static double usedfontsize = 0; | ||||||
|  |  | ||||||
| /* Font Ring Cache */ | /* Font Ring Cache */ | ||||||
| enum { | enum { | ||||||
| @@ -2826,9 +2826,9 @@ xloadfont(Font *f, FcPattern *pattern) { | |||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
| xloadfonts(char *fontstr, int fontsize) { | xloadfonts(char *fontstr, double fontsize) { | ||||||
| 	FcPattern *pattern; | 	FcPattern *pattern; | ||||||
| 	FcResult result; | 	FcResult r_sz, r_psz; | ||||||
| 	double fontval; | 	double fontval; | ||||||
|  |  | ||||||
| 	if(fontstr[0] == '-') { | 	if(fontstr[0] == '-') { | ||||||
| @@ -2842,12 +2842,16 @@ xloadfonts(char *fontstr, int fontsize) { | |||||||
|  |  | ||||||
| 	if(fontsize > 0) { | 	if(fontsize > 0) { | ||||||
| 		FcPatternDel(pattern, FC_PIXEL_SIZE); | 		FcPatternDel(pattern, FC_PIXEL_SIZE); | ||||||
|  | 		FcPatternDel(pattern, FC_SIZE); | ||||||
| 		FcPatternAddDouble(pattern, FC_PIXEL_SIZE, (double)fontsize); | 		FcPatternAddDouble(pattern, FC_PIXEL_SIZE, (double)fontsize); | ||||||
| 		usedfontsize = fontsize; | 		usedfontsize = fontsize; | ||||||
| 	} else { | 	} else { | ||||||
| 		result = FcPatternGetDouble(pattern, FC_PIXEL_SIZE, 0, &fontval); | 		r_psz = FcPatternGetDouble(pattern, FC_PIXEL_SIZE, 0, &fontval); | ||||||
| 		if(result == FcResultMatch) { | 		r_sz = FcPatternGetDouble(pattern, FC_SIZE, 0, &fontval); | ||||||
| 			usedfontsize = (int)fontval; | 		if(r_psz == FcResultMatch) { | ||||||
|  | 			usedfontsize = fontval; | ||||||
|  | 		} else if(r_sz == FcResultMatch) { | ||||||
|  | 			usedfontsize = -1; | ||||||
| 		} else { | 		} else { | ||||||
| 			/* | 			/* | ||||||
| 			 * Default font size is 12, if none given. This is to | 			 * Default font size is 12, if none given. This is to | ||||||
| @@ -2864,6 +2868,12 @@ xloadfonts(char *fontstr, int fontsize) { | |||||||
| 	if(xloadfont(&dc.font, pattern)) | 	if(xloadfont(&dc.font, pattern)) | ||||||
| 		die("st: can't open font %s\n", fontstr); | 		die("st: can't open font %s\n", fontstr); | ||||||
|  |  | ||||||
|  | 	if(usedfontsize < 0) { | ||||||
|  | 		FcPatternGetDouble(dc.font.match->pattern, | ||||||
|  | 		                   FC_PIXEL_SIZE, 0, &fontval); | ||||||
|  | 		usedfontsize = fontval; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/* Setting character width and height. */ | 	/* Setting character width and height. */ | ||||||
| 	xw.cw = CEIL(dc.font.width * cwscale); | 	xw.cw = CEIL(dc.font.width * cwscale); | ||||||
| 	xw.ch = CEIL(dc.font.height * chscale); | 	xw.ch = CEIL(dc.font.height * chscale); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user