From 4f506707696ae9b1bc0a57abf2c2fd74a5e96268 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Sat, 25 Dec 2010 16:14:23 -0500 Subject: [PATCH] Use cairo_show_glyphs for rendering text A small step for now. --- clients/terminal.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/clients/terminal.c b/clients/terminal.c index 0b637372..9e77beeb 100644 --- a/clients/terminal.c +++ b/clients/terminal.c @@ -753,16 +753,13 @@ terminal_draw_contents(struct terminal *terminal) int top_margin, side_margin; int row, col; union utf8_char *p_row; - struct utf8_chars { - union utf8_char c; - char null; - } toShow; struct decoded_attr attr; int text_x, text_y; cairo_surface_t *surface; double d; - - toShow.null = 0; + int num_glyphs; + cairo_scaled_font_t *font; + cairo_glyph_t glyphs[256], *g; window_get_child_allocation(terminal->window, &allocation); @@ -824,9 +821,15 @@ terminal_draw_contents(struct terminal *terminal) cairo_stroke(cr); } cairo_move_to(cr, text_x, text_y); - - toShow.c = p_row[col]; - cairo_show_text(cr, (char *) toShow.c.byte); + + 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, + NULL, NULL, NULL); + cairo_show_glyphs (cr, g, num_glyphs); } }