Looks like this issue was already solved, using pycairo 1.20.0 and PyGObject 3.40.1:
import cairo
import gi
gi.require_version('Pango', '1.0')
gi.require_version('PangoCairo', '1.0')
from gi.repository import Pango, PangoCairo
width, height = 328, 48
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
context = cairo.Context(surface)
layout = PangoCairo.create_layout(context)
font_desc = Pango.font_description_from_string('Sans, 40px')
layout.set_font_description(font_desc)
letter_spacing_attr = Pango.attr_letter_spacing_new(1024 * 10)
attr_list = Pango.AttrList()
attr_list.insert(letter_spacing_attr)
layout.set_attributes(attr_list)
layout.set_text('Hello World')
PangoCairo.show_layout(context, layout)
with open('help-me.png', 'wb') as image_file:
surface.write_to_png(image_file)