From 1c61e5659c5e7c9c63a8cba38bfcdfb685fc77d5 Mon Sep 17 00:00:00 2001 From: iatll Date: Thu, 24 Jul 2014 11:43:57 -0400 Subject: [PATCH] add font size support --- README.pod | 2 +- bar.c | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/README.pod b/README.pod index e49ffd4..a910b41 100644 --- a/README.pod +++ b/README.pod @@ -34,7 +34,7 @@ Force docking without asking the window manager. This is needed if the window ma =item B<-f> I -Comma separated list of fonts, bar supports a maximum of two fonts. +Font face. Size can be specified as : =item B<-p> diff --git a/bar.c b/bar.c index 487151e..7d588df 100644 --- a/bar.c +++ b/bar.c @@ -74,6 +74,7 @@ static bool topbar = true; static int bw = -1, bh = -1, bx = 0, by = 0; static int bu = 1; /* Underline height */ static char *mfont = NULL; +static double mfont_size = 10.0; static uint32_t fgc, bgc; static area_stack_t astack; @@ -517,6 +518,7 @@ monitor_new (int x, int y, int width, int height) ret->cr = cairo_create(ret->surface); cairo_select_font_face (ret->cr, mfont? mfont: "fixed", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); + cairo_set_font_size(ret->cr, mfont_size); return ret; } @@ -937,8 +939,28 @@ parse_font_list (char *str) return; tok = strtok(str, ","); - if (tok) - mfont = tok; + if (tok) { + mfont = tok; // font face + + // if a colon is found + tok = strtok(mfont, ":"); + if(tok) { + // treat the string before the colon as the font face + mfont = tok; // font face + + // if characters exist after the colon + tok = strtok(NULL, ":"); + if(tok) { + double candidate_size; + candidate_size = atof(tok); + // and the size is non-zero + if(candidate_size != 0) { + // treat the rest of the string as the font size + mfont_size = candidate_size; // font size + } + } + } + } return; }