Hi,
I think a behavior of the Text tool is counterintuitive, and I’d like to open a feature request on gimp-ux.
When I select the Text tool, the cursor becomes a composite of a crosshair and a text-insertion cursor. When I click on the canvas, the text box aligns its top-left corner to the crosshair. This means the bottom edge of the text box — where the text baseline sits — ends up at an unpredictable position that depends only on the font size. The text-insertion cursor part of the pointer plays no role in alignment.
The problem becomes evident when I need to place text just above a reference element (a guide, a line, the edge of another layer). There is no way to know in advance where the bottom of the text will land. I always have to create the text first, then reposition it manually.
I believe bottom-aligning (or baseline-aligning) would be more intuitive, since the universal writing convention, since we learn writing in school, is to write above a line, not below one. When we click on a point, we usually expect the text to sit on that point, not to hang below it.
I can think of a few possible solutions:
- Aligning the bottom edge of the text box to the crosshair instead of the top edge.
- Scaling the text-insertion cursor proportionally to the current font size, so the user can visually predict where the text will land.
- Adding a vertical anchor option in the Text tool settings (top / baseline / bottom), letting the user choose the alignment behavior.
- Showing a bounding-box preview before clicking, so the user can see the exact area the text will occupy.
For reference, other graphics applications (Inkscape, Photoshop, Illustrator) tend to anchor text at or near the baseline when clicking on the canvas.
I attach two screenshots to illustrate the issue:
- Screenshot 1: the composite cursor (crosshair + text-insertion cursor)
- Screenshot 2: the resulting text box, showing how the top-left corner aligns to the crosshair while the baseline position is unpredictable
What do you think? Does this seem like a reasonable change, or is there a reason for the current behavior that I’m missing?
Thanks.

