Каков правильный способ хранения данных для этого случая?
Так и не понял, почему JSON — в PostgreSQL, а если без JSON, то MySQL, ну да не суть. 
В принципе, JSON или просто таблицы — тут уж как удобнее будет. На входе и на выходе одно и то же. На мой взгляд, лучше хранить правильно структурированные данные в БД. А с JSON работать по необходимости уже, не думаю, что проблемой станет туда-сюда конвертировать. 
А вот от колонок для каждого стиля, наверное, стоит избавиться. Какие-то стили необязательны, какие-то для отдельных объектов только — зачем избыточность? Можно иметь таблицу объектов, таблицу свойств. А стили хранить в связующей таблице со столбцами: id объекта, id свойства, значение свойства. 
За основу для свойств удобно должно быть взять CSS. Многим знакомые правила, вполне логичная система. Уже есть все методы хранения параметров текста, включая интерлиньяж и кернинг. Придумывать своего придется совсем немного.
Что касается координат. Можно сделать привязку к левому и верхнему краям, задавать, соответственно, X и Y. Можно помимо X и Y еще задавать, грубо говоря, точку начала отсчета. Скажем, по умолчанию это левый верхний угол, но если мы задаем свойство, определяющее точку отсчета, как right-bottom, то объект будет расположен так, что нижний правый угол будет сдвинут на X и Y от нижнего правого угла объекта, относительно которого происходит позиционирование. 
Принципы позиционирования тоже из CSS можно взять, те же absolute и relative. 
Если обобщить, то вам нужно сделать свой HTML+CSS с блэкджеком и хранением стилей в БД. Отталкивайтесь от этого (=
А что не mongodb ? Вроде ваша концепция хорошо укладывается в объекты монги.