all repos — st @ e8dba89164fe70647a413b8568b545ff2d887a78

st (suckless terminal) config

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...
Eon S. Jeon esjeon@hyunmu.am
commit

e8dba89164fe70647a413b8568b545ff2d887a78

parent

33da67dac035b0d592f984bce90aec8d815b38a8

1 files changed, 17 insertions(+), 7 deletions(-)

jump to
M st.cst.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 @@ return 0;

} 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 @@ die("st: can't open font %s\n", fontstr);

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

@@ -2863,6 +2867,12 @@ FcDefaultSubstitute(pattern);

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