Remove the cruft of the user to have to define the different font styles.
This commit is contained in:
parent
ed5b8700a6
commit
9cae1eb0de
1 changed files with 55 additions and 5 deletions
60
st.c
60
st.c
|
@ -336,6 +336,7 @@ static int isfullutf8(char *, int);
|
|||
static void *xmalloc(size_t);
|
||||
static void *xrealloc(void *, size_t);
|
||||
static void *xcalloc(size_t nmemb, size_t size);
|
||||
static char *smstrcat(char *, ...);
|
||||
|
||||
static void (*handler[LASTEvent])(XEvent *) = {
|
||||
[KeyPress] = kpress,
|
||||
|
@ -393,6 +394,44 @@ xcalloc(size_t nmemb, size_t size) {
|
|||
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
|
||||
utf8decode(char *s, long *u) {
|
||||
uchar c;
|
||||
|
@ -2017,11 +2056,22 @@ xinitfont(Font *f, char *fontstr) {
|
|||
}
|
||||
|
||||
void
|
||||
initfonts(char *fontstr, char *bfontstr, char *ifontstr, char *ibfontstr) {
|
||||
initfonts(char *fontstr) {
|
||||
char *fstr;
|
||||
|
||||
xinitfont(&dc.font, fontstr);
|
||||
xinitfont(&dc.bfont, bfontstr);
|
||||
xinitfont(&dc.ifont, ifontstr);
|
||||
xinitfont(&dc.ibfont, ibfontstr);
|
||||
|
||||
fstr = smstrcat(fontstr, ":weight=bold", NULL);
|
||||
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
|
||||
|
@ -2037,7 +2087,7 @@ xinit(void) {
|
|||
xw.vis = XDefaultVisual(xw.dpy, xw.scr);
|
||||
|
||||
/* font */
|
||||
initfonts(FONT, BOLDFONT, ITALICFONT, ITALICBOLDFONT);
|
||||
initfonts(FONT);
|
||||
|
||||
/* XXX: Assuming same size for bold font */
|
||||
xw.cw = dc.font.rbearing - dc.font.lbearing;
|
||||
|
|
Loading…
Reference in a new issue