У вас в parseInt вторым аргументом передаётся ноль, это слегка странно. Я не знаю что нужно, но как минимум в этом месте логическая ошибка. Исправьте её, думаю тогда все заработает
Genri_Rus, знаков "=" стоит добавить чуть побольше, но это всё же ближе к правде. К тому же, думаю проще будет проверить если сразу это выполнить на jsfiddle
Genri_Rus, ну ты можешь вместо всей этой кучи проверок просто объявить какой-нибудь флаг который бы определял направление фэйда. Например если бы существовал некий флаг is_hidden который был бы true если элемент спрятан и false если элемент виден, то можно было бы устанавливать размер шрифта в зависимости от него: если is_hidden === true, то значит в данный момент элемент появляется, и размер шрифта нужно увеличивать.
Genri_Rus, причина в том, что вот тут
while(!sameHeight(this) && fontSizeDown > 0) надо оставить как было
fontSizeDown == 0, тогда все хорошо работает)