aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEon S. Jeon <esjeon@hyunmu.am>2013-12-17 15:14:19 -0500
committerRoberto E. Vargas Caballero <k0ga@shike2.com>2014-01-03 15:26:25 +0100
commite8dba89164fe70647a413b8568b545ff2d887a78 (patch)
tree540ca3dcac547f9a754ef6ebd7dd3c132c3131af
parent33da67dac035b0d592f984bce90aec8d815b38a8 (diff)
downloadst-patched-e8dba89164fe70647a413b8568b545ff2d887a78.tar.bz2
st-patched-e8dba89164fe70647a413b8568b545ff2d887a78.tar.xz
st-patched-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.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/st.c b/st.c
index 4fb3311..82bfd3d 100644
--- a/st.c
+++ b/st.c
@@ -398,7 +398,7 @@ static void xinit(void);
398static void xloadcols(void); 398static void xloadcols(void);
399static int xsetcolorname(int, const char *); 399static int xsetcolorname(int, const char *);
400static int xloadfont(Font *, FcPattern *); 400static int xloadfont(Font *, FcPattern *);
401static void xloadfonts(char *, int); 401static void xloadfonts(char *, double);
402static int xloadfontset(Font *); 402static int xloadfontset(Font *);
403static void xsettitle(char *); 403static void xsettitle(char *);
404static void xresettitle(void); 404static void xresettitle(void);
@@ -478,7 +478,7 @@ static char *opt_font = NULL;
478static int oldbutton = 3; /* button event on startup: 3 = release */ 478static int oldbutton = 3; /* button event on startup: 3 = release */
479 479
480static char *usedfont = NULL; 480static char *usedfont = NULL;
481static int usedfontsize = 0; 481static double usedfontsize = 0;
482 482
483/* Font Ring Cache */ 483/* Font Ring Cache */
484enum { 484enum {
@@ -2826,9 +2826,9 @@ xloadfont(Font *f, FcPattern *pattern) {
2826} 2826}
2827 2827
2828void 2828void
2829xloadfonts(char *fontstr, int fontsize) { 2829xloadfonts(char *fontstr, double fontsize) {
2830 FcPattern *pattern; 2830 FcPattern *pattern;
2831 FcResult result; 2831 FcResult r_sz, r_psz;
2832 double fontval; 2832 double fontval;
2833 2833
2834 if(fontstr[0] == '-') { 2834 if(fontstr[0] == '-') {
@@ -2842,12 +2842,16 @@ xloadfonts(char *fontstr, int fontsize) {
2842 2842
2843 if(fontsize > 0) { 2843 if(fontsize > 0) {
2844 FcPatternDel(pattern, FC_PIXEL_SIZE); 2844 FcPatternDel(pattern, FC_PIXEL_SIZE);
2845 FcPatternDel(pattern, FC_SIZE);
2845 FcPatternAddDouble(pattern, FC_PIXEL_SIZE, (double)fontsize); 2846 FcPatternAddDouble(pattern, FC_PIXEL_SIZE, (double)fontsize);
2846 usedfontsize = fontsize; 2847 usedfontsize = fontsize;
2847 } else { 2848 } else {
2848 result = FcPatternGetDouble(pattern, FC_PIXEL_SIZE, 0, &fontval); 2849 r_psz = FcPatternGetDouble(pattern, FC_PIXEL_SIZE, 0, &fontval);
2849 if(result == FcResultMatch) { 2850 r_sz = FcPatternGetDouble(pattern, FC_SIZE, 0, &fontval);
2850 usedfontsize = (int)fontval; 2851 if(r_psz == FcResultMatch) {
2852 usedfontsize = fontval;
2853 } else if(r_sz == FcResultMatch) {
2854 usedfontsize = -1;
2851 } else { 2855 } else {
2852 /* 2856 /*
2853 * Default font size is 12, if none given. This is to 2857 * Default font size is 12, if none given. This is to
@@ -2864,6 +2868,12 @@ xloadfonts(char *fontstr, int fontsize) {
2864 if(xloadfont(&dc.font, pattern)) 2868 if(xloadfont(&dc.font, pattern))
2865 die("st: can't open font %s\n", fontstr); 2869 die("st: can't open font %s\n", fontstr);
2866 2870
2871 if(usedfontsize < 0) {
2872 FcPatternGetDouble(dc.font.match->pattern,
2873 FC_PIXEL_SIZE, 0, &fontval);
2874 usedfontsize = fontval;
2875 }
2876
2867 /* Setting character width and height. */ 2877 /* Setting character width and height. */
2868 xw.cw = CEIL(dc.font.width * cwscale); 2878 xw.cw = CEIL(dc.font.width * cwscale);
2869 xw.ch = CEIL(dc.font.height * chscale); 2879 xw.ch = CEIL(dc.font.height * chscale);