summaryrefslogtreecommitdiff
path: root/clients/terminal.c
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2010-12-25 16:58:31 -0500
committerKristian Høgsberg <krh@bitplanet.net>2011-01-11 10:38:51 -0500
commit7ae6b1a27d84b7ff3b1fa36a03d333e3ffc15e26 (patch)
treeeedd89fef9cca8d5d4098373c30c62cbb81910c8 /clients/terminal.c
parent4f506707696ae9b1bc0a57abf2c2fd74a5e96268 (diff)
Hold on to the scaled fonts we use
Diffstat (limited to 'clients/terminal.c')
-rw-r--r--clients/terminal.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/clients/terminal.c b/clients/terminal.c
index 9e77bee..4eb4fab 100644
--- a/clients/terminal.c
+++ b/clients/terminal.c
@@ -368,7 +368,7 @@ struct terminal {
struct color_scheme *color_scheme;
struct terminal_color color_table[256];
cairo_font_extents_t extents;
- cairo_font_face_t *font_normal, *font_bold;
+ cairo_scaled_font_t *font_normal, *font_bold;
};
/* Create default tab stops, every 8 characters */
@@ -769,8 +769,7 @@ terminal_draw_contents(struct terminal *terminal)
terminal_set_color(terminal, cr, terminal->color_scheme->border);
cairo_paint(cr);
- cairo_set_font_face(cr, terminal->font_normal);
- cairo_set_font_size(cr, 14);
+ cairo_set_scaled_font(cr, terminal->font_normal);
cairo_font_extents(cr, &extents);
side_margin = (allocation.width - terminal->width * extents.max_x_advance) / 2;
@@ -809,9 +808,10 @@ terminal_draw_contents(struct terminal *terminal)
terminal_decode_attr(terminal, row, col, &attr);
if (attr.bold)
- cairo_set_font_face(cr, terminal->font_bold);
+ font = terminal->font_bold;
else
- cairo_set_font_face(cr, terminal->font_normal);
+ font = terminal->font_normal;
+ cairo_set_scaled_font(cr, font);
terminal_set_color(terminal, cr, attr.foreground);
text_x = side_margin + col * extents.max_x_advance;
text_y = top_margin + extents.ascent + row * extents.height;
@@ -824,7 +824,6 @@ terminal_draw_contents(struct terminal *terminal)
g = glyphs;
num_glyphs = ARRAY_LENGTH(glyphs);
- font = cairo_get_scaled_font (cr);
cairo_scaled_font_text_to_glyphs (font, text_x, text_y,
(char *) p_row[col].byte, 4,
&g, &num_glyphs,
@@ -1874,16 +1873,19 @@ terminal_create(struct display *display, int fullscreen)
surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 0, 0);
cr = cairo_create(surface);
- terminal->font_bold = cairo_toy_font_face_create ("mono",
- CAIRO_FONT_SLANT_NORMAL,
- CAIRO_FONT_WEIGHT_BOLD);
- cairo_font_face_reference(terminal->font_bold);
- terminal->font_normal = cairo_toy_font_face_create ("mono",
- CAIRO_FONT_SLANT_NORMAL,
- CAIRO_FONT_WEIGHT_NORMAL);
- cairo_font_face_reference(terminal->font_normal);
- cairo_set_font_face(cr, terminal->font_normal);
cairo_set_font_size(cr, 14);
+ cairo_select_font_face (cr, "mono",
+ CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_BOLD);
+ terminal->font_bold = cairo_get_scaled_font (cr);
+ cairo_scaled_font_reference(terminal->font_bold);
+
+ cairo_select_font_face (cr, "mono",
+ CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_NORMAL);
+ terminal->font_normal = cairo_get_scaled_font (cr);
+ cairo_scaled_font_reference(terminal->font_normal);
+
cairo_font_extents(cr, &terminal->extents);
cairo_destroy(cr);
cairo_surface_destroy(surface);