mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 15:56:13 +03:00
font/coretext: fix bitmap size calculation, prevent clipping
Previously, many glyphs were having their top and right row/column of pixels clipped off due to not accounting for the slight bearing in the width and height calculation here.
This commit is contained in:
@ -356,8 +356,14 @@ pub const Face = struct {
|
|||||||
const x = glyph_size.x;
|
const x = glyph_size.x;
|
||||||
const y = glyph_size.y;
|
const y = glyph_size.y;
|
||||||
|
|
||||||
const px_width: u32 = @intFromFloat(@ceil(width));
|
// We have to include the fractional pixels that we won't be offsetting
|
||||||
const px_height: u32 = @intFromFloat(@ceil(height));
|
// in our width and height calculations, that is, we offset by the floor
|
||||||
|
// of the bearings when we render the glyph, meaning there's still a bit
|
||||||
|
// of extra width to the area that's drawn in beyond just the width of
|
||||||
|
// the glyph itself, so we include that extra fraction of a pixel when
|
||||||
|
// calculating the width and height here.
|
||||||
|
const px_width: u32 = @intFromFloat(@ceil(width + rect.origin.x - @floor(rect.origin.x)));
|
||||||
|
const px_height: u32 = @intFromFloat(@ceil(height + rect.origin.y - @floor(rect.origin.y)));
|
||||||
|
|
||||||
// Settings that are specific to if we are rendering text or emoji.
|
// Settings that are specific to if we are rendering text or emoji.
|
||||||
const color: struct {
|
const color: struct {
|
||||||
|
Reference in New Issue
Block a user