Все размеры шрифтов в rem
по дефолту html font-size: 16px; (цифра для примера)
нажимаем кнопку - скрипт пишет к html класс enlarge-size1 имеющий стиль
html.enlarge-size1 { font-size: 20px; }
имеем => все шрифты увеличились относительно базового.
состояние запоминаем в localstorage
в head пишем простой скриптик
if (window.localStorage.getItem('baseFontSize') == '1') {
document.documentElement.classList.add('enlarge-size1');
}
Всё. На бэкенде ничего менять не нужно.
За счет того, что скриптик располагается в head - класс добавится раньше чем она отрендерится, т.е. будет отображена сразу правильно.