15 char *fontdescription,
int fontsize,
16 double *width,
double *height)
18 PangoFontDescription *desc;
19 PangoFontMap *fontmap;
20 PangoContext *context;
22 int pango_width, pango_height;
26 fontmap = pango_cairo_font_map_get_default();
27 context = pango_font_map_create_context(fontmap);
28 options = cairo_font_options_create();
30 cairo_font_options_set_antialias(
options, CAIRO_ANTIALIAS_GRAY);
32 cairo_font_options_set_hint_style(
options, CAIRO_HINT_STYLE_FULL);
33 cairo_font_options_set_hint_metrics(
options, CAIRO_HINT_METRICS_ON);
34 cairo_font_options_set_subpixel_order(
options,
35 CAIRO_SUBPIXEL_ORDER_BGR);
37 desc = pango_font_description_from_string(fontdescription);
38 pango_font_description_set_size(desc, (gint) (fontsize * PANGO_SCALE));
40 if (!pango_parse_markup
43 layout = pango_layout_new(context);
44 pango_layout_set_text(
layout, text, -1);
45 pango_layout_set_font_description(
layout, desc);
47 pango_font_description_free(desc);
48 pango_layout_set_alignment(
layout, PANGO_ALIGN_CENTER);
50 pango_layout_get_size(
layout, &pango_width, &pango_height);
52 *width = (double) pango_width / PANGO_SCALE;
53 *height = (double) pango_height / PANGO_SCALE;
59 char *txt, cairo_surface_t * surface,
73 cairo_image_surface_create(CAIRO_FORMAT_ARGB32, (
int) width,
76 cr = cairo_create(surface);
78 cairo_set_source_rgba(cr, 1, 1, 1, 1);
80 pango_cairo_show_layout(cr,
layout);
89 return cairo_image_surface_get_data(surface);
unsigned char * glCompCreatePangoTexture(char *fontdescription, int fontsize, char *txt, cairo_surface_t *surface, int *w, int *h)