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:
		
							parent
							
								
									33da67dac0
								
							
						
					
					
						commit
						e8dba89164
					
				
							
								
								
									
										24
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								st.c
									
									
									
									
									
								
							| @ -398,7 +398,7 @@ static void xinit(void); | ||||
| static void xloadcols(void); | ||||
| static int xsetcolorname(int, const char *); | ||||
| static int xloadfont(Font *, FcPattern *); | ||||
| static void xloadfonts(char *, int); | ||||
| static void xloadfonts(char *, double); | ||||
| static int xloadfontset(Font *); | ||||
| static void xsettitle(char *); | ||||
| static void xresettitle(void); | ||||
| @ -478,7 +478,7 @@ static char *opt_font = NULL; | ||||
| static int oldbutton = 3; /* button event on startup: 3 = release */ | ||||
| 
 | ||||
| static char *usedfont = NULL; | ||||
| static int usedfontsize = 0; | ||||
| static double usedfontsize = 0; | ||||
| 
 | ||||
| /* Font Ring Cache */ | ||||
| enum { | ||||
| @ -2826,9 +2826,9 @@ xloadfont(Font *f, FcPattern *pattern) { | ||||
| } | ||||
| 
 | ||||
| void | ||||
| xloadfonts(char *fontstr, int fontsize) { | ||||
| xloadfonts(char *fontstr, double fontsize) { | ||||
| 	FcPattern *pattern; | ||||
| 	FcResult result; | ||||
| 	FcResult r_sz, r_psz; | ||||
| 	double fontval; | ||||
| 
 | ||||
| 	if(fontstr[0] == '-') { | ||||
| @ -2842,12 +2842,16 @@ xloadfonts(char *fontstr, int fontsize) { | ||||
| 
 | ||||
| 	if(fontsize > 0) { | ||||
| 		FcPatternDel(pattern, FC_PIXEL_SIZE); | ||||
| 		FcPatternDel(pattern, FC_SIZE); | ||||
| 		FcPatternAddDouble(pattern, FC_PIXEL_SIZE, (double)fontsize); | ||||
| 		usedfontsize = fontsize; | ||||
| 	} else { | ||||
| 		result = FcPatternGetDouble(pattern, FC_PIXEL_SIZE, 0, &fontval); | ||||
| 		if(result == FcResultMatch) { | ||||
| 			usedfontsize = (int)fontval; | ||||
| 		r_psz = FcPatternGetDouble(pattern, FC_PIXEL_SIZE, 0, &fontval); | ||||
| 		r_sz = FcPatternGetDouble(pattern, FC_SIZE, 0, &fontval); | ||||
| 		if(r_psz == FcResultMatch) { | ||||
| 			usedfontsize = fontval; | ||||
| 		} else if(r_sz == FcResultMatch) { | ||||
| 			usedfontsize = -1; | ||||
| 		} else { | ||||
| 			/*
 | ||||
| 			 * 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)) | ||||
| 		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. */ | ||||
| 	xw.cw = CEIL(dc.font.width * cwscale); | ||||
| 	xw.ch = CEIL(dc.font.height * chscale); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Eon S. Jeon
						Eon S. Jeon