Remove the cruft of the user to have to define the different font styles.
parent
ed5b8700a6
commit
9cae1eb0de
60
st.c
60
st.c
|
@ -336,6 +336,7 @@ static int isfullutf8(char *, int);
|
||||||
static void *xmalloc(size_t);
|
static void *xmalloc(size_t);
|
||||||
static void *xrealloc(void *, size_t);
|
static void *xrealloc(void *, size_t);
|
||||||
static void *xcalloc(size_t nmemb, size_t size);
|
static void *xcalloc(size_t nmemb, size_t size);
|
||||||
|
static char *smstrcat(char *, ...);
|
||||||
|
|
||||||
static void (*handler[LASTEvent])(XEvent *) = {
|
static void (*handler[LASTEvent])(XEvent *) = {
|
||||||
[KeyPress] = kpress,
|
[KeyPress] = kpress,
|
||||||
|
@ -393,6 +394,44 @@ xcalloc(size_t nmemb, size_t size) {
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
smstrcat(char *src, ...)
|
||||||
|
{
|
||||||
|
va_list fmtargs;
|
||||||
|
char *ret, *p, *v;
|
||||||
|
int len, slen, flen;
|
||||||
|
|
||||||
|
len = slen = strlen(src);
|
||||||
|
|
||||||
|
va_start(fmtargs, src);
|
||||||
|
for(;;) {
|
||||||
|
v = va_arg(fmtargs, char *);
|
||||||
|
if(v == NULL)
|
||||||
|
break;
|
||||||
|
len += strlen(v);
|
||||||
|
}
|
||||||
|
va_end(fmtargs);
|
||||||
|
|
||||||
|
p = ret = xmalloc(len+1);
|
||||||
|
memmove(p, src, slen);
|
||||||
|
p += slen;
|
||||||
|
|
||||||
|
va_start(fmtargs, src);
|
||||||
|
for(;;) {
|
||||||
|
v = va_arg(fmtargs, char *);
|
||||||
|
if(v == NULL)
|
||||||
|
break;
|
||||||
|
flen = strlen(v);
|
||||||
|
memmove(p, v, flen);
|
||||||
|
p += flen;
|
||||||
|
}
|
||||||
|
va_end(fmtargs);
|
||||||
|
|
||||||
|
ret[len] = '\0';
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
utf8decode(char *s, long *u) {
|
utf8decode(char *s, long *u) {
|
||||||
uchar c;
|
uchar c;
|
||||||
|
@ -2017,11 +2056,22 @@ xinitfont(Font *f, char *fontstr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
initfonts(char *fontstr, char *bfontstr, char *ifontstr, char *ibfontstr) {
|
initfonts(char *fontstr) {
|
||||||
|
char *fstr;
|
||||||
|
|
||||||
xinitfont(&dc.font, fontstr);
|
xinitfont(&dc.font, fontstr);
|
||||||
xinitfont(&dc.bfont, bfontstr);
|
|
||||||
xinitfont(&dc.ifont, ifontstr);
|
fstr = smstrcat(fontstr, ":weight=bold", NULL);
|
||||||
xinitfont(&dc.ibfont, ibfontstr);
|
xinitfont(&dc.bfont, fstr);
|
||||||
|
free(fstr);
|
||||||
|
|
||||||
|
fstr = smstrcat(fontstr, ":slant=italic,oblique", NULL);
|
||||||
|
xinitfont(&dc.ifont, fstr);
|
||||||
|
free(fstr);
|
||||||
|
|
||||||
|
fstr = smstrcat(fontstr, ":weight=bold:slant=italic,oblique", NULL);
|
||||||
|
xinitfont(&dc.ibfont, fstr);
|
||||||
|
free(fstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -2037,7 +2087,7 @@ xinit(void) {
|
||||||
xw.vis = XDefaultVisual(xw.dpy, xw.scr);
|
xw.vis = XDefaultVisual(xw.dpy, xw.scr);
|
||||||
|
|
||||||
/* font */
|
/* font */
|
||||||
initfonts(FONT, BOLDFONT, ITALICFONT, ITALICBOLDFONT);
|
initfonts(FONT);
|
||||||
|
|
||||||
/* XXX: Assuming same size for bold font */
|
/* XXX: Assuming same size for bold font */
|
||||||
xw.cw = dc.font.rbearing - dc.font.lbearing;
|
xw.cw = dc.font.rbearing - dc.font.lbearing;
|
||||||
|
|
Reference in New Issue