@ -398,7 +398,7 @@ static void xinit(void);
static void xloadcols ( void ) ;
static void xloadcols ( void ) ;
static int xsetcolorname ( int , const char * ) ;
static int xsetcolorname ( int , const char * ) ;
static int xloadfont ( Font * , FcPattern * ) ;
static int xloadfont ( Font * , FcPattern * ) ;
static void xloadfonts ( char * , int ) ;
static void xloadfonts ( char * , double ) ;
static int xloadfontset ( Font * ) ;
static int xloadfontset ( Font * ) ;
static void xsettitle ( char * ) ;
static void xsettitle ( char * ) ;
static void xresettitle ( void ) ;
static void xresettitle ( void ) ;
@ -478,7 +478,7 @@ static char *opt_font = NULL;
static int oldbutton = 3 ; /* button event on startup: 3 = release */
static int oldbutton = 3 ; /* button event on startup: 3 = release */
static char * usedfont = NULL ;
static char * usedfont = NULL ;
static int usedfontsize = 0 ;
static double usedfontsize = 0 ;
/* Font Ring Cache */
/* Font Ring Cache */
enum {
enum {
@ -2826,9 +2826,9 @@ xloadfont(Font *f, FcPattern *pattern) {
}
}
void
void
xloadfonts ( char * fontstr , int fontsize ) {
xloadfonts ( char * fontstr , double fontsize ) {
FcPattern * pattern ;
FcPattern * pattern ;
FcResult result ;
FcResult r_sz , r_psz ;
double fontval ;
double fontval ;
if ( fontstr [ 0 ] = = ' - ' ) {
if ( fontstr [ 0 ] = = ' - ' ) {
@ -2842,12 +2842,16 @@ xloadfonts(char *fontstr, int fontsize) {
if ( fontsize > 0 ) {
if ( fontsize > 0 ) {
FcPatternDel ( pattern , FC_PIXEL_SIZE ) ;
FcPatternDel ( pattern , FC_PIXEL_SIZE ) ;
FcPatternDel ( pattern , FC_SIZE ) ;
FcPatternAddDouble ( pattern , FC_PIXEL_SIZE , ( double ) fontsize ) ;
FcPatternAddDouble ( pattern , FC_PIXEL_SIZE , ( double ) fontsize ) ;
usedfontsize = fontsize ;
usedfontsize = fontsize ;
} else {
} else {
result = FcPatternGetDouble ( pattern , FC_PIXEL_SIZE , 0 , & fontval ) ;
r_psz = FcPatternGetDouble ( pattern , FC_PIXEL_SIZE , 0 , & fontval ) ;
if ( result = = FcResultMatch ) {
r_sz = FcPatternGetDouble ( pattern , FC_SIZE , 0 , & fontval ) ;
usedfontsize = ( int ) fontval ;
if ( r_psz = = FcResultMatch ) {
usedfontsize = fontval ;
} else if ( r_sz = = FcResultMatch ) {
usedfontsize = - 1 ;
} else {
} else {
/*
/*
* Default font size is 12 , if none given . This is to
* Default font size is 12 , if none given . This is to
@ -2864,6 +2868,12 @@ xloadfonts(char *fontstr, int fontsize) {
if ( xloadfont ( & dc . font , pattern ) )
if ( xloadfont ( & dc . font , pattern ) )
die ( " st: can't open font %s \n " , fontstr ) ;
die ( " st: can't open font %s \n " , fontstr ) ;
if ( usedfontsize < 0 ) {
FcPatternGetDouble ( dc . font . match - > pattern ,
FC_PIXEL_SIZE , 0 , & fontval ) ;
usedfontsize = fontval ;
}
/* Setting character width and height. */
/* Setting character width and height. */
xw . cw = CEIL ( dc . font . width * cwscale ) ;
xw . cw = CEIL ( dc . font . width * cwscale ) ;
xw . ch = CEIL ( dc . font . height * chscale ) ;
xw . ch = CEIL ( dc . font . height * chscale ) ;