import { createCanvas } from "canvas";

/**
 * Подбирает размер шрифта, чтобы текст вписался в maxWidth.
 * Использует canvas для измерения ширины текста.
 *
 * @param text Текст, размер которого нужно подобрать.
 * @param maxWidth Максимальная ширина текста.
 * @returns Подходящий размер шрифта в px.
 */
export function calculateFontSizeForText(
  text: string,
  maxWidth: number,
): number {
  // Создаем canvas для измерения текста
  const canvas = createCanvas(10, 10); // createCanvas(10, 10);
  const ctx = canvas.getContext("2d");

  // Начальный размер шрифта — можно начать, например, с maxWidth
  // или с какого-то разумного начального размера.
  let fontSize = Math.floor(maxWidth);

  while (fontSize > 0) {
    ctx.font = `${fontSize}px Arial, sans-serif`;
    const metrics = ctx.measureText(text);
    const textWidth = metrics.width;

    if (textWidth <= maxWidth) {
      break; // нашли подходящий размер
    }

    fontSize -= 1; // уменьшаем шрифт на 1px и повторяем
  }

  return fontSize > 0 ? fontSize : 1; // гарантия, что не вернем 0 или отрицательное число
}
