Ответ, направленный на мой пост в блоге, был до того, как я понял, как это сделать «правильно»
как Кай уже ответил, просто установка ширины переноса и режим переноса работает на TextCellRenderer
в моем текущем кастомном рендере я использую:
layout = cairo_context.create_layout()
font = pango.FontDescription("Sans")
font.set_size(pango.SCALE * (self.get_property('font_size')))
font.set_style(pango.STYLE_NORMAL)
font.set_weight(pango.WEIGHT_BOLD)
layout.set_font_description(font)
w=800 # the width I want to wrap at
layout.set_width(pango.SCALE * w)
layout.set_wrap(pango.WRAP_WORD)
layout.set_markup("my text to write out and wrap at the right width")
здесь явно используется pango cairo, и вы должны помнить, что pango умножает ширину, которую вы хотите, иначе она слишком мала, чтобы видеть.