I think this could be solved with some nice method names so that it ends up with something like this:

shrink_text_to(text_layout, width) if does_not_fit_on_line?(text_layout, width)

Or something like that.