get the pixel extents the "right way" in 1.16 and use our own rounding otherwise because the pango function lies.
This commit is contained in:
parent
3f3d59904e
commit
3b8bcd3e3a
1 changed files with 14 additions and 5 deletions
|
@ -146,12 +146,21 @@ static void font_measure_full(const RrFont *f, const gchar *str,
|
|||
|
||||
pango_layout_set_text(f->layout, str, -1);
|
||||
pango_layout_set_width(f->layout, -1);
|
||||
|
||||
/* pango_layout_get_pixel_extents lies! this is the right way to get the
|
||||
size of the text's area */
|
||||
pango_layout_get_extents(f->layout, NULL, &rect);
|
||||
/* DONT use pango_layout_get_pixel_extents. they say it's guaranteed to
|
||||
fit the text but they lie. figure it out ourselves */
|
||||
*x = (rect.width + PANGO_SCALE - 1) / PANGO_SCALE
|
||||
+ ABS(shadow_x) + 4 /* we put a 2 px edge on each side */;
|
||||
*y = (rect.height + PANGO_SCALE - 1) / PANGO_SCALE + ABS(shadow_y);
|
||||
#if PANGO_VERSION_MAJOR > 1 || \
|
||||
(PANGO_VERSION_MAJOR == 1 && PANGO_VERSION_MINOR >= 16)
|
||||
/* pass the logical rect as the ink rect, this is on purpose so we get the
|
||||
full area for the text */
|
||||
pango_extents_to_pixels(&rect, NULL);
|
||||
#else
|
||||
rect.width = (rect.width + PANGO_SCALE - 1) / PANGO_SCALE;
|
||||
rect.height = (rect.height + PANGO_SCALE - 1) / PANGO_SCALE;
|
||||
#endif
|
||||
*x = rect.width + ABS(shadow_x) + 4 /* we put a 2 px edge on each side */;
|
||||
*y = rect.height + ABS(shadow_y);
|
||||
}
|
||||
|
||||
RrSize *RrFontMeasureString(const RrFont *f, const gchar *str,
|
||||
|
|
Loading…
Reference in a new issue