diff options
| -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);  | 
