Añade TextRenderer::getGlyphHeight() (ascent - descent, sin line_gap) y lo usa en calculateTextDimensions() para descontar el gap sobrante de la última línea, aproximando padding superior e inferior simétricos. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>