@ -68,6 +68,7 @@ char *argv0;
# define LEN(a) (sizeof(a) / sizeof(a)[0])
# define LEN(a) (sizeof(a) / sizeof(a)[0])
# define DEFAULT(a, b) (a) = (a) ? (a) : (b)
# define DEFAULT(a, b) (a) = (a) ? (a) : (b)
# define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b))
# define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b))
# define DIVCEIL(n, d) (((n) + ((d) - 1)) / (d))
# define ISCONTROLC0(c) (BETWEEN(c, 0, 0x1f) || (c) == '\177')
# define ISCONTROLC0(c) (BETWEEN(c, 0, 0x1f) || (c) == '\177')
# define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f))
# define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f))
# define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c))
# define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c))
@ -3277,6 +3278,7 @@ xloadfont(Font *f, FcPattern *pattern)
{
{
FcPattern * match ;
FcPattern * match ;
FcResult result ;
FcResult result ;
XGlyphInfo extents ;
match = FcFontMatch ( NULL , pattern , & result ) ;
match = FcFontMatch ( NULL , pattern , & result ) ;
if ( ! match )
if ( ! match )
@ -3287,6 +3289,10 @@ xloadfont(Font *f, FcPattern *pattern)
return 1 ;
return 1 ;
}
}
XftTextExtentsUtf8 ( xw . dpy , f - > match ,
( const FcChar8 * ) ascii_printable ,
LEN ( ascii_printable ) , & extents ) ;
f - > set = NULL ;
f - > set = NULL ;
f - > pattern = FcPatternDuplicate ( pattern ) ;
f - > pattern = FcPatternDuplicate ( pattern ) ;
@ -3296,7 +3302,7 @@ xloadfont(Font *f, FcPattern *pattern)
f - > rbearing = f - > match - > max_advance_width ;
f - > rbearing = f - > match - > max_advance_width ;
f - > height = f - > ascent + f - > descent ;
f - > height = f - > ascent + f - > descent ;
f - > width = f - > lbearing + f - > rbearing ;
f - > width = DIVCEIL ( extents . xOff , LEN ( ascii_printable ) ) ;
return 0 ;
return 0 ;
}
}