tquery pixel size from matched font - st - [fork] customized build of st, the s… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit e8dba89164fe70647a413b8568b545ff2d887a78 | |
parent 33da67dac035b0d592f984bce90aec8d815b38a8 | |
Author: Eon S. Jeon <[email protected]> | |
Date: Tue, 17 Dec 2013 15:14:19 -0500 | |
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... | |
Diffstat: | |
M st.c | 24 +++++++++++++++++------- | |
1 file changed, 17 insertions(+), 7 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -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); | |
t@@ -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 { | |
t@@ -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] == '-') { | |
t@@ -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, &fontva… | |
- 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 | |
t@@ -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); |