Твоя задача на самом деле не такая уж и простая
Решение - найти любой рендерер форматированного текста (небось еще и переносы не откажешься корректные?), т.е. тебе нужен рендерер rich text, такие есть почти для всех языков,
например на qt (там это будет минималистичный html браузер с поддержкой ссылок) конечно можно любой другой компонент хоть полноценный браузер, разобраться, собрать gui приложение, выводить по очереди текст и брать его экранную копию, причем можно прямо с картинкой, тут же видно будет, влезает оно по высоте или нет (тут можно кстати было бы подбирать шрифт и его размер до тех пор пока не влезет)
Лично я бы решал проблему, добавив используя встраиваемый браузер, только на питоне код заметно сложнее чем на каком-нибудь c# .net, помню писал скринер сайта с кастомным размером страницы, прекрасно работало под mono headless, это было буквально несколько строчек кода.