|
|
|
@ -121,26 +121,27 @@ initfont(DC *dc, const char *fontstr) { |
|
|
|
|
Bool |
|
|
|
|
loadfont(DC *dc, const char *fontstr) { |
|
|
|
|
char *def, **missing, **names; |
|
|
|
|
int i, n = 1; |
|
|
|
|
int i, n; |
|
|
|
|
XFontStruct **xfonts; |
|
|
|
|
|
|
|
|
|
if(!*fontstr) |
|
|
|
|
return False; |
|
|
|
|
if((dc->font.set = XCreateFontSet(dc->dpy, fontstr, &missing, &n, &def))) |
|
|
|
|
if((dc->font.set = XCreateFontSet(dc->dpy, fontstr, &missing, &n, &def))) { |
|
|
|
|
n = XFontsOfFontSet(dc->font.set, &xfonts, &names); |
|
|
|
|
else if((dc->font.xfont = XLoadQueryFont(dc->dpy, fontstr))) |
|
|
|
|
xfonts = &dc->font.xfont; |
|
|
|
|
else |
|
|
|
|
n = 0; |
|
|
|
|
|
|
|
|
|
for(i = 0; i < n; i++) { |
|
|
|
|
dc->font.ascent = MAX(dc->font.ascent, xfonts[i]->ascent); |
|
|
|
|
dc->font.descent = MAX(dc->font.descent, xfonts[i]->descent); |
|
|
|
|
dc->font.width = MAX(dc->font.width, xfonts[i]->max_bounds.width); |
|
|
|
|
for(i = 0; i < n; i++) { |
|
|
|
|
dc->font.ascent = MAX(dc->font.ascent, xfonts[i]->ascent); |
|
|
|
|
dc->font.descent = MAX(dc->font.descent, xfonts[i]->descent); |
|
|
|
|
dc->font.width = MAX(dc->font.width, xfonts[i]->max_bounds.width); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else if((dc->font.xfont = XLoadQueryFont(dc->dpy, fontstr))) { |
|
|
|
|
dc->font.ascent = dc->font.xfont->ascent; |
|
|
|
|
dc->font.descent = dc->font.xfont->descent; |
|
|
|
|
dc->font.width = dc->font.xfont->max_bounds.width; |
|
|
|
|
} |
|
|
|
|
if(missing) |
|
|
|
|
XFreeStringList(missing); |
|
|
|
|
return (dc->font.set || dc->font.xfont); |
|
|
|
|
return dc->font.set || dc->font.xfont; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void |
|
|
|
|