Я действительно сомневаюсь, что вы можете сделать это легко, не создавая большого беспорядка, тэгов, JavaScript или обоих. Один из способов, которым я могу думать, - это поместить изображение на более крупный zindex и расположить позади него div или div, и текст будет обтекать их. Было бы проще использовать меньший прямоугольник, исключающий прозрачные области. Но тогда почему бы просто не обрезать / обрезать изображение? Или вы можете попробовать плавающие строки высотой div, но я думаю, что это будет довольно уродливо и довольно быстро. Или вы можете попробовать поместить каждую строку текста в span / div и расположить их вручную или с помощью js, рассчитав приблизительные формы для тех, которые находятся на изображении. Еще одна идея, в которой я не уверен: возможно сделать это с помощью svg. Но быстрый поиск не дает многообещающего эфира.
В любом случае, нужно учитывать еще одну вещь: когда вы делаете что-то столь же экспериментальное и сложное, как бы вы ни делали это, каким бы способом вы это ни делали, скорее всего, будет очень трудно заставить его работать в большинстве браузеров.