Introduction
Introduction Statistics Contact Development Disclaimer Help
tRemove the cruft of the user to have to define the different font styles. - st…
git clone git://src.adamsgaard.dk/st
Log
Files
Refs
README
LICENSE
---
commit 9cae1eb0ded2e1ca604753893e2307531ef73afc
parent ed5b8700a6e6c14b814dcc2e54a90eb1868070b5
Author: Christoph Lohmann <[email protected]>
Date: Sun, 30 Sep 2012 20:10:58 +0200
Remove the cruft of the user to have to define the different font styles.
Diffstat:
M st.c | 60 ++++++++++++++++++++++++++++-…
1 file changed, 55 insertions(+), 5 deletions(-)
---
diff --git a/st.c b/st.c
t@@ -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,
t@@ -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;
t@@ -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
t@@ -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;
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.