[PATCH weston] Add font entry to shell section for title fonts

Ryo Munakata ryomnktml at gmail.com
Thu Aug 28 04:31:37 PDT 2014


cairo-util has used sans font family for title fonts so far.
But sans doesn't support non-ascii characters.
So now let users choose a font family for titles.

The entry name is generic, 'font' so that other places
where draw texts can use this entry too.

Signed-off-by: Ryo Munakata <ryomnktml at gmail.com>
---
 man/weston.ini.man  |  3 +++
 shared/cairo-util.c | 16 +++++++++++++++-
 shared/cairo-util.h |  1 +
 weston.ini.in       |  1 +
 4 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/man/weston.ini.man b/man/weston.ini.man
index ccd7185..0830255 100644
--- a/man/weston.ini.man
+++ b/man/weston.ini.man
@@ -260,6 +260,9 @@ sets the path to lock screen background image (string). (tablet shell only)
 .TP 7
 .BI "homescreen=" path
 sets the path to home screen background image (string). (tablet shell only)
+.TP 7
+.BI "font=" font-family
+sets the font family name. Title fonts only supported now.
 .RE
 .SH "LAUNCHER SECTION"
 There can be multiple launcher sections, one for each launcher.
diff --git a/shared/cairo-util.c b/shared/cairo-util.c
index 26286c5..7bdb8cb 100644
--- a/shared/cairo-util.c
+++ b/shared/cairo-util.c
@@ -337,6 +337,18 @@ theme_set_background_source(struct theme *t, cairo_t *cr, uint32_t flags)
 	}
 }
 
+static char *
+config_get_font_family()
+{
+	char *font_family;
+	struct weston_config *config
+		= weston_config_parse("weston.ini");
+	struct weston_config_section *section
+		= weston_config_get_section(config, "shell", NULL, NULL);
+	weston_config_section_get_string(section, "font", &font_family, "sans");
+	return font_family;
+}
+
 struct theme *
 theme_create(void)
 {
@@ -350,6 +362,7 @@ theme_create(void)
 	t->margin = 32;
 	t->width = 6;
 	t->titlebar_height = 27;
+	t->title_font = config_get_font_family();
 	t->frame_radius = 3;
 	t->shadow = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 128, 128);
 	cr = cairo_create(t->shadow);
@@ -408,6 +421,7 @@ theme_destroy(struct theme *t)
 	cairo_surface_destroy(t->active_frame);
 	cairo_surface_destroy(t->inactive_frame);
 	cairo_surface_destroy(t->shadow);
+	free(t->title_font);
 	free(t);
 }
 
@@ -458,7 +472,7 @@ theme_render_frame(struct theme *t,
 		cairo_clip(cr);
 
 		cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
-		cairo_select_font_face(cr, "sans",
+		cairo_select_font_face(cr, t->title_font,
 				       CAIRO_FONT_SLANT_NORMAL,
 				       CAIRO_FONT_WEIGHT_BOLD);
 		cairo_set_font_size(cr, 14);
diff --git a/shared/cairo-util.h b/shared/cairo-util.h
index fb25c34..060e01b 100644
--- a/shared/cairo-util.h
+++ b/shared/cairo-util.h
@@ -53,6 +53,7 @@ struct theme {
 	int margin;
 	int width;
 	int titlebar_height;
+	char *title_font;
 };
 
 struct theme *
diff --git a/weston.ini.in b/weston.ini.in
index 4fca0bb..6fef17e 100644
--- a/weston.ini.in
+++ b/weston.ini.in
@@ -15,6 +15,7 @@ startup-animation=fade
 #num-workspaces=6
 #cursor-theme=whiteglass
 #cursor-size=24
+#font=sans
 
 #lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png
 #lockscreen=/usr/share/backgrounds/gnome/Garden.jpg
-- 
2.1.0



More information about the wayland-devel mailing list