From 5341f0e45ead688a0bef59d2a6a30afcd02fadf1 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Fri, 29 Apr 2022 16:34:47 +0200 Subject: Add explanatory comments about text size and vertical position. --- src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/drivers') diff --git a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx index 4f36bb246..813917392 100644 --- a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx +++ b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx @@ -1051,7 +1051,9 @@ int Fl_Cairo_Graphics_Driver::get_font_sizes(Fl_Font fnum, int*& sizep) { Fl_Cairo_Font_Descriptor::Fl_Cairo_Font_Descriptor(const char* name, Fl_Fontsize size) : Fl_Font_Descriptor(name, size) { char string[70]; strcpy(string, name); - sprintf(string + strlen(string), " %d", int(size * 0.75 + 0.5) ); // why reduce size? + // The factor of 0.75 below gives cairo-produced text the same size as + // Xft-produced text for the same FLTK font size. + sprintf(string + strlen(string), " %d", int(size * 0.75 + 0.5) ); fontref = pango_font_description_from_string(string); width = NULL; static PangoFontMap *def_font_map = pango_cairo_font_map_get_default(); // 1.10 @@ -1122,6 +1124,8 @@ void Fl_Cairo_Graphics_Driver::font(Fl_Font fnum, Fl_Fontsize s) { void Fl_Cairo_Graphics_Driver::draw(const char* str, int n, float x, float y) { if (!n) return; cairo_save(cairo_); + // The vertical offset size()/21. below vertically positions output text adequately + // relatively to the baseline (empirical observation). cairo_translate(cairo_, x, y - height() + descent() + size()/21.); pango_layout_set_text(pango_layout_, str, n); pango_cairo_show_layout(cairo_, pango_layout_); -- cgit v1.2.3