var variants = []
// Полный перебор всех размеров по одной из осей
for (var width = 1; width < letters_count; width++) {
var height = letters_count / width
if (Number.isInteger(height)) { // выбираем только те, где делится без остатка
variants.push({width: width, height: height, diff: Math.abs(width-height)})
}
}
// сортируем по минимальной разнице высоты и ширины
variants.sort((a, b)=>{
if (a.diff > b.diff) return 1
if (a.diff < b.diff) return -1
return 0
})
if ($y < $height - 1) ...