diff --git a/font_gen_gui.py b/font_gen_gui.py index c78d412..2704fc9 100644 --- a/font_gen_gui.py +++ b/font_gen_gui.py @@ -11,6 +11,7 @@ from __future__ import annotations import json import os import tkinter as tk +from math import ceil from tkinter import filedialog, messagebox, ttk from PIL import Image, ImageTk @@ -26,6 +27,8 @@ PREVIEW_DEBOUNCE_MS = 200 DEFAULT_ZOOM = 3 # zoom inicial cuando no hay estado guardado AUTO_MAX_SCALE = 8 # techo del fit automático MANUAL_MAX_SCALE = 16 # techo cuando el usuario pulsa + +GRID_MIN_SCALE = 2 # zoom mínimo para mostrar la cuadrícula +GRID_COLOR = "#dd2222" class FontGenApp(tk.Tk): @@ -225,6 +228,22 @@ class FontGenApp(tk.Tk): self.preview_canvas.create_image(0, 0, anchor="nw", image=self._preview_img_tk) self.preview_canvas.configure(scrollregion=(0, 0, preview.width, preview.height)) + # Cuadrícula a partir de un cierto zoom: a 1x los píxeles del glifo + # y los de la línea son del mismo grosor y se confunden. + if scale >= GRID_MIN_SCALE: + cols = result.columns + rows_n = ceil(len(result.chars) / cols) + cell_w = result.box_width * scale + cell_h = result.box_height * scale + grid_w = cols * cell_w + grid_h = rows_n * cell_h + for c in range(cols + 1): + x = c * cell_w + self.preview_canvas.create_line(x, 0, x, grid_h, fill=GRID_COLOR, width=1) + for r in range(rows_n + 1): + y = r * cell_h + self.preview_canvas.create_line(0, y, grid_w, y, fill=GRID_COLOR, width=1) + info = (f"{len(result.chars)} chars · " f"caja {result.box_width}×{result.box_height} px · " f"bitmap {base_w}×{base_h} px (×{scale})")