Fix text drawn by pango is offset +1 pixel on x and y) (#568)
This commit is contained in:
parent
8b7021ba8b
commit
e5c3caeb6b
@ -1199,8 +1199,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 -0.5 below makes underscores visible in Fl_Text_Display at scale = 1
|
||||
cairo_translate(cairo_, x, y - height() + descent() -0.5);
|
||||
Fl_Cairo_Font_Descriptor *fd = (Fl_Cairo_Font_Descriptor*)font_descriptor();
|
||||
cairo_translate(cairo_, x - 1, y - (fd->line_height - fd->descent) / float(PANGO_SCALE) - 1);
|
||||
pango_layout_set_text(pango_layout_, str, n);
|
||||
pango_cairo_show_layout(cairo_, pango_layout_); // 1.1O
|
||||
cairo_restore(cairo_);
|
||||
@ -1278,8 +1278,8 @@ void Fl_Cairo_Graphics_Driver::text_extents(const char* txt, int n, int& dx, int
|
||||
pango_layout_get_extents(pango_layout_, &ink_rect, NULL);
|
||||
double f = PANGO_SCALE;
|
||||
Fl_Cairo_Font_Descriptor *fd = (Fl_Cairo_Font_Descriptor*)font_descriptor();
|
||||
dx = ink_rect.x / f;
|
||||
dy = (ink_rect.y - fd->line_height + fd->descent) / f;
|
||||
dx = ink_rect.x / f - 1;
|
||||
dy = (ink_rect.y - fd->line_height + fd->descent) / f - 1;
|
||||
w = ceil(ink_rect.width / f);
|
||||
h = ceil(ink_rect.height / f);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user