 <p>One solution is to use <a href="http://library.gnome.org/devel/pango/stable/" rel="nofollow noreferrer">pango</a>'s cairo bindings. Using it could get quite confusing really fast so here's a essentials. You could create class around it in C++ if you want.</p> <pre><code>#include &lt;pango/pangocairo.h&gt; // Pango context PangoContext* pangoContext = pango_font_map_create_context( pango_cairo_font_map_get_default()); // Layout and attributes PangoLayout* pangoLayout = pango_layout_new(pangoContext); pango_layout_set_wrap(pangoLayout, PANGO_WRAP_WORD_CHAR); pango_layout_set_width(pangoLayout, maxWidth * PANGO_SCALE); pango_layout_set_height(pangoLayout, maxHeight * PANGO_SCALE); // Set font PangoFontDescription* fontDesc = pango_font_description_from_string("Verdana 10"); pango_layout_set_font_description(pangoLayout, fontDesc); pango_font_description_free(fontDesc); // Set text to render pango_layout_set_text(pangoLayout, text.data(), text.length()); // Allocate buffer const cairo_format_t format = CAIRO_FORMAT_A8; const int stride = cairo_format_stride_for_width(format, maxWidth); GLubyte* buffer = new GLubyte[stride * maxHeight]; std::fill(buffer, buffer + stride * maxHeight, 0); // Create cairo surface for buffer cairo_surface_t* crSurface = cairo_image_surface_create_for_data( buffer, format, maxWidth, maxHeight, stride); if (cairo_surface_status(crSurface) != CAIRO_STATUS_SUCCESS) { // Error } // Create cairo context cairo_t* crContext = cairo_create(crSurface); if (cairo_status(crContext) != CAIRO_STATUS_SUCCESS) { // Error } // Draw cairo_set_source_rgb(crContext, 1.0, 1.0, 1.0); pango_cairo_show_layout(crContext, pangoLayout); // Cleanup cairo_destroy(crContext); cairo_surface_destroy(crSurface); g_object_unref(pangoLayout); g_object_unref(pangoContext); // TODO: you can do whatever you want with buffer now // copy on the texture maybe? delete[] buffer; </code></pre> <p>In this case buffer will contain 8 bit alpha channel values only. Fiddle with format variable if you want something else. Compiling... <code>pkg-config --cflags --libs pangocairo</code> should do it on linix. I have no idea about windows.</p>