text = u"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum varius nulla cursus lorem rhoncus a fermentum nisl egestas. Aenean amet. World" acc = 0 for letter in text: context.save() pangocairo_context = pangocairo.CairoContext(context) layout = pangocairo_context.create_layout() layout.set_font_description(font) layout.set_text(letter) context.set_source_rgb(0, 0, 0) pangocairo_context.update_layout(layout) width, height = numpy.array(layout.get_size(), dtype='float')/pango.SCALE x, y, th = curve.point_at(acc/curve.total_length)[0] context.scale(2.54, 2.54) context.translate(-dx, -dy) context.translate(x, y) context.rotate(th) context.translate(0, -height) pangocairo_context.show_layout(layout) acc += width context.restore() surf.flush() surf.finish() dc.EndPage()