From 3d4f276f1fabeea8a2d94e8a72db765f1dcc4316 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Wed, 27 Apr 2005 19:44:34 +0000 Subject: Fix inconsistent vertical centring of text in GTK (and update Solo's todo list, which complained about this because Solo was the only puzzle noticeably affected). [originally from svn r5694] --- gtk.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'gtk.c') diff --git a/gtk.c b/gtk.c index 1a74d87..5690eae 100644 --- a/gtk.c +++ b/gtk.c @@ -219,11 +219,24 @@ void draw_text(frontend *fe, int x, int y, int fonttype, int fontsize, { int lb, rb, wid, asc, desc; - gdk_string_extents(fe->fonts[i].font, text, + /* + * Measure vertical string extents with respect to the same + * string always... + */ + gdk_string_extents(fe->fonts[i].font, + "ABCDEFGHIJKLMNOPQRSTUVWXYZ", &lb, &rb, &wid, &asc, &desc); if (align & ALIGN_VCENTRE) y += asc - (asc+desc)/2; + /* + * ... but horizontal extents with respect to the provided + * string. This means that multiple pieces of text centred + * on the same y-coordinate don't have different baselines. + */ + gdk_string_extents(fe->fonts[i].font, text, + &lb, &rb, &wid, &asc, &desc); + if (align & ALIGN_HCENTRE) x -= wid / 2; else if (align & ALIGN_HRIGHT) -- cgit v1.1