diff options
| author | Eon S. Jeon <esjeon@hyunmu.am> | 2013-12-17 15:14:19 -0500 | 
|---|---|---|
| committer | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2014-01-03 15:26:25 +0100 | 
| commit | e8dba89164fe70647a413b8568b545ff2d887a78 (patch) | |
| tree | 540ca3dcac547f9a754ef6ebd7dd3c132c3131af | |
| parent | 33da67dac035b0d592f984bce90aec8d815b38a8 (diff) | |
| download | st-e8dba89164fe70647a413b8568b545ff2d887a78.tar.xz st-e8dba89164fe70647a413b8568b545ff2d887a78.zip  | |
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...
| -rw-r--r-- | st.c | 24 | 
1 files changed, 17 insertions, 7 deletions
@@ -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);  | 
