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...dev
							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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue