diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2010-12-25 16:58:31 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2011-01-11 10:38:51 -0500 |
commit | 7ae6b1a27d84b7ff3b1fa36a03d333e3ffc15e26 (patch) | |
tree | eedd89fef9cca8d5d4098373c30c62cbb81910c8 /clients/terminal.c | |
parent | 4f506707696ae9b1bc0a57abf2c2fd74a5e96268 (diff) |
Hold on to the scaled fonts we use
Diffstat (limited to 'clients/terminal.c')
-rw-r--r-- | clients/terminal.c | 32 |
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); |