mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
font: start working on core text cell height calcs
This commit is contained in:
@ -112,6 +112,22 @@ pub const Font = opaque {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn getAscent(self: *Font) f64 {
|
||||||
|
return c.CTFontGetAscent(@ptrCast(c.CTFontRef, self));
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn getDescent(self: *Font) f64 {
|
||||||
|
return c.CTFontGetDescent(@ptrCast(c.CTFontRef, self));
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn getLeading(self: *Font) f64 {
|
||||||
|
return c.CTFontGetLeading(@ptrCast(c.CTFontRef, self));
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn getBoundingBox(self: *Font) graphics.Rect {
|
||||||
|
return @bitCast(graphics.Rect, c.CTFontGetBoundingBox(@ptrCast(c.CTFontRef, self)));
|
||||||
|
}
|
||||||
|
|
||||||
pub fn getUnderlinePosition(self: *Font) f64 {
|
pub fn getUnderlinePosition(self: *Font) f64 {
|
||||||
return c.CTFontGetUnderlinePosition(@ptrCast(c.CTFontRef, self));
|
return c.CTFontGetUnderlinePosition(@ptrCast(c.CTFontRef, self));
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,12 @@ pub const Face = struct {
|
|||||||
break :cell_width @floatCast(f32, max);
|
break :cell_width @floatCast(f32, max);
|
||||||
};
|
};
|
||||||
|
|
||||||
std.log.warn("width={}", .{cell_width});
|
const cell_height: f32 = cell_height: {
|
||||||
|
const diff = ct_font.getAscent() + ct_font.getDescent() + ct_font.getLeading();
|
||||||
|
break :cell_height @floatCast(f32, diff);
|
||||||
|
};
|
||||||
|
|
||||||
|
std.log.warn("width={}, height={}", .{ cell_width, cell_height });
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -389,7 +389,7 @@ test {
|
|||||||
|
|
||||||
var ft_font = try Face.init(lib, testFont, .{ .points = 12 });
|
var ft_font = try Face.init(lib, testFont, .{ .points = 12 });
|
||||||
defer ft_font.deinit();
|
defer ft_font.deinit();
|
||||||
//log.warn("FT WIDTH={}", .{ft_font.metrics.cell_width});
|
log.warn("FT={}", .{ft_font.metrics});
|
||||||
|
|
||||||
try testing.expectEqual(Presentation.text, ft_font.presentation);
|
try testing.expectEqual(Presentation.text, ft_font.presentation);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user