charger: Fix small battery capacity font

* Load the correct font to display the capacity in appropriate size
* Fall back to gr_sys_font() in case it can't be loaded

Change-Id: I7a05be70da3b8f0cf2895e844dfc29d66d5dbab1
diff --git a/charger/healthd_board_cm.cpp b/charger/healthd_board_cm.cpp
index 1eabb5c..393a0c6 100644
--- a/charger/healthd_board_cm.cpp
+++ b/charger/healthd_board_cm.cpp
@@ -45,6 +45,8 @@
 #define LOGI(x...) do { KLOG_INFO("charger", x); } while (0)
 #define LOGV(x...) do { KLOG_DEBUG("charger", x); } while (0)
 
+static const GRFont* gr_font = NULL;
+
 struct frame {
     int min_capacity;
     GRSurface *surface;
@@ -62,6 +64,11 @@
     .num_frames = 0,
 };
 
+static const GRFont* get_font()
+{
+    return gr_font;
+}
+
 static int draw_surface_centered(GRSurface* surface)
 {
     int w, h, x, y;
@@ -83,14 +90,14 @@
 
     struct frame *f = &anim.frames[0];
     int font_x, font_y;
-    gr_font_size(gr_sys_font(), &font_x, &font_y);
-    int w = gr_measure(gr_sys_font(), cap_str);
+    gr_font_size(get_font(), &font_x, &font_y);
+    int w = gr_measure(get_font(), cap_str);
     int h = gr_get_height(f->surface);
     int x = (gr_fb_width() - w) / 2;
     int y = (gr_fb_height() + h) / 2;
 
     gr_color(255, 255, 255, 255);
-    gr_text(gr_sys_font(), x, y + font_y / 2, cap_str, 0);
+    gr_text(get_font(), x, y + font_y / 2, cap_str, 0);
 }
 
 #ifdef QCOM_HARDWARE
@@ -412,4 +419,13 @@
 
 void healthd_board_mode_charger_init(void)
 {
+    GRFont* tmp_font;
+    int res = gr_init_font("font_log", &tmp_font);
+    if (res == 0) {
+        gr_font = tmp_font;
+    } else {
+        LOGW("Couldn't open font, falling back to default!\n");
+        gr_font = gr_sys_font();
+    }
+
 }