Hold on to the scaled fonts we use

This commit is contained in:
Kristian Høgsberg 2010-12-25 16:58:31 -05:00
parent ed6aec30f1
commit 6ebf690ef3

View file

@ -336,7 +336,7 @@ struct terminal {
int focused; int focused;
struct color_scheme *color_scheme; struct color_scheme *color_scheme;
cairo_font_extents_t extents; 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 */ /* Create default tab stops, every 8 characters */
@ -676,8 +676,7 @@ terminal_draw_contents(struct terminal *terminal)
cairo_set_source_rgba(cr, color.r, color.g, color.b, color.a); cairo_set_source_rgba(cr, color.r, color.g, color.b, color.a);
cairo_paint(cr); cairo_paint(cr);
cairo_set_font_face(cr, terminal->font_normal); cairo_set_scaled_font (cr, terminal->font_normal);
cairo_set_font_size(cr, 14);
cairo_font_extents(cr, &extents); cairo_font_extents(cr, &extents);
side_margin = (rectangle.width - terminal->width * extents.max_x_advance) / 2; side_margin = (rectangle.width - terminal->width * extents.max_x_advance) / 2;
@ -737,9 +736,10 @@ terminal_draw_contents(struct terminal *terminal)
} }
if (bold) if (bold)
cairo_set_font_face(cr, terminal->font_bold); font = terminal->font_bold;
else else
cairo_set_font_face(cr, terminal->font_normal); font = terminal->font_normal;
cairo_set_scaled_font (cr, font);
color = terminal->color_scheme->palette[foreground]; color = terminal->color_scheme->palette[foreground];
cairo_set_source_rgba(cr, color.r, color.g, color.b, color.a); cairo_set_source_rgba(cr, color.r, color.g, color.b, color.a);
@ -754,7 +754,6 @@ terminal_draw_contents(struct terminal *terminal)
g = glyphs; g = glyphs;
num_glyphs = ARRAY_LENGTH(glyphs); num_glyphs = ARRAY_LENGTH(glyphs);
font = cairo_get_scaled_font (cr);
cairo_scaled_font_text_to_glyphs (font, text_x, text_y, cairo_scaled_font_text_to_glyphs (font, text_x, text_y,
(char *) &terminal_get_row(terminal, row)[col].byte, 4, (char *) &terminal_get_row(terminal, row)[col].byte, 4,
&g, &num_glyphs, &g, &num_glyphs,
@ -1795,18 +1794,18 @@ terminal_create(struct display *display, int fullscreen)
surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 0, 0); surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 0, 0);
cr = cairo_create(surface); cr = cairo_create(surface);
terminal->font_bold = cairo_set_font_size(cr, 14);
cairo_toy_font_face_create ("mono", cairo_select_font_face (cr, "mono",
CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_SLANT_NORMAL,
CAIRO_FONT_WEIGHT_BOLD); CAIRO_FONT_WEIGHT_BOLD);
cairo_font_face_reference(terminal->font_bold); terminal->font_bold = cairo_get_scaled_font (cr);
terminal->font_normal = cairo_scaled_font_reference(terminal->font_bold);
cairo_toy_font_face_create ("mono",
cairo_select_font_face (cr, "mono",
CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_SLANT_NORMAL,
CAIRO_FONT_WEIGHT_NORMAL); CAIRO_FONT_WEIGHT_NORMAL);
cairo_font_face_reference(terminal->font_normal); terminal->font_normal = cairo_get_scaled_font (cr);
cairo_set_font_face(cr, terminal->font_normal); cairo_scaled_font_reference(terminal->font_normal);
cairo_set_font_size(cr, 14);
cairo_font_extents(cr, &terminal->extents); cairo_font_extents(cr, &terminal->extents);
cairo_destroy(cr); cairo_destroy(cr);
cairo_surface_destroy(surface); cairo_surface_destroy(surface);