From e17e4f31f50693851cf191cd2cc127980776ad6a Mon Sep 17 00:00:00 2001 From: Richard Acayan Date: Mon, 19 Aug 2024 23:02:50 -0400 Subject: [PATCH] core: graphics: finish supporting glyphs extending past font descent Extend the height of the label when a glyph goes past the descent. Also truncate the bitmap when the height is final. Also remove statements added for debugging. --- src/core/graphics.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/core/graphics.rs b/src/core/graphics.rs index 62c6d9b..5159921 100644 --- a/src/core/graphics.rs +++ b/src/core/graphics.rs @@ -320,10 +320,6 @@ impl Graphics { let mut y = y_max as usize - metrics.ascender as usize / 64; let height = (y_max - y_min) as usize; - println!("{} {}, {}", (-bbox.yMin) as usize, - metrics.y_ppem as usize, - metrics.descender); - let vec: Vec = vec![0; stride * height]; let mut img = ImgVec::new(vec, stride, height); @@ -349,6 +345,10 @@ impl Graphics { y = dest_y as usize; } + if height < dest_y as usize + glyph.bitmap.rows as usize { + height = dest_y as usize + glyph.bitmap.rows as usize; + } + let src = bitmap_to_imgref(&glyph.bitmap); let dest = img.sub_image_mut(dest_x as usize, dest_y as usize, @@ -370,10 +370,9 @@ impl Graphics { freetype::FT_Done_Face(ftface); }; - let vec = img.into_buf(); - println!("{}, {}x{}", vec.len(), stride, height); + let mut vec = img.into_buf(); + vec.truncate(stride * height); let img = ImgVec::new_stride(vec, width, height, stride); - img.sub_image(0, 0, width, height - y); TextRaster { img,